Module: PQCrypto::JWT::JWA::MLDSA

Included in:
MLDSA44, MLDSA65, MLDSA87
Defined in:
lib/pq_crypto/jwt/jwa.rb

Instance Method Summary collapse

Instance Method Details

#key_kindObject



19
# File 'lib/pq_crypto/jwt/jwa.rb', line 19

def key_kind = :signature

#pq_crypto_algorithmObject



18
# File 'lib/pq_crypto/jwt/jwa.rb', line 18

def pq_crypto_algorithm = self::PQ_CRYPTO_ALGORITHM

#sign(data:, signing_key:) ⇒ Object



21
22
23
24
25
26
27
28
29
30
# File 'lib/pq_crypto/jwt/jwa.rb', line 21

def sign(data:, signing_key:)
  ensure_key!(signing_key, PQCrypto::Signature::SecretKey, "signing")
  raise ArgumentError, "data must be a String" unless data.is_a?(String)

  signing_key.sign(data.b, context: EMPTY_CONTEXT)
rescue PQCrypto::JWT::KeyTypeError, ArgumentError
  raise
rescue StandardError => e
  raise ::JWT::EncodeError, e.message
end

#valid_alg?(alg_to_validate) ⇒ Boolean

Returns:

  • (Boolean)


17
# File 'lib/pq_crypto/jwt/jwa.rb', line 17

def valid_alg?(alg_to_validate) = alg_to_validate == alg

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



32
33
34
35
36
37
38
39
40
41
# File 'lib/pq_crypto/jwt/jwa.rb', line 32

def verify(data:, signature:, verification_key:)
  return false unless verification_key.is_a?(PQCrypto::Signature::PublicKey)
  return false unless verification_key.algorithm == pq_crypto_algorithm
  return false unless data.is_a?(String) && signature.is_a?(String)
  return false unless signature_length_valid?(signature)

  verification_key.verify(data.b, signature.b, context: EMPTY_CONTEXT)
rescue *VERIFY_ERRORS
  false
end