aws/internal/crypto
Values
pub fn crc32(data: BitArray) -> Int
Raw CRC-32 (IEEE 802.3, the same polynomial as zlib / gzip).
Returned as an Int because that’s the natural Erlang form
(erlang:crc32/1 returns an unsigned 32-bit integer). Callers
wanting the AWS wire form should base64-encode the big-endian
4-byte representation; see crc32_be_bytes for the helper
that produces the bytes ready for bit_array.base64_encode.
pub fn crc32_be_bytes(value: Int) -> BitArray
Big-endian 4-byte encoding of a CRC-32 value, ready to feed
into bit_array.base64_encode. AWS’s
x-amz-checksum-crc32: <base64> header expects exactly four
bytes (not the hex form most other CRC libraries print). Pure
Gleam — no FFI hop — because Gleam’s BitArray literal
syntax handles the bit packing inline.
pub fn crc32c(data: BitArray) -> Int
Raw CRC-32C (Castagnoli polynomial 0x1EDC6F41, the iSCSI / SCTP
variant). Returned as an unsigned 32-bit Int. Implemented in
pure Erlang (aws_ffi.crc32c) because OTP’s stdlib doesn’t
expose this polynomial. Used by AWS multi-algorithm checksum
(crc32c variant) — base64 of the BE 4-byte form goes into
x-amz-checksum-crc32c.
pub fn hex_encode(data: BitArray) -> String
pub fn hmac_sha256(key: BitArray, data: BitArray) -> BitArray
pub fn md5(data: BitArray) -> BitArray
Raw MD5 digest. Used by the @httpChecksumRequired body-checksum
helper in aws/internal/codec/rest — not by SigV4. MD5 is not a
security primitive; the wire spec requires it here so the SDK can
emit Content-MD5: base64(md5(body)) for traits that demand it.
pub fn sha1(data: BitArray) -> BitArray
Raw SHA-1 digest. Used by the AWS multi-algorithm checksum
feature (aws.protocols#httpChecksum) when the caller picks
sha1 — the SDK sets x-amz-checksum-sha1: base64(sha1(body))
on the request. SHA-1 isn’t a security primitive on AWS’s side
either; it’s a payload-integrity check, and we expose it
without warnings because the wire spec mandates it.