proofs/crypto/blake/blake2s/laws.bend
bend-collections-laws-crypto@1.0.0.0 · 49 lines · 4 definitions
1import Base
2import bend-collections-laws-crypto@1.0.0.0/src/crypto/blake/blake2s/types.bend as T
3import bend-collections-laws-crypto@1.0.0.0/src/crypto/blake/blake2s/compress.bend as C
4import bend-collections-laws-crypto@1.0.0.0/src/crypto/blake/blake2s/blake2s.bend as K
5import bend-collections-laws-crypto@1.0.0.0/spec/crypto/blake/blake2s.bend as R
6
7
8
9
10law blake2s:
11 for a: Array<U32>
12 for +length: Nat
13 {K.blake2s(a,length) == R.blake2s(a,length) : Maybe<&1,Array<U32>>}
14
15
16
17law compress:
18 for +h: T.State
19 for +m0: U32
20 for +m1: U32
21 for +m2: U32
22 for +m3: U32
23 for +m4: U32
24 for +m5: U32
25 for +m6: U32
26 for +m7: U32
27 for +m8: U32
28 for +m9: U32
29 for +m10: U32
30 for +m11: U32
31 for +m12: U32
32 for +m13: U32
33 for +m14: U32
34 for +m15: U32
35 for +t0: U32
36 for +t1: U32
37 for +last: Bool
38 {C.compress(h,m0,m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15,t0,t1,last) == R.compress(10n,h,[m0,m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15],t0,t1,last) : T.State}
39
40law digest_size:
41 for s: T.State
42 {Pair.snd(Array<U32>,U32,Array.size(U32,K.digest(s))) == 8 : U32}
43
44law capacity_rejection:
45 for a: Array<U32>
46 for +n: Nat
47 for +capacity: U32
48 for invalid: {Nat.is_le(n,Nat.mul(4n,U32.to_nat(capacity))) == False{} : Bool}
49 {K.sized(n,(a,capacity)) == None{} : Maybe<&1,Array<U32>>}