Class: JWT::PQ::Algorithms::MlDsa

Inherits:
Object
  • Object
show all
Includes:
JWA::SigningAlgorithm
Defined in:
lib/jwt/pq/algorithms/ml_dsa.rb

Overview

JWT signing algorithm implementation for ML-DSA (FIPS 204). Registers ML-DSA-44, ML-DSA-65, and ML-DSA-87 with the ruby-jwt library.

Instance Method Summary collapse

Constructor Details

#initialize(alg) ⇒ MlDsa

Returns a new instance of MlDsa.



13
14
15
# File 'lib/jwt/pq/algorithms/ml_dsa.rb', line 13

def initialize(alg)
  @alg = alg
end

Instance Method Details

#sign(data:, signing_key:) ⇒ Object



17
18
19
20
# File 'lib/jwt/pq/algorithms/ml_dsa.rb', line 17

def sign(data:, signing_key:)
  key = resolve_signing_key(signing_key)
  key.sign(data)
end

#verify(data:, signature:, verification_key:) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
# File 'lib/jwt/pq/algorithms/ml_dsa.rb', line 22

def verify(data:, signature:, verification_key:)
  unless verification_key.is_a?(JWT::PQ::Key)
    raise_verify_error!(
      "Expected a JWT::PQ::Key, got #{verification_key.class}. " \
      "Use JWT::PQ::Key.generate(:#{alg_symbol}) to create a key."
    )
  end
  verification_key.verify(data, signature)
rescue JWT::PQ::Error
  false
end