func()

in releases/go/encryption-sdk/EncryptDecryptHelpers/EncryptDecryptHelpers.go [688:779]


func (_static *CompanionStruct_Default___) GetEncryptionMaterials(cmm m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager, algorithmSuiteId m_Wrappers.Option, encryptionContext _dafny.Map, maxPlaintextLength int64, commitmentPolicy m_AwsCryptographyMaterialProvidersTypes.ESDKCommitmentPolicy, mpl *m_MaterialProviders.MaterialProvidersClient) m_Wrappers.Result {
	var res m_Wrappers.Result = m_Wrappers.Result{}
	_ = res
	var _0_encMatRequest m_AwsCryptographyMaterialProvidersTypes.GetEncryptionMaterialsInput
	_ = _0_encMatRequest
	_0_encMatRequest = m_AwsCryptographyMaterialProvidersTypes.Companion_GetEncryptionMaterialsInput_.Create_GetEncryptionMaterialsInput_(encryptionContext, m_AwsCryptographyMaterialProvidersTypes.Companion_CommitmentPolicy_.Create_ESDK_(commitmentPolicy), algorithmSuiteId, m_Wrappers.Companion_Option_.Create_Some_(maxPlaintextLength), m_Wrappers.Companion_Option_.Create_None_())
	var _1_getEncMatResult m_Wrappers.Result
	_ = _1_getEncMatResult
	var _out0 m_Wrappers.Result
	_ = _out0
	_out0 = (cmm).GetEncryptionMaterials(_0_encMatRequest)
	_1_getEncMatResult = _out0
	var _2_valueOrError0 m_Wrappers.Result = m_Wrappers.Result{}
	_ = _2_valueOrError0
	_2_valueOrError0 = (_1_getEncMatResult).MapFailure(func(coer22 func(m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyEncryptionSdkTypes.Error) func(interface{}) interface{} {
		return func(arg23 interface{}) interface{} {
			return coer22(arg23.(m_AwsCryptographyMaterialProvidersTypes.Error))
		}
	}(func(_3_e m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyEncryptionSdkTypes.Error {
		return m_AwsCryptographyEncryptionSdkTypes.Companion_Error_.Create_AwsCryptographyMaterialProviders_(_3_e)
	}))
	if (_2_valueOrError0).IsFailure() {
		res = (_2_valueOrError0).PropagateFailure()
		return res
	}
	var _4_output m_AwsCryptographyMaterialProvidersTypes.GetEncryptionMaterialsOutput
	_ = _4_output
	_4_output = (_2_valueOrError0).Extract().(m_AwsCryptographyMaterialProvidersTypes.GetEncryptionMaterialsOutput)
	var _5_materials m_AwsCryptographyMaterialProvidersTypes.EncryptionMaterials
	_ = _5_materials
	_5_materials = (_4_output).Dtor_encryptionMaterials()
	var _6_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.TupleOf())
	_ = _6_valueOrError1
	_6_valueOrError1 = ((mpl).ValidateCommitmentPolicyOnEncrypt(m_AwsCryptographyMaterialProvidersTypes.Companion_ValidateCommitmentPolicyOnEncryptInput_.Create_ValidateCommitmentPolicyOnEncryptInput_(((_5_materials).Dtor_algorithmSuite()).Dtor_id(), m_AwsCryptographyMaterialProvidersTypes.Companion_CommitmentPolicy_.Create_ESDK_(commitmentPolicy)))).MapFailure(func(coer23 func(m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyEncryptionSdkTypes.Error) func(interface{}) interface{} {
		return func(arg24 interface{}) interface{} {
			return coer23(arg24.(m_AwsCryptographyMaterialProvidersTypes.Error))
		}
	}(func(_7_e m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyEncryptionSdkTypes.Error {
		return m_AwsCryptographyEncryptionSdkTypes.Companion_Error_.Create_AwsCryptographyMaterialProviders_(_7_e)
	}))
	if (_6_valueOrError1).IsFailure() {
		res = (_6_valueOrError1).PropagateFailure()
		return res
	}
	var _8___v4 _dafny.Tuple
	_ = _8___v4
	_8___v4 = (_6_valueOrError1).Extract().(_dafny.Tuple)
	var _9_valueOrError2 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.TupleOf())
	_ = _9_valueOrError2
	_9_valueOrError2 = ((mpl).EncryptionMaterialsHasPlaintextDataKey(_5_materials)).MapFailure(func(coer24 func(m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyEncryptionSdkTypes.Error) func(interface{}) interface{} {
		return func(arg25 interface{}) interface{} {
			return coer24(arg25.(m_AwsCryptographyMaterialProvidersTypes.Error))
		}
	}(func(_10_e m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyEncryptionSdkTypes.Error {
		return m_AwsCryptographyEncryptionSdkTypes.Companion_Error_.Create_AwsCryptographyMaterialProviders_(_10_e)
	}))
	if (_9_valueOrError2).IsFailure() {
		res = (_9_valueOrError2).PropagateFailure()
		return res
	}
	var _11___v5 _dafny.Tuple
	_ = _11___v5
	_11___v5 = (_9_valueOrError2).Extract().(_dafny.Tuple)
	var _12_valueOrError3 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default()
	_ = _12_valueOrError3
	_12_valueOrError3 = m_Wrappers.Companion_Default___.Need(m_SerializableTypes.Companion_Default___.IsESDKEncryptionContext((_5_materials).Dtor_encryptionContext()), m_AwsCryptographyEncryptionSdkTypes.Companion_Error_.Create_AwsEncryptionSdkException_(_dafny.SeqOfString("CMM failed to return serializable encryption materials.")))
	if (_12_valueOrError3).IsFailure() {
		res = (_12_valueOrError3).PropagateFailure()
		return res
	}
	var _13_valueOrError4 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default()
	_ = _13_valueOrError4
	_13_valueOrError4 = m_Wrappers.Companion_Default___.Need(m_StandardLibrary_UInt.Companion_Default___.HasUint16Len((_5_materials).Dtor_encryptedDataKeys()), m_AwsCryptographyEncryptionSdkTypes.Companion_Error_.Create_AwsEncryptionSdkException_(_dafny.SeqOfString("CMM returned EDKs that exceed the allowed maximum.")))
	if (_13_valueOrError4).IsFailure() {
		res = (_13_valueOrError4).PropagateFailure()
		return res
	}
	var _14_valueOrError5 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default()
	_ = _14_valueOrError5
	_14_valueOrError5 = m_Wrappers.Companion_Default___.Need(_dafny.Quantifier(((_5_materials).Dtor_encryptedDataKeys()).UniqueElements(), true, func(_forall_var_0 m_AwsCryptographyMaterialProvidersTypes.EncryptedDataKey) bool {
		var _15_edk m_AwsCryptographyMaterialProvidersTypes.EncryptedDataKey
		_15_edk = interface{}(_forall_var_0).(m_AwsCryptographyMaterialProvidersTypes.EncryptedDataKey)
		return !(_dafny.Companion_Sequence_.Contains((_5_materials).Dtor_encryptedDataKeys(), _15_edk)) || (m_SerializableTypes.Companion_Default___.IsESDKEncryptedDataKey(_15_edk))
	}), m_AwsCryptographyEncryptionSdkTypes.Companion_Error_.Create_AwsEncryptionSdkException_(_dafny.SeqOfString("CMM returned non-serializable encrypted data key.")))
	if (_14_valueOrError5).IsFailure() {
		res = (_14_valueOrError5).PropagateFailure()
		return res
	}
	res = m_Wrappers.Companion_Result_.Create_Success_(_5_materials)
	return res
	return res
}