in pkg/encrypt/encrypt_linux.go [23:43]
func (ch *LinuxCertificateHandler) Encrypt(bytesToEncrypt []byte) (encryptedBytes []byte, err error) {
thumbprint, err := ch.GetThumbprint()
if err != nil {
return nil, err
}
crt := filepath.Join(ch.certLocation, fmt.Sprintf("%s.crt", thumbprint))
// we use os/exec instead of azure-docker-extension/pkg/executil here as
// other extension handlers depend on this package for parsing handler
// settings.
cmd := exec.Command("openssl", "smime", "-outform", "DER", "-encrypt", crt)
var bOut, bErr bytes.Buffer
cmd.Stdin = bytes.NewReader(bytesToEncrypt)
cmd.Stdout = &bOut
cmd.Stderr = &bErr
if err := cmd.Run(); err != nil {
return nil, fmt.Errorf("encryption failed: error=%v stderr=%s", err, string(bErr.Bytes()))
}
return bOut.Bytes(), nil
}