Module: PQCrypto::JWT

Defined in:
lib/pq_crypto/jwt.rb,
lib/pq_crypto/jwt/jwa.rb,
lib/pq_crypto/jwt/jwk.rb,
lib/pq_crypto/jwt/jwks.rb,
lib/pq_crypto/jwt/keys.rb,
lib/pq_crypto/jwt/errors.rb,
lib/pq_crypto/jwt/version.rb,
lib/pq_crypto/jwt/jwa/ml_dsa_44.rb,
lib/pq_crypto/jwt/jwa/ml_dsa_65.rb,
lib/pq_crypto/jwt/jwa/ml_dsa_87.rb,
lib/pq_crypto/jwt/jwa/ml_dsa_streaming.rb

Defined Under Namespace

Modules: JWA, JWK, JWKS, Keys Classes: Error, KeyTypeError, UnsupportedAlgorithm

Constant Summary collapse

MLDSA44 =
JWA::MLDSA44
MLDSA65 =
JWA::MLDSA65
MLDSA87 =
JWA::MLDSA87
SIGNING_ALGORITHMS =
[JWA::MLDSA44, JWA::MLDSA65, JWA::MLDSA87].freeze
KEM_ALGORITHMS =
[].freeze
ALGORITHMS =
SIGNING_ALGORITHMS.freeze
ALGORITHMS_BY_JOSE =
ALGORITHMS.to_h { |algorithm| [algorithm.alg, algorithm] }.freeze
VERSION =
"0.1.1"

Class Method Summary collapse

Class Method Details

.algorithm_for(alg_string) ⇒ Object



44
45
46
# File 'lib/pq_crypto/jwt.rb', line 44

def algorithm_for(alg_string)
  ALGORITHMS_BY_JOSE[alg_string]
end

.algorithmsObject



30
31
32
# File 'lib/pq_crypto/jwt.rb', line 30

def algorithms
  ALGORITHMS
end

.kem_algorithmsObject

Kept as an explicit empty list so callers can branch safely. ML-KEM/JWE is intentionally not part of the first stable release.



40
41
42
# File 'lib/pq_crypto/jwt.rb', line 40

def kem_algorithms
  KEM_ALGORITHMS
end

.register!Object



48
49
50
51
52
53
54
55
56
57
# File 'lib/pq_crypto/jwt.rb', line 48

def register!
  registration_monitor.synchronize do
    return true if registered?

    SIGNING_ALGORITHMS.each { |algorithm| ::JWT::JWA.register_algorithm(algorithm) }
    ensure_akp_jwk_registered!
    @registered = true
  end
  true
end

.registered?Boolean

Returns:

  • (Boolean)


59
60
61
# File 'lib/pq_crypto/jwt.rb', line 59

def registered?
  @registered == true
end

.signing_algorithmsObject



34
35
36
# File 'lib/pq_crypto/jwt.rb', line 34

def signing_algorithms
  SIGNING_ALGORITHMS
end