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, UnsupportedFeature

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_BY_JOSE =
SIGNING_ALGORITHMS.to_h { |algorithm| [algorithm.alg, algorithm] }.freeze
REGISTRATION_MUTEX =
Monitor.new
VERSION =
"0.2.2"

Class Method Summary collapse

Class Method Details

.algorithm_for(alg_string) ⇒ Object



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

def algorithm_for(alg_string) = ALGORITHMS_BY_JOSE[alg_string]

.algorithmsObject



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

def algorithms = SIGNING_ALGORITHMS

.kem_algorithmsObject



33
# File 'lib/pq_crypto/jwt.rb', line 33

def kem_algorithms = KEM_ALGORITHMS

.register!Object



37
38
39
40
41
42
43
44
45
46
# File 'lib/pq_crypto/jwt.rb', line 37

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

    SIGNING_ALGORITHMS.each { |algorithm| ::JWT::JWA.register_algorithm(algorithm) }
    ::JWT::JWK.classes << ::JWT::JWK::AKP unless ::JWT::JWK.classes.include?(::JWT::JWK::AKP)
    @registered = true
  end
  true
end

.registered?Boolean

Returns:

  • (Boolean)


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

def registered? = @registered == true

.signing_algorithmsObject



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

def signing_algorithms = SIGNING_ALGORITHMS