Skip to content

N3TC4T/themis_nif

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Themis Erlang NIF

The Themis Erlang NIF module provides an interface to the Themis cryptographic framework.

Installation

{:themis_nif, "~> 0.0.3"}

Module Overview

The themis_nif module exports several functions for generating keys and encrypting/decrypting messages.

Available Methods

Method Description Remarks
gen_ec_key_pair Generates an ECC (Elliptic Curve Cryptography) key pair. Public and private keys are generated.
gen_rsa_key_pair Generates an RSA key pair. Public and private keys are generated.
gen_sym_key Generates a symmetric key, default length of 32 bytes. Used for symmetric encryption methods.
is_valid_key Checks if the provided key is valid based on length and format. Useful for key management and verification.
is_private_key Checks if the provided key is a private key. Ensures that private keys are kept secure.
is_public_key Checks if the provided key is a public key. Verifies the key type for communication.
secure_cell_encrypt_seal Encrypts bytes using a key in Seal mode for data protection and confidentiality. Uses symmetric encryption with a protected key.
secure_cell_decrypt_seal Decrypts bytes that were encrypted using Seal mode, returning the original data. Requires the same key used for encryption.
secure_message_encrypt Encrypts a message using the sender's private key and the receiver's public key for confidentiality, integrity, and authenticity. Uses ECC or RSA-based key pairs.
secure_message_decrypt Decrypts an encrypted message using the receiver's private key and the sender's public key. Ensures only authorized recipients can access the message.
secure_message_sign Signs a message using the sender's private key, enabling integrity and authenticity. Does not provide confidentiality.
secure_message_verify Verifies the signature of a signed message using the corresponding public key. Confirms the message's origin and integrity.

Missing API

The following API from the Themis API are currently not included in the themis_nif module:

Example Usage

% Generate an EC key pair
{PublicKey, PrivateKey} = themis_nif:gen_ec_key_pair(),

% Validate a key
isValid = themis_nif:is_valid_key(PublicKey),

% Encrypt a message
EncryptedMessage = themis_nif:secure_cell_encrypt_seal(PrivateKey, <<"Hello, World!">>),

% Decrypt the message
DecryptedMessage = themis_nif:secure_message_decrypt(PrivateKey, EncryptedMessage).

Contributing

Feel free to contribute by forking the repository and making pull requests for enhancements, bug fixes, or new features.