Skip to main content
Version: v1.3_alpha

Crypto Module

Table of contents

Classes

Interfaces

Type Aliases

Variables

Functions

Type Aliases

Ciphertext

Ƭ Ciphertext<N>: N[]

Type parameters

NameType
Nbigint

Defined in

crypto/ts/types.ts:21


EcdhSharedKey

Ƭ EcdhSharedKey<N>: [N, N]

Type parameters

NameType
Nbigint

Defined in

crypto/ts/types.ts:12


Leaf

Ƭ Leaf: bigint

Defined in

crypto/ts/types.ts:64


PathElements

Ƭ PathElements: bigint[][]

Defined in

crypto/ts/types.ts:24


Plaintext

Ƭ Plaintext<N>: N[]

Type parameters

NameType
Nbigint

Defined in

crypto/ts/types.ts:18


Point

Ƭ Point<N>: [N, N]

Type parameters

NameType
NSnarkBigNumber

Defined in

crypto/ts/types.ts:15


PrivKey

Ƭ PrivKey: SnarkBigNumber

Defined in

crypto/ts/types.ts:6


PubKey

Ƭ PubKey<N>: [N, N]

Type parameters

NameType
Nbigint

Defined in

crypto/ts/types.ts:9

Variables

NOTHING_UP_MY_SLEEVE

Const NOTHING_UP_MY_SLEEVE: bigint

Defined in

crypto/ts/constants.ts:10


SNARK_FIELD_SIZE

Const SNARK_FIELD_SIZE: bigint = r

Defined in

crypto/ts/constants.ts:6

Functions

bigInt2Buffer

bigInt2Buffer(i): Buffer

Convert a BigInt to a Buffer

Parameters

NameTypeDescription
ibigintthe bigint to convert

Returns

Buffer

the buffer

Defined in

crypto/ts/bigIntUtils.ts:127


calcDepthFromNumLeaves

calcDepthFromNumLeaves(hashLength, numLeaves): number

Calculate the depth of a tree given the number of leaves

Parameters

NameTypeDescription
hashLengthnumberthe hashing function param length
numLeavesnumberhow many leaves

Returns

number

the depth

Defined in

crypto/ts/utils.ts:10


deepCopyBigIntArray

deepCopyBigIntArray(arr): bigint[]

Create a copy of a bigint array

Parameters

NameTypeDescription
arrbigint[]the array of bigints to copy

Returns

bigint[]

a deep copy of the array

Defined in

crypto/ts/bigIntUtils.ts:110


formatPrivKeyForBabyJub

formatPrivKeyForBabyJub(privKey): bigint

An internal function which formats a random private key to be compatible with the BabyJub curve. This is the format which should be passed into the PubKey and other circuits.

Parameters

NameTypeDescription
privKeySnarkBigNumberA private key generated using genPrivKey()

Returns

bigint

A BabyJub-compatible private key.

Defined in

crypto/ts/keys.ts:28


genEcdhSharedKey

genEcdhSharedKey(privKey, pubKey): EcdhSharedKey

Generates an Elliptic-Curve Diffie–Hellman (ECDH) shared key given a private key and a public key.

Parameters

NameTypeDescription
privKeySnarkBigNumberA private key generated using genPrivKey()
pubKeyPubKeyA public key generated using genPubKey()

Returns

EcdhSharedKey

The ECDH shared key.

Defined in

crypto/ts/keys.ts:76


genKeypair

genKeypair(): Keypair

Generates a keypair.

Returns

Keypair

a keypair

Defined in

crypto/ts/keys.ts:60


genPrivKey

genPrivKey(): bigint

Generate a private key

Returns

bigint

A random seed for a private key.

Defined in

crypto/ts/keys.ts:13


genPubKey

genPubKey(privKey): PubKey

Parameters

NameTypeDescription
privKeySnarkBigNumberA private key generated using genPrivKey()

Returns

PubKey

A public key associated with the private key

Defined in

crypto/ts/keys.ts:51


genRandomBabyJubValue

genRandomBabyJubValue(): bigint

Returns a BabyJub-compatible random value. We create it by first generating a random value (initially 256 bits large) modulo the snark field size as described in EIP197. This results in a key size of roughly 253 bits and no more than 254 bits. To prevent modulo bias, we then use this efficient algorithm: http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/lib/libc/crypt/arc4random_uniform.c

Returns

bigint

A BabyJub-compatible random value.

Defined in

crypto/ts/babyjub.ts:115


genRandomSalt

genRandomSalt(): bigint

Generate a random value

Returns

bigint

A BabyJub-compatible salt.

Defined in

crypto/ts/keys.ts:19


genTreeCommitment

genTreeCommitment(leaves, salt, depth): bigint

A helper function which hashes a list of results with a salt and returns the hash.

Parameters

NameTypeDescription
leavesbigint[]A list of values
saltbigintA random salt
depthnumberThe tree depth

Returns

bigint

The hash of the leaves and the salt, with the salt last

Defined in

crypto/ts/utils.ts:30


genTreeProof

genTreeProof(index, leaves, depth): bigint[][]

A helper function to generate the tree proof for the value at the given index in the leaves

Parameters

NameTypeDescription
indexnumberThe index of the value to generate the proof for
leavesbigint[]A list of values
depthnumberThe tree depth

Returns

bigint[][]

The proof

Defined in

crypto/ts/utils.ts:47


hash13

hash13(elements): bigint

A convenience function to use Poseidon to hash a Plaintext with no more than 13 elements

Parameters

NameTypeDescription
elementsPlaintextThe elements to hash

Returns

bigint

The hash of the elements

Defined in

crypto/ts/hashing.ts:130


hash2

hash2(elements): bigint

Parameters

NameType
elementsPlaintext

Returns

bigint

Defined in

crypto/ts/hashing.ts:119


hash3

hash3(elements): bigint

Parameters

NameType
elementsPlaintext

Returns

bigint

Defined in

crypto/ts/hashing.ts:120


hash4

hash4(elements): bigint

Parameters

NameType
elementsPlaintext

Returns

bigint

Defined in

crypto/ts/hashing.ts:121


hash5

hash5(elements): bigint

Parameters

NameType
elementsPlaintext

Returns

bigint

Defined in

crypto/ts/hashing.ts:122


hashLeftRight

hashLeftRight(left, right): bigint

Hash two BigInts with the Poseidon hash function

Parameters

NameTypeDescription
leftbigintThe left-hand element to hash
rightbigintThe right-hand element to hash

Returns

bigint

The hash of the two elements

Defined in

crypto/ts/hashing.ts:85


hashN

hashN(numElements, elements): bigint

Hash up to N elements

Parameters

NameTypeDescription
numElementsnumberThe number of elements to hash
elementsPlaintextThe elements to hash

Returns

bigint

The hash of the elements

Defined in

crypto/ts/hashing.ts:101


hashOne

hashOne(preImage): bigint

Hash a single BigInt with the Poseidon hash function

Parameters

NameTypeDescription
preImagebigintThe element to hash

Returns

bigint

The hash of the element

Defined in

crypto/ts/hashing.ts:160


inCurve

inCurve(p): boolean

Determines if a given point lies on the Baby Jubjub elliptic curve by verifying the curve equation. This function checks if the point satisfies the curve equation ax^2 + y^2 = 1 + dx^2y^2.

Parameters

NameTypeDescription
pPointThe point to check, represented as a pair of bigint values.

Returns

boolean

True if the point is on the curve, otherwise false.

Defined in

node_modules/.pnpm/@zk-kit+baby-jubjub@0.3.0/node_modules/@zk-kit/baby-jubjub/dist/types/baby-jubjub.d.ts:38


packPubKey

packPubKey(pubKey): bigint

Losslessly reduces the size of the representation of a public key

Parameters

NameTypeDescription
pubKeyPubKeyThe public key to pack

Returns

bigint

A packed public key

Defined in

crypto/ts/keys.ts:35


poseidonDecrypt

poseidonDecrypt(ciphertext, key, nonce, length): PlainText<bigint>

Decrypt some ciphertext using poseidon encryption

Parameters

NameTypeDescription
ciphertextCipherText<bigint>the ciphertext to decrypt
keyEncryptionKey<bigint>the key to decrypt with
noncebigintthe nonce used to encrypt
lengthnumberthe length of the plaintext

Returns

PlainText<bigint>

the plaintext

Defined in

node_modules/.pnpm/@zk-kit+poseidon-cipher@0.3.0/node_modules/@zk-kit/poseidon-cipher/dist/types/poseidonCipher.d.ts:18


poseidonDecryptWithoutCheck

poseidonDecryptWithoutCheck(ciphertext, key, nonce, length): PlainText<bigint>

Decrypt some ciphertext using poseidon encryption

Parameters

NameTypeDescription
ciphertextCipherText<bigint>the ciphertext to decrypt
keyEncryptionKey<bigint>the key to decrypt with
noncebigintthe nonce used to encrypt
lengthnumberthe length of the plaintext

Returns

PlainText<bigint>

the plaintext

Dev

Do not throw if the plaintext is invalid

Defined in

node_modules/.pnpm/@zk-kit+poseidon-cipher@0.3.0/node_modules/@zk-kit/poseidon-cipher/dist/types/poseidonCipher.d.ts:28


poseidonEncrypt

poseidonEncrypt(msg, key, nonce): CipherText<bigint>

Encrypt some plaintext using poseidon encryption

Parameters

NameTypeDescription
msgPlainText<bigint>the message to encrypt
keyEncryptionKey<bigint>the key to encrypt with
noncebigintthe nonce to avoid replay attacks

Returns

CipherText<bigint>

the ciphertext

Defined in

node_modules/.pnpm/@zk-kit+poseidon-cipher@0.3.0/node_modules/@zk-kit/poseidon-cipher/dist/types/poseidonCipher.d.ts:9


sha256Hash

sha256Hash(input): bigint

Hash an array of uint256 values the same way that the EVM does.

Parameters

NameTypeDescription
inputbigint[]the array of values to hash

Returns

bigint

a EVM compatible sha256 hash

Defined in

crypto/ts/hashing.ts:15


sign

sign(privateKey, message): Signature<bigint>

Signs a message using the provided private key, employing Poseidon hashing and EdDSA with the Baby Jubjub elliptic curve.

The private key must be an instance of Buffer, Uint8Array or a string. The input will be used to generate entropy and there is no limit in size. The string is used as a set of raw bytes (in UTF-8) and is typically used to pass passwords or secret messages. If you want to pass a bigint, a number or a hexadecimal, be sure to convert them to one of the supported types first. The 'conversions' module in @zk-kit/utils provides a set of functions that may be useful in case you need to convert types.

Parameters

NameTypeDescription
privateKeystring | Uint8Array | BufferThe private key used to sign the message.
messageBigNumberishThe message to be signed.

Returns

Signature<bigint>

The signature object, containing properties relevant to EdDSA signatures, such as 'R8' and 'S' values.

Defined in

node_modules/.pnpm/@zk-kit+eddsa-poseidon@0.11.0/node_modules/@zk-kit/eddsa-poseidon/dist/types/eddsa-poseidon.d.ts:57


stringifyBigInts

stringifyBigInts(input): StringifiedBigInts

Given an input of bigint values, convert them to their string representations

Parameters

NameTypeDescription
inputBigIntVariantsThe input to convert

Returns

StringifiedBigInts

The input with bigint values converted to string

Defined in

crypto/ts/bigIntUtils.ts:78


unpackPubKey

unpackPubKey(packed): PubKey

Restores the original PubKey from its packed representation

Parameters

NameTypeDescription
packedbigintThe value to unpack

Returns

PubKey

The unpacked public key

Defined in

crypto/ts/keys.ts:42


unstringifyBigInts

unstringifyBigInts(input): BigIntVariants

Given an input containing string values, convert them to bigint

Parameters

NameTypeDescription
inputStringifiedBigIntsThe input to convert

Returns

BigIntVariants

the input with string values converted to bigint

Defined in

crypto/ts/bigIntUtils.ts:9


verifySignature

verifySignature(message, signature, publicKey): boolean

Verifies an EdDSA signature using the Baby Jubjub elliptic curve and Poseidon hash function.

Parameters

NameTypeDescription
messageBigNumberishThe original message that was be signed.
signatureSignatureThe EdDSA signature to be verified.
publicKeyPointThe public key associated with the private key used to sign the message.

Returns

boolean

Returns true if the signature is valid and corresponds to the message and public key, false otherwise.

Defined in

node_modules/.pnpm/@zk-kit+eddsa-poseidon@0.11.0/node_modules/@zk-kit/eddsa-poseidon/dist/types/eddsa-poseidon.d.ts:65