Files
xahau.js/packages/ripple-keypairs/test/api.test.ts
2023-02-03 17:03:07 -06:00

117 lines
3.8 KiB
TypeScript

import assert from 'assert'
import fixtures from './fixtures/api.json'
import * as api from '../src'
const decodeSeed = api.decodeSeed
const entropy = new Uint8Array([
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
])
describe('api', () => {
it('generateSeed - secp256k1', () => {
assert.strictEqual(api.generateSeed({ entropy }), fixtures.secp256k1.seed)
})
it('generateSeed - secp256k1, random', () => {
const seed = api.generateSeed()
assert(seed.startsWith('s'))
const { type, bytes } = decodeSeed(seed)
assert(type === 'secp256k1')
assert(bytes.length === 16)
})
it('generateSeed - ed25519', () => {
assert.strictEqual(
api.generateSeed({ entropy, algorithm: 'ed25519' }),
fixtures.ed25519.seed,
)
})
it('generateSeed - ed25519, random', () => {
const seed = api.generateSeed({ algorithm: 'ed25519' })
assert(seed.startsWith('sEd'))
const { type, bytes } = decodeSeed(seed)
assert(type === 'ed25519')
assert(bytes.length === 16)
})
it('deriveKeypair - secp256k1', () => {
const keypair = api.deriveKeypair(fixtures.secp256k1.seed)
assert.deepEqual(keypair, fixtures.secp256k1.keypair)
})
it('deriveKeypair - ed25519', () => {
const keypair = api.deriveKeypair(fixtures.ed25519.seed)
assert.deepEqual(keypair, fixtures.ed25519.keypair)
})
it('deriveKeypair - secp256k1 - validator', () => {
const keypair = api.deriveKeypair(fixtures.secp256k1.seed, {
validator: true,
})
assert.deepEqual(keypair, fixtures.secp256k1.validatorKeypair)
})
it('deriveKeypair - ed25519 - validator', () => {
const keypair = api.deriveKeypair(fixtures.ed25519.seed, {
validator: true,
})
assert.deepEqual(keypair, fixtures.ed25519.validatorKeypair)
})
it('deriveAddress - secp256k1 public key', () => {
const address = api.deriveAddress(fixtures.secp256k1.keypair.publicKey)
assert.strictEqual(address, fixtures.secp256k1.address)
})
it('deriveAddress - ed25519 public key', () => {
const address = api.deriveAddress(fixtures.ed25519.keypair.publicKey)
assert.strictEqual(address, fixtures.ed25519.address)
})
it('sign - secp256k1', () => {
const privateKey = fixtures.secp256k1.keypair.privateKey
const message = fixtures.secp256k1.message
const messageHex = Buffer.from(message, 'utf8').toString('hex')
const signature = api.sign(messageHex, privateKey)
assert.strictEqual(signature, fixtures.secp256k1.signature)
})
it('verify - secp256k1', () => {
const signature = fixtures.secp256k1.signature
const publicKey = fixtures.secp256k1.keypair.publicKey
const message = fixtures.secp256k1.message
const messageHex = Buffer.from(message, 'utf8').toString('hex')
assert(api.verify(messageHex, signature, publicKey))
})
it('sign - ed25519', () => {
const privateKey = fixtures.ed25519.keypair.privateKey
const message = fixtures.ed25519.message
const messageHex = Buffer.from(message, 'utf8').toString('hex')
const signature = api.sign(messageHex, privateKey)
assert.strictEqual(signature, fixtures.ed25519.signature)
})
it('verify - ed25519', () => {
const signature = fixtures.ed25519.signature
const publicKey = fixtures.ed25519.keypair.publicKey
const message = fixtures.ed25519.message
const messageHex = Buffer.from(message, 'utf8').toString('hex')
assert(api.verify(messageHex, signature, publicKey))
})
it('deriveNodeAddress', () => {
const addrX = 'n9KHn8NfbBsZV5q8bLfS72XyGqwFt5mgoPbcTV4c6qKiuPTAtXYk'
const addrY = 'rU7bM9ENDkybaxNrefAVjdLTyNLuue1KaJ'
assert.strictEqual(api.deriveNodeAddress(addrX), addrY)
})
it('Random Address', () => {
const seed = api.generateSeed()
const keypair = api.deriveKeypair(seed)
const address = api.deriveAddress(keypair.publicKey)
assert(address.startsWith('r'))
})
})