in releases/go/mpl/AwsKmsMrkKeyring/AwsKmsMrkKeyring.go [263:371]
func (_this *AwsKmsMrkKeyring) OnEncrypt_k(input m_AwsCryptographyMaterialProvidersTypes.OnEncryptInput) m_Wrappers.Result {
{
var output m_Wrappers.Result = m_Wrappers.Result{}
_ = output
var _0_materials m_AwsCryptographyMaterialProvidersTypes.EncryptionMaterials
_ = _0_materials
_0_materials = (input).Dtor_materials()
var _1_suite m_AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo
_ = _1_suite
_1_suite = ((input).Dtor_materials()).Dtor_algorithmSuite()
var _2_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptyMap)
_ = _2_valueOrError0
_2_valueOrError0 = m_AwsKmsUtils.Companion_Default___.StringifyEncryptionContext(((input).Dtor_materials()).Dtor_encryptionContext())
if (_2_valueOrError0).IsFailure() {
output = (_2_valueOrError0).PropagateFailure()
return output
}
var _3_stringifiedEncCtx _dafny.Map
_ = _3_stringifiedEncCtx
_3_stringifiedEncCtx = (_2_valueOrError0).Extract().(_dafny.Map)
var _4_kmsGenerateAndWrap *m_AwsKmsKeyring.KmsGenerateAndWrapKeyMaterial
_ = _4_kmsGenerateAndWrap
var _nw0 *m_AwsKmsKeyring.KmsGenerateAndWrapKeyMaterial = m_AwsKmsKeyring.New_KmsGenerateAndWrapKeyMaterial_()
_ = _nw0
_nw0.Ctor__((_this).Client(), (_this).AwsKmsKey(), (_this).GrantTokens())
_4_kmsGenerateAndWrap = _nw0
var _5_kmsWrap *m_AwsKmsKeyring.KmsWrapKeyMaterial
_ = _5_kmsWrap
var _nw1 *m_AwsKmsKeyring.KmsWrapKeyMaterial = m_AwsKmsKeyring.New_KmsWrapKeyMaterial_()
_ = _nw1
_nw1.Ctor__((_this).Client(), (_this).AwsKmsKey(), (_this).GrantTokens())
_5_kmsWrap = _nw1
var _6_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_EdkWrapping.Companion_WrapEdkMaterialOutput_.Default(m_AwsKmsKeyring.Companion_KmsWrapInfo_.Default()))
_ = _6_valueOrError1
var _out0 m_Wrappers.Result
_ = _out0
_out0 = m_EdkWrapping.Companion_Default___.WrapEdkMaterial(_0_materials, _5_kmsWrap, _4_kmsGenerateAndWrap)
_6_valueOrError1 = _out0
if (_6_valueOrError1).IsFailure() {
output = (_6_valueOrError1).PropagateFailure()
return output
}
var _7_wrapOutput m_EdkWrapping.WrapEdkMaterialOutput
_ = _7_wrapOutput
_7_wrapOutput = (_6_valueOrError1).Extract().(m_EdkWrapping.WrapEdkMaterialOutput)
var _8_kmsKeyArn _dafny.Sequence
_ = _8_kmsKeyArn
_8_kmsKeyArn = ((_7_wrapOutput).Dtor_wrapInfo().(m_AwsKmsKeyring.KmsWrapInfo)).Dtor_kmsKeyArn()
var _9_symmetricSigningKeyList m_Wrappers.Option
_ = _9_symmetricSigningKeyList
if ((_7_wrapOutput).Dtor_symmetricSigningKey()).Is_Some() {
_9_symmetricSigningKeyList = m_Wrappers.Companion_Option_.Create_Some_(_dafny.SeqOf(((_7_wrapOutput).Dtor_symmetricSigningKey()).Dtor_value().(_dafny.Sequence)))
} else {
_9_symmetricSigningKeyList = m_Wrappers.Companion_Option_.Create_None_()
}
var _10_valueOrError2 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(m_UTF8.Companion_ValidUTF8Bytes_.Witness())
_ = _10_valueOrError2
_10_valueOrError2 = (m_UTF8.Encode(_8_kmsKeyArn)).MapFailure(func(coer69 func(_dafny.Sequence) m_AwsCryptographyMaterialProvidersTypes.Error) func(interface{}) interface{} {
return func(arg70 interface{}) interface{} {
return coer69(arg70.(_dafny.Sequence))
}
}(m_AwsKmsUtils.Companion_Default___.WrapStringToError))
if (_10_valueOrError2).IsFailure() {
output = (_10_valueOrError2).PropagateFailure()
return output
}
var _11_providerInfo _dafny.Sequence
_ = _11_providerInfo
_11_providerInfo = (_10_valueOrError2).Extract().(_dafny.Sequence)
var _12_valueOrError3 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default()
_ = _12_valueOrError3
_12_valueOrError3 = m_Wrappers.Companion_Default___.Need((_dafny.IntOfUint32((_11_providerInfo).Cardinality())).Cmp(m_StandardLibrary_UInt.Companion_Default___.UINT16__LIMIT()) < 0, m_AwsCryptographyMaterialProvidersTypes.Companion_Error_.Create_AwsCryptographicMaterialProvidersException_(_dafny.SeqOfString("Invalid response from AWS KMS GenerateDataKey: Key ID too long.")))
if (_12_valueOrError3).IsFailure() {
output = (_12_valueOrError3).PropagateFailure()
return output
}
var _13_edk m_AwsCryptographyMaterialProvidersTypes.EncryptedDataKey
_ = _13_edk
_13_edk = m_AwsCryptographyMaterialProvidersTypes.Companion_EncryptedDataKey_.Create_EncryptedDataKey_(m_Constants.Companion_Default___.PROVIDER__ID(), _11_providerInfo, (_7_wrapOutput).Dtor_wrappedMaterial())
if (_7_wrapOutput).Is_GenerateAndWrapEdkMaterialOutput() {
var _14_valueOrError4 m_Wrappers.Result = m_Wrappers.Result{}
_ = _14_valueOrError4
_14_valueOrError4 = m_Materials.Companion_Default___.EncryptionMaterialAddDataKey(_0_materials, (_7_wrapOutput).Dtor_plaintextDataKey(), _dafny.SeqOf(_13_edk), _9_symmetricSigningKeyList)
if (_14_valueOrError4).IsFailure() {
output = (_14_valueOrError4).PropagateFailure()
return output
}
var _15_result m_AwsCryptographyMaterialProvidersTypes.EncryptionMaterials
_ = _15_result
_15_result = (_14_valueOrError4).Extract().(m_AwsCryptographyMaterialProvidersTypes.EncryptionMaterials)
output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyMaterialProvidersTypes.Companion_OnEncryptOutput_.Create_OnEncryptOutput_(_15_result))
return output
} else if (_7_wrapOutput).Is_WrapOnlyEdkMaterialOutput() {
var _16_valueOrError5 m_Wrappers.Result = m_Wrappers.Result{}
_ = _16_valueOrError5
_16_valueOrError5 = m_Materials.Companion_Default___.EncryptionMaterialAddEncryptedDataKeys(_0_materials, _dafny.SeqOf(_13_edk), _9_symmetricSigningKeyList)
if (_16_valueOrError5).IsFailure() {
output = (_16_valueOrError5).PropagateFailure()
return output
}
var _17_result m_AwsCryptographyMaterialProvidersTypes.EncryptionMaterials
_ = _17_result
_17_result = (_16_valueOrError5).Extract().(m_AwsCryptographyMaterialProvidersTypes.EncryptionMaterials)
output = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyMaterialProvidersTypes.Companion_OnEncryptOutput_.Create_OnEncryptOutput_(_17_result))
return output
}
return output
}
}