module Matter::Crypto

Defined in:

matter/crypto/aes/word_array.cr
matter/crypto/crypto.cr
matter/crypto/ecdh.cr
matter/crypto/key.cr
matter/crypto/spake2p.cr

Constant Summary

CRYPTO_AUTH_TAG_LENGTH = 16
CRYPTO_EC_CURVE = "prime256v1"

ECDSA P-256 constants (prime256v1)

CRYPTO_EC_KEY_BYTES = 32
CRYPTO_ENCRYPT_ALGORITHM = "aes-128-ccm"

Cryptographic constants for Matter protocol

CRYPTO_HASH_ALGORITHM = "sha256"
CRYPTO_SYMMETRIC_KEY_LENGTH = 16

Class Method Summary

Class Method Detail

def self.compute_sha256(data : Bytes | Array(Bytes)) : Bytes #

[View source]
def self.create_hkdf_key(secret : Bytes, salt : Bytes, info : Bytes, length : Int32 = 32) : Bytes #

[View source]
def self.create_key_pair : Key #

[View source]
def self.create_pbkdf2_key(secret : Bytes, salt : Bytes, iterations : Int32, key_length : Int32) : Bytes #

[View source]
def self.decrypt(key : Bytes, data : Bytes, nonce : Bytes, aad : Bytes | Nil = nil) : Bytes #

[View source]
def self.encrypt(key : Bytes, data : Bytes, nonce : Bytes, aad : Bytes | Nil = nil) : Bytes #

Convenience methods that delegate to the global instance


[View source]
def self.generate_dh_secret(private_key : Key, peer_public_key : Key) : Bytes #

[View source]
def self.instance : CryptoBase #

[View source]
def self.instance=(crypto : CryptoBase) #

[View source]
def self.private_key(private_key : Bytes | BinaryKeyPair, extractable : Bool = true) : Key #

Factory methods for convenience


[View source]
def self.public_key(public_key : Bytes, extractable : Bool = true) : Key #

[View source]
def self.random_big_int(size : Int32, max_value : BigInt | Nil = nil) : BigInt #

[View source]
def self.random_bytes(length : Int32) : Bytes #

[View source]
def self.random_uint16 : UInt16 #

[View source]
def self.random_uint32 : UInt32 #

[View source]
def self.random_uint64 : UInt64 #

[View source]
def self.random_uint8 : UInt8 #

Random number convenience methods


[View source]
def self.sign_ecdsa(private_key : Key, data : Bytes | Array(Bytes), dsa_encoding : String = "ieee-p1363") : Bytes #

[View source]
def self.sign_hmac(key : Bytes, data : Bytes) : Bytes #

[View source]
def self.symmetric_key(key_bytes : Bytes, extractable : Bool = true) : Key #

[View source]
def self.verify_ecdsa(public_key : Key, data : Bytes, signature : Bytes, dsa_encoding : String = "ieee-p1363") : Nil #

[View source]