Module: PQCrypto::KEM
- Defined in:
- lib/pq_crypto/kem.rb
Defined Under Namespace
Classes: EncapsulationResult, Keypair, PublicKey, SecretKey
Constant Summary collapse
- CANONICAL_ALGORITHM =
:ml_kem_768- DETAILS =
{ CANONICAL_ALGORITHM => { name: CANONICAL_ALGORITHM, family: Serialization.algorithm_to_family(CANONICAL_ALGORITHM), oid: Serialization.algorithm_to_oid(CANONICAL_ALGORITHM), public_key_bytes: ML_KEM_PUBLIC_KEY_BYTES, secret_key_bytes: ML_KEM_SECRET_KEY_BYTES, ciphertext_bytes: ML_KEM_CIPHERTEXT_BYTES, shared_secret_bytes: ML_KEM_SHARED_SECRET_BYTES, description: "Pure ML-KEM-768 primitive (FIPS 203).", }.freeze, }.freeze
Class Method Summary collapse
- .details(algorithm) ⇒ Object
- .generate(algorithm = CANONICAL_ALGORITHM) ⇒ Object
- .public_key_from_bytes(algorithm, bytes) ⇒ Object
- .public_key_from_pqc_container_der(der, algorithm = nil) ⇒ Object
- .public_key_from_pqc_container_pem(pem, algorithm = nil) ⇒ Object
- .secret_key_from_bytes(algorithm, bytes) ⇒ Object
- .secret_key_from_pqc_container_der(der, algorithm = nil) ⇒ Object
- .secret_key_from_pqc_container_pem(pem, algorithm = nil) ⇒ Object
- .supported ⇒ Object
Class Method Details
.details(algorithm) ⇒ Object
57 58 59 |
# File 'lib/pq_crypto/kem.rb', line 57 def details(algorithm) DETAILS.fetch(resolve_algorithm!(algorithm)).dup end |
.generate(algorithm = CANONICAL_ALGORITHM) ⇒ Object
23 24 25 26 27 |
# File 'lib/pq_crypto/kem.rb', line 23 def generate(algorithm = CANONICAL_ALGORITHM) algorithm = resolve_algorithm!(algorithm) public_key, secret_key = PQCrypto.__send__(:native_ml_kem_keypair) Keypair.new(PublicKey.new(algorithm, public_key), SecretKey.new(algorithm, secret_key)) end |
.public_key_from_bytes(algorithm, bytes) ⇒ Object
29 30 31 |
# File 'lib/pq_crypto/kem.rb', line 29 def public_key_from_bytes(algorithm, bytes) PublicKey.new(resolve_algorithm!(algorithm), bytes) end |
.public_key_from_pqc_container_der(der, algorithm = nil) ⇒ Object
37 38 39 40 |
# File 'lib/pq_crypto/kem.rb', line 37 def public_key_from_pqc_container_der(der, algorithm = nil) resolved_algorithm, bytes = Serialization.public_key_from_pqc_container_der(algorithm, der) PublicKey.new(resolve_algorithm!(resolved_algorithm), bytes) end |
.public_key_from_pqc_container_pem(pem, algorithm = nil) ⇒ Object
42 43 44 45 |
# File 'lib/pq_crypto/kem.rb', line 42 def public_key_from_pqc_container_pem(pem, algorithm = nil) resolved_algorithm, bytes = Serialization.public_key_from_pqc_container_pem(algorithm, pem) PublicKey.new(resolve_algorithm!(resolved_algorithm), bytes) end |
.secret_key_from_bytes(algorithm, bytes) ⇒ Object
33 34 35 |
# File 'lib/pq_crypto/kem.rb', line 33 def secret_key_from_bytes(algorithm, bytes) SecretKey.new(resolve_algorithm!(algorithm), bytes) end |
.secret_key_from_pqc_container_der(der, algorithm = nil) ⇒ Object
47 48 49 50 |
# File 'lib/pq_crypto/kem.rb', line 47 def secret_key_from_pqc_container_der(der, algorithm = nil) resolved_algorithm, bytes = Serialization.secret_key_from_pqc_container_der(algorithm, der) SecretKey.new(resolve_algorithm!(resolved_algorithm), bytes) end |
.secret_key_from_pqc_container_pem(pem, algorithm = nil) ⇒ Object
52 53 54 55 |
# File 'lib/pq_crypto/kem.rb', line 52 def secret_key_from_pqc_container_pem(pem, algorithm = nil) resolved_algorithm, bytes = Serialization.secret_key_from_pqc_container_pem(algorithm, pem) SecretKey.new(resolve_algorithm!(resolved_algorithm), bytes) end |
.supported ⇒ Object
61 62 63 |
# File 'lib/pq_crypto/kem.rb', line 61 def supported DETAILS.keys.dup end |