in releases/go/encryption-sdk/EncryptDecryptHelpers/EncryptDecryptHelpers.go [403:464]
func (_static *CompanionStruct_Default___) CreateCmmFromInput(inputCmm m_Wrappers.Option, inputKeyring m_Wrappers.Option) m_Wrappers.Result {
var res m_Wrappers.Result = m_Wrappers.Result{}
_ = res
var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default()
_ = _0_valueOrError0
_0_valueOrError0 = m_Wrappers.Companion_Default___.Need(((inputCmm).Is_None()) || ((inputKeyring).Is_None()), m_AwsCryptographyEncryptionSdkTypes.Companion_Error_.Create_AwsEncryptionSdkException_(_dafny.SeqOfString("Cannot provide both a keyring and a CMM")))
if (_0_valueOrError0).IsFailure() {
res = (_0_valueOrError0).PropagateFailure()
return res
}
var _1_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default()
_ = _1_valueOrError1
_1_valueOrError1 = m_Wrappers.Companion_Default___.Need(((inputCmm).Is_Some()) || ((inputKeyring).Is_Some()), m_AwsCryptographyEncryptionSdkTypes.Companion_Error_.Create_AwsEncryptionSdkException_(_dafny.SeqOfString("Must provide either a keyring or a CMM")))
if (_1_valueOrError1).IsFailure() {
res = (_1_valueOrError1).PropagateFailure()
return res
}
var _2_cmm m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager = (m_AwsCryptographyMaterialProvidersTypes.ICryptographicMaterialsManager)(nil)
_ = _2_cmm
if (inputCmm).Is_Some() {
res = m_Wrappers.Companion_Result_.Create_Success_(m_AwsCryptographyMaterialProvidersTypes.Companion_ICryptographicMaterialsManager_.CastTo_((inputCmm).Dtor_value()))
return res
} else {
var _3_maybeMaterialsProviders m_Wrappers.Result
_ = _3_maybeMaterialsProviders
var _out0 m_Wrappers.Result
_ = _out0
_out0 = m_MaterialProviders.Companion_Default___.MaterialProviders(m_MaterialProviders.Companion_Default___.DefaultMaterialProvidersConfig())
_3_maybeMaterialsProviders = _out0
var _4_valueOrError2 m_Wrappers.Result = m_Wrappers.Result{}
_ = _4_valueOrError2
_4_valueOrError2 = (_3_maybeMaterialsProviders).MapFailure(func(coer17 func(m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyEncryptionSdkTypes.Error) func(interface{}) interface{} {
return func(arg18 interface{}) interface{} {
return coer17(arg18.(m_AwsCryptographyMaterialProvidersTypes.Error))
}
}(func(_5_e m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyEncryptionSdkTypes.Error {
return m_AwsCryptographyEncryptionSdkTypes.Companion_Error_.Create_AwsCryptographyMaterialProviders_(_5_e)
}))
if (_4_valueOrError2).IsFailure() {
res = (_4_valueOrError2).PropagateFailure()
return res
}
var _6_materialProviders *m_MaterialProviders.MaterialProvidersClient
_ = _6_materialProviders
_6_materialProviders = (_4_valueOrError2).Extract().(*m_MaterialProviders.MaterialProvidersClient)
var _7_maybeCmm m_Wrappers.Result
_ = _7_maybeCmm
var _out1 m_Wrappers.Result
_ = _out1
_out1 = (_6_materialProviders).CreateDefaultCryptographicMaterialsManager(m_AwsCryptographyMaterialProvidersTypes.Companion_CreateDefaultCryptographicMaterialsManagerInput_.Create_CreateDefaultCryptographicMaterialsManagerInput_(m_AwsCryptographyMaterialProvidersTypes.Companion_IKeyring_.CastTo_((inputKeyring).Dtor_value())))
_7_maybeCmm = _out1
res = (_7_maybeCmm).MapFailure(func(coer18 func(m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyEncryptionSdkTypes.Error) func(interface{}) interface{} {
return func(arg19 interface{}) interface{} {
return coer18(arg19.(m_AwsCryptographyMaterialProvidersTypes.Error))
}
}(func(_8_e m_AwsCryptographyMaterialProvidersTypes.Error) m_AwsCryptographyEncryptionSdkTypes.Error {
return m_AwsCryptographyEncryptionSdkTypes.Companion_Error_.Create_AwsCryptographyMaterialProviders_(_8_e)
}))
return res
}
return res
}