UNPKG

did-jwt

Version:

Library for Signing and Verifying JWTs that use DIDs as issuers and JWEs that use DIDs as recipients

74 lines (66 loc) 3.23 kB
import { base64ToBytes, base58ToBytes, hexToBytes } from '../util.js' import { EdDSASigner } from '../signers/EdDSASigner.js' describe('EdDSASigner', () => { it('signs data with base64 key', async () => { expect.assertions(1) const privKey = 'nlXR4aofRVuLqtn9+XVQNlX4s1nVQvp+TOhBBtYls1IG+sHyIkDP/WN+rWZHGIQp+v2pyct+rkM4asF/YRFQdQ==' const signer = EdDSASigner(base64ToBytes(privKey)) const plaintext = 'thequickbrownfoxjumpedoverthelazyprogrammer' return expect(signer(plaintext)).resolves.toEqual( '1y_N9v6xI4DyG9vIuloivxm91EV96nDM3HXBUI4P2Owk0IxazqX63rQ5jlBih6tP_4H5QhkHHqbree7ExmTBCw' ) }) it('signs data with base64url key', async () => { expect.assertions(1) const privKey = 'nlXR4aofRVuLqtn9-XVQNlX4s1nVQvp-TOhBBtYls1IG-sHyIkDP_WN-rWZHGIQp-v2pyct-rkM4asF_YRFQdQ' const signer = EdDSASigner(base64ToBytes(privKey)) const plaintext = 'thequickbrownfoxjumpedoverthelazyprogrammer' return expect(signer(plaintext)).resolves.toEqual( '1y_N9v6xI4DyG9vIuloivxm91EV96nDM3HXBUI4P2Owk0IxazqX63rQ5jlBih6tP_4H5QhkHHqbree7ExmTBCw' ) }) it('signs data with base58 key', async () => { expect.assertions(1) const privKey = '4AcB6rb1mUBf82U7pBzPZ53ZAQycdi4Q1LWoUREvHSRXBRo9Sus9bzCJPKVTQQeDpjHMJN7fBAGWKEnJw5SPbaC4' const signer = EdDSASigner(base58ToBytes(privKey)) const plaintext = 'thequickbrownfoxjumpedoverthelazyprogrammer' return expect(signer(plaintext)).resolves.toEqual( '1y_N9v6xI4DyG9vIuloivxm91EV96nDM3HXBUI4P2Owk0IxazqX63rQ5jlBih6tP_4H5QhkHHqbree7ExmTBCw' ) }) it('signs data with hex key', async () => { expect.assertions(1) const privKey = '9e55d1e1aa1f455b8baad9fdf975503655f8b359d542fa7e4ce84106d625b35206fac1f22240cffd637ead6647188429fafda9c9cb7eae43386ac17f61115075' const signer = EdDSASigner(hexToBytes(privKey)) const plaintext = 'thequickbrownfoxjumpedoverthelazyprogrammer' return expect(signer(plaintext)).resolves.toEqual( '1y_N9v6xI4DyG9vIuloivxm91EV96nDM3HXBUI4P2Owk0IxazqX63rQ5jlBih6tP_4H5QhkHHqbree7ExmTBCw' ) }) it('signs data with prefixed hex key', async () => { expect.assertions(1) const privKey = '0x9e55d1e1aa1f455b8baad9fdf975503655f8b359d542fa7e4ce84106d625b35206fac1f22240cffd637ead6647188429fafda9c9cb7eae43386ac17f61115075' const signer = EdDSASigner(hexToBytes(privKey)) const plaintext = 'thequickbrownfoxjumpedoverthelazyprogrammer' return expect(signer(plaintext)).resolves.toEqual( '1y_N9v6xI4DyG9vIuloivxm91EV96nDM3HXBUI4P2Owk0IxazqX63rQ5jlBih6tP_4H5QhkHHqbree7ExmTBCw' ) }) it('accepts 32 byte keys size (github #289)', async () => { expect.assertions(1) const privateKey = '278a5de700e29faae8e40e366ec5012b5ec63d36ec77e8a2417154cc1d25383f' expect(() => { EdDSASigner(hexToBytes(privateKey)) }).not.toThrow() }) it('refuses wrong key size', async () => { expect.assertions(1) const privateKey = '9e55d1e1aa1f455b8baad9fdf975503655f8b359d542fa7e4ce84106d625b35206fac1f22240cffd637ead6647188429fafda9c9cb7eae43386ac17f611150' expect(() => { EdDSASigner(hexToBytes(privateKey)) }).toThrowError(/^bad_key: Invalid private key format.*/) }) })