jose/test/help/key_utils.test.js
2019-02-20 23:12:08 +01:00

87 lines
2.3 KiB
JavaScript

const test = require('ava')
const { createPublicKey, createPrivateKey, createSecretKey } = require('crypto')
const { pemToJwk, jwkToPem } = require('../../lib/help/key_utils')
const { JWK: fixtures } = require('../fixtures')
const clone = obj => JSON.parse(JSON.stringify(obj))
test('pemToJwk only works for EC and RSA', t => {
;[{}, null, undefined, false, 1, '', 'foo', Buffer, createSecretKey(Buffer.from('foo'))].forEach((value) => {
t.throws(() => {
pemToJwk(value)
}, { instanceOf: TypeError, message: 'unsupported keyObject type' })
})
})
test('jwkToPem only works for EC and RSA', t => {
t.throws(() => {
jwkToPem({ kty: 'oct' })
}, { instanceOf: TypeError, message: 'unsupported kty' })
})
test('RSA Public key', t => {
const expected = fixtures.RSA_PUBLIC
const pem = createPublicKey(jwkToPem(expected))
const actual = pemToJwk(pem)
t.deepEqual(actual, expected)
})
test('RSA Private key', t => {
const expected = fixtures.RSA_PRIVATE
const pem = createPrivateKey(jwkToPem(expected))
const actual = pemToJwk(pem)
t.deepEqual(actual, expected)
})
test('EC P-256 Public key', t => {
const expected = clone(fixtures['P-256'])
delete expected.d
const pem = createPublicKey(jwkToPem(expected))
const actual = pemToJwk(pem)
t.deepEqual(actual, expected)
})
test('EC P-256 Private key', t => {
const expected = fixtures['P-256']
const pem = createPrivateKey(jwkToPem(expected))
const actual = pemToJwk(pem)
t.deepEqual(actual, expected)
})
test('EC P-384 Public key', t => {
const expected = clone(fixtures['P-384'])
delete expected.d
const pem = createPublicKey(jwkToPem(expected))
const actual = pemToJwk(pem)
t.deepEqual(actual, expected)
})
test('EC P-384 Private key', t => {
const expected = fixtures['P-384']
const pem = createPrivateKey(jwkToPem(expected))
const actual = pemToJwk(pem)
t.deepEqual(actual, expected)
})
test('EC P-521 Public key', t => {
const expected = clone(fixtures['P-521'])
delete expected.d
const pem = createPublicKey(jwkToPem(expected))
const actual = pemToJwk(pem)
t.deepEqual(actual, expected)
})
test('EC P-521 Private key', t => {
const expected = fixtures['P-521']
const pem = createPrivateKey(jwkToPem(expected))
const actual = pemToJwk(pem)
t.deepEqual(actual, expected)
})