Class: XStream::X25519HKDF::Encryptor
- Inherits:
-
Miscreant::STREAM::Encryptor
- Object
- Miscreant::STREAM::Encryptor
- XStream::X25519HKDF::Encryptor
- Defined in:
- lib/xstream/x25519hkdf.rb
Overview
XSTREAM encryptor with X25519+HKDF key derivation
Class Method Summary collapse
-
.generate(public_key, encryption_alg: "AES-PMAC-SIV", digest_alg: "SHA-256", salt: nil, csrng: SecureRandom) ⇒ Array(XStream::X25519HKDF, String)
Generate an XSTREAM encryptor object with a random ephemeral key.
Class Method Details
.generate(public_key, encryption_alg: "AES-PMAC-SIV", digest_alg: "SHA-256", salt: nil, csrng: SecureRandom) ⇒ Array(XStream::X25519HKDF, String)
Generate an XSTREAM encryptor object with a random ephemeral key
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/xstream/x25519hkdf.rb', line 24 def self.generate( public_key, encryption_alg: "AES-PMAC-SIV", digest_alg: "SHA-256", salt: nil, csrng: SecureRandom ) ephemeral_scalar = csrng.random_bytes(::X25519::KEY_SIZE) ephemeral_public = ::X25519.calculate_public_key(ephemeral_scalar) symmetric_key = X25519HKDF.kdf( ephemeral_scalar, public_key, salt: salt, digest_alg: digest_alg, output_size: SYMMETRIC_KEY_SIZE ) stream = new(encryption_alg, symmetric_key, XStream::NONCE) [stream, ephemeral_public] end |