MCPcopy Create free account
hub / github.com/containerd/nerdctl / Crypt

Function Crypt

pkg/cmd/image/crypt.go:38–103  ·  view source on GitHub ↗
(ctx context.Context, client *containerd.Client, srcRawRef, targetRawRef string, encrypt bool, options types.ImageCryptOptions)

Source from the content-addressed store, hash-verified

36)
37
38func Crypt(ctx context.Context, client *containerd.Client, srcRawRef, targetRawRef string, encrypt bool, options types.ImageCryptOptions) error {
39 var convertOpts = []converter.Opt{}
40 if srcRawRef == "" || targetRawRef == "" {
41 return errors.New("src and target image need to be specified")
42 }
43
44 parsedRerefence, err := referenceutil.Parse(srcRawRef)
45 if err != nil {
46 return err
47 }
48 srcRef := parsedRerefence.String()
49
50 parsedRerefence, err = referenceutil.Parse(targetRawRef)
51 if err != nil {
52 return err
53 }
54 targetRef := parsedRerefence.String()
55
56 platMC, err := platformutil.NewMatchComparer(options.AllPlatforms, options.Platforms)
57 if err != nil {
58 return err
59 }
60 convertOpts = append(convertOpts, converter.WithPlatform(platMC))
61
62 imgcryptFlags, err := parseImgcryptFlags(options, encrypt)
63 if err != nil {
64 return err
65 }
66
67 srcImg, err := client.ImageService().Get(ctx, srcRef)
68 if err != nil {
69 return err
70 }
71 layerDescs, err := platformutil.LayerDescs(ctx, client.ContentStore(), srcImg.Target, platMC)
72 if err != nil {
73 return err
74 }
75 layerFilter := func(desc ocispec.Descriptor) bool {
76 return true
77 }
78 var convertFunc converter.ConvertFunc
79 if encrypt {
80 cc, err := parsehelpers.CreateCryptoConfig(imgcryptFlags, layerDescs)
81 if err != nil {
82 return err
83 }
84 convertFunc = encryption.GetImageEncryptConverter(&cc, layerFilter)
85 } else {
86 cc, err := parsehelpers.CreateDecryptCryptoConfig(imgcryptFlags, layerDescs)
87 if err != nil {
88 return err
89 }
90 convertFunc = encryption.GetImageDecryptConverter(&cc, layerFilter)
91 }
92 // we have to compose the DefaultIndexConvertFunc here to match platforms.
93 convertFunc = composeConvertFunc(converter.DefaultIndexConvertFunc(nil, false, platMC), convertFunc)
94 convertOpts = append(convertOpts, converter.WithIndexConvertFunc(convertFunc))
95

Callers 1

getImgcryptActionFunction · 0.92

Calls 7

ParseFunction · 0.92
NewMatchComparerFunction · 0.92
LayerDescsFunction · 0.92
parseImgcryptFlagsFunction · 0.85
composeConvertFuncFunction · 0.85
GetMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…