Module: Linzer::HTTP::StructuredField

Defined in:
lib/linzer/http/structured_field.rb

Overview

Utilities for serializing HTTP Structured Fields as defined in RFC 8941.

This module currently provides helpers for serializing HTTP Message Signature parameters as used by RFC 9421.

See Also:

Class Method Summary collapse

Class Method Details

.serialize_parameters(parameters) ⇒ String

Serializes signature parameters to the RFC 8941 string format.

Integers are bare, strings are double-quoted. This covers all parameter types used in RFC 9421 signatures (created, expires, keyid, nonce, alg, tag).

Examples:

Serialize signature parameters

StructuredField.serialize_parameters(
  created: 1700000000,
  keyid: "my-key"
)
# => ';created=1700000000;keyid="my-key"'

Parameters:

  • parameters (Hash{Symbol,String => Object})

    The parameters to serialize.

Returns:

  • (String)

    The serialized structured field parameter string.



32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/linzer/http/structured_field.rb', line 32

def self.serialize_parameters(parameters)
  params_str = +""
  parameters.each do |key, value|
    params_str << case value
    when Integer
      ";#{key}=#{value}"
    when String
      ";#{key}=\"#{value}\""
    else
      ";#{key}=#{value}"
    end
  end
  params_str
end