Core crypto utilities for signing/verification/hashing Zilliqa transactions.
npm install @zilliqa-js/crypto> Cryptographic abstractions for working with Zilliqa's crypto primitives
Safely generates random bytes.
#### Parameters
bytes: number - the number of bytes to randomly generate
#### Returns
string - n randomly-generated bytes (hex-encoded).
Generates a cryptographically-secure 32-byte private key.
#### Parameters
None
#### Returns
string - 32-byte hex-encoded private key.
Retrieves the public key of the given hex-encoded private key.
#### Parameters
privateKey: string - 32-byte hex-encoded private key.
#### Returns
string - 33-byte hex-encoded public key.
Retrieves the address from the given hex-encoded private key.
#### Parameters
privateKey: string - 32-byte hex-encoded private key.
#### Returns
string - 20-byte hex-encoded address.
Compresses a full-length public key by using a sign byte (02 or 03).
#### Parameters
publicKey: string - 65-byte hex-encoded public key.
#### Returns
string - 32-byte hex-encoded public key.
Returns the address derived from the given publicKey.
#### Parameters
publicKey: string - 32-byte hex-encoded compressed public key.
#### Returns
string - 20-byte hex-encoded address.
Returns true if the given privateKey is valid.
#### Parameters
string - 32-byte hex-encoded private key.
#### Returns
boolean
Generates a Schnorr signature over a Buffer of arbitrary bytes. This function
must be used to sign all transactions to be broadcast on the blockchain.
#### Parameters
msg: Buffer - arbitrary sequence of bytes to be signed. privateKey:string - 32-byte hex-encoded private key. pubKey: string - 32-byte
hex-encoded private key.
#### Returns
boolean
Generates a version 3 keystore file that complies with the
Web3 Secret Storage definition.
#### Parameters
kdf: 'pbkdf2' | 'scrypt' - the key derivation function. Only pbkdf2 andscrypt are currently supported. privateKey: string - 32-byte hex-encoded
private key. passphrase: string - the passphrase to be used to encrypt the
private key.
#### Returns
Promise - the stringified JSON file.
Generates a version 3 keystore file that complies with the
Web3 Secret Storage definition.
#### Parameters
passphrase: string - the passphrase to be used to encrypt the private key.keystore: KeystoreV3 - the object containing the deserialised JSON obtained
from encryptPrivateKey.
#### Returns
Promise - the hex-encoded private key.
Encodes a 20-byte hex encoded address as a bech32 address. Non-hex-encoded
strings will cause an error to be thrown.
#### Parameters
address: string - the 20-byte hex-encoded address. 0x prefix optional.
#### Returns
string - the bech32 encoded address. It is always prefixed by zil1, where1 is a separator.
#### Example
``text`
0x1d19918a737306218b5cbb3241fcdcbd998c3a72 (hex) -> zil1r5verznnwvrzrz6uhveyrlxuhkvccwnju4aehf (bech32)
Encodes a a bech32 address as a hex-encoded string. Invalid bech32 addresses
will cause an error to be thrown.
#### Parameters
address: string - the 42-character bech32 address.
#### Returns
string - the checksum 20-byte hex-encoded address.
#### Example
`test`
zil1r5verznnwvrzrz6uhveyrlxuhkvccwnju4aehf (bech32) -> 0x1d19918a737306218b5cbb3241fcdcbd998c3a72 (hex)
#### Interfaces
`ts
interface PBKDF2Params {
salt: string;
dklen: number;
c: number;
}
interface ScryptParams {
salt: string;
dklen: number;
n: number;
r: number;
p: number;
}
type KDFParams = PBKDF2Params | ScryptParams;
interface KeystoreV3 {
address: string;
crypto: {
cipher: string;
cipherparams: {
iv: string;
};
ciphertext: string;
kdf: KDF;
kdfparams: KDFParams;
mac: string;
};
id: string;
version: 3;
}
``