diff options
author | Matthew Miller <matthew@millerti.me> | 2021-08-22 17:37:36 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-22 17:37:36 -0700 |
commit | a0b7725c7432e3dd04dea76f1e74f163c8d1ee61 (patch) | |
tree | 14a09bfa07094b8ebb69a2c01a15d184c707dc3f /packages/server/src/helpers/parseAuthenticatorData.test.ts | |
parent | 2f87d70bf348cf854c6ac215bd9d424502278da6 (diff) | |
parent | 9c05b33102b1959e3920cf83bd19350943298392 (diff) |
Merge pull request #144 from MasterKale/feat/fido-mds-3
feat/fido-mds-3
Diffstat (limited to 'packages/server/src/helpers/parseAuthenticatorData.test.ts')
-rw-r--r-- | packages/server/src/helpers/parseAuthenticatorData.test.ts | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/packages/server/src/helpers/parseAuthenticatorData.test.ts b/packages/server/src/helpers/parseAuthenticatorData.test.ts new file mode 100644 index 0000000..3bba4b6 --- /dev/null +++ b/packages/server/src/helpers/parseAuthenticatorData.test.ts @@ -0,0 +1,53 @@ +import cbor from 'cbor'; + +import parseAuthenticatorData from './parseAuthenticatorData'; + +// Grabbed this from a Conformance test, contains attestation data +const authDataWithAT = Buffer.from( + 'SZYN5YgOjGh0NBcPZHZgW4/krrmihjLHmVzzuoMdl2NBAAAAJch83ZdWwUm4niTLNjZU81AAIHa7Ksm5br3hAh3UjxP9+4rqu8BEsD+7SZ2xWe1/yHv6pAEDAzkBACBZAQDcxA7Ehs9goWB2Hbl6e9v+aUub9rvy2M7Hkvf+iCzMGE63e3sCEW5Ru33KNy4um46s9jalcBHtZgtEnyeRoQvszis+ws5o4Da0vQfuzlpBmjWT1dV6LuP+vs9wrfObW4jlA5bKEIhv63+jAxOtdXGVzo75PxBlqxrmrr5IR9n8Fw7clwRsDkjgRHaNcQVbwq/qdNwU5H3hZKu9szTwBS5NGRq01EaDF2014YSTFjwtAmZ3PU1tcO/QD2U2zg6eB5grfWDeAJtRE8cbndDWc8aLL0aeC37Q36+TVsGe6AhBgHEw6eO3I3NW5r9v/26CqMPBDwmEundeq1iGyKfMloobIUMBAAE=', + 'base64', +); +// Grabbed this from a Conformance test, contains extension data +const authDataWithED = Buffer.from( + 'SZYN5YgOjGh0NBcPZHZgW4/krrmihjLHmVzzuoMdl2OBAAAAjaFxZXhhbXBsZS5leHRlbnNpb254dlRoaXMgaXMgYW4gZXhhbXBsZSBleHRlbnNpb24hIElmIHlvdSByZWFkIHRoaXMgbWVzc2FnZSwgeW91IHByb2JhYmx5IHN1Y2Nlc3NmdWxseSBwYXNzaW5nIGNvbmZvcm1hbmNlIHRlc3RzLiBHb29kIGpvYiE=', + 'base64', +); + +test('should parse flags', () => { + const parsed = parseAuthenticatorData(authDataWithED); + + const { flags } = parsed; + + expect(flags.up).toEqual(true); + expect(flags.uv).toEqual(false); + expect(flags.at).toEqual(false); + expect(flags.ed).toEqual(true); +}); + +test('should parse attestation data', () => { + const parsed = parseAuthenticatorData(authDataWithAT); + + const { credentialID, credentialPublicKey, aaguid } = parsed; + + expect(credentialID?.toString('base64')).toEqual('drsqybluveECHdSPE/37iuq7wESwP7tJnbFZ7X/Ie/o='); + expect(credentialPublicKey?.toString('base64')).toEqual( + 'pAEDAzkBACBZAQDcxA7Ehs9goWB2Hbl6e9v+aUub9rvy2M7Hkvf+iCzMGE63e3sCEW5Ru33KNy4um46s9jalcBHtZgtEnyeRoQvszis+ws5o4Da0vQfuzlpBmjWT1dV6LuP+vs9wrfObW4jlA5bKEIhv63+jAxOtdXGVzo75PxBlqxrmrr5IR9n8Fw7clwRsDkjgRHaNcQVbwq/qdNwU5H3hZKu9szTwBS5NGRq01EaDF2014YSTFjwtAmZ3PU1tcO/QD2U2zg6eB5grfWDeAJtRE8cbndDWc8aLL0aeC37Q36+TVsGe6AhBgHEw6eO3I3NW5r9v/26CqMPBDwmEundeq1iGyKfMloobIUMBAAE=', + ); + expect(aaguid?.toString('base64')).toEqual('yHzdl1bBSbieJMs2NlTzUA=='); +}); + +test('should parse extension data', () => { + expect.assertions(1); + + const parsed = parseAuthenticatorData(authDataWithED); + + const { extensionsDataBuffer } = parsed; + + if (extensionsDataBuffer) { + const decoded = cbor.decodeFirstSync(extensionsDataBuffer); + expect(decoded).toEqual({ + 'example.extension': + 'This is an example extension! If you read this message, you probably successfully passing conformance tests. Good job!', + }); + } +}); |