def checkpoint_ctr4_stream

qasim-bend-kit@0.1.0.2 · proof/AES_NistCtrProof.bend:45

import qasim-bend-kit@0.1.0.2/proof/AES_NistCtrProof.bend as AESNistCtrProof
import Base
import qasim-bend-kit@0.1.0.2/libs/AES256GCMCore.bend as Core
import qasim-bend-kit@0.1.0.2/proof/AES_NistKeyScheduleProof.bend as Key
import qasim-bend-kit@0.1.0.2/proof/AES_NistCtr4BlockProof.bend as B4
import qasim-bend-kit@0.1.0.2/proof/AES_NistCtr4ComposeProof.bend as P4

45def checkpoint_ctr4_stream(+remaining: Nat, +fuel: Nat, +next_counter: List<&2, U32>,
46    count: {remaining == 16n+fuel : Nat},
47    counter: {Core.gcm_inc32(B4.block()) == next_counter : List<&2, U32>}) ->
48    {Core.gcm_ctr_stream_exact.go(remaining, Key.words_60(), B4.block(), Nil{}) == List.append(&2, U32, B4.result(), Core.gcm_ctr_stream_exact.go(fuel, Key.words_60(), next_counter, Nil{})) : List<&2, U32>}:
49    Equal.trans(List<&2, U32>, Core.gcm_ctr_stream_exact.go(remaining, Key.words_60(), B4.block(), Nil{}), Core.aes_byte_at(B4.result(), 0n) <> Core.gcm_ctr_stream_exact.go(15n+fuel, Key.words_60(), Core.gcm_inc32(B4.block()), List.tail(&2, U32, B4.result())), List.append(&2, U32, B4.result(), Core.gcm_ctr_stream_exact.go(fuel, Key.words_60(), next_counter, Nil{})),
50        stream_step(remaining, 15n+fuel, Key.words_60(), B4.block(), B4.result(), count, P4.expanded_block_matches()),
51        Equal.trans(List<&2, U32>, Core.aes_byte_at(B4.result(), 0n) <> Core.gcm_ctr_stream_exact.go(15n+fuel, Key.words_60(), Core.gcm_inc32(B4.block()), List.tail(&2, U32, B4.result())), List.append(&2, U32, B4.result(), Core.gcm_ctr_stream_exact.go(fuel, Key.words_60(), Core.gcm_inc32(B4.block()), Nil{})), List.append(&2, U32, B4.result(), Core.gcm_ctr_stream_exact.go(fuel, Key.words_60(), next_counter, Nil{})), {==},
52            Equal.cong(List<&2, U32>, List<&2, U32>, next => List.append(&2, U32, B4.result(), Core.gcm_ctr_stream_exact.go(fuel, Key.words_60(), next, Nil{})),
53                Core.gcm_inc32(B4.block()), next_counter, counter)))

Uses (15)

Used by (2)