inst_crc.bend
bend-osdev-crypto@0.1.0.0 · 43 lines · 8 definitions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16import Base
17import bend-osdev-bytes@0.1.0.0/bytes.bend as B
18import bend-osdev-word64@0.1.0.0/word64.bend as W
19import bend-osdev-crc@0.1.0.0/crc.bend as C
20
21def CrCrc32.init(~spec: C.Crc32Spec) -> U32:
22 C.Crc32Spec.start(spec)
23
24def CrCrc32.update(~spec: C.Crc32Spec, c: U32, o: B.Octets) -> U32:
25 C.Crc32Spec.update(spec, c, o)
26
27def CrCrc32.final(~spec: C.Crc32Spec, c: U32) -> B.Octets:
28 B.Octets.be32(C.Crc32Spec.finish(spec, c))
29
30def CrCrc32.digest(~spec: C.Crc32Spec, o: B.Octets) -> B.Octets:
31 CrCrc32.final(~spec, CrCrc32.update(~spec, CrCrc32.init(~spec), o))
32
33def CrCrc64.init(~spec: C.Crc64Spec) -> W.W64:
34 C.Crc64Spec.start(spec)
35
36def CrCrc64.update(~spec: C.Crc64Spec, c: W.W64, o: B.Octets) -> W.W64:
37 C.Crc64Spec.update(spec, c, o)
38
39def CrCrc64.final(~spec: C.Crc64Spec, c: W.W64) -> B.Octets:
40 B.Octets.be64(C.Crc64Spec.finish(spec, c))
41
42def CrCrc64.digest(~spec: C.Crc64Spec, o: B.Octets) -> B.Octets:
43 CrCrc64.final(~spec, CrCrc64.update(~spec, CrCrc64.init(~spec), o))