Skip to content

Commit 960a109

Browse files
Merge pull request #327 from jottofar/cvo-bug-1782982
Bug 1782982: pkg/verify/verifyconfigmap: Fix Store to use {algo}-{hash} prefix
2 parents 0bb7a28 + e2ecece commit 960a109

File tree

1 file changed

+22
-8
lines changed

1 file changed

+22
-8
lines changed

pkg/verify/verifyconfigmap/store.go

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ func NewStore(client corev1client.ConfigMapsGetter, limiter *rate.Limiter) *Stor
3939
limiter = rate.NewLimiter(rate.Every(30*time.Second), 1)
4040
}
4141
return &Store{
42-
client: client,
43-
ns: "openshift-config-managed",
42+
client: client,
43+
ns: "openshift-config-managed",
4444
limiter: limiter,
4545
}
4646
}
@@ -66,6 +66,18 @@ func (s *Store) mostRecentConfigMaps() []corev1.ConfigMap {
6666
return s.last
6767
}
6868

69+
// digestToKeyPrefix changes digest to use '-' in place of ':',
70+
// {algo}-{hash} instead of {algo}:{hash}, because colons are not
71+
// allowed in ConfigMap keys.
72+
func digestToKeyPrefix(digest string) (string, error) {
73+
parts := strings.SplitN(digest, ":", 3)
74+
if len(parts) != 2 || len(parts[0]) == 0 || len(parts[1]) == 0 {
75+
return "", fmt.Errorf("the provided digest must be of the form ALGO:HASH")
76+
}
77+
algo, hash := parts[0], parts[1]
78+
return fmt.Sprintf("%s-%s", algo, hash), nil
79+
}
80+
6981
// DigestSignatures returns a list of signatures that match the request
7082
// digest out of config maps labelled with ReleaseLabelConfigMap in the
7183
// openshift-config-managed namespace.
@@ -85,12 +97,10 @@ func (s *Store) DigestSignatures(ctx context.Context, digest string) ([][]byte,
8597
s.rememberMostRecentConfigMaps(configMaps.Items)
8698
}
8799

88-
parts := strings.SplitN(digest, ":", 3)
89-
if len(parts) != 2 || len(parts[0]) == 0 || len(parts[1]) == 0 {
90-
return nil, fmt.Errorf("the provided digest must be of the form ALGO:HASH")
100+
prefix, err := digestToKeyPrefix(digest)
101+
if err != nil {
102+
return nil, err
91103
}
92-
algo, hash := parts[0], parts[1]
93-
prefix := fmt.Sprintf("%s-%s", algo, hash)
94104

95105
var signatures [][]byte
96106
for _, cm := range items {
@@ -117,8 +127,12 @@ func (s *Store) Store(ctx context.Context, signaturesByDigest map[string][][]byt
117127
BinaryData: make(map[string][]byte),
118128
}
119129
for digest, signatures := range signaturesByDigest {
130+
prefix, err := digestToKeyPrefix(digest)
131+
if err != nil {
132+
return err
133+
}
120134
for i := 0; i < len(signatures); i++ {
121-
cm.BinaryData[fmt.Sprintf("%s-%d", digest, i)] = signatures[i]
135+
cm.BinaryData[fmt.Sprintf("%s-%d", prefix, i)] = signatures[i]
122136
}
123137
}
124138
return retry.OnError(

0 commit comments

Comments
 (0)