def kbit
bend-collections-laws-crypto@1.0.0.0 · src/crypto/curve25519/x25519.bend:18
import bend-collections-laws-crypto@1.0.0.0/src/crypto/curve25519/x25519.bend as X25519
import Base
18
19def kbit(bs: List<&2, U32>, t: Nat) -> U32:
20 match bs:
21 case Nil{}:
22 0
23 case Con{b, bt}:
24 match t:
25 case 0n:
26 U32.and(b, 1)
27 case 1n:
28 U32.and(U32.shrn(b, 1n), 1)
29 case 2n:
30 U32.and(U32.shrn(b, 2n), 1)
31 case 3n:
32 U32.and(U32.shrn(b, 3n), 1)
33 case 4n:
34 U32.and(U32.shrn(b, 4n), 1)
35 case 5n:
36 U32.and(U32.shrn(b, 5n), 1)
37 case 6n:
38 U32.and(U32.shrn(b, 6n), 1)
39 case 7n:
40 U32.and(U32.shrn(b, 7n), 1)
41 case 8n+q:
42 kbit(bt, q)