Skip to content

Module BSV::Auth::AuthPayload

BRC-104 binary serialisation and deserialisation of HTTP requests and responses for signing/verification.

The wire format is byte-compatible with the TS and Go SDKs, enabling cross-SDK signature verification.

Absent optional fields (nil path, nil query, nil body) are encoded as ABSENT (VarInt MAX_UINT64 = 9 bytes of 0xFF). Zero-length fields are encoded as varint(0) followed by zero bytes — a distinct encoding from absent.

All varint operations delegate to {BSV::Transaction::VarInt}.

Constants

ABSENT

Sentinel value for absent optional fields (Bitcoin VarInt MAX_UINT64).

METHODS_WITH_BODY

HTTP methods that typically carry a request body.

Public Class Methods

deserialize_request(data)

Deserialises a binary request payload into a Hash. - @param data [String] binary payload (as returned by {.serialize_request}) - @return [Hash] with keys +:request_nonce+, +:method+, +:path+, +:query+, +:headers+, +:body+ (all values may be nil for absent optional fields)

deserialize_response(data)

Deserialises a binary response payload into a Hash. - @param data [String] binary payload (as returned by {.serialize_response}) - @return [Hash] with keys +:request_id+, +:status+, +:headers+, +:body+

serialize_request(request_nonce:, method:, path:, query:, headers:, body:)

Serialises an HTTP request into a binary payload for signing. - @param request_nonce [String] raw 32-byte binary string (the request nonce) - @param method [String] HTTP method (e.g. 'GET', 'POST') - @param path [String, nil] URL path (e.g. '/api/v1/resource'); nil encodes as ABSENT - @param query [String, nil] query string including leading '?' (e.g. '?q=hello'); nil encodes as ABSENT - @param headers [Array] pre-sorted, lowercased [key, value] pairs - @param body [String, nil] request body bytes; nil encodes as ABSENT - @return [String] binary payload (ASCII-8BIT encoding)

serialize_response(request_id:, status:, headers:, body:)

Serialises an HTTP response into a binary payload for signing. - @param request_id [String] raw 32-byte binary string - @param status [Integer] HTTP status code (e.g. 200, 404) - @param headers [Array] pre-sorted, lowercased [key, value] pairs - @param body [String, nil] response body bytes; nil or empty encodes as ABSENT - @return [String] binary payload (ASCII-8BIT encoding)