func()

in releases/go/mpl/AwsKmsKeyring/AwsKmsKeyring.go [251:359]


func (_this *AwsKmsKeyring) OnEncrypt_k(input m_AwsCryptographyMaterialProvidersTypes.OnEncryptInput) m_Wrappers.Result {
	{
		var res m_Wrappers.Result = m_Wrappers.Result{}
		_ = res
		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() {
			res = (_2_valueOrError0).PropagateFailure()
			return res
		}
		var _3_stringifiedEncCtx _dafny.Map
		_ = _3_stringifiedEncCtx
		_3_stringifiedEncCtx = (_2_valueOrError0).Extract().(_dafny.Map)
		var _4_kmsGenerateAndWrap *KmsGenerateAndWrapKeyMaterial
		_ = _4_kmsGenerateAndWrap
		var _nw0 *KmsGenerateAndWrapKeyMaterial = New_KmsGenerateAndWrapKeyMaterial_()
		_ = _nw0
		_nw0.Ctor__((_this).Client(), (_this).AwsKmsKey(), (_this).GrantTokens())
		_4_kmsGenerateAndWrap = _nw0
		var _5_kmsWrap *KmsWrapKeyMaterial
		_ = _5_kmsWrap
		var _nw1 *KmsWrapKeyMaterial = 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(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() {
			res = (_6_valueOrError1).PropagateFailure()
			return res
		}
		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().(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(coer52 func(_dafny.Sequence) m_AwsCryptographyMaterialProvidersTypes.Error) func(interface{}) interface{} {
			return func(arg53 interface{}) interface{} {
				return coer52(arg53.(_dafny.Sequence))
			}
		}(m_AwsKmsUtils.Companion_Default___.WrapStringToError))
		if (_10_valueOrError2).IsFailure() {
			res = (_10_valueOrError2).PropagateFailure()
			return res
		}
		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() {
			res = (_12_valueOrError3).PropagateFailure()
			return res
		}
		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() {
				res = (_14_valueOrError4).PropagateFailure()
				return res
			}
			var _15_result m_AwsCryptographyMaterialProvidersTypes.EncryptionMaterials
			_ = _15_result
			_15_result = (_14_valueOrError4).Extract().(m_AwsCryptographyMaterialProvidersTypes.EncryptionMaterials)
			res = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyMaterialProvidersTypes.Companion_OnEncryptOutput_.Create_OnEncryptOutput_(_15_result))
			return res
		} 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() {
				res = (_16_valueOrError5).PropagateFailure()
				return res
			}
			var _17_result m_AwsCryptographyMaterialProvidersTypes.EncryptionMaterials
			_ = _17_result
			_17_result = (_16_valueOrError5).Extract().(m_AwsCryptographyMaterialProvidersTypes.EncryptionMaterials)
			res = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyMaterialProvidersTypes.Companion_OnEncryptOutput_.Create_OnEncryptOutput_(_17_result))
			return res
		}
		return res
	}
}