in image/image.go [682:716]
func Encrypt(img Image, pubEncKey sec.PubEncKey) (Image, error) {
dup := img.Clone()
tlvp, err := dup.FindUniqueTlv(IMAGE_TLV_ENC_RSA)
if err != nil {
return dup, err
}
if tlvp != nil {
return dup, errors.Errorf("image already contains an ENC_RSA TLV")
}
plainSecret, err := GeneratePlainSecret()
if err != nil {
return dup, err
}
cipherSecret, err := pubEncKey.Encrypt(plainSecret)
if err != nil {
return dup, err
}
body, err := sec.EncryptAES(dup.Body, plainSecret, nil)
if err != nil {
return dup, err
}
dup.Body = body
tlv, err := GenerateEncTlv(cipherSecret)
if err != nil {
return dup, err
}
dup.Tlvs = append(dup.Tlvs, tlv)
return dup, nil
}