def seal_nonce_bad

bend-collections-laws-crypto@1.0.0.0 · proofs/crypto/aes/proof.bend:30

import bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/proof.bend as Proof
import Base
import bend-collections-laws-crypto@1.0.0.0/proofs/lib/logic.bend as L
import bend-collections-laws-crypto@1.0.0.0/src/crypto/aes/aes.bend as A
import bend-collections-laws-crypto@1.0.0.0/src/crypto/aes/gcm.bend as GI

30# A nonce that is not 12 bytes long: None.
31def seal_nonce_bad(+sched: A.Schedule, +nonce: List<&2, U32>, +h: {Nat.is_eq(List.length(&2, U32, nonce), 12n) == False{} : Bool}, +aad: List<&2, U32>, +pt: List<&2, U32>) -> {GI.seal_nonce(sched, nonce, aad, pt) == None{} : Maybe<&2, List<&2, U32>>}:
32  match nonce:
33    case Nil{}:
34      {==}
35    case n0 <> Nil{}:
36      {==}
37    case n0 <> n1 <> Nil{}:
38      {==}
39    case n0 <> n1 <> n2 <> Nil{}:
40      {==}
41    case n0 <> n1 <> n2 <> n3 <> Nil{}:
42      {==}
43    case n0 <> n1 <> n2 <> n3 <> n4 <> Nil{}:
44      {==}
45    case n0 <> n1 <> n2 <> n3 <> n4 <> n5 <> Nil{}:
46      {==}
47    case n0 <> n1 <> n2 <> n3 <> n4 <> n5 <> n6 <> Nil{}:
48      {==}
49    case n0 <> n1 <> n2 <> n3 <> n4 <> n5 <> n6 <> n7 <> Nil{}:
50      {==}
51    case n0 <> n1 <> n2 <> n3 <> n4 <> n5 <> n6 <> n7 <> n8 <> Nil{}:
52      {==}
53    case n0 <> n1 <> n2 <> n3 <> n4 <> n5 <> n6 <> n7 <> n8 <> n9 <> Nil{}:
54      {==}
55    case n0 <> n1 <> n2 <> n3 <> n4 <> n5 <> n6 <> n7 <> n8 <> n9 <> n10 <> Nil{}:
56      {==}
57    case n0 <> n1 <> n2 <> n3 <> n4 <> n5 <> n6 <> n7 <> n8 <> n9 <> n10 <> n11 <> Nil{}:
58      Empty.absurd({GI.seal_nonce(sched, [n0, n1, n2, n3, n4, n5, n6, n7, n8, n9, n10, n11], aad, pt) == None{} : Maybe<&2, List<&2, U32>>}, L.true_false(h))
59    case n0 <> n1 <> n2 <> n3 <> n4 <> n5 <> n6 <> n7 <> n8 <> n9 <> n10 <> n11 <> n12 <> rest:
60      {==}

Uses (10)

Used by (1)