func()

in releases/go/encryption-sdk/KeyDerivation/KeyDerivation.go [356:449]


func (_static *CompanionStruct_Default___) ExpandKeyMaterial(messageId _dafny.Sequence, plaintextKey _dafny.Sequence, suite m_AwsCryptographyMaterialProvidersTypes.AlgorithmSuiteInfo, crypto *m_AtomicPrimitives.AtomicPrimitivesClient) m_Wrappers.Result {
	var res m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(Companion_ExpandedKeyMaterial_.Default())
	_ = res
	var _0_digest m_AwsCryptographyPrimitivesTypes.DigestAlgorithm
	_ = _0_digest
	_0_digest = (((suite).Dtor_commitment()).Dtor_HKDF()).Dtor_hmac()
	var _1_info _dafny.Sequence
	_ = _1_info
	_1_info = _dafny.Companion_Sequence_.Concatenate((suite).Dtor_binaryId(), Companion_Default___.KEY__LABEL())
	var _2_hkdfExtractInput m_AwsCryptographyPrimitivesTypes.HkdfExtractInput
	_ = _2_hkdfExtractInput
	_2_hkdfExtractInput = m_AwsCryptographyPrimitivesTypes.Companion_HkdfExtractInput_.Create_HkdfExtractInput_(_0_digest, m_Wrappers.Companion_Option_.Create_Some_(messageId), plaintextKey)
	var _3_maybePseudoRandomKey m_Wrappers.Result
	_ = _3_maybePseudoRandomKey
	var _out0 m_Wrappers.Result
	_ = _out0
	_out0 = (crypto).HkdfExtract(_2_hkdfExtractInput)
	_3_maybePseudoRandomKey = _out0
	var _4_valueOrError0 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq)
	_ = _4_valueOrError0
	_4_valueOrError0 = (_3_maybePseudoRandomKey).MapFailure(func(coer12 func(m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyEncryptionSdkTypes.Error) func(interface{}) interface{} {
		return func(arg13 interface{}) interface{} {
			return coer12(arg13.(m_AwsCryptographyPrimitivesTypes.Error))
		}
	}(func(_5_e m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyEncryptionSdkTypes.Error {
		return m_AwsCryptographyEncryptionSdkTypes.Companion_Error_.Create_AwsCryptographyPrimitives_(_5_e)
	}))
	if (_4_valueOrError0).IsFailure() {
		res = (_4_valueOrError0).PropagateFailure()
		return res
	}
	var _6_pseudoRandomKey _dafny.Sequence
	_ = _6_pseudoRandomKey
	_6_pseudoRandomKey = (_4_valueOrError0).Extract().(_dafny.Sequence)
	var _7_encryptKeyInput m_AwsCryptographyPrimitivesTypes.HkdfExpandInput
	_ = _7_encryptKeyInput
	_7_encryptKeyInput = m_AwsCryptographyPrimitivesTypes.Companion_HkdfExpandInput_.Create_HkdfExpandInput_(_0_digest, _6_pseudoRandomKey, _1_info, (((suite).Dtor_kdf()).Dtor_HKDF()).Dtor_outputKeyLength())
	var _8_commitKeyInput m_AwsCryptographyPrimitivesTypes.HkdfExpandInput
	_ = _8_commitKeyInput
	var _9_dt__update__tmp_h0 m_AwsCryptographyPrimitivesTypes.HkdfExpandInput = _7_encryptKeyInput
	_ = _9_dt__update__tmp_h0
	var _10_dt__update_hexpectedLength_h0 int32 = (((suite).Dtor_commitment()).Dtor_HKDF()).Dtor_outputKeyLength()
	_ = _10_dt__update_hexpectedLength_h0
	var _11_dt__update_hinfo_h0 _dafny.Sequence = Companion_Default___.COMMIT__LABEL()
	_ = _11_dt__update_hinfo_h0
	_8_commitKeyInput = m_AwsCryptographyPrimitivesTypes.Companion_HkdfExpandInput_.Create_HkdfExpandInput_((_9_dt__update__tmp_h0).Dtor_digestAlgorithm(), (_9_dt__update__tmp_h0).Dtor_prk(), _11_dt__update_hinfo_h0, _10_dt__update_hexpectedLength_h0)
	var _12_maybeEncryptKey m_Wrappers.Result
	_ = _12_maybeEncryptKey
	var _out1 m_Wrappers.Result
	_ = _out1
	_out1 = (crypto).HkdfExpand(_7_encryptKeyInput)
	_12_maybeEncryptKey = _out1
	var _13_maybeCommitKey m_Wrappers.Result
	_ = _13_maybeCommitKey
	var _out2 m_Wrappers.Result
	_ = _out2
	_out2 = (crypto).HkdfExpand(_8_commitKeyInput)
	_13_maybeCommitKey = _out2
	var _14_valueOrError1 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq)
	_ = _14_valueOrError1
	_14_valueOrError1 = (_12_maybeEncryptKey).MapFailure(func(coer13 func(m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyEncryptionSdkTypes.Error) func(interface{}) interface{} {
		return func(arg14 interface{}) interface{} {
			return coer13(arg14.(m_AwsCryptographyPrimitivesTypes.Error))
		}
	}(func(_15_e m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyEncryptionSdkTypes.Error {
		return m_AwsCryptographyEncryptionSdkTypes.Companion_Error_.Create_AwsCryptographyPrimitives_(_15_e)
	}))
	if (_14_valueOrError1).IsFailure() {
		res = (_14_valueOrError1).PropagateFailure()
		return res
	}
	var _16_encryptKey _dafny.Sequence
	_ = _16_encryptKey
	_16_encryptKey = (_14_valueOrError1).Extract().(_dafny.Sequence)
	var _17_valueOrError2 m_Wrappers.Result = m_Wrappers.Companion_Result_.Default(_dafny.EmptySeq)
	_ = _17_valueOrError2
	_17_valueOrError2 = (_13_maybeCommitKey).MapFailure(func(coer14 func(m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyEncryptionSdkTypes.Error) func(interface{}) interface{} {
		return func(arg15 interface{}) interface{} {
			return coer14(arg15.(m_AwsCryptographyPrimitivesTypes.Error))
		}
	}(func(_18_e m_AwsCryptographyPrimitivesTypes.Error) m_AwsCryptographyEncryptionSdkTypes.Error {
		return m_AwsCryptographyEncryptionSdkTypes.Companion_Error_.Create_AwsCryptographyPrimitives_(_18_e)
	}))
	if (_17_valueOrError2).IsFailure() {
		res = (_17_valueOrError2).PropagateFailure()
		return res
	}
	var _19_commitKey _dafny.Sequence
	_ = _19_commitKey
	_19_commitKey = (_17_valueOrError2).Extract().(_dafny.Sequence)
	res = m_Wrappers.Companion_Result_.Create_Success_(Companion_ExpandedKeyMaterial_.Create_ExpandedKeyMaterial_(_16_encryptKey, m_Wrappers.Companion_Option_.Create_Some_(_19_commitKey)))
	return res
	return res
}