def argon2id_correct

bend-collections-laws-crypto@1.0.0.0 · proofs/crypto/argon2/top.bend:223

import bend-collections-laws-crypto@1.0.0.0/proofs/crypto/argon2/top.bend as Top
import Base
import bend-collections-laws-crypto@1.0.0.0/src/crypto/argon2/argon2.bend as I
import bend-collections-laws-crypto@1.0.0.0/spec/crypto/argon2/argon2.bend as SA

223# Argon2id: for every password, salt, secret, associated data and parameters
224# whose memory fits this implementation (m' <= 2^23 blocks), the
225# implementation's tag (or None) is the specification's.
226def argon2id_correct(+pw: List<&2, U32>, +salt: List<&2, U32>, +key: List<&2, U32>, +ad: List<&2, U32>, +t: Nat, +m: Nat, +p: Nat, +tl: Nat, +hf: {I.fits(m, p) == True{} : Bool}) -> {I.argon2id(pw, salt, key, ad, t, m, p, tl) == SA.argon2id(pw, salt, key, ad, t, m, p, tl) : Maybe<&2, List<&2, U32>>}:
227  +v = SA.valid(pw, salt, key, ad, t, m, p, tl)
228  -goal = SA.argon2id(pw, salt, key, ad, t, m, p, tl)
229  %Equal.sym(Bool, I.fits(m, p), True{}, hf) : {I.checked(Bool.and(I.valid(pw, salt, key, ad, t, m, p, tl), _), pw, salt, key, ad, t, m, p, tl) == goal : Maybe<&2, List<&2, U32>>}
230  %Equal.sym(Bool, I.valid(pw, salt, key, ad, t, m, p, tl), v, valid_eq(pw, salt, key, ad, t, m, p, tl)) : {I.checked(Bool.and(_, True{}), pw, salt, key, ad, t, m, p, tl) == goal : Maybe<&2, List<&2, U32>>}
231  %Equal.sym(Bool, Bool.and(v, True{}), v, and_true(v)) : {I.checked(_, pw, salt, key, ad, t, m, p, tl) == goal : Maybe<&2, List<&2, U32>>}
232  checked_eq(v, pw, salt, key, ad, t, m, p, tl, {==}, hf)

Uses (16)

Used by (1)