def pk.hm

bend-osdev-pkcs7@0.1.0.0 · PROOF.bend:1368

import bend-osdev-pkcs7@0.1.0.0/PROOF.bend as PROOF
import Base
import bend-osdev-bytes@0.1.1.0/bytes.bend as B
import bend-osdev-u32@0.1.0.0/LAWS.bend as UL

1368# 1 + L + (q - L mod (1 + q)) is a multiple of 1 + q
1369def pk.hm(+q: Nat, +m: B.Octets) -> {Nat.mod(1n+Nat.add(B.Octets.len(m), Nat.sub(q, Nat.mod(B.Octets.len(m), 1n+q))), 1n+q) == 0n : Nat}:
1370  +hs = pk.sub_succ(Nat.mod(B.Octets.len(m), 1n+q), q)(pk.mod_le(B.Octets.len(m), q, 0n, 0n, q)(UL.nat_add_zero(q)))
1371  %UL.nat_add_succ(B.Octets.len(m), Nat.sub(q, Nat.mod(B.Octets.len(m), 1n+q))) : {Nat.mod(_, 1n+q) == 0n : Nat}
1372  %hs : {Nat.mod(Nat.add(B.Octets.len(m), _), 1n+q) == 0n : Nat}
1373  pk.mod_pad(B.Octets.len(m), q, 0n, 0n, q)(UL.nat_add_zero(q))

Uses (11)

Used by (1)