Module: PQCrypto::Testing

Defined in:
lib/pq_crypto.rb

Constant Summary collapse

KEM_KEYPAIR_METHODS =
{
  ml_kem_512: :native_ml_kem_512_keypair_from_seed,
  ml_kem_768: :native_ml_kem_keypair_from_seed,
  ml_kem_1024: :native_ml_kem_1024_keypair_from_seed,
}.freeze
KEM_ENCAPSULATE_METHODS =
{
  ml_kem_512: :native_test_ml_kem_512_encapsulate_from_seed,
  ml_kem_768: :native_test_ml_kem_encapsulate_from_seed,
  ml_kem_1024: :native_test_ml_kem_1024_encapsulate_from_seed,
}.freeze
MLDSA_KEYPAIR_METHODS =
{
  ml_dsa_44: :native_test_ml_dsa_44_keypair_from_seed,
  ml_dsa_65: :native_test_sign_keypair_from_seed,
  ml_dsa_87: :native_test_ml_dsa_87_keypair_from_seed,
}.freeze
MLDSA_SIGN_METHODS =
{
  ml_dsa_44: :native_test_ml_dsa_44_sign_from_seed,
  ml_dsa_65: :native_test_sign_from_seed,
  ml_dsa_87: :native_test_ml_dsa_87_sign_from_seed,
}.freeze

Class Method Summary collapse

Class Method Details

.ml_dsa_keypair_from_seed(seed, algorithm: :ml_dsa_65) ⇒ Object



200
201
202
203
204
205
206
# File 'lib/pq_crypto.rb', line 200

def self.ml_dsa_keypair_from_seed(seed, algorithm: :ml_dsa_65)
  PQCrypto.__send__(MLDSA_KEYPAIR_METHODS.fetch(algorithm), String(seed).b)
rescue KeyError
  raise UnsupportedAlgorithmError, "Unsupported ML-DSA KAT algorithm: #{algorithm.inspect}"
rescue ArgumentError => e
  raise InvalidKeyError, e.message
end

.ml_dsa_sign_from_seed(message, secret_key, seed, algorithm: :ml_dsa_65) ⇒ Object



208
209
210
211
212
213
214
# File 'lib/pq_crypto.rb', line 208

def self.ml_dsa_sign_from_seed(message, secret_key, seed, algorithm: :ml_dsa_65)
  PQCrypto.__send__(MLDSA_SIGN_METHODS.fetch(algorithm), String(message).b, String(secret_key).b, String(seed).b)
rescue KeyError
  raise UnsupportedAlgorithmError, "Unsupported ML-DSA KAT algorithm: #{algorithm.inspect}"
rescue ArgumentError => e
  raise InvalidKeyError, e.message
end

.ml_kem_encapsulate_from_seed(public_key, seed, algorithm: :ml_kem_768) ⇒ Object



192
193
194
195
196
197
198
# File 'lib/pq_crypto.rb', line 192

def self.ml_kem_encapsulate_from_seed(public_key, seed, algorithm: :ml_kem_768)
  PQCrypto.__send__(KEM_ENCAPSULATE_METHODS.fetch(algorithm), String(public_key).b, String(seed).b)
rescue KeyError
  raise UnsupportedAlgorithmError, "Unsupported ML-KEM KAT algorithm: #{algorithm.inspect}"
rescue ArgumentError => e
  raise InvalidKeyError, e.message
end

.ml_kem_keypair_from_seed(seed, algorithm: :ml_kem_768) ⇒ Object



184
185
186
187
188
189
190
# File 'lib/pq_crypto.rb', line 184

def self.ml_kem_keypair_from_seed(seed, algorithm: :ml_kem_768)
  PQCrypto.__send__(KEM_KEYPAIR_METHODS.fetch(algorithm), String(seed).b)
rescue KeyError
  raise UnsupportedAlgorithmError, "Unsupported ML-KEM KAT algorithm: #{algorithm.inspect}"
rescue ArgumentError => e
  raise InvalidKeyError, e.message
end