def hs.stb.finish.of
import bend-osdev-hashes@0.1.0.0/streebog.bend as Streebogimport Base
import bend-osdev-hashes@0.1.0.0/hashes.bend as Hs
789# Stage 3 on the chaining value: the last block m (its cnt bytes, then 1,
790# then zeros), N += 8 cnt, Sigma += m, then g_0(h, N) and g_0(h, Sigma)
791def hs.stb.finish.of(cv: HsStbCv, +m: Hs.HsW16, cnt: U32) -> Hs.HsW16:
792 match cv:
793 case HsStbCv{h, +n, s, +t}:
794 +h1 = hs.stb.g(t, n, h, m)
795 +h2 = hs.stb.g(t, hs.stb.zero(), h1, hs.stb.add(n, hs.stb.small(U32.shln(cnt, 3n))))
796 hs.stb.g(t, hs.stb.zero(), h2, hs.stb.add(s, m))