MACI Crypto

This module implements abstractions over cryptographic functions which MACI employs.

Types and interfaces

PrivKey: A private key.

PubKey: A public key.

EcdhSharedKey: An Elliptic-curve Diffie–Hellman shared key.

Plaintext: An array of unencrypted values.

Ciphertext: Encrypted Plaintext. This data structure abstracts over the initialisation vector and encrypted data.

Signature: A signature. This data structure abstracts over theR8 and S values.

Functions

genPrivKey: PrivKey

Returns a securely random private key.

genPubKey = (privKey: PrivKey): PubKey

Generates the public key associated with the given private key.

genEcdhSharedKey = (privKey: PrivKey, pubKey: PubKey): EcdhSharedKey

Generates an ECDH shared key.

encrypt = (plaintext: Plaintext, sharedKey: EcdhSharedKey): Ciphertext

Encrypts the plaintext with the given key and returns the associated ciphertext.

decrypt = (ciphertext: Ciphertext, sharedKey: EcdhSharedKey): Plaintext

Decrypts the ciphertext using the given key.

sign = (privKey: PrivKey, message: Plaintext): Signature

Produces a signature of the given message using the private key.

verifySignature = (message: Plaintext, signature: Signature, publicKey: PubKey): boolean

Checks whether the given signature is valid.

Last Updated: