@@ -13,6 +13,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
13
See the License for the specific language governing permissions and
14
14
limitations under the License.
15
15
*/
16
+
16
17
package controllers
17
18
18
19
import (
@@ -24,9 +25,6 @@ import (
24
25
"encoding/pem"
25
26
"errors"
26
27
"fmt"
27
- coptions "github.com/sigstore/cosign/cmd/cosign/cli/options"
28
- "github.com/sigstore/cosign/cmd/cosign/cli/sign"
29
- "github.com/sigstore/cosign/pkg/cosign"
30
28
"math/big"
31
29
"net"
32
30
"net/http"
@@ -55,6 +53,9 @@ import (
55
53
gcrv1 "github.com/google/go-containerregistry/pkg/v1"
56
54
"github.com/google/go-containerregistry/pkg/v1/mutate"
57
55
. "github.com/onsi/gomega"
56
+ coptions "github.com/sigstore/cosign/cmd/cosign/cli/options"
57
+ "github.com/sigstore/cosign/cmd/cosign/cli/sign"
58
+ "github.com/sigstore/cosign/pkg/cosign"
58
59
corev1 "k8s.io/api/core/v1"
59
60
apierrors "k8s.io/apimachinery/pkg/api/errors"
60
61
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -1231,7 +1232,7 @@ func TestOCIRepository_verifyOCISourceSignature(t *testing.T) {
1231
1232
url string
1232
1233
reference * sourcev1.OCIRepositoryRef
1233
1234
shouldSign bool
1234
- wantErr bool
1235
+ wantErrMsg string
1235
1236
}{
1236
1237
{
1237
1238
name : "signed image should pass verification" ,
@@ -1246,6 +1247,7 @@ func TestOCIRepository_verifyOCISourceSignature(t *testing.T) {
1246
1247
Tag : "6.1.5" ,
1247
1248
},
1248
1249
shouldSign : false ,
1250
+ wantErrMsg : "no matching signatures were found" ,
1249
1251
},
1250
1252
}
1251
1253
@@ -1256,6 +1258,29 @@ func TestOCIRepository_verifyOCISourceSignature(t *testing.T) {
1256
1258
Storage : testStorage ,
1257
1259
}
1258
1260
1261
+ pf := func (b bool ) ([]byte , error ) {
1262
+ return []byte ("cosign-password" ), nil
1263
+ }
1264
+
1265
+ keys , err := cosign .GenerateKeyPair (pf )
1266
+ g .Expect (err ).ToNot (HaveOccurred ())
1267
+
1268
+ err = os .WriteFile (path .Join (tmpDir , "cosign.key" ), keys .PrivateBytes , 0600 )
1269
+ g .Expect (err ).ToNot (HaveOccurred ())
1270
+
1271
+ secret := & corev1.Secret {
1272
+ ObjectMeta : metav1.ObjectMeta {
1273
+ Name : "cosign-key" ,
1274
+ },
1275
+ Data : map [string ][]byte {
1276
+ "cosign.pub" : keys .PublicBytes ,
1277
+ }}
1278
+
1279
+ err = r .Create (ctx , secret )
1280
+ if err != nil {
1281
+ g .Expect (err ).NotTo (HaveOccurred ())
1282
+ }
1283
+
1259
1284
for _ , tt := range tests {
1260
1285
t .Run (tt .name , func (t * testing.T ) {
1261
1286
obj := & sourcev1.OCIRepository {
@@ -1273,69 +1298,44 @@ func TestOCIRepository_verifyOCISourceSignature(t *testing.T) {
1273
1298
},
1274
1299
}
1275
1300
1276
- pf := func (b bool ) ([]byte , error ) {
1277
- return []byte ("foo" ), nil
1278
- }
1279
-
1280
- keys , err := cosign .GenerateKeyPair (pf )
1281
- if err != nil {
1282
- g .Expect (err ).ToNot (HaveOccurred ())
1283
- }
1284
-
1285
- err = os .WriteFile ("cosign.key" , keys .PrivateBytes , 0600 )
1286
- if err != nil {
1287
- g .Expect (err ).ToNot (HaveOccurred ())
1288
- }
1289
-
1290
- secret := & corev1.Secret {
1291
- ObjectMeta : metav1.ObjectMeta {
1292
- Name : "cosign-key" ,
1293
- },
1294
- Data : map [string ][]byte {
1295
- "cosign.pub" : keys .PublicBytes ,
1296
- }}
1297
-
1298
- err = r .Create (ctx , secret )
1299
- if err != nil {
1300
- g .Expect (err ).NotTo (HaveOccurred ())
1301
- }
1302
-
1303
1301
keychain , err := r .keychain (ctx , obj )
1304
1302
if err != nil {
1305
1303
g .Expect (err ).ToNot (HaveOccurred ())
1306
1304
}
1307
1305
1308
1306
options := r .craneOptions (ctx , obj .Spec .Insecure )
1309
1307
options = append (options , crane .WithAuthFromKeychain (keychain ))
1310
- url , err := r .getArtifactURL (obj , options )
1308
+ artifactURL , err := r .getArtifactURL (obj , options )
1311
1309
if err != nil {
1312
1310
g .Expect (err ).ToNot (HaveOccurred ())
1313
1311
}
1314
1312
1315
1313
if tt .shouldSign {
1316
-
1317
1314
ko := coptions.KeyOpts {
1318
- KeyRef : "cosign.key" ,
1315
+ KeyRef : path . Join ( tmpDir , "cosign.key" ) ,
1319
1316
PassFunc : pf ,
1320
1317
}
1321
1318
1322
- t .Logf ("url: %s" , url )
1323
-
1324
- ro := & coptions.RootOptions {}
1325
- err = sign .SignCmd (ro , ko , coptions.RegistryOptions {Keychain : keychain }, nil , []string {url }, "" , "" , false , "" , "" , "" , false , false , "" , false )
1326
- if err != nil {
1327
- g .Expect (err ).ToNot (HaveOccurred ())
1319
+ ro := & coptions.RootOptions {
1320
+ Timeout : timeout ,
1328
1321
}
1322
+ err = sign .SignCmd (ro , ko , coptions.RegistryOptions {Keychain : keychain },
1323
+ nil , []string {artifactURL }, "" ,
1324
+ "" , true , "" ,
1325
+ "" , "" , false ,
1326
+ false , "" , false )
1327
+ g .Expect (err ).ToNot (HaveOccurred ())
1329
1328
}
1330
1329
1331
- err = r .verifyOCISourceSignature (ctx , obj , url , keychain )
1332
- if tt .wantErr {
1333
- g .Expect (err ).To (HaveOccurred ())
1334
- return
1330
+ err = r .verifyOCISourceSignature (ctx , obj , artifactURL , keychain )
1331
+ if tt .wantErrMsg != "" {
1332
+ g .Expect (err ).ToNot (BeNil ())
1333
+ g .Expect (err .Error ()).To (ContainSubstring (tt .wantErrMsg ))
1334
+ } else {
1335
+ g .Expect (err ).ToNot (HaveOccurred ())
1335
1336
}
1336
1337
})
1337
1338
}
1338
-
1339
1339
}
1340
1340
1341
1341
func TestOCIRepository_stalled (t * testing.T ) {
0 commit comments