in releases/go/encryption-sdk/MessageBody/MessageBody.go [312:371]
func (_static *CompanionStruct_Default___) EncryptMessageBody(plaintext _dafny.Sequence, header m_Header.HeaderInfo, key _dafny.Sequence, crypto *m_AtomicPrimitives.AtomicPrimitivesClient) m_Wrappers.Result {
var result m_Wrappers.Result = m_Wrappers.Result{}
_ = result
var _0_n _dafny.Int
_ = _0_n
var _1_sequenceNumber uint32
_ = _1_sequenceNumber
var _rhs0 _dafny.Int = _dafny.Zero
_ = _rhs0
var _rhs1 uint32 = Companion_Default___.START__SEQUENCE__NUMBER()
_ = _rhs1
_0_n = _rhs0
_1_sequenceNumber = _rhs1
var _2_regularFrames _dafny.Sequence
_ = _2_regularFrames
_2_regularFrames = _dafny.SeqOf()
for ((_0_n).Plus(_dafny.IntOfUint32(((header).Dtor_body()).Dtor_frameLength()))).Cmp(_dafny.IntOfUint32((plaintext).Cardinality())) < 0 {
var _3_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Outcome_.Default()
_ = _3_valueOrError0
_3_valueOrError0 = m_Wrappers.Companion_Default___.Need((_1_sequenceNumber) < (Companion_Default___.ENDFRAME__SEQUENCE__NUMBER()), m_AwsCryptographyEncryptionSdkTypes.Companion_Error_.Create_AwsEncryptionSdkException_(_dafny.SeqOfString("too many frames")))
if (_3_valueOrError0).IsFailure() {
result = (_3_valueOrError0).PropagateFailure()
return result
}
var _4_plaintextFrame _dafny.Sequence
_ = _4_plaintextFrame
_4_plaintextFrame = (plaintext).Subsequence((_0_n).Uint32(), ((_0_n).Plus(_dafny.IntOfUint32(((header).Dtor_body()).Dtor_frameLength()))).Uint32())
var _5_valueOrError1 m_Wrappers.Result = m_Wrappers.Result{}
_ = _5_valueOrError1
var _out0 m_Wrappers.Result
_ = _out0
_out0 = Companion_Default___.EncryptRegularFrame(key, header, _4_plaintextFrame, _1_sequenceNumber, crypto)
_5_valueOrError1 = _out0
if (_5_valueOrError1).IsFailure() {
result = (_5_valueOrError1).PropagateFailure()
return result
}
var _6_regularFrame m_Frames.Frame
_ = _6_regularFrame
_6_regularFrame = (_5_valueOrError1).Extract().(m_Frames.Frame)
_2_regularFrames = _dafny.Companion_Sequence_.Concatenate(_2_regularFrames, _dafny.SeqOf(_6_regularFrame))
_0_n = (_0_n).Plus(_dafny.IntOfUint32(((header).Dtor_body()).Dtor_frameLength()))
_1_sequenceNumber = (_1_sequenceNumber) + (uint32(1))
}
var _7_valueOrError2 m_Wrappers.Result = m_Wrappers.Result{}
_ = _7_valueOrError2
var _out1 m_Wrappers.Result
_ = _out1
_out1 = Companion_Default___.EncryptFinalFrame(key, header, (plaintext).Drop((_0_n).Uint32()), _1_sequenceNumber, crypto)
_7_valueOrError2 = _out1
if (_7_valueOrError2).IsFailure() {
result = (_7_valueOrError2).PropagateFailure()
return result
}
var _8_finalFrame m_Frames.Frame
_ = _8_finalFrame
_8_finalFrame = (_7_valueOrError2).Extract().(m_Frames.Frame)
result = m_Wrappers.Companion_Result_.Create_Success_(Companion_FramedMessageBody_.Create_FramedMessageBody_(_2_regularFrames, _8_finalFrame))
return result
}