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# bit t of a little-endian byte string
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)

Uses (5)

Used by (13)