def hbytes

bend-collections-laws-crypto@1.0.0.0 · src/crypto/chacha/core.bend:146

import bend-collections-laws-crypto@1.0.0.0/src/crypto/chacha/core.bend as Core
import Base

146# HChaCha20's output: the little-endian bytes of words 0..3 and 12..15.
147def hbytes(s: State) -> List<&2, U32>:
148  match s:
149    case S{+x0,+x1,+x2,+x3,x4,x5,x6,x7,x8,x9,x10,x11,+x12,+x13,+x14,+x15}:
150      [U32.and(x0,255), U32.and(U32.shrn(x0,8n),255), U32.and(U32.shrn(x0,16n),255), U32.shrn(x0,24n), U32.and(x1,255), U32.and(U32.shrn(x1,8n),255), U32.and(U32.shrn(x1,16n),255), U32.shrn(x1,24n), U32.and(x2,255), U32.and(U32.shrn(x2,8n),255), U32.and(U32.shrn(x2,16n),255), U32.shrn(x2,24n), U32.and(x3,255), U32.and(U32.shrn(x3,8n),255), U32.and(U32.shrn(x3,16n),255), U32.shrn(x3,24n), U32.and(x12,255), U32.and(U32.shrn(x12,8n),255), U32.and(U32.shrn(x12,16n),255), U32.shrn(x12,24n), U32.and(x13,255), U32.and(U32.shrn(x13,8n),255), U32.and(U32.shrn(x13,16n),255), U32.shrn(x13,24n), U32.and(x14,255), U32.and(U32.shrn(x14,8n),255), U32.and(U32.shrn(x14,16n),255), U32.shrn(x14,24n), U32.and(x15,255), U32.and(U32.shrn(x15,8n),255), U32.and(U32.shrn(x15,16n),255), U32.shrn(x15,24n)]

Uses (5)

Used by (3)