UNPKG

namillum

Version:
211 lines (127 loc) 4.67 kB
# @zilliqa-js/crypto > Cryptographic abstractions for working with Zilliqa's crypto primitives ## Functions ### `randomBytes(bytes: number): string` Safely generates random bytes. #### Parameters `bytes`: `number` - the number of bytes to randomly generate #### Returns `string` - n randomly-generated bytes (hex-encoded). ### `generatePrivateKey(): string` Generates a cryptographically-secure 32-byte private key. #### Parameters None #### Returns `string` - 32-byte hex-encoded private key. ### `getPubKeyFromPrivateKey(privateKey: string): string` 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. ### `getAddressFromPrivateKey(privateKey: string): string` 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. ### `compressPublicKey(publicKey: string): string` 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. ### `getAddressFromPublicKey(publicKey: string): string` 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. ### `verifyPrivateKey(privateKey: string): boolean` Returns true if the given privateKey is valid. #### Parameters `string` - 32-byte hex-encoded private key. #### Returns `boolean` ### `sign(msg: Buffer, privateKey: string, pubKey: string): string` 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` ### `encryptPrivateKey(kdf: KDF, privateKey: string, passphrase: string): Promise<string>` Generates a version 3 keystore file that complies with the [Web3 Secret Storage definition](https://github.com/ethereum/wiki/wiki/Web3-Secret-Storage-Definition). #### Parameters `kdf`: `'pbkdf2' | 'scrypt'` - the key derivation function. Only `pbkdf2` and `scrypt` 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<string>` - the stringified JSON file. ### `decryptPrivateKey(passphrase: string, keystore: KeystoreV3): Promise<string>` Generates a version 3 keystore file that complies with the [Web3 Secret Storage definition](https://github.com/ethereum/wiki/wiki/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<string>` - the hex-encoded private key. ### `toBech32Address(address: string): string` 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`, where `1` is a separator. #### Example ```text 0x1d19918a737306218b5cbb3241fcdcbd998c3a72 (hex) -> zil1r5verznnwvrzrz6uhveyrlxuhkvccwnju4aehf (bech32) ``` ### `fromBech32Address(address: string): string` 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; } ```