@@ -30,10 +30,13 @@ var _ = Describe("Layer source: Docker", func() {
3030 configBlob string
3131 expectedLayersDigests []types.BlobInfo
3232 expectedDiffIds []digestpkg.Digest
33+
34+ skipChecksumValidation bool
3335 )
3436
3537 BeforeEach (func () {
3638 trustedRegistries = []string {}
39+ skipChecksumValidation = false
3740
3841 configBlob = "sha256:217f3b4afdf698d639f854d9c6d640903a011413bc7e7bffeabe63c7ca7e4a7d"
3942 expectedLayersDigests = []types.BlobInfo {
@@ -58,7 +61,7 @@ var _ = Describe("Layer source: Docker", func() {
5861 })
5962
6063 JustBeforeEach (func () {
61- layerSource = source .NewLayerSource ("" , "" , trustedRegistries )
64+ layerSource = source .NewLayerSource ("" , "" , trustedRegistries , skipChecksumValidation )
6265 })
6366
6467 Describe ("Manifest" , func () {
@@ -106,7 +109,7 @@ var _ = Describe("Layer source: Docker", func() {
106109
107110 Context ("when the correct credentials are provided" , func () {
108111 JustBeforeEach (func () {
109- layerSource = source .NewLayerSource (RegistryUsername , RegistryPassword , trustedRegistries )
112+ layerSource = source .NewLayerSource (RegistryUsername , RegistryPassword , trustedRegistries , skipChecksumValidation )
110113 })
111114
112115 It ("fetches the manifest" , func () {
@@ -186,7 +189,7 @@ var _ = Describe("Layer source: Docker", func() {
186189 })
187190
188191 JustBeforeEach (func () {
189- layerSource = source .NewLayerSource (RegistryUsername , RegistryPassword , trustedRegistries )
192+ layerSource = source .NewLayerSource (RegistryUsername , RegistryPassword , trustedRegistries , skipChecksumValidation )
190193 var err error
191194 manifest , err = layerSource .Manifest (logger , baseImageURL )
192195 Expect (err ).NotTo (HaveOccurred ())
@@ -351,7 +354,7 @@ var _ = Describe("Layer source: Docker", func() {
351354 })
352355
353356 JustBeforeEach (func () {
354- layerSource = source .NewLayerSource (RegistryUsername , RegistryPassword , trustedRegistries )
357+ layerSource = source .NewLayerSource (RegistryUsername , RegistryPassword , trustedRegistries , skipChecksumValidation )
355358 })
356359
357360 It ("fetches the manifest" , func () {
@@ -427,7 +430,7 @@ var _ = Describe("Layer source: Docker", func() {
427430
428431 Context ("when the correct credentials are provided" , func () {
429432 JustBeforeEach (func () {
430- layerSource = source .NewLayerSource (RegistryUsername , RegistryPassword , trustedRegistries )
433+ layerSource = source .NewLayerSource (RegistryUsername , RegistryPassword , trustedRegistries , skipChecksumValidation )
431434 })
432435
433436 It ("fetches the config" , func () {
@@ -500,6 +503,17 @@ var _ = Describe("Layer source: Docker", func() {
500503 _ , _ , err := layerSource .Blob (logger , baseImageURL , expectedLayersDigests [1 ].Digest .String ())
501504 Expect (err ).To (MatchError (ContainSubstring ("invalid checksum: layer is corrupted" )))
502505 })
506+
507+ Context ("when a devious hacker tries to set skipChecksumValidation to true" , func () {
508+ BeforeEach (func () {
509+ skipChecksumValidation = true
510+ })
511+
512+ It ("returns an error" , func () {
513+ _ , _ , err := layerSource .Blob (logger , baseImageURL , expectedLayersDigests [1 ].Digest .String ())
514+ Expect (err ).To (MatchError (ContainSubstring ("invalid checksum: layer is corrupted" )))
515+ })
516+ })
503517 })
504518 })
505519})
0 commit comments