@passwordless-id/webauthn
Advanced tools
Comparing version 1.3.1 to 1.3.3
@@ -1,165 +0,8 @@ | ||
declare const _default: { | ||
"9c835346-796b-4c27-8898-d6032f515cc5": { | ||
name: string; | ||
}; | ||
"c5ef55ff-ad9a-4b9f-b580-adebafe026d0": { | ||
name: string; | ||
}; | ||
"39a5647e-1853-446c-a1f6-a79bae9f5bc7": { | ||
name: string; | ||
}; | ||
"3789da91-f943-46bc-95c3-50ea2012f03a": { | ||
name: string; | ||
}; | ||
"fa2b99dc-9e39-4257-8f92-4a30d23c4118": { | ||
name: string; | ||
}; | ||
"4e768f2c-5fab-48b3-b300-220eb487752b": { | ||
name: string; | ||
}; | ||
"931327dd-c89b-406c-a81e-ed7058ef36c6": { | ||
name: string; | ||
}; | ||
"e1a96183-5016-4f24-b55b-e3ae23614cc6": { | ||
name: string; | ||
}; | ||
"08987058-cadc-4b81-b6e1-30de50dcbe96": { | ||
name: string; | ||
}; | ||
"d91c5288-0ef0-49b7-b8ae-21ca0aa6b3f3": { | ||
name: string; | ||
}; | ||
"ee041bce-25e5-4cdb-8f86-897fd6418464": { | ||
name: string; | ||
}; | ||
"73bb0cd4-e502-49b8-9c6f-b59445bf720b": { | ||
name: string; | ||
}; | ||
"149a2021-8ef6-4133-96b8-81f8d5b7f1f5": { | ||
name: string; | ||
}; | ||
"3b1adb99-0dfe-46fd-90b8-7f7614a4de2a": { | ||
name: string; | ||
}; | ||
"f8a011f3-8c0a-4d15-8006-17111f9edc7d": { | ||
name: string; | ||
}; | ||
"2c0df832-92de-4be1-8412-88a8f074df4a": { | ||
name: string; | ||
}; | ||
"c5703116-972b-4851-a3e7-ae1259843399": { | ||
name: string; | ||
}; | ||
"820d89ed-d65a-409e-85cb-f73f0578f82a": { | ||
name: string; | ||
}; | ||
"b6ede29c-3772-412c-8a78-539c1f4c62d2": { | ||
name: string; | ||
}; | ||
"85203421-48f9-4355-9bc8-8a53846e5083": { | ||
name: string; | ||
}; | ||
"d821a7d4-e97c-4cb6-bd82-4237731fd4be": { | ||
name: string; | ||
}; | ||
"516d3969-5a57-5651-5958-4e7a49434167": { | ||
name: string; | ||
}; | ||
"b93fd961-f2e6-462f-b122-82002247de78": { | ||
name: string; | ||
}; | ||
"2fc0579f-8113-47ea-b116-bb5a8db9202a": { | ||
name: string; | ||
}; | ||
"9ddd1817-af5a-4672-a2b9-3e3dd95000a9": { | ||
name: string; | ||
}; | ||
"d8522d9f-575b-4866-88a9-ba99fa02f35b": { | ||
name: string; | ||
}; | ||
"692db549-7ae5-44d5-a1e5-dd20a493b723": { | ||
name: string; | ||
}; | ||
"3e22415d-7fdf-4ea4-8a0c-dd60c4249b9d": { | ||
name: string; | ||
}; | ||
"aeb6569c-f8fb-4950-ac60-24ca2bbe2e52": { | ||
name: string; | ||
}; | ||
"9f0d8150-baa5-4c00-9299-ad62c8bb4e87": { | ||
name: string; | ||
}; | ||
"12ded745-4bed-47d4-abaa-e713f51d6393": { | ||
name: string; | ||
}; | ||
"88bbd2f0-342a-42e7-9729-dd158be5407a": { | ||
name: string; | ||
}; | ||
"34f5766d-1536-4a24-9033-0e294e510fb0": { | ||
name: string; | ||
}; | ||
"83c47309-aabb-4108-8470-8be838b573cb": { | ||
name: string; | ||
}; | ||
"be727034-574a-f799-5c76-0929e0430973": { | ||
name: string; | ||
}; | ||
"b92c3f9a-c014-4056-887f-140a2501163b": { | ||
name: string; | ||
}; | ||
"54d9fee8-e621-4291-8b18-7157b99c5bec": { | ||
name: string; | ||
}; | ||
"6028b017-b1d4-4c02-b4b3-afcdafc96bb2": { | ||
name: string; | ||
}; | ||
"6d44ba9b-f6ec-2e49-b930-0c8fe920cb73": { | ||
name: string; | ||
}; | ||
"e416201b-afeb-41ca-a03d-2281c28322aa": { | ||
name: string; | ||
}; | ||
"9f77e279-a6e2-4d58-b700-31e5943c6a98": { | ||
name: string; | ||
}; | ||
"73402251-f2a8-4f03-873e-3cb6db604b03": { | ||
name: string; | ||
}; | ||
"c1f9a0bc-1dd2-404a-b27f-8e29047a43fd": { | ||
name: string; | ||
}; | ||
"504d7149-4e4c-3841-4555-55445a677357": { | ||
name: string; | ||
}; | ||
"cb69481e-8ff7-4039-93ec-0a2729a154a8": { | ||
name: string; | ||
}; | ||
"ee882879-721c-4913-9775-3dfcce97072a": { | ||
name: string; | ||
}; | ||
"8c97a730-3f7b-41a6-87d6-1e9b62bda6f0": { | ||
name: string; | ||
}; | ||
"a1f52be5-dfab-4364-b51c-2bd496b14a56": { | ||
name: string; | ||
}; | ||
"3e078ffd-4c54-4586-8baa-a77da113aec5": { | ||
name: string; | ||
}; | ||
"d41f5a69-b817-4144-a13c-9ebd6d9254d6": { | ||
name: string; | ||
}; | ||
"bc2fe499-0d8e-4ffe-96f3-94a82840cf8c": { | ||
name: string; | ||
}; | ||
"1c086528-58d5-f211-823c-356786e36140": { | ||
name: string; | ||
}; | ||
"77010bd7-212a-4fc9-b236-d2ca5e9d4084": { | ||
name: string; | ||
}; | ||
"833b721a-ff5f-4d00-bb2e-bdda3ec01e29": { | ||
name: string; | ||
}; | ||
}; | ||
export default _default; | ||
/** | ||
* The source comes from | ||
* "official" https://mds.fidoalliance.org/ | ||
* and the | ||
* "community-driven" https://github.com/passkeydeveloper/passkey-authenticator-aaguids | ||
* combined together. | ||
*/ | ||
export declare const authenticatorMetadata: Record<string, string>; |
@@ -1,164 +0,150 @@ | ||
export default { | ||
"9c835346-796b-4c27-8898-d6032f515cc5": { | ||
"name": "Cryptnox FIDO2" | ||
}, | ||
"c5ef55ff-ad9a-4b9f-b580-adebafe026d0": { | ||
"name": "YubiKey 5Ci" | ||
}, | ||
"39a5647e-1853-446c-a1f6-a79bae9f5bc7": { | ||
"name": "Vancosys Android Authenticator" | ||
}, | ||
"3789da91-f943-46bc-95c3-50ea2012f03a": { | ||
"name": "NEOWAVE Winkeo FIDO2" | ||
}, | ||
"fa2b99dc-9e39-4257-8f92-4a30d23c4118": { | ||
"name": "YubiKey 5 Series with NFC" | ||
}, | ||
"4e768f2c-5fab-48b3-b300-220eb487752b": { | ||
"name": "Hideez Key 4 FIDO2 SDK" | ||
}, | ||
"931327dd-c89b-406c-a81e-ed7058ef36c6": { | ||
"name": "Swissbit iShield FIDO2" | ||
}, | ||
"e1a96183-5016-4f24-b55b-e3ae23614cc6": { | ||
"name": "ATKey.Pro CTAP2.0" | ||
}, | ||
"08987058-cadc-4b81-b6e1-30de50dcbe96": { | ||
"name": "Windows Hello Hardware Authenticator" | ||
}, | ||
"d91c5288-0ef0-49b7-b8ae-21ca0aa6b3f3": { | ||
"name": "KEY-ID FIDO2 Authenticator" | ||
}, | ||
"ee041bce-25e5-4cdb-8f86-897fd6418464": { | ||
"name": "Feitian ePass FIDO2-NFC Authenticator" | ||
}, | ||
"73bb0cd4-e502-49b8-9c6f-b59445bf720b": { | ||
"name": "YubiKey 5 FIPS Series" | ||
}, | ||
"149a2021-8ef6-4133-96b8-81f8d5b7f1f5": { | ||
"name": "Security Key by Yubico with NFC" | ||
}, | ||
"3b1adb99-0dfe-46fd-90b8-7f7614a4de2a": { | ||
"name": "GoTrust Idem Key FIDO2 Authenticator" | ||
}, | ||
"f8a011f3-8c0a-4d15-8006-17111f9edc7d": { | ||
"name": "Security Key by Yubico" | ||
}, | ||
"2c0df832-92de-4be1-8412-88a8f074df4a": { | ||
"name": "Feitian FIDO Smart Card" | ||
}, | ||
"c5703116-972b-4851-a3e7-ae1259843399": { | ||
"name": "NEOWAVE Badgeo FIDO2" | ||
}, | ||
"820d89ed-d65a-409e-85cb-f73f0578f82a": { | ||
"name": "Vancosys iOS Authenticator" | ||
}, | ||
"b6ede29c-3772-412c-8a78-539c1f4c62d2": { | ||
"name": "Feitian BioPass FIDO2 Plus Authenticator" | ||
}, | ||
"85203421-48f9-4355-9bc8-8a53846e5083": { | ||
"name": "YubiKey 5Ci FIPS" | ||
}, | ||
"d821a7d4-e97c-4cb6-bd82-4237731fd4be": { | ||
"name": "Hyper FIDO Bio Security Key" | ||
}, | ||
"516d3969-5a57-5651-5958-4e7a49434167": { | ||
"name": "SmartDisplayer BobeePass (NFC-BLE FIDO2 Authenticator)" | ||
}, | ||
"b93fd961-f2e6-462f-b122-82002247de78": { | ||
"name": "Android Authenticator with SafetyNet Attestation" | ||
}, | ||
"2fc0579f-8113-47ea-b116-bb5a8db9202a": { | ||
"name": "YubiKey 5 Series with NFC" | ||
}, | ||
"9ddd1817-af5a-4672-a2b9-3e3dd95000a9": { | ||
"name": "Windows Hello VBS Hardware Authenticator" | ||
}, | ||
"d8522d9f-575b-4866-88a9-ba99fa02f35b": { | ||
"name": "YubiKey Bio Series" | ||
}, | ||
"692db549-7ae5-44d5-a1e5-dd20a493b723": { | ||
"name": "HID Crescendo Key" | ||
}, | ||
"3e22415d-7fdf-4ea4-8a0c-dd60c4249b9d": { | ||
"name": "Feitian iePass FIDO Authenticator" | ||
}, | ||
"aeb6569c-f8fb-4950-ac60-24ca2bbe2e52": { | ||
"name": "HID Crescendo C2300" | ||
}, | ||
"9f0d8150-baa5-4c00-9299-ad62c8bb4e87": { | ||
"name": "GoTrust Idem Card FIDO2 Authenticator" | ||
}, | ||
"12ded745-4bed-47d4-abaa-e713f51d6393": { | ||
"name": "Feitian AllinOne FIDO2 Authenticator" | ||
}, | ||
"88bbd2f0-342a-42e7-9729-dd158be5407a": { | ||
"name": "Precision InnaIT Key FIDO 2 Level 2 certified" | ||
}, | ||
"34f5766d-1536-4a24-9033-0e294e510fb0": { | ||
"name": "YubiKey 5 Series CTAP2.1 Preview 1 " | ||
}, | ||
"83c47309-aabb-4108-8470-8be838b573cb": { | ||
"name": "YubiKey Bio Series (Enterprise Profile)" | ||
}, | ||
"be727034-574a-f799-5c76-0929e0430973": { | ||
"name": "Crayonic KeyVault K1 (USB-NFC-BLE FIDO2 Authenticator)" | ||
}, | ||
"b92c3f9a-c014-4056-887f-140a2501163b": { | ||
"name": "Security Key by Yubico" | ||
}, | ||
"54d9fee8-e621-4291-8b18-7157b99c5bec": { | ||
"name": "HID Crescendo Enabled" | ||
}, | ||
"6028b017-b1d4-4c02-b4b3-afcdafc96bb2": { | ||
"name": "Windows Hello Software Authenticator" | ||
}, | ||
"6d44ba9b-f6ec-2e49-b930-0c8fe920cb73": { | ||
"name": "Security Key by Yubico with NFC" | ||
}, | ||
"e416201b-afeb-41ca-a03d-2281c28322aa": { | ||
"name": "ATKey.Pro CTAP2.1" | ||
}, | ||
"9f77e279-a6e2-4d58-b700-31e5943c6a98": { | ||
"name": "Hyper FIDO Pro" | ||
}, | ||
"73402251-f2a8-4f03-873e-3cb6db604b03": { | ||
"name": "uTrust FIDO2 Security Key" | ||
}, | ||
"c1f9a0bc-1dd2-404a-b27f-8e29047a43fd": { | ||
"name": "YubiKey 5 FIPS Series with NFC" | ||
}, | ||
"504d7149-4e4c-3841-4555-55445a677357": { | ||
"name": "WiSECURE AuthTron USB FIDO2 Authenticator" | ||
}, | ||
"cb69481e-8ff7-4039-93ec-0a2729a154a8": { | ||
"name": "YubiKey 5 Series" | ||
}, | ||
"ee882879-721c-4913-9775-3dfcce97072a": { | ||
"name": "YubiKey 5 Series" | ||
}, | ||
"8c97a730-3f7b-41a6-87d6-1e9b62bda6f0": { | ||
"name": "FT-JCOS FIDO Fingerprint Card" | ||
}, | ||
"a1f52be5-dfab-4364-b51c-2bd496b14a56": { | ||
"name": "OCTATCO EzFinger2 FIDO2 AUTHENTICATOR" | ||
}, | ||
"3e078ffd-4c54-4586-8baa-a77da113aec5": { | ||
"name": "Hideez Key 3 FIDO2" | ||
}, | ||
"d41f5a69-b817-4144-a13c-9ebd6d9254d6": { | ||
"name": "ATKey.Card CTAP2.0" | ||
}, | ||
"bc2fe499-0d8e-4ffe-96f3-94a82840cf8c": { | ||
"name": "OCTATCO EzQuant FIDO2 AUTHENTICATOR" | ||
}, | ||
"1c086528-58d5-f211-823c-356786e36140": { | ||
"name": "Atos CardOS FIDO2" | ||
}, | ||
"77010bd7-212a-4fc9-b236-d2ca5e9d4084": { | ||
"name": "Feitian BioPass FIDO2 Authenticator" | ||
}, | ||
"833b721a-ff5f-4d00-bb2e-bdda3ec01e29": { | ||
"name": "Feitian ePass FIDO2 Authenticator" | ||
} | ||
/** | ||
* The source comes from | ||
* "official" https://mds.fidoalliance.org/ | ||
* and the | ||
* "community-driven" https://github.com/passkeydeveloper/passkey-authenticator-aaguids | ||
* combined together. | ||
*/ | ||
export const authenticatorMetadata = { | ||
"ea9b8d66-4d01-1d21-3ce4-b6b48cb575d4": "Google Password Manager", | ||
"adce0002-35bc-c60a-648b-0b25f1f05503": "Chrome on Mac", | ||
"08987058-cadc-4b81-b6e1-30de50dcbe96": "Windows Hello Hardware Authenticator", | ||
"9ddd1817-af5a-4672-a2b9-3e3dd95000a9": "Windows Hello VBS Hardware Authenticator", | ||
"6028b017-b1d4-4c02-b4b3-afcdafc96bb2": "Windows Hello Software Authenticator", | ||
"dd4ec289-e01d-41c9-bb89-70fa845d4bf2": "iCloud Keychain (Managed)", | ||
"531126d6-e717-415c-9320-3d9aa6981239": "Dashlane", | ||
"bada5566-a7aa-401f-bd96-45619a55120d": "1Password", | ||
"b84e4048-15dc-4dd0-8640-f4f60813c8af": "NordPass", | ||
"0ea242b4-43c4-4a1b-8b17-dd6d0b6baec6": "Keeper", | ||
"f3809540-7f14-49c1-a8b3-8f813b225541": "Enpass", | ||
"b5397666-4885-aa6b-cebf-e52262a439a2": "Chromium Browser", | ||
"771b48fd-d3d4-4f74-9232-fc157ab0507a": "Edge on Mac", | ||
"39a5647e-1853-446c-a1f6-a79bae9f5bc7": "IDmelon Android Authenticator", | ||
"d548826e-79b4-db40-a3d8-11116f7e8349": "Bitwarden", | ||
"fbfc3007-154e-4ecc-8c0b-6e020557d7bd": "iCloud Keychain", | ||
"53414d53-554e-4700-0000-000000000000": "Samsung Pass", | ||
"66a0ccb3-bd6a-191f-ee06-e375c50b9846": "Thales Bio iOS SDK", | ||
"8836336a-f590-0921-301d-46427531eee6": "Thales Bio Android SDK", | ||
"cd69adb5-3c7a-deb9-3177-6800ea6cb72a": "Thales PIN Android SDK", | ||
"17290f1e-c212-34d0-1423-365d729f09d9": "Thales PIN iOS SDK", | ||
"fcb1bcb4-f370-078c-6993-bc24d0ae3fbe": "Ledger Nano X FIDO2 Authenticator", | ||
"5626bed4-e756-430b-a7ff-ca78c8b12738": "VALMIDO PRO FIDO", | ||
"95e4d58c-056e-4a65-866d-f5a69659e880": "TruU Windows Authenticator", | ||
"9c835346-796b-4c27-8898-d6032f515cc5": "Cryptnox FIDO2", | ||
"0d9b2e56-566b-c393-2940-f821b7f15d6d": "Excelsecu eSecu FIDO2 Pro Security Key", | ||
"c5ef55ff-ad9a-4b9f-b580-adebafe026d0": "YubiKey 5 Series with Lightning", | ||
"664d9f67-84a2-412a-9ff7-b4f7d8ee6d05": "OpenSK authenticator", | ||
"3789da91-f943-46bc-95c3-50ea2012f03a": "NEOWAVE Winkeo FIDO2", | ||
"fa2b99dc-9e39-4257-8f92-4a30d23c4118": "YubiKey 5 Series with NFC", | ||
"69700f79-d1fb-472e-bd9b-a3a3b9a9eda0": "Pone Biometrics OFFPAD Authenticator", | ||
"89b19028-256b-4025-8872-255358d950e4": "Sentry Enterprises CTAP2 Authenticator", | ||
"4e768f2c-5fab-48b3-b300-220eb487752b": "Hideez Key 4 FIDO2 SDK", | ||
"931327dd-c89b-406c-a81e-ed7058ef36c6": "Swissbit iShield Key FIDO2", | ||
"8d1b1fcb-3c76-49a9-9129-5515b346aa02": "IDEMIA ID-ONE Card", | ||
"454e5346-4944-4ffd-6c93-8e9267193e9a": "Ensurity ThinC", | ||
"e1a96183-5016-4f24-b55b-e3ae23614cc6": "ATKey.Pro CTAP2.0", | ||
"9d3df6ba-282f-11ed-a261-0242ac120002": "Arculus FIDO2/U2F Key Card", | ||
"fbefdf68-fe86-0106-213e-4d5fa24cbe2e": "Excelsecu eSecu FIDO2 NFC Security Key", | ||
"ab32f0c6-2239-afbb-c470-d2ef4e254db7": "TOKEN2 FIDO2 Security Key", | ||
"973446ca-e21c-9a9b-99f5-9b985a67af0f": "ACS FIDO Authenticator Card", | ||
"1105e4ed-af1d-02ff-ffff-ffffffffffff": "Egomet FIDO2 Authenticator for Android", | ||
"a4e9fc6d-4cbe-4758-b8ba-37598bb5bbaa": "Security Key NFC by Yubico", | ||
"0acf3011-bc60-f375-fb53-6f05f43154e0": "Nymi FIDO2 Authenticator", | ||
"d91c5288-0ef0-49b7-b8ae-21ca0aa6b3f3": "KEY-ID FIDO2 Authenticator", | ||
"4c50ff10-1057-4fc6-b8ed-43a529530c3c": "ImproveID Authenticator", | ||
"ee041bce-25e5-4cdb-8f86-897fd6418464": "Feitian ePass FIDO2-NFC Authenticator", | ||
"efb96b10-a9ee-4b6c-a4a9-d32125ccd4a4": "Safenet eToken FIDO", | ||
"4b3f8944-d4f2-4d21-bb19-764a986ec160": "KeyXentic FIDO2 Secp256R1 FIDO2 CTAP2 Authenticator", | ||
"4c0cf95d-2f40-43b5-ba42-4c83a11c04ba": "Feitian BioPass FIDO2 Pro Authenticator", | ||
"5343502d-5343-5343-6172-644649444f32": "ESS Smart Card Inc. Authenticator", | ||
"09591fc6-9811-48f7-8f57-b9f23df6413f": "Pone Biometrics OFFPAD Authenticator", | ||
"7e3f3d30-3557-4442-bdae-139312178b39": "RSA DS100", | ||
"73bb0cd4-e502-49b8-9c6f-b59445bf720b": "YubiKey 5 FIPS Series", | ||
"149a2021-8ef6-4133-96b8-81f8d5b7f1f5": "Security Key by Yubico with NFC", | ||
"175cd298-83d2-4a26-b637-313c07a6434e": "Chunghwa Telecom FIDO2 Smart Card Authenticator", | ||
"3b1adb99-0dfe-46fd-90b8-7f7614a4de2a": "GoTrust Idem Key FIDO2 Authenticator", | ||
"998f358b-2dd2-4cbe-a43a-e8107438dfb3": "OnlyKey Secp256R1 FIDO2 CTAP2 Authenticator", | ||
"61250591-b2bc-4456-b719-0b17be90bb30": "eWBM eFPA FIDO2 Authenticator", | ||
"f8a011f3-8c0a-4d15-8006-17111f9edc7d": "Security Key by Yubico", | ||
"8976631b-d4a0-427f-5773-0ec71c9e0279": "Solo Tap Secp256R1 FIDO2 CTAP2 Authenticator", | ||
"516d3969-5a57-5651-5958-4e7a49434167": "SmartDisplayer BobeePass FIDO2 Authenticator", | ||
"2c0df832-92de-4be1-8412-88a8f074df4a": "Feitian FIDO Smart Card", | ||
"c5703116-972b-4851-a3e7-ae1259843399": "NEOWAVE Badgeo FIDO2", | ||
"c80dbd9a-533f-4a17-b941-1a2f1c7cedff": "HID Crescendo C3000", | ||
"820d89ed-d65a-409e-85cb-f73f0578f82a": "IDmelon iOS Authenticator", | ||
"b6ede29c-3772-412c-8a78-539c1f4c62d2": "Feitian BioPass FIDO2 Plus Authenticator", | ||
"85203421-48f9-4355-9bc8-8a53846e5083": "YubiKey 5 FIPS Series with Lightning", | ||
"d821a7d4-e97c-4cb6-bd82-4237731fd4be": "Hyper FIDO Bio Security Key", | ||
"9876631b-d4a0-427f-5773-0ec71c9e0279": "Somu Secp256R1 FIDO2 CTAP2 Authenticator", | ||
"f4c63eff-d26c-4248-801c-3736c7eaa93a": "FIDO KeyPass S3", | ||
"d384db22-4d50-ebde-2eac-5765cf1e2a44": "Excelsecu eSecu FIDO2 Fingerprint Security Key", | ||
"b93fd961-f2e6-462f-b122-82002247de78": "Android Authenticator with SafetyNet Attestation", | ||
"2fc0579f-8113-47ea-b116-bb5a8db9202a": "YubiKey 5 Series with NFC", | ||
"d8522d9f-575b-4866-88a9-ba99fa02f35b": "YubiKey Bio Series", | ||
"50a45b0c-80e7-f944-bf29-f552bfa2e048": "ACS FIDO Authenticator", | ||
"f7c558a0-f465-11e8-b568-0800200c9a66": "KONAI Secp256R1 FIDO2 Conformance Testing CTAP2 Authenticator", | ||
"3f59672f-20aa-4afe-b6f4-7e5e916b6d98": "Arculus FIDO 2.1 Key Card [P71]", | ||
"42b4fb4a-2866-43b2-9bf7-6c6669c2e5d3": "Google Titan Security Key v2", | ||
"361a3082-0278-4583-a16f-72a527f973e4": "eWBM eFA500 FIDO2 Authenticator", | ||
"692db549-7ae5-44d5-a1e5-dd20a493b723": "HID Crescendo Key", | ||
"bbf4b6a7-679d-f6fc-c4f2-8ac0ddf9015a": "Excelsecu eSecu FIDO2 PRO Security Key", | ||
"3e22415d-7fdf-4ea4-8a0c-dd60c4249b9d": "Feitian iePass FIDO Authenticator", | ||
"aeb6569c-f8fb-4950-ac60-24ca2bbe2e52": "HID Crescendo C2300", | ||
"87dbc5a1-4c94-4dc8-8a47-97d800fd1f3c": "eWBM eFA320 FIDO2 Authenticator", | ||
"9f0d8150-baa5-4c00-9299-ad62c8bb4e87": "GoTrust Idem Card FIDO2 Authenticator", | ||
"12ded745-4bed-47d4-abaa-e713f51d6393": "Feitian AllinOne FIDO2 Authenticator", | ||
"88bbd2f0-342a-42e7-9729-dd158be5407a": "Precision InnaIT Key FIDO 2 Level 2 certified", | ||
"34f5766d-1536-4a24-9033-0e294e510fb0": "YubiKey 5 Series CTAP2.1 Preview Expired ", | ||
"83c47309-aabb-4108-8470-8be838b573cb": "YubiKey Bio Series (Enterprise Profile)", | ||
"be727034-574a-f799-5c76-0929e0430973": "Crayonic KeyVault K1 (USB-NFC-BLE FIDO2 Authenticator)", | ||
"ca87cb70-4c1b-4579-a8e8-4efdd7c007e0": "FIDO Alliance TruU Sample FIDO2 Authenticator", | ||
"58b44d0b-0a7c-f33a-fd48-f7153c871352": "Ledger Nano S Plus FIDO2 Authenticator", | ||
"07a9f89c-6407-4594-9d56-621d5f1e358b": "NXP Semiconductros FIDO2 Conformance Testing CTAP2 Authenticator", | ||
"d61d3b87-3e7c-4aea-9c50-441c371903ad": "KeyVault Secp256R1 FIDO2 CTAP2 Authenticator", | ||
"5ca1ab1e-1337-fa57-f1d0-a117e71ca702": "Allthenticator App: roaming BLE FIDO2 Allthenticator for Windows, Mac, Linux, and Allthenticate door readers", | ||
"b92c3f9a-c014-4056-887f-140a2501163b": "Security Key by Yubico", | ||
"54d9fee8-e621-4291-8b18-7157b99c5bec": "HID Crescendo Enabled", | ||
"20f0be98-9af9-986a-4b42-8eca4acb28e4": "Excelsecu eSecu FIDO2 Fingerprint Security Key", | ||
"ab32f0c6-2239-afbb-c470-d2ef4e254db6": "TEST (DUMMY RECORD)", | ||
"30b5035e-d297-4fc1-b00b-addc96ba6a97": "OneSpan FIDO Touch", | ||
"6d44ba9b-f6ec-2e49-b930-0c8fe920cb73": "Security Key by Yubico with NFC", | ||
"eabb46cc-e241-80bf-ae9e-96fa6d2975cf": "TOKEN2 PIN Plus Security Key Series ", | ||
"e416201b-afeb-41ca-a03d-2281c28322aa": "ATKey.Pro CTAP2.1", | ||
"cfcb13a2-244f-4b36-9077-82b79d6a7de7": "USB/NFC Passcode Authenticator", | ||
"91ad6b93-264b-4987-8737-3a690cad6917": "Token Ring FIDO2 Authenticator", | ||
"9f77e279-a6e2-4d58-b700-31e5943c6a98": "Hyper FIDO Pro", | ||
"0bb43545-fd2c-4185-87dd-feb0b2916ace": "Security Key NFC by Yubico - Enterprise Edition", | ||
"73402251-f2a8-4f03-873e-3cb6db604b03": "uTrust FIDO2 Security Key", | ||
"c1f9a0bc-1dd2-404a-b27f-8e29047a43fd": "YubiKey 5 FIPS Series with NFC", | ||
"504d7149-4e4c-3841-4555-55445a677357": "WiSECURE AuthTron USB FIDO2 Authenticator", | ||
"a3975549-b191-fd67-b8fb-017e2917fdb3": "Excelsecu eSecu FIDO2 NFC Security Key", | ||
"da1fa263-8b25-42b6-a820-c0036f21ba7f": "ATKey.Card NFC", | ||
"6002f033-3c07-ce3e-d0f7-0ffe5ed42543": "Excelsecu eSecu FIDO2 Fingerprint Key", | ||
"5fdb81b8-53f0-4967-a881-f5ec26fe4d18": "VinCSS FIDO2 Authenticator", | ||
"2d3bec26-15ee-4f5d-88b2-53622490270b": "HID Crescendo Key V2", | ||
"cb69481e-8ff7-4039-93ec-0a2729a154a8": "YubiKey 5 Series", | ||
"0076631b-d4a0-427f-5773-0ec71c9e0279": "HYPR FIDO2 Authenticator", | ||
"d7a423ad-3e19-4492-9200-78137dccc136": "VivoKey Apex FIDO2", | ||
"ba76a271-6eb6-4171-874d-b6428dbe3437": "ATKey.ProS", | ||
"ee882879-721c-4913-9775-3dfcce97072a": "YubiKey 5 Series", | ||
"8876631b-d4a0-427f-5773-0ec71c9e0279": "Solo Secp256R1 FIDO2 CTAP2 Authenticator", | ||
"fec067a1-f1d0-4c5e-b4c0-cc3237475461": "KX701 SmartToken FIDO", | ||
"30b5035e-d297-4ff1-b00b-addc96ba6a98": "OneSpan DIGIPASS FX1 BIO", | ||
"b267239b-954f-4041-a01b-ee4f33c145b6": "authenton1 - CTAP2.1", | ||
"b50d5e0a-7f81-4959-9b12-f45407407503": "IDPrime 3940 FIDO", | ||
"8c97a730-3f7b-41a6-87d6-1e9b62bda6f0": "FT-JCOS FIDO Fingerprint Card", | ||
"99bf4610-ec26-4252-b31f-7380ccd59db5": "ZTPass Card", | ||
"a1f52be5-dfab-4364-b51c-2bd496b14a56": "OCTATCO EzFinger2 FIDO2 AUTHENTICATOR", | ||
"ba86dc56-635f-4141-aef6-00227b1b9af6": "TruU Windows Authenticator", | ||
"3e078ffd-4c54-4586-8baa-a77da113aec5": "Hideez Key 3 FIDO2", | ||
"ec31b4cc-2acc-4b8e-9c01-bade00ccbe26": "KeyXentic FIDO2 Secp256R1 FIDO2 CTAP2 Authenticator", | ||
"d41f5a69-b817-4144-a13c-9ebd6d9254d6": "ATKey.Card CTAP2.0", | ||
"95442b2e-f15e-4def-b270-efb106facb4e": "eWBM eFA310 FIDO2 Authenticator", | ||
"cdbdaea2-c415-5073-50f7-c04e968640b6": "Excelsecu eSecu FIDO2 Security Key", | ||
"bc2fe499-0d8e-4ffe-96f3-94a82840cf8c": "OCTATCO EzQuant FIDO2 AUTHENTICATOR", | ||
"eb3b131e-59dc-536a-d176-cb7306da10f5": "ellipticSecure MIRkey USB Authenticator", | ||
"1c086528-58d5-f211-823c-356786e36140": "Atos CardOS FIDO2", | ||
"77010bd7-212a-4fc9-b236-d2ca5e9d4084": "Feitian BioPass FIDO2 Authenticator", | ||
"d94a29d9-52dd-4247-9c2d-8b818b610389": "VeriMark Guard Fingerprint Key", | ||
"833b721a-ff5f-4d00-bb2e-bdda3ec01e29": "Feitian ePass FIDO2 Authenticator" | ||
}; |
export declare function parseAuthBuffer(authData: ArrayBuffer): any; | ||
export declare function extractAaguid(authData: ArrayBuffer): string; | ||
/** | ||
* Kept for compatibility purposes. | ||
* @deprecated | ||
*/ | ||
export declare function resolveAuthenticatorName(aaguid: string): string; | ||
/** | ||
* Updates the built-in metadata according to raw data available at https://mds.fidoalliance.org/ | ||
* This service delivers a list of AAGUIDs encoded as a JWT. | ||
* Kept for compatibility purposes. | ||
* @deprecated | ||
*/ | ||
export declare function updateDevicesMetadata(): Promise<void>; |
@@ -1,7 +0,7 @@ | ||
import authenticatorMetadata from './authenticatorMetadata.js'; //assert {type: 'json'} | ||
import { authenticatorMetadata } from './authenticatorMetadata.js'; | ||
import * as utils from './utils.js'; | ||
export function parseAuthBuffer(authData) { | ||
console.debug(authData); | ||
//console.debug(authData) | ||
let flags = new DataView(authData.slice(32, 33)).getUint8(0); | ||
console.debug(flags); | ||
//console.debug(flags) | ||
// https://w3c.github.io/webauthn/#sctn-authenticator-data | ||
@@ -30,3 +30,3 @@ let parsed = { | ||
aaguid, | ||
name: resolveAuthenticatorName(aaguid) | ||
name: authenticatorMetadata[aaguid] ?? 'Unknown', | ||
// credentialBytes, // bytes 53->55: credential length | ||
@@ -48,8 +48,17 @@ // credentialId: utils.toBase64url(authData.slice(55, 55+credentialLength)), | ||
} | ||
/** | ||
* Kept for compatibility purposes. | ||
* @deprecated | ||
*/ | ||
export function resolveAuthenticatorName(aaguid) { | ||
const aaguidMetadata = updatedAuthenticatorMetadata ?? authenticatorMetadata; //await getAaguidMetadata() | ||
return aaguidMetadata[aaguid]?.name; | ||
return aaguidMetadata[aaguid]; | ||
} | ||
let updatedAuthenticatorMetadata = null; | ||
// List of AAGUIDs are encoded as JWT here: https://mds.fidoalliance.org/ | ||
/** | ||
* Updates the built-in metadata according to raw data available at https://mds.fidoalliance.org/ | ||
* This service delivers a list of AAGUIDs encoded as a JWT. | ||
* Kept for compatibility purposes. | ||
* @deprecated | ||
*/ | ||
export async function updateDevicesMetadata() { | ||
@@ -69,3 +78,3 @@ // this function is rather resource intensive and time consuming | ||
continue; | ||
aaguidMetadata[e.aaguid] = { name: e.metadataStatement.description }; | ||
aaguidMetadata[e.aaguid] = e.metadataStatement.description; | ||
} | ||
@@ -72,0 +81,0 @@ console.debug(aaguidMetadata); |
@@ -5,3 +5,4 @@ import * as client from './client.js'; | ||
import * as utils from './utils.js'; | ||
export { client, server, parsers, utils }; | ||
import { authenticatorMetadata } from './authenticatorMetadata.js'; | ||
export { client, server, parsers, utils, authenticatorMetadata }; | ||
declare const _default: { | ||
@@ -12,3 +13,4 @@ client: typeof client; | ||
utils: typeof utils; | ||
authenticatorMetadata: Record<string, string>; | ||
}; | ||
export default _default; |
@@ -11,3 +11,4 @@ /* | ||
import * as utils from './utils.js'; | ||
export { client, server, parsers, utils }; | ||
export default { client, server, parsers, utils }; | ||
import { authenticatorMetadata } from './authenticatorMetadata.js'; | ||
export { client, server, parsers, utils, authenticatorMetadata }; | ||
export default { client, server, parsers, utils, authenticatorMetadata }; |
@@ -12,2 +12,3 @@ import { AuthenticationEncoded, AuthenticationParsed, CredentialKey, NamedAlgo, RegistrationEncoded, RegistrationParsed } from "./types.js"; | ||
counter?: number; | ||
verbose?: boolean; | ||
} | ||
@@ -21,4 +22,5 @@ export declare function verifyAuthentication(authenticationRaw: AuthenticationEncoded, credential: CredentialKey, expected: AuthenticationChecks): Promise<AuthenticationParsed>; | ||
signature: string; | ||
verbose?: boolean; | ||
}; | ||
export declare function verifySignature({ algorithm, publicKey, authenticatorData, clientData, signature }: VerifyParams): Promise<boolean>; | ||
export declare function verifySignature({ algorithm, publicKey, authenticatorData, clientData, signature, verbose }: VerifyParams): Promise<boolean>; | ||
export {}; |
@@ -36,3 +36,4 @@ import { parseAuthentication, parseRegistration } from "./parsers.js"; | ||
clientData: authenticationRaw.clientData, | ||
signature: authenticationRaw.signature | ||
signature: authenticationRaw.signature, | ||
verbose: expected.verbose | ||
}); | ||
@@ -105,13 +106,17 @@ if (!isValidSignature) | ||
// see also https://gist.github.com/philholden/50120652bfe0498958fd5926694ba354 | ||
export async function verifySignature({ algorithm, publicKey, authenticatorData, clientData, signature }) { | ||
export async function verifySignature({ algorithm, publicKey, authenticatorData, clientData, signature, verbose }) { | ||
const algoParams = getAlgoParams(algorithm); | ||
let cryptoKey = await parseCryptoKey(algoParams, publicKey); | ||
console.debug(cryptoKey); | ||
if (verbose) { | ||
console.debug(cryptoKey); | ||
} | ||
let clientHash = await utils.sha256(utils.parseBase64url(clientData)); | ||
// during "login", the authenticatorData is exactly 37 bytes | ||
let comboBuffer = utils.concatenateBuffers(utils.parseBase64url(authenticatorData), clientHash); | ||
console.debug('Crypto Algo: ' + JSON.stringify(algoParams)); | ||
console.debug('Public key: ' + publicKey); | ||
console.debug('Data: ' + utils.toBase64url(comboBuffer)); | ||
console.debug('Signature: ' + signature); | ||
if (verbose) { | ||
console.debug('Crypto Algo: ' + JSON.stringify(algoParams)); | ||
console.debug('Public key: ' + publicKey); | ||
console.debug('Data: ' + utils.toBase64url(comboBuffer)); | ||
console.debug('Signature: ' + signature); | ||
} | ||
// https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/verify | ||
@@ -118,0 +123,0 @@ let signatureBuffer = utils.parseBase64url(signature); |
/******************************** | ||
Encoding/Decoding Utils | ||
********************************/ | ||
/* | ||
let webCrypto :any = null | ||
export async function getCrypto() { | ||
if(!webCrypto) { | ||
console.log(window?.crypto) | ||
webCrypto = window?.crypto ?? (await import("crypto")).webcrypto | ||
console.log(webCrypto) | ||
} | ||
return webCrypto | ||
} | ||
*/ | ||
export function randomChallenge() { | ||
@@ -17,0 +5,0 @@ return crypto.randomUUID(); |
@@ -1,2 +0,2 @@ | ||
var N=Object.defineProperty;var b=(e,a)=>{for(var t in a)N(e,t,{get:a[t],enumerable:!0})};var w={};b(w,{authenticate:()=>Y,isAvailable:()=>H,isLocalAuthenticator:()=>A,register:()=>v});var u={};b(u,{bufferToHex:()=>h,concatenateBuffers:()=>p,isBase64url:()=>m,parseBase64url:()=>c,parseBuffer:()=>O,randomChallenge:()=>T,sha256:()=>d,toBase64url:()=>s,toBuffer:()=>l});function T(){return crypto.randomUUID()}function l(e){return Uint8Array.from(e,a=>a.charCodeAt(0)).buffer}function O(e){return String.fromCharCode(...new Uint8Array(e))}function m(e){return e.match(/^[a-zA-Z0-9\-_]+=*$/)!==null}function s(e){return btoa(O(e)).replaceAll("+","-").replaceAll("/","_")}function c(e){return e=e.replaceAll("-","+").replaceAll("_","/"),l(atob(e))}async function d(e){return await crypto.subtle.digest("SHA-256",e)}function h(e){return[...new Uint8Array(e)].map(a=>a.toString(16).padStart(2,"0")).join("")}function p(e,a){var t=new Uint8Array(e.byteLength+a.byteLength);return t.set(new Uint8Array(e),0),t.set(new Uint8Array(a),e.byteLength),t}function H(){return!!window.PublicKeyCredential}async function A(){return await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()}async function R(e){if(e==="local")return"platform";if(e==="roaming"||e==="extern")return"cross-platform";if(e!=="both")try{return await A()?"platform":"cross-platform"}catch{return}}function V(e){switch(e){case-7:return"ES256";case-257:return"RS256";default:throw new Error(`Unknown algorithm code: ${e}`)}}async function v(e,a,t){if(t=t??{},!m(a))throw new Error("Provided challenge is not properly encoded in Base64url");let n={challenge:c(a),rp:{id:window.location.hostname,name:window.location.hostname},user:{id:t.userHandle?l(t.userHandle):await d(new TextEncoder().encode("passwordless.id-user:"+e)),name:e,displayName:e},pubKeyCredParams:[{alg:-7,type:"public-key"},{alg:-257,type:"public-key"}],timeout:t.timeout??6e4,authenticatorSelection:{userVerification:t.userVerification??"required",authenticatorAttachment:await R(t.authenticatorType??"auto"),residentKey:t.discoverable??"preferred",requireResidentKey:t.discoverable==="required"},attestation:t.attestation?"direct":"none"};t.debug&&console.debug(n);let r=await navigator.credentials.create({publicKey:n});t.debug&&console.debug(r);let i=r.response,o={username:e,credential:{id:r.id,publicKey:s(i.getPublicKey()),algorithm:V(r.response.getPublicKeyAlgorithm())},authenticatorData:s(i.getAuthenticatorData()),clientData:s(i.clientDataJSON)};return t.attestation&&(o.attestationData=s(i.attestationObject)),o}async function k(e){let a=["internal"],t=["hybrid","usb","ble","nfc"];if(e==="local")return a;if(e=="roaming"||e==="extern")return t;if(e==="both")return[...a,...t];try{return await A()?a:t}catch{return[...a,...t]}}async function Y(e,a,t){if(t=t??{},!m(a))throw new Error("Provided challenge is not properly encoded in Base64url");let n=await k(t.authenticatorType??"auto"),r={challenge:c(a),rpId:window.location.hostname,allowCredentials:e.map(f=>({id:c(f),type:"public-key",transports:n})),userVerification:t.userVerification??"required",timeout:t.timeout??6e4};t.debug&&console.debug(r);let i=await navigator.credentials.get({publicKey:r,mediation:t.mediation});t.debug&&console.debug(i);let o=i.response;return{credentialId:i.id,authenticatorData:s(o.authenticatorData),clientData:s(o.clientDataJSON),signature:s(o.signature)}}var I={};b(I,{verifyAuthentication:()=>j,verifyRegistration:()=>_,verifySignature:()=>U});var D={};b(D,{parseAttestation:()=>x,parseAuthentication:()=>B,parseAuthenticator:()=>C,parseClient:()=>P,parseRegistration:()=>S});var K={"9c835346-796b-4c27-8898-d6032f515cc5":{name:"Cryptnox FIDO2"},"c5ef55ff-ad9a-4b9f-b580-adebafe026d0":{name:"YubiKey 5Ci"},"39a5647e-1853-446c-a1f6-a79bae9f5bc7":{name:"Vancosys Android Authenticator"},"3789da91-f943-46bc-95c3-50ea2012f03a":{name:"NEOWAVE Winkeo FIDO2"},"fa2b99dc-9e39-4257-8f92-4a30d23c4118":{name:"YubiKey 5 Series with NFC"},"4e768f2c-5fab-48b3-b300-220eb487752b":{name:"Hideez Key 4 FIDO2 SDK"},"931327dd-c89b-406c-a81e-ed7058ef36c6":{name:"Swissbit iShield FIDO2"},"e1a96183-5016-4f24-b55b-e3ae23614cc6":{name:"ATKey.Pro CTAP2.0"},"08987058-cadc-4b81-b6e1-30de50dcbe96":{name:"Windows Hello Hardware Authenticator"},"d91c5288-0ef0-49b7-b8ae-21ca0aa6b3f3":{name:"KEY-ID FIDO2 Authenticator"},"ee041bce-25e5-4cdb-8f86-897fd6418464":{name:"Feitian ePass FIDO2-NFC Authenticator"},"73bb0cd4-e502-49b8-9c6f-b59445bf720b":{name:"YubiKey 5 FIPS Series"},"149a2021-8ef6-4133-96b8-81f8d5b7f1f5":{name:"Security Key by Yubico with NFC"},"3b1adb99-0dfe-46fd-90b8-7f7614a4de2a":{name:"GoTrust Idem Key FIDO2 Authenticator"},"f8a011f3-8c0a-4d15-8006-17111f9edc7d":{name:"Security Key by Yubico"},"2c0df832-92de-4be1-8412-88a8f074df4a":{name:"Feitian FIDO Smart Card"},"c5703116-972b-4851-a3e7-ae1259843399":{name:"NEOWAVE Badgeo FIDO2"},"820d89ed-d65a-409e-85cb-f73f0578f82a":{name:"Vancosys iOS Authenticator"},"b6ede29c-3772-412c-8a78-539c1f4c62d2":{name:"Feitian BioPass FIDO2 Plus Authenticator"},"85203421-48f9-4355-9bc8-8a53846e5083":{name:"YubiKey 5Ci FIPS"},"d821a7d4-e97c-4cb6-bd82-4237731fd4be":{name:"Hyper FIDO Bio Security Key"},"516d3969-5a57-5651-5958-4e7a49434167":{name:"SmartDisplayer BobeePass (NFC-BLE FIDO2 Authenticator)"},"b93fd961-f2e6-462f-b122-82002247de78":{name:"Android Authenticator with SafetyNet Attestation"},"2fc0579f-8113-47ea-b116-bb5a8db9202a":{name:"YubiKey 5 Series with NFC"},"9ddd1817-af5a-4672-a2b9-3e3dd95000a9":{name:"Windows Hello VBS Hardware Authenticator"},"d8522d9f-575b-4866-88a9-ba99fa02f35b":{name:"YubiKey Bio Series"},"692db549-7ae5-44d5-a1e5-dd20a493b723":{name:"HID Crescendo Key"},"3e22415d-7fdf-4ea4-8a0c-dd60c4249b9d":{name:"Feitian iePass FIDO Authenticator"},"aeb6569c-f8fb-4950-ac60-24ca2bbe2e52":{name:"HID Crescendo C2300"},"9f0d8150-baa5-4c00-9299-ad62c8bb4e87":{name:"GoTrust Idem Card FIDO2 Authenticator"},"12ded745-4bed-47d4-abaa-e713f51d6393":{name:"Feitian AllinOne FIDO2 Authenticator"},"88bbd2f0-342a-42e7-9729-dd158be5407a":{name:"Precision InnaIT Key FIDO 2 Level 2 certified"},"34f5766d-1536-4a24-9033-0e294e510fb0":{name:"YubiKey 5 Series CTAP2.1 Preview 1 "},"83c47309-aabb-4108-8470-8be838b573cb":{name:"YubiKey Bio Series (Enterprise Profile)"},"be727034-574a-f799-5c76-0929e0430973":{name:"Crayonic KeyVault K1 (USB-NFC-BLE FIDO2 Authenticator)"},"b92c3f9a-c014-4056-887f-140a2501163b":{name:"Security Key by Yubico"},"54d9fee8-e621-4291-8b18-7157b99c5bec":{name:"HID Crescendo Enabled"},"6028b017-b1d4-4c02-b4b3-afcdafc96bb2":{name:"Windows Hello Software Authenticator"},"6d44ba9b-f6ec-2e49-b930-0c8fe920cb73":{name:"Security Key by Yubico with NFC"},"e416201b-afeb-41ca-a03d-2281c28322aa":{name:"ATKey.Pro CTAP2.1"},"9f77e279-a6e2-4d58-b700-31e5943c6a98":{name:"Hyper FIDO Pro"},"73402251-f2a8-4f03-873e-3cb6db604b03":{name:"uTrust FIDO2 Security Key"},"c1f9a0bc-1dd2-404a-b27f-8e29047a43fd":{name:"YubiKey 5 FIPS Series with NFC"},"504d7149-4e4c-3841-4555-55445a677357":{name:"WiSECURE AuthTron USB FIDO2 Authenticator"},"cb69481e-8ff7-4039-93ec-0a2729a154a8":{name:"YubiKey 5 Series"},"ee882879-721c-4913-9775-3dfcce97072a":{name:"YubiKey 5 Series"},"8c97a730-3f7b-41a6-87d6-1e9b62bda6f0":{name:"FT-JCOS FIDO Fingerprint Card"},"a1f52be5-dfab-4364-b51c-2bd496b14a56":{name:"OCTATCO EzFinger2 FIDO2 AUTHENTICATOR"},"3e078ffd-4c54-4586-8baa-a77da113aec5":{name:"Hideez Key 3 FIDO2"},"d41f5a69-b817-4144-a13c-9ebd6d9254d6":{name:"ATKey.Card CTAP2.0"},"bc2fe499-0d8e-4ffe-96f3-94a82840cf8c":{name:"OCTATCO EzQuant FIDO2 AUTHENTICATOR"},"1c086528-58d5-f211-823c-356786e36140":{name:"Atos CardOS FIDO2"},"77010bd7-212a-4fc9-b236-d2ca5e9d4084":{name:"Feitian BioPass FIDO2 Authenticator"},"833b721a-ff5f-4d00-bb2e-bdda3ec01e29":{name:"Feitian ePass FIDO2 Authenticator"}};function F(e){console.debug(e);let a=new DataView(e.slice(32,33)).getUint8(0);console.debug(a);let t={rpIdHash:s(e.slice(0,32)),flags:{userPresent:!!(a&1),userVerified:!!(a&4),backupEligibility:!!(a&8),backupState:!!(a&16),attestedData:!!(a&64),extensionsIncluded:!!(a&128)},counter:new DataView(e.slice(33,37)).getUint32(0,!1)};if(e.byteLength>37){let n=$(e);t={...t,aaguid:n,name:W(n)}}return t}function $(e){return L(e.slice(37,53))}function L(e){let a=h(e);return a=a.substring(0,8)+"-"+a.substring(8,12)+"-"+a.substring(12,16)+"-"+a.substring(16,20)+"-"+a.substring(20,32),a}function W(e){return(J??K)[e]?.name}var J=null;var q=new TextDecoder("utf-8");function P(e){return typeof e=="string"&&(e=c(e)),JSON.parse(q.decode(e))}function C(e){return typeof e=="string"&&(e=c(e)),F(e)}function x(e){return typeof e=="string"&&(e=c(e)),"Really complex to parse. Good luck with that one!"}function S(e){return{username:e.username,credential:e.credential,client:P(e.clientData),authenticator:C(e.authenticatorData),attestation:e.attestationData?x(e.attestationData):null}}function B(e){return{credentialId:e.credentialId,client:P(e.clientData),authenticator:C(e.authenticatorData),signature:e.signature}}async function z(e,a){if(typeof e=="function"){let t=e(a);return t instanceof Promise?await t:t}return e===a}async function g(e,a){return!await z(e,a)}async function _(e,a){let t=S(e);if(t.client.challenge,t.client.type!=="webauthn.create")throw new Error(`Unexpected ClientData type: ${t.client.type}`);if(await g(a.origin,t.client.origin))throw new Error(`Unexpected ClientData origin: ${t.client.origin}`);if(await g(a.challenge,t.client.challenge))throw new Error(`Unexpected ClientData challenge: ${t.client.challenge}`);return t}async function j(e,a,t){if(e.credentialId!==a.id)throw new Error(`Credential ID mismatch: ${e.credentialId} vs ${a.id}`);if(!await U({algorithm:a.algorithm,publicKey:a.publicKey,authenticatorData:e.authenticatorData,clientData:e.clientData,signature:e.signature}))throw new Error(`Invalid signature: ${e.signature}`);let r=B(e);if(r.client.type!=="webauthn.get")throw new Error(`Unexpected clientData type: ${r.client.type}`);if(await g(t.origin,r.client.origin))throw new Error(`Unexpected ClientData origin: ${r.client.origin}`);if(await g(t.challenge,r.client.challenge))throw new Error(`Unexpected ClientData challenge: ${r.client.challenge}`);let i=new URL(r.client.origin).hostname,o=s(await d(l(i)));if(r.authenticator.rpIdHash!==o)throw new Error(`Unexpected RpIdHash: ${r.authenticator.rpIdHash} vs ${o}`);if(!r.authenticator.flags.userPresent)throw new Error("Unexpected authenticator flags: missing userPresent");if(!r.authenticator.flags.userVerified&&t.userVerified)throw new Error("Unexpected authenticator flags: missing userVerified");if(t.counter&&r.authenticator.counter<=t.counter)throw new Error(`Unexpected authenticator counter: ${r.authenticator.counter} (should be > ${t.counter})`);return r}function G(e){switch(e){case"RS256":return{name:"RSASSA-PKCS1-v1_5",hash:"SHA-256"};case"ES256":return{name:"ECDSA",namedCurve:"P-256",hash:"SHA-256"};default:throw new Error(`Unknown or unsupported crypto algorithm: ${e}. Only 'RS256' and 'ES256' are supported.`)}}async function Q(e,a){let t=c(a);return crypto.subtle.importKey("spki",t,e,!1,["verify"])}async function U({algorithm:e,publicKey:a,authenticatorData:t,clientData:n,signature:r}){let i=G(e),o=await Q(i,a);console.debug(o);let E=await d(c(n)),f=p(c(t),E);console.debug("Crypto Algo: "+JSON.stringify(i)),console.debug("Public key: "+a),console.debug("Data: "+s(f)),console.debug("Signature: "+r);let y=c(r);return e=="ES256"&&(y=Z(y)),await crypto.subtle.verify(i,o,y,f)}function Z(e){let a=new Uint8Array(e),t=a[4]===0?5:4,n=t+32,r=a[n+2]===0?n+3:n+2,i=a.slice(t,n),o=a.slice(r);return new Uint8Array([...i,...o])}var ne={client:w,server:I,parsers:D,utils:u};export{w as client,ne as default,D as parsers,I as server,u as utils}; | ||
var R=Object.defineProperty;var b=(e,a)=>{for(var t in a)R(e,t,{get:a[t],enumerable:!0})};var I={};b(I,{authenticate:()=>Y,isAvailable:()=>H,isLocalAuthenticator:()=>D,register:()=>M});var d={};b(d,{bufferToHex:()=>m,concatenateBuffers:()=>S,isBase64url:()=>l,parseBase64url:()=>s,parseBuffer:()=>E,randomChallenge:()=>U,sha256:()=>f,toBase64url:()=>o,toBuffer:()=>u});function U(){return crypto.randomUUID()}function u(e){return Uint8Array.from(e,a=>a.charCodeAt(0)).buffer}function E(e){return String.fromCharCode(...new Uint8Array(e))}function l(e){return e.match(/^[a-zA-Z0-9\-_]+=*$/)!==null}function o(e){return btoa(E(e)).replaceAll("+","-").replaceAll("/","_")}function s(e){return e=e.replaceAll("-","+").replaceAll("_","/"),u(atob(e))}async function f(e){return await crypto.subtle.digest("SHA-256",e)}function m(e){return[...new Uint8Array(e)].map(a=>a.toString(16).padStart(2,"0")).join("")}function S(e,a){var t=new Uint8Array(e.byteLength+a.byteLength);return t.set(new Uint8Array(e),0),t.set(new Uint8Array(a),e.byteLength),t}function H(){return!!window.PublicKeyCredential}async function D(){return await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()}async function V(e){if(e==="local")return"platform";if(e==="roaming"||e==="extern")return"cross-platform";if(e!=="both")try{return await D()?"platform":"cross-platform"}catch{return}}function v(e){switch(e){case-7:return"ES256";case-257:return"RS256";default:throw new Error(`Unknown algorithm code: ${e}`)}}async function M(e,a,t){if(t=t??{},!l(a))throw new Error("Provided challenge is not properly encoded in Base64url");let i={challenge:s(a),rp:{id:window.location.hostname,name:window.location.hostname},user:{id:t.userHandle?u(t.userHandle):await f(new TextEncoder().encode("passwordless.id-user:"+e)),name:e,displayName:e},pubKeyCredParams:[{alg:-7,type:"public-key"},{alg:-257,type:"public-key"}],timeout:t.timeout??6e4,authenticatorSelection:{userVerification:t.userVerification??"required",authenticatorAttachment:await V(t.authenticatorType??"auto"),residentKey:t.discoverable??"preferred",requireResidentKey:t.discoverable==="required"},attestation:t.attestation?"direct":"none"};t.debug&&console.debug(i);let r=await navigator.credentials.create({publicKey:i});t.debug&&console.debug(r);let n=r.response,c={username:e,credential:{id:r.id,publicKey:o(n.getPublicKey()),algorithm:v(r.response.getPublicKeyAlgorithm())},authenticatorData:o(n.getAuthenticatorData()),clientData:o(n.clientDataJSON)};return t.attestation&&(c.attestationData=o(n.attestationObject)),c}async function k(e){let a=["internal"],t=["hybrid","usb","ble","nfc"];if(e==="local")return a;if(e=="roaming"||e==="extern")return t;if(e==="both")return[...a,...t];try{return await D()?a:t}catch{return[...a,...t]}}async function Y(e,a,t){if(t=t??{},!l(a))throw new Error("Provided challenge is not properly encoded in Base64url");let i=await k(t.authenticatorType??"auto"),r={challenge:s(a),rpId:window.location.hostname,allowCredentials:e.map(g=>({id:s(g),type:"public-key",transports:i})),userVerification:t.userVerification??"required",timeout:t.timeout??6e4};t.debug&&console.debug(r);let n=await navigator.credentials.get({publicKey:r,mediation:t.mediation});t.debug&&console.debug(n);let c=n.response;return{credentialId:n.id,authenticatorData:o(c.authenticatorData),clientData:o(c.clientDataJSON),signature:o(c.signature)}}var K={};b(K,{verifyAuthentication:()=>q,verifyRegistration:()=>X,verifySignature:()=>N});var C={};b(C,{parseAttestation:()=>x,parseAuthentication:()=>P,parseAuthenticator:()=>O,parseClient:()=>F,parseRegistration:()=>w});var h={"ea9b8d66-4d01-1d21-3ce4-b6b48cb575d4":"Google Password Manager","adce0002-35bc-c60a-648b-0b25f1f05503":"Chrome on Mac","08987058-cadc-4b81-b6e1-30de50dcbe96":"Windows Hello Hardware Authenticator","9ddd1817-af5a-4672-a2b9-3e3dd95000a9":"Windows Hello VBS Hardware Authenticator","6028b017-b1d4-4c02-b4b3-afcdafc96bb2":"Windows Hello Software Authenticator","dd4ec289-e01d-41c9-bb89-70fa845d4bf2":"iCloud Keychain (Managed)","531126d6-e717-415c-9320-3d9aa6981239":"Dashlane","bada5566-a7aa-401f-bd96-45619a55120d":"1Password","b84e4048-15dc-4dd0-8640-f4f60813c8af":"NordPass","0ea242b4-43c4-4a1b-8b17-dd6d0b6baec6":"Keeper","f3809540-7f14-49c1-a8b3-8f813b225541":"Enpass","b5397666-4885-aa6b-cebf-e52262a439a2":"Chromium Browser","771b48fd-d3d4-4f74-9232-fc157ab0507a":"Edge on Mac","39a5647e-1853-446c-a1f6-a79bae9f5bc7":"IDmelon Android Authenticator","d548826e-79b4-db40-a3d8-11116f7e8349":"Bitwarden","fbfc3007-154e-4ecc-8c0b-6e020557d7bd":"iCloud Keychain","53414d53-554e-4700-0000-000000000000":"Samsung Pass","66a0ccb3-bd6a-191f-ee06-e375c50b9846":"Thales Bio iOS SDK","8836336a-f590-0921-301d-46427531eee6":"Thales Bio Android SDK","cd69adb5-3c7a-deb9-3177-6800ea6cb72a":"Thales PIN Android SDK","17290f1e-c212-34d0-1423-365d729f09d9":"Thales PIN iOS SDK","fcb1bcb4-f370-078c-6993-bc24d0ae3fbe":"Ledger Nano X FIDO2 Authenticator","5626bed4-e756-430b-a7ff-ca78c8b12738":"VALMIDO PRO FIDO","95e4d58c-056e-4a65-866d-f5a69659e880":"TruU Windows Authenticator","9c835346-796b-4c27-8898-d6032f515cc5":"Cryptnox FIDO2","0d9b2e56-566b-c393-2940-f821b7f15d6d":"Excelsecu eSecu FIDO2 Pro Security Key","c5ef55ff-ad9a-4b9f-b580-adebafe026d0":"YubiKey 5 Series with Lightning","664d9f67-84a2-412a-9ff7-b4f7d8ee6d05":"OpenSK authenticator","3789da91-f943-46bc-95c3-50ea2012f03a":"NEOWAVE Winkeo FIDO2","fa2b99dc-9e39-4257-8f92-4a30d23c4118":"YubiKey 5 Series with NFC","69700f79-d1fb-472e-bd9b-a3a3b9a9eda0":"Pone Biometrics OFFPAD Authenticator","89b19028-256b-4025-8872-255358d950e4":"Sentry Enterprises CTAP2 Authenticator","4e768f2c-5fab-48b3-b300-220eb487752b":"Hideez Key 4 FIDO2 SDK","931327dd-c89b-406c-a81e-ed7058ef36c6":"Swissbit iShield Key FIDO2","8d1b1fcb-3c76-49a9-9129-5515b346aa02":"IDEMIA ID-ONE Card","454e5346-4944-4ffd-6c93-8e9267193e9a":"Ensurity ThinC","e1a96183-5016-4f24-b55b-e3ae23614cc6":"ATKey.Pro CTAP2.0","9d3df6ba-282f-11ed-a261-0242ac120002":"Arculus FIDO2/U2F Key Card","fbefdf68-fe86-0106-213e-4d5fa24cbe2e":"Excelsecu eSecu FIDO2 NFC Security Key","ab32f0c6-2239-afbb-c470-d2ef4e254db7":"TOKEN2 FIDO2 Security Key","973446ca-e21c-9a9b-99f5-9b985a67af0f":"ACS FIDO Authenticator Card","1105e4ed-af1d-02ff-ffff-ffffffffffff":"Egomet FIDO2 Authenticator for Android","a4e9fc6d-4cbe-4758-b8ba-37598bb5bbaa":"Security Key NFC by Yubico","0acf3011-bc60-f375-fb53-6f05f43154e0":"Nymi FIDO2 Authenticator","d91c5288-0ef0-49b7-b8ae-21ca0aa6b3f3":"KEY-ID FIDO2 Authenticator","4c50ff10-1057-4fc6-b8ed-43a529530c3c":"ImproveID Authenticator","ee041bce-25e5-4cdb-8f86-897fd6418464":"Feitian ePass FIDO2-NFC Authenticator","efb96b10-a9ee-4b6c-a4a9-d32125ccd4a4":"Safenet eToken FIDO","4b3f8944-d4f2-4d21-bb19-764a986ec160":"KeyXentic FIDO2 Secp256R1 FIDO2 CTAP2 Authenticator","4c0cf95d-2f40-43b5-ba42-4c83a11c04ba":"Feitian BioPass FIDO2 Pro Authenticator","5343502d-5343-5343-6172-644649444f32":"ESS Smart Card Inc. Authenticator","09591fc6-9811-48f7-8f57-b9f23df6413f":"Pone Biometrics OFFPAD Authenticator","7e3f3d30-3557-4442-bdae-139312178b39":"RSA DS100","73bb0cd4-e502-49b8-9c6f-b59445bf720b":"YubiKey 5 FIPS Series","149a2021-8ef6-4133-96b8-81f8d5b7f1f5":"Security Key by Yubico with NFC","175cd298-83d2-4a26-b637-313c07a6434e":"Chunghwa Telecom FIDO2 Smart Card Authenticator","3b1adb99-0dfe-46fd-90b8-7f7614a4de2a":"GoTrust Idem Key FIDO2 Authenticator","998f358b-2dd2-4cbe-a43a-e8107438dfb3":"OnlyKey Secp256R1 FIDO2 CTAP2 Authenticator","61250591-b2bc-4456-b719-0b17be90bb30":"eWBM eFPA FIDO2 Authenticator","f8a011f3-8c0a-4d15-8006-17111f9edc7d":"Security Key by Yubico","8976631b-d4a0-427f-5773-0ec71c9e0279":"Solo Tap Secp256R1 FIDO2 CTAP2 Authenticator","516d3969-5a57-5651-5958-4e7a49434167":"SmartDisplayer BobeePass FIDO2 Authenticator","2c0df832-92de-4be1-8412-88a8f074df4a":"Feitian FIDO Smart Card","c5703116-972b-4851-a3e7-ae1259843399":"NEOWAVE Badgeo FIDO2","c80dbd9a-533f-4a17-b941-1a2f1c7cedff":"HID Crescendo C3000","820d89ed-d65a-409e-85cb-f73f0578f82a":"IDmelon iOS Authenticator","b6ede29c-3772-412c-8a78-539c1f4c62d2":"Feitian BioPass FIDO2 Plus Authenticator","85203421-48f9-4355-9bc8-8a53846e5083":"YubiKey 5 FIPS Series with Lightning","d821a7d4-e97c-4cb6-bd82-4237731fd4be":"Hyper FIDO Bio Security Key","9876631b-d4a0-427f-5773-0ec71c9e0279":"Somu Secp256R1 FIDO2 CTAP2 Authenticator","f4c63eff-d26c-4248-801c-3736c7eaa93a":"FIDO KeyPass S3","d384db22-4d50-ebde-2eac-5765cf1e2a44":"Excelsecu eSecu FIDO2 Fingerprint Security Key","b93fd961-f2e6-462f-b122-82002247de78":"Android Authenticator with SafetyNet Attestation","2fc0579f-8113-47ea-b116-bb5a8db9202a":"YubiKey 5 Series with NFC","d8522d9f-575b-4866-88a9-ba99fa02f35b":"YubiKey Bio Series","50a45b0c-80e7-f944-bf29-f552bfa2e048":"ACS FIDO Authenticator","f7c558a0-f465-11e8-b568-0800200c9a66":"KONAI Secp256R1 FIDO2 Conformance Testing CTAP2 Authenticator","3f59672f-20aa-4afe-b6f4-7e5e916b6d98":"Arculus FIDO 2.1 Key Card [P71]","42b4fb4a-2866-43b2-9bf7-6c6669c2e5d3":"Google Titan Security Key v2","361a3082-0278-4583-a16f-72a527f973e4":"eWBM eFA500 FIDO2 Authenticator","692db549-7ae5-44d5-a1e5-dd20a493b723":"HID Crescendo Key","bbf4b6a7-679d-f6fc-c4f2-8ac0ddf9015a":"Excelsecu eSecu FIDO2 PRO Security Key","3e22415d-7fdf-4ea4-8a0c-dd60c4249b9d":"Feitian iePass FIDO Authenticator","aeb6569c-f8fb-4950-ac60-24ca2bbe2e52":"HID Crescendo C2300","87dbc5a1-4c94-4dc8-8a47-97d800fd1f3c":"eWBM eFA320 FIDO2 Authenticator","9f0d8150-baa5-4c00-9299-ad62c8bb4e87":"GoTrust Idem Card FIDO2 Authenticator","12ded745-4bed-47d4-abaa-e713f51d6393":"Feitian AllinOne FIDO2 Authenticator","88bbd2f0-342a-42e7-9729-dd158be5407a":"Precision InnaIT Key FIDO 2 Level 2 certified","34f5766d-1536-4a24-9033-0e294e510fb0":"YubiKey 5 Series CTAP2.1 Preview Expired ","83c47309-aabb-4108-8470-8be838b573cb":"YubiKey Bio Series (Enterprise Profile)","be727034-574a-f799-5c76-0929e0430973":"Crayonic KeyVault K1 (USB-NFC-BLE FIDO2 Authenticator)","ca87cb70-4c1b-4579-a8e8-4efdd7c007e0":"FIDO Alliance TruU Sample FIDO2 Authenticator","58b44d0b-0a7c-f33a-fd48-f7153c871352":"Ledger Nano S Plus FIDO2 Authenticator","07a9f89c-6407-4594-9d56-621d5f1e358b":"NXP Semiconductros FIDO2 Conformance Testing CTAP2 Authenticator","d61d3b87-3e7c-4aea-9c50-441c371903ad":"KeyVault Secp256R1 FIDO2 CTAP2 Authenticator","5ca1ab1e-1337-fa57-f1d0-a117e71ca702":"Allthenticator App: roaming BLE FIDO2 Allthenticator for Windows, Mac, Linux, and Allthenticate door readers","b92c3f9a-c014-4056-887f-140a2501163b":"Security Key by Yubico","54d9fee8-e621-4291-8b18-7157b99c5bec":"HID Crescendo Enabled","20f0be98-9af9-986a-4b42-8eca4acb28e4":"Excelsecu eSecu FIDO2 Fingerprint Security Key","ab32f0c6-2239-afbb-c470-d2ef4e254db6":"TEST (DUMMY RECORD)","30b5035e-d297-4fc1-b00b-addc96ba6a97":"OneSpan FIDO Touch","6d44ba9b-f6ec-2e49-b930-0c8fe920cb73":"Security Key by Yubico with NFC","eabb46cc-e241-80bf-ae9e-96fa6d2975cf":"TOKEN2 PIN Plus Security Key Series ","e416201b-afeb-41ca-a03d-2281c28322aa":"ATKey.Pro CTAP2.1","cfcb13a2-244f-4b36-9077-82b79d6a7de7":"USB/NFC Passcode Authenticator","91ad6b93-264b-4987-8737-3a690cad6917":"Token Ring FIDO2 Authenticator","9f77e279-a6e2-4d58-b700-31e5943c6a98":"Hyper FIDO Pro","0bb43545-fd2c-4185-87dd-feb0b2916ace":"Security Key NFC by Yubico - Enterprise Edition","73402251-f2a8-4f03-873e-3cb6db604b03":"uTrust FIDO2 Security Key","c1f9a0bc-1dd2-404a-b27f-8e29047a43fd":"YubiKey 5 FIPS Series with NFC","504d7149-4e4c-3841-4555-55445a677357":"WiSECURE AuthTron USB FIDO2 Authenticator","a3975549-b191-fd67-b8fb-017e2917fdb3":"Excelsecu eSecu FIDO2 NFC Security Key","da1fa263-8b25-42b6-a820-c0036f21ba7f":"ATKey.Card NFC","6002f033-3c07-ce3e-d0f7-0ffe5ed42543":"Excelsecu eSecu FIDO2 Fingerprint Key","5fdb81b8-53f0-4967-a881-f5ec26fe4d18":"VinCSS FIDO2 Authenticator","2d3bec26-15ee-4f5d-88b2-53622490270b":"HID Crescendo Key V2","cb69481e-8ff7-4039-93ec-0a2729a154a8":"YubiKey 5 Series","0076631b-d4a0-427f-5773-0ec71c9e0279":"HYPR FIDO2 Authenticator","d7a423ad-3e19-4492-9200-78137dccc136":"VivoKey Apex FIDO2","ba76a271-6eb6-4171-874d-b6428dbe3437":"ATKey.ProS","ee882879-721c-4913-9775-3dfcce97072a":"YubiKey 5 Series","8876631b-d4a0-427f-5773-0ec71c9e0279":"Solo Secp256R1 FIDO2 CTAP2 Authenticator","fec067a1-f1d0-4c5e-b4c0-cc3237475461":"KX701 SmartToken FIDO","30b5035e-d297-4ff1-b00b-addc96ba6a98":"OneSpan DIGIPASS FX1 BIO","b267239b-954f-4041-a01b-ee4f33c145b6":"authenton1 - CTAP2.1","b50d5e0a-7f81-4959-9b12-f45407407503":"IDPrime 3940 FIDO","8c97a730-3f7b-41a6-87d6-1e9b62bda6f0":"FT-JCOS FIDO Fingerprint Card","99bf4610-ec26-4252-b31f-7380ccd59db5":"ZTPass Card","a1f52be5-dfab-4364-b51c-2bd496b14a56":"OCTATCO EzFinger2 FIDO2 AUTHENTICATOR","ba86dc56-635f-4141-aef6-00227b1b9af6":"TruU Windows Authenticator","3e078ffd-4c54-4586-8baa-a77da113aec5":"Hideez Key 3 FIDO2","ec31b4cc-2acc-4b8e-9c01-bade00ccbe26":"KeyXentic FIDO2 Secp256R1 FIDO2 CTAP2 Authenticator","d41f5a69-b817-4144-a13c-9ebd6d9254d6":"ATKey.Card CTAP2.0","95442b2e-f15e-4def-b270-efb106facb4e":"eWBM eFA310 FIDO2 Authenticator","cdbdaea2-c415-5073-50f7-c04e968640b6":"Excelsecu eSecu FIDO2 Security Key","bc2fe499-0d8e-4ffe-96f3-94a82840cf8c":"OCTATCO EzQuant FIDO2 AUTHENTICATOR","eb3b131e-59dc-536a-d176-cb7306da10f5":"ellipticSecure MIRkey USB Authenticator","1c086528-58d5-f211-823c-356786e36140":"Atos CardOS FIDO2","77010bd7-212a-4fc9-b236-d2ca5e9d4084":"Feitian BioPass FIDO2 Authenticator","d94a29d9-52dd-4247-9c2d-8b818b610389":"VeriMark Guard Fingerprint Key","833b721a-ff5f-4d00-bb2e-bdda3ec01e29":"Feitian ePass FIDO2 Authenticator"};function T(e){let a=new DataView(e.slice(32,33)).getUint8(0),t={rpIdHash:o(e.slice(0,32)),flags:{userPresent:!!(a&1),userVerified:!!(a&4),backupEligibility:!!(a&8),backupState:!!(a&16),attestedData:!!(a&64),extensionsIncluded:!!(a&128)},counter:new DataView(e.slice(33,37)).getUint32(0,!1)};if(e.byteLength>37){let i=$(e);t={...t,aaguid:i,name:h[i]??"Unknown"}}return t}function $(e){return L(e.slice(37,53))}function L(e){let a=m(e);return a=a.substring(0,8)+"-"+a.substring(8,12)+"-"+a.substring(12,16)+"-"+a.substring(16,20)+"-"+a.substring(20,32),a}var G=new TextDecoder("utf-8");function F(e){return typeof e=="string"&&(e=s(e)),JSON.parse(G.decode(e))}function O(e){return typeof e=="string"&&(e=s(e)),T(e)}function x(e){return typeof e=="string"&&(e=s(e)),"Really complex to parse. Good luck with that one!"}function w(e){return{username:e.username,credential:e.credential,client:F(e.clientData),authenticator:O(e.authenticatorData),attestation:e.attestationData?x(e.attestationData):null}}function P(e){return{credentialId:e.credentialId,client:F(e.clientData),authenticator:O(e.authenticatorData),signature:e.signature}}async function J(e,a){if(typeof e=="function"){let t=e(a);return t instanceof Promise?await t:t}return e===a}async function A(e,a){return!await J(e,a)}async function X(e,a){let t=w(e);if(t.client.challenge,t.client.type!=="webauthn.create")throw new Error(`Unexpected ClientData type: ${t.client.type}`);if(await A(a.origin,t.client.origin))throw new Error(`Unexpected ClientData origin: ${t.client.origin}`);if(await A(a.challenge,t.client.challenge))throw new Error(`Unexpected ClientData challenge: ${t.client.challenge}`);return t}async function q(e,a,t){if(e.credentialId!==a.id)throw new Error(`Credential ID mismatch: ${e.credentialId} vs ${a.id}`);if(!await N({algorithm:a.algorithm,publicKey:a.publicKey,authenticatorData:e.authenticatorData,clientData:e.clientData,signature:e.signature,verbose:t.verbose}))throw new Error(`Invalid signature: ${e.signature}`);let r=P(e);if(r.client.type!=="webauthn.get")throw new Error(`Unexpected clientData type: ${r.client.type}`);if(await A(t.origin,r.client.origin))throw new Error(`Unexpected ClientData origin: ${r.client.origin}`);if(await A(t.challenge,r.client.challenge))throw new Error(`Unexpected ClientData challenge: ${r.client.challenge}`);let n=new URL(r.client.origin).hostname,c=o(await f(u(n)));if(r.authenticator.rpIdHash!==c)throw new Error(`Unexpected RpIdHash: ${r.authenticator.rpIdHash} vs ${c}`);if(!r.authenticator.flags.userPresent)throw new Error("Unexpected authenticator flags: missing userPresent");if(!r.authenticator.flags.userVerified&&t.userVerified)throw new Error("Unexpected authenticator flags: missing userVerified");if(t.counter&&r.authenticator.counter<=t.counter)throw new Error(`Unexpected authenticator counter: ${r.authenticator.counter} (should be > ${t.counter})`);return r}function z(e){switch(e){case"RS256":return{name:"RSASSA-PKCS1-v1_5",hash:"SHA-256"};case"ES256":return{name:"ECDSA",namedCurve:"P-256",hash:"SHA-256"};default:throw new Error(`Unknown or unsupported crypto algorithm: ${e}. Only 'RS256' and 'ES256' are supported.`)}}async function _(e,a){let t=s(a);return crypto.subtle.importKey("spki",t,e,!1,["verify"])}async function N({algorithm:e,publicKey:a,authenticatorData:t,clientData:i,signature:r,verbose:n}){let c=z(e),y=await _(c,a);n&&console.debug(y);let g=await f(s(i)),B=S(s(t),g);n&&(console.debug("Crypto Algo: "+JSON.stringify(c)),console.debug("Public key: "+a),console.debug("Data: "+o(B)),console.debug("Signature: "+r));let p=s(r);return e=="ES256"&&(p=j(p)),await crypto.subtle.verify(c,y,p,B)}function j(e){let a=new Uint8Array(e),t=a[4]===0?5:4,i=t+32,r=a[i+2]===0?i+3:i+2,n=a.slice(t,i),c=a.slice(r);return new Uint8Array([...n,...c])}var ie={client:I,server:K,parsers:C,utils:d,authenticatorMetadata:h};export{h as authenticatorMetadata,I as client,ie as default,C as parsers,K as server,d as utils}; | ||
//# sourceMappingURL=webauthn.min.js.map |
{ | ||
"name": "@passwordless-id/webauthn", | ||
"version": "1.3.1", | ||
"version": "1.3.3", | ||
"description": "A small wrapper around the webauthn protocol to make one's life easier.", | ||
@@ -5,0 +5,0 @@ "type": "module", |
@@ -5,3 +5,3 @@ Passwordless.ID / webauthn | ||
A greatly simplified and opinionated wrapper to invoke the [webauthn protocol](https://w3c.github.io/webauthn/) more conveniently. | ||
It is an [open source](https://github.com/passwordless-id/webauthn), minimalistic (11kb) and dependency-free library. | ||
It is an [open source](https://github.com/passwordless-id/webauthn), dependency-free and minimalistic library (17kb only, from which 11kb is the list of authenticator aaguids/names). | ||
@@ -21,4 +21,5 @@ <img src="demos/img/banner-biometric-auth.svg" /> | ||
- [Minimal Example (repository)](https://webauthn.passwordless.id/demos/example-raw.html) | ||
- [Authenticators list](https://webauthn.passwordless.id/demos/authenticators.html) | ||
GitHub: https://github.com/passwordless-id/webauthn | ||
The source of all demos is on [GitHub](https://github.com/passwordless-id/webauthn) | ||
@@ -54,3 +55,3 @@ | ||
<script type="module"> | ||
import { client } from 'https://unpkg.com/@passwordless-id/webauthn@1.3.1/dist/webauthn.min.js' | ||
import { client } from 'https://unpkg.com/@passwordless-id/webauthn@1.3.3/dist/webauthn.min.js' | ||
</script> | ||
@@ -73,3 +74,3 @@ ``` | ||
- In Chrome, Edge, Safari (*Firefox is still missing a [piece](https://github.com/passwordless-id/webauthn/issues/18)*) | ||
- In Chrome, Edge, Firefox, Safari | ||
- NodeJS **19+** (*) | ||
@@ -316,3 +317,4 @@ - Cloudflare Workers | ||
userVerified: true, // no function allowed here | ||
counter: 123 // optional, no function allowed here | ||
counter: 123, // optional, no function allowed here | ||
verbose: true, // optional, enables debug logs containing sensitive information | ||
} | ||
@@ -319,0 +321,0 @@ ``` |
@@ -1,164 +0,150 @@ | ||
export default { | ||
"9c835346-796b-4c27-8898-d6032f515cc5": { | ||
"name": "Cryptnox FIDO2" | ||
}, | ||
"c5ef55ff-ad9a-4b9f-b580-adebafe026d0": { | ||
"name": "YubiKey 5Ci" | ||
}, | ||
"39a5647e-1853-446c-a1f6-a79bae9f5bc7": { | ||
"name": "Vancosys Android Authenticator" | ||
}, | ||
"3789da91-f943-46bc-95c3-50ea2012f03a": { | ||
"name": "NEOWAVE Winkeo FIDO2" | ||
}, | ||
"fa2b99dc-9e39-4257-8f92-4a30d23c4118": { | ||
"name": "YubiKey 5 Series with NFC" | ||
}, | ||
"4e768f2c-5fab-48b3-b300-220eb487752b": { | ||
"name": "Hideez Key 4 FIDO2 SDK" | ||
}, | ||
"931327dd-c89b-406c-a81e-ed7058ef36c6": { | ||
"name": "Swissbit iShield FIDO2" | ||
}, | ||
"e1a96183-5016-4f24-b55b-e3ae23614cc6": { | ||
"name": "ATKey.Pro CTAP2.0" | ||
}, | ||
"08987058-cadc-4b81-b6e1-30de50dcbe96": { | ||
"name": "Windows Hello Hardware Authenticator" | ||
}, | ||
"d91c5288-0ef0-49b7-b8ae-21ca0aa6b3f3": { | ||
"name": "KEY-ID FIDO2 Authenticator" | ||
}, | ||
"ee041bce-25e5-4cdb-8f86-897fd6418464": { | ||
"name": "Feitian ePass FIDO2-NFC Authenticator" | ||
}, | ||
"73bb0cd4-e502-49b8-9c6f-b59445bf720b": { | ||
"name": "YubiKey 5 FIPS Series" | ||
}, | ||
"149a2021-8ef6-4133-96b8-81f8d5b7f1f5": { | ||
"name": "Security Key by Yubico with NFC" | ||
}, | ||
"3b1adb99-0dfe-46fd-90b8-7f7614a4de2a": { | ||
"name": "GoTrust Idem Key FIDO2 Authenticator" | ||
}, | ||
"f8a011f3-8c0a-4d15-8006-17111f9edc7d": { | ||
"name": "Security Key by Yubico" | ||
}, | ||
"2c0df832-92de-4be1-8412-88a8f074df4a": { | ||
"name": "Feitian FIDO Smart Card" | ||
}, | ||
"c5703116-972b-4851-a3e7-ae1259843399": { | ||
"name": "NEOWAVE Badgeo FIDO2" | ||
}, | ||
"820d89ed-d65a-409e-85cb-f73f0578f82a": { | ||
"name": "Vancosys iOS Authenticator" | ||
}, | ||
"b6ede29c-3772-412c-8a78-539c1f4c62d2": { | ||
"name": "Feitian BioPass FIDO2 Plus Authenticator" | ||
}, | ||
"85203421-48f9-4355-9bc8-8a53846e5083": { | ||
"name": "YubiKey 5Ci FIPS" | ||
}, | ||
"d821a7d4-e97c-4cb6-bd82-4237731fd4be": { | ||
"name": "Hyper FIDO Bio Security Key" | ||
}, | ||
"516d3969-5a57-5651-5958-4e7a49434167": { | ||
"name": "SmartDisplayer BobeePass (NFC-BLE FIDO2 Authenticator)" | ||
}, | ||
"b93fd961-f2e6-462f-b122-82002247de78": { | ||
"name": "Android Authenticator with SafetyNet Attestation" | ||
}, | ||
"2fc0579f-8113-47ea-b116-bb5a8db9202a": { | ||
"name": "YubiKey 5 Series with NFC" | ||
}, | ||
"9ddd1817-af5a-4672-a2b9-3e3dd95000a9": { | ||
"name": "Windows Hello VBS Hardware Authenticator" | ||
}, | ||
"d8522d9f-575b-4866-88a9-ba99fa02f35b": { | ||
"name": "YubiKey Bio Series" | ||
}, | ||
"692db549-7ae5-44d5-a1e5-dd20a493b723": { | ||
"name": "HID Crescendo Key" | ||
}, | ||
"3e22415d-7fdf-4ea4-8a0c-dd60c4249b9d": { | ||
"name": "Feitian iePass FIDO Authenticator" | ||
}, | ||
"aeb6569c-f8fb-4950-ac60-24ca2bbe2e52": { | ||
"name": "HID Crescendo C2300" | ||
}, | ||
"9f0d8150-baa5-4c00-9299-ad62c8bb4e87": { | ||
"name": "GoTrust Idem Card FIDO2 Authenticator" | ||
}, | ||
"12ded745-4bed-47d4-abaa-e713f51d6393": { | ||
"name": "Feitian AllinOne FIDO2 Authenticator" | ||
}, | ||
"88bbd2f0-342a-42e7-9729-dd158be5407a": { | ||
"name": "Precision InnaIT Key FIDO 2 Level 2 certified" | ||
}, | ||
"34f5766d-1536-4a24-9033-0e294e510fb0": { | ||
"name": "YubiKey 5 Series CTAP2.1 Preview 1 " | ||
}, | ||
"83c47309-aabb-4108-8470-8be838b573cb": { | ||
"name": "YubiKey Bio Series (Enterprise Profile)" | ||
}, | ||
"be727034-574a-f799-5c76-0929e0430973": { | ||
"name": "Crayonic KeyVault K1 (USB-NFC-BLE FIDO2 Authenticator)" | ||
}, | ||
"b92c3f9a-c014-4056-887f-140a2501163b": { | ||
"name": "Security Key by Yubico" | ||
}, | ||
"54d9fee8-e621-4291-8b18-7157b99c5bec": { | ||
"name": "HID Crescendo Enabled" | ||
}, | ||
"6028b017-b1d4-4c02-b4b3-afcdafc96bb2": { | ||
"name": "Windows Hello Software Authenticator" | ||
}, | ||
"6d44ba9b-f6ec-2e49-b930-0c8fe920cb73": { | ||
"name": "Security Key by Yubico with NFC" | ||
}, | ||
"e416201b-afeb-41ca-a03d-2281c28322aa": { | ||
"name": "ATKey.Pro CTAP2.1" | ||
}, | ||
"9f77e279-a6e2-4d58-b700-31e5943c6a98": { | ||
"name": "Hyper FIDO Pro" | ||
}, | ||
"73402251-f2a8-4f03-873e-3cb6db604b03": { | ||
"name": "uTrust FIDO2 Security Key" | ||
}, | ||
"c1f9a0bc-1dd2-404a-b27f-8e29047a43fd": { | ||
"name": "YubiKey 5 FIPS Series with NFC" | ||
}, | ||
"504d7149-4e4c-3841-4555-55445a677357": { | ||
"name": "WiSECURE AuthTron USB FIDO2 Authenticator" | ||
}, | ||
"cb69481e-8ff7-4039-93ec-0a2729a154a8": { | ||
"name": "YubiKey 5 Series" | ||
}, | ||
"ee882879-721c-4913-9775-3dfcce97072a": { | ||
"name": "YubiKey 5 Series" | ||
}, | ||
"8c97a730-3f7b-41a6-87d6-1e9b62bda6f0": { | ||
"name": "FT-JCOS FIDO Fingerprint Card" | ||
}, | ||
"a1f52be5-dfab-4364-b51c-2bd496b14a56": { | ||
"name": "OCTATCO EzFinger2 FIDO2 AUTHENTICATOR" | ||
}, | ||
"3e078ffd-4c54-4586-8baa-a77da113aec5": { | ||
"name": "Hideez Key 3 FIDO2" | ||
}, | ||
"d41f5a69-b817-4144-a13c-9ebd6d9254d6": { | ||
"name": "ATKey.Card CTAP2.0" | ||
}, | ||
"bc2fe499-0d8e-4ffe-96f3-94a82840cf8c": { | ||
"name": "OCTATCO EzQuant FIDO2 AUTHENTICATOR" | ||
}, | ||
"1c086528-58d5-f211-823c-356786e36140": { | ||
"name": "Atos CardOS FIDO2" | ||
}, | ||
"77010bd7-212a-4fc9-b236-d2ca5e9d4084": { | ||
"name": "Feitian BioPass FIDO2 Authenticator" | ||
}, | ||
"833b721a-ff5f-4d00-bb2e-bdda3ec01e29": { | ||
"name": "Feitian ePass FIDO2 Authenticator" | ||
} | ||
/** | ||
* The source comes from | ||
* "official" https://mds.fidoalliance.org/ | ||
* and the | ||
* "community-driven" https://github.com/passkeydeveloper/passkey-authenticator-aaguids | ||
* combined together. | ||
*/ | ||
export const authenticatorMetadata :Record<string, string> = { | ||
"ea9b8d66-4d01-1d21-3ce4-b6b48cb575d4": "Google Password Manager", | ||
"adce0002-35bc-c60a-648b-0b25f1f05503": "Chrome on Mac", | ||
"08987058-cadc-4b81-b6e1-30de50dcbe96": "Windows Hello Hardware Authenticator", | ||
"9ddd1817-af5a-4672-a2b9-3e3dd95000a9": "Windows Hello VBS Hardware Authenticator", | ||
"6028b017-b1d4-4c02-b4b3-afcdafc96bb2": "Windows Hello Software Authenticator", | ||
"dd4ec289-e01d-41c9-bb89-70fa845d4bf2": "iCloud Keychain (Managed)", | ||
"531126d6-e717-415c-9320-3d9aa6981239": "Dashlane", | ||
"bada5566-a7aa-401f-bd96-45619a55120d": "1Password", | ||
"b84e4048-15dc-4dd0-8640-f4f60813c8af": "NordPass", | ||
"0ea242b4-43c4-4a1b-8b17-dd6d0b6baec6": "Keeper", | ||
"f3809540-7f14-49c1-a8b3-8f813b225541": "Enpass", | ||
"b5397666-4885-aa6b-cebf-e52262a439a2": "Chromium Browser", | ||
"771b48fd-d3d4-4f74-9232-fc157ab0507a": "Edge on Mac", | ||
"39a5647e-1853-446c-a1f6-a79bae9f5bc7": "IDmelon Android Authenticator", | ||
"d548826e-79b4-db40-a3d8-11116f7e8349": "Bitwarden", | ||
"fbfc3007-154e-4ecc-8c0b-6e020557d7bd": "iCloud Keychain", | ||
"53414d53-554e-4700-0000-000000000000": "Samsung Pass", | ||
"66a0ccb3-bd6a-191f-ee06-e375c50b9846": "Thales Bio iOS SDK", | ||
"8836336a-f590-0921-301d-46427531eee6": "Thales Bio Android SDK", | ||
"cd69adb5-3c7a-deb9-3177-6800ea6cb72a": "Thales PIN Android SDK", | ||
"17290f1e-c212-34d0-1423-365d729f09d9": "Thales PIN iOS SDK", | ||
"fcb1bcb4-f370-078c-6993-bc24d0ae3fbe": "Ledger Nano X FIDO2 Authenticator", | ||
"5626bed4-e756-430b-a7ff-ca78c8b12738": "VALMIDO PRO FIDO", | ||
"95e4d58c-056e-4a65-866d-f5a69659e880": "TruU Windows Authenticator", | ||
"9c835346-796b-4c27-8898-d6032f515cc5": "Cryptnox FIDO2", | ||
"0d9b2e56-566b-c393-2940-f821b7f15d6d": "Excelsecu eSecu FIDO2 Pro Security Key", | ||
"c5ef55ff-ad9a-4b9f-b580-adebafe026d0": "YubiKey 5 Series with Lightning", | ||
"664d9f67-84a2-412a-9ff7-b4f7d8ee6d05": "OpenSK authenticator", | ||
"3789da91-f943-46bc-95c3-50ea2012f03a": "NEOWAVE Winkeo FIDO2", | ||
"fa2b99dc-9e39-4257-8f92-4a30d23c4118": "YubiKey 5 Series with NFC", | ||
"69700f79-d1fb-472e-bd9b-a3a3b9a9eda0": "Pone Biometrics OFFPAD Authenticator", | ||
"89b19028-256b-4025-8872-255358d950e4": "Sentry Enterprises CTAP2 Authenticator", | ||
"4e768f2c-5fab-48b3-b300-220eb487752b": "Hideez Key 4 FIDO2 SDK", | ||
"931327dd-c89b-406c-a81e-ed7058ef36c6": "Swissbit iShield Key FIDO2", | ||
"8d1b1fcb-3c76-49a9-9129-5515b346aa02": "IDEMIA ID-ONE Card", | ||
"454e5346-4944-4ffd-6c93-8e9267193e9a": "Ensurity ThinC", | ||
"e1a96183-5016-4f24-b55b-e3ae23614cc6": "ATKey.Pro CTAP2.0", | ||
"9d3df6ba-282f-11ed-a261-0242ac120002": "Arculus FIDO2/U2F Key Card", | ||
"fbefdf68-fe86-0106-213e-4d5fa24cbe2e": "Excelsecu eSecu FIDO2 NFC Security Key", | ||
"ab32f0c6-2239-afbb-c470-d2ef4e254db7": "TOKEN2 FIDO2 Security Key", | ||
"973446ca-e21c-9a9b-99f5-9b985a67af0f": "ACS FIDO Authenticator Card", | ||
"1105e4ed-af1d-02ff-ffff-ffffffffffff": "Egomet FIDO2 Authenticator for Android", | ||
"a4e9fc6d-4cbe-4758-b8ba-37598bb5bbaa": "Security Key NFC by Yubico", | ||
"0acf3011-bc60-f375-fb53-6f05f43154e0": "Nymi FIDO2 Authenticator", | ||
"d91c5288-0ef0-49b7-b8ae-21ca0aa6b3f3": "KEY-ID FIDO2 Authenticator", | ||
"4c50ff10-1057-4fc6-b8ed-43a529530c3c": "ImproveID Authenticator", | ||
"ee041bce-25e5-4cdb-8f86-897fd6418464": "Feitian ePass FIDO2-NFC Authenticator", | ||
"efb96b10-a9ee-4b6c-a4a9-d32125ccd4a4": "Safenet eToken FIDO", | ||
"4b3f8944-d4f2-4d21-bb19-764a986ec160": "KeyXentic FIDO2 Secp256R1 FIDO2 CTAP2 Authenticator", | ||
"4c0cf95d-2f40-43b5-ba42-4c83a11c04ba": "Feitian BioPass FIDO2 Pro Authenticator", | ||
"5343502d-5343-5343-6172-644649444f32": "ESS Smart Card Inc. Authenticator", | ||
"09591fc6-9811-48f7-8f57-b9f23df6413f": "Pone Biometrics OFFPAD Authenticator", | ||
"7e3f3d30-3557-4442-bdae-139312178b39": "RSA DS100", | ||
"73bb0cd4-e502-49b8-9c6f-b59445bf720b": "YubiKey 5 FIPS Series", | ||
"149a2021-8ef6-4133-96b8-81f8d5b7f1f5": "Security Key by Yubico with NFC", | ||
"175cd298-83d2-4a26-b637-313c07a6434e": "Chunghwa Telecom FIDO2 Smart Card Authenticator", | ||
"3b1adb99-0dfe-46fd-90b8-7f7614a4de2a": "GoTrust Idem Key FIDO2 Authenticator", | ||
"998f358b-2dd2-4cbe-a43a-e8107438dfb3": "OnlyKey Secp256R1 FIDO2 CTAP2 Authenticator", | ||
"61250591-b2bc-4456-b719-0b17be90bb30": "eWBM eFPA FIDO2 Authenticator", | ||
"f8a011f3-8c0a-4d15-8006-17111f9edc7d": "Security Key by Yubico", | ||
"8976631b-d4a0-427f-5773-0ec71c9e0279": "Solo Tap Secp256R1 FIDO2 CTAP2 Authenticator", | ||
"516d3969-5a57-5651-5958-4e7a49434167": "SmartDisplayer BobeePass FIDO2 Authenticator", | ||
"2c0df832-92de-4be1-8412-88a8f074df4a": "Feitian FIDO Smart Card", | ||
"c5703116-972b-4851-a3e7-ae1259843399": "NEOWAVE Badgeo FIDO2", | ||
"c80dbd9a-533f-4a17-b941-1a2f1c7cedff": "HID Crescendo C3000", | ||
"820d89ed-d65a-409e-85cb-f73f0578f82a": "IDmelon iOS Authenticator", | ||
"b6ede29c-3772-412c-8a78-539c1f4c62d2": "Feitian BioPass FIDO2 Plus Authenticator", | ||
"85203421-48f9-4355-9bc8-8a53846e5083": "YubiKey 5 FIPS Series with Lightning", | ||
"d821a7d4-e97c-4cb6-bd82-4237731fd4be": "Hyper FIDO Bio Security Key", | ||
"9876631b-d4a0-427f-5773-0ec71c9e0279": "Somu Secp256R1 FIDO2 CTAP2 Authenticator", | ||
"f4c63eff-d26c-4248-801c-3736c7eaa93a": "FIDO KeyPass S3", | ||
"d384db22-4d50-ebde-2eac-5765cf1e2a44": "Excelsecu eSecu FIDO2 Fingerprint Security Key", | ||
"b93fd961-f2e6-462f-b122-82002247de78": "Android Authenticator with SafetyNet Attestation", | ||
"2fc0579f-8113-47ea-b116-bb5a8db9202a": "YubiKey 5 Series with NFC", | ||
"d8522d9f-575b-4866-88a9-ba99fa02f35b": "YubiKey Bio Series", | ||
"50a45b0c-80e7-f944-bf29-f552bfa2e048": "ACS FIDO Authenticator", | ||
"f7c558a0-f465-11e8-b568-0800200c9a66": "KONAI Secp256R1 FIDO2 Conformance Testing CTAP2 Authenticator", | ||
"3f59672f-20aa-4afe-b6f4-7e5e916b6d98": "Arculus FIDO 2.1 Key Card [P71]", | ||
"42b4fb4a-2866-43b2-9bf7-6c6669c2e5d3": "Google Titan Security Key v2", | ||
"361a3082-0278-4583-a16f-72a527f973e4": "eWBM eFA500 FIDO2 Authenticator", | ||
"692db549-7ae5-44d5-a1e5-dd20a493b723": "HID Crescendo Key", | ||
"bbf4b6a7-679d-f6fc-c4f2-8ac0ddf9015a": "Excelsecu eSecu FIDO2 PRO Security Key", | ||
"3e22415d-7fdf-4ea4-8a0c-dd60c4249b9d": "Feitian iePass FIDO Authenticator", | ||
"aeb6569c-f8fb-4950-ac60-24ca2bbe2e52": "HID Crescendo C2300", | ||
"87dbc5a1-4c94-4dc8-8a47-97d800fd1f3c": "eWBM eFA320 FIDO2 Authenticator", | ||
"9f0d8150-baa5-4c00-9299-ad62c8bb4e87": "GoTrust Idem Card FIDO2 Authenticator", | ||
"12ded745-4bed-47d4-abaa-e713f51d6393": "Feitian AllinOne FIDO2 Authenticator", | ||
"88bbd2f0-342a-42e7-9729-dd158be5407a": "Precision InnaIT Key FIDO 2 Level 2 certified", | ||
"34f5766d-1536-4a24-9033-0e294e510fb0": "YubiKey 5 Series CTAP2.1 Preview Expired ", | ||
"83c47309-aabb-4108-8470-8be838b573cb": "YubiKey Bio Series (Enterprise Profile)", | ||
"be727034-574a-f799-5c76-0929e0430973": "Crayonic KeyVault K1 (USB-NFC-BLE FIDO2 Authenticator)", | ||
"ca87cb70-4c1b-4579-a8e8-4efdd7c007e0": "FIDO Alliance TruU Sample FIDO2 Authenticator", | ||
"58b44d0b-0a7c-f33a-fd48-f7153c871352": "Ledger Nano S Plus FIDO2 Authenticator", | ||
"07a9f89c-6407-4594-9d56-621d5f1e358b": "NXP Semiconductros FIDO2 Conformance Testing CTAP2 Authenticator", | ||
"d61d3b87-3e7c-4aea-9c50-441c371903ad": "KeyVault Secp256R1 FIDO2 CTAP2 Authenticator", | ||
"5ca1ab1e-1337-fa57-f1d0-a117e71ca702": "Allthenticator App: roaming BLE FIDO2 Allthenticator for Windows, Mac, Linux, and Allthenticate door readers", | ||
"b92c3f9a-c014-4056-887f-140a2501163b": "Security Key by Yubico", | ||
"54d9fee8-e621-4291-8b18-7157b99c5bec": "HID Crescendo Enabled", | ||
"20f0be98-9af9-986a-4b42-8eca4acb28e4": "Excelsecu eSecu FIDO2 Fingerprint Security Key", | ||
"ab32f0c6-2239-afbb-c470-d2ef4e254db6": "TEST (DUMMY RECORD)", | ||
"30b5035e-d297-4fc1-b00b-addc96ba6a97": "OneSpan FIDO Touch", | ||
"6d44ba9b-f6ec-2e49-b930-0c8fe920cb73": "Security Key by Yubico with NFC", | ||
"eabb46cc-e241-80bf-ae9e-96fa6d2975cf": "TOKEN2 PIN Plus Security Key Series ", | ||
"e416201b-afeb-41ca-a03d-2281c28322aa": "ATKey.Pro CTAP2.1", | ||
"cfcb13a2-244f-4b36-9077-82b79d6a7de7": "USB/NFC Passcode Authenticator", | ||
"91ad6b93-264b-4987-8737-3a690cad6917": "Token Ring FIDO2 Authenticator", | ||
"9f77e279-a6e2-4d58-b700-31e5943c6a98": "Hyper FIDO Pro", | ||
"0bb43545-fd2c-4185-87dd-feb0b2916ace": "Security Key NFC by Yubico - Enterprise Edition", | ||
"73402251-f2a8-4f03-873e-3cb6db604b03": "uTrust FIDO2 Security Key", | ||
"c1f9a0bc-1dd2-404a-b27f-8e29047a43fd": "YubiKey 5 FIPS Series with NFC", | ||
"504d7149-4e4c-3841-4555-55445a677357": "WiSECURE AuthTron USB FIDO2 Authenticator", | ||
"a3975549-b191-fd67-b8fb-017e2917fdb3": "Excelsecu eSecu FIDO2 NFC Security Key", | ||
"da1fa263-8b25-42b6-a820-c0036f21ba7f": "ATKey.Card NFC", | ||
"6002f033-3c07-ce3e-d0f7-0ffe5ed42543": "Excelsecu eSecu FIDO2 Fingerprint Key", | ||
"5fdb81b8-53f0-4967-a881-f5ec26fe4d18": "VinCSS FIDO2 Authenticator", | ||
"2d3bec26-15ee-4f5d-88b2-53622490270b": "HID Crescendo Key V2", | ||
"cb69481e-8ff7-4039-93ec-0a2729a154a8": "YubiKey 5 Series", | ||
"0076631b-d4a0-427f-5773-0ec71c9e0279": "HYPR FIDO2 Authenticator", | ||
"d7a423ad-3e19-4492-9200-78137dccc136": "VivoKey Apex FIDO2", | ||
"ba76a271-6eb6-4171-874d-b6428dbe3437": "ATKey.ProS", | ||
"ee882879-721c-4913-9775-3dfcce97072a": "YubiKey 5 Series", | ||
"8876631b-d4a0-427f-5773-0ec71c9e0279": "Solo Secp256R1 FIDO2 CTAP2 Authenticator", | ||
"fec067a1-f1d0-4c5e-b4c0-cc3237475461": "KX701 SmartToken FIDO", | ||
"30b5035e-d297-4ff1-b00b-addc96ba6a98": "OneSpan DIGIPASS FX1 BIO", | ||
"b267239b-954f-4041-a01b-ee4f33c145b6": "authenton1 - CTAP2.1", | ||
"b50d5e0a-7f81-4959-9b12-f45407407503": "IDPrime 3940 FIDO", | ||
"8c97a730-3f7b-41a6-87d6-1e9b62bda6f0": "FT-JCOS FIDO Fingerprint Card", | ||
"99bf4610-ec26-4252-b31f-7380ccd59db5": "ZTPass Card", | ||
"a1f52be5-dfab-4364-b51c-2bd496b14a56": "OCTATCO EzFinger2 FIDO2 AUTHENTICATOR", | ||
"ba86dc56-635f-4141-aef6-00227b1b9af6": "TruU Windows Authenticator", | ||
"3e078ffd-4c54-4586-8baa-a77da113aec5": "Hideez Key 3 FIDO2", | ||
"ec31b4cc-2acc-4b8e-9c01-bade00ccbe26": "KeyXentic FIDO2 Secp256R1 FIDO2 CTAP2 Authenticator", | ||
"d41f5a69-b817-4144-a13c-9ebd6d9254d6": "ATKey.Card CTAP2.0", | ||
"95442b2e-f15e-4def-b270-efb106facb4e": "eWBM eFA310 FIDO2 Authenticator", | ||
"cdbdaea2-c415-5073-50f7-c04e968640b6": "Excelsecu eSecu FIDO2 Security Key", | ||
"bc2fe499-0d8e-4ffe-96f3-94a82840cf8c": "OCTATCO EzQuant FIDO2 AUTHENTICATOR", | ||
"eb3b131e-59dc-536a-d176-cb7306da10f5": "ellipticSecure MIRkey USB Authenticator", | ||
"1c086528-58d5-f211-823c-356786e36140": "Atos CardOS FIDO2", | ||
"77010bd7-212a-4fc9-b236-d2ca5e9d4084": "Feitian BioPass FIDO2 Authenticator", | ||
"d94a29d9-52dd-4247-9c2d-8b818b610389": "VeriMark Guard Fingerprint Key", | ||
"833b721a-ff5f-4d00-bb2e-bdda3ec01e29": "Feitian ePass FIDO2 Authenticator" | ||
} |
@@ -1,2 +0,2 @@ | ||
import authenticatorMetadata from './authenticatorMetadata.js' //assert {type: 'json'} | ||
import { authenticatorMetadata } from './authenticatorMetadata.js' | ||
import * as utils from './utils.js' | ||
@@ -6,5 +6,5 @@ | ||
export function parseAuthBuffer(authData :ArrayBuffer) { | ||
console.debug(authData) | ||
//console.debug(authData) | ||
let flags = new DataView(authData.slice(32,33)).getUint8(0) | ||
console.debug(flags) | ||
//console.debug(flags) | ||
@@ -37,3 +37,4 @@ // https://w3c.github.io/webauthn/#sctn-authenticator-data | ||
aaguid, // bytes 37->53 | ||
name: resolveAuthenticatorName(aaguid) | ||
name: authenticatorMetadata[aaguid] ?? 'Unknown', | ||
// credentialBytes, // bytes 53->55: credential length | ||
@@ -59,5 +60,12 @@ // credentialId: utils.toBase64url(authData.slice(55, 55+credentialLength)), | ||
/** | ||
* Kept for compatibility purposes. | ||
* @deprecated | ||
*/ | ||
export function resolveAuthenticatorName(aaguid :string) :string { | ||
const aaguidMetadata = updatedAuthenticatorMetadata ?? authenticatorMetadata //await getAaguidMetadata() | ||
return aaguidMetadata[aaguid]?.name | ||
return aaguidMetadata[aaguid] | ||
} | ||
@@ -67,3 +75,8 @@ | ||
// List of AAGUIDs are encoded as JWT here: https://mds.fidoalliance.org/ | ||
/** | ||
* Updates the built-in metadata according to raw data available at https://mds.fidoalliance.org/ | ||
* This service delivers a list of AAGUIDs encoded as a JWT. | ||
* Kept for compatibility purposes. | ||
* @deprecated | ||
*/ | ||
export async function updateDevicesMetadata() { | ||
@@ -87,3 +100,3 @@ // this function is rather resource intensive and time consuming | ||
aaguidMetadata[e.aaguid] = {name: e.metadataStatement.description} | ||
aaguidMetadata[e.aaguid] = e.metadataStatement.description | ||
} | ||
@@ -90,0 +103,0 @@ |
@@ -11,4 +11,5 @@ /* | ||
import * as utils from './utils.js'; | ||
import { authenticatorMetadata } from './authenticatorMetadata.js' | ||
export { client, server, parsers, utils } | ||
export default { client, server, parsers, utils } | ||
export { client, server, parsers, utils, authenticatorMetadata } | ||
export default { client, server, parsers, utils, authenticatorMetadata } |
@@ -49,3 +49,4 @@ import { parseAuthentication, parseRegistration } from "./parsers.js"; | ||
userVerified: boolean, | ||
counter?: number // Made optional according to https://github.com/passwordless-id/webauthn/issues/38 | ||
counter?: number, // Made optional according to https://github.com/passwordless-id/webauthn/issues/38 | ||
verbose?: boolean | ||
} | ||
@@ -63,3 +64,4 @@ | ||
clientData: authenticationRaw.clientData, | ||
signature: authenticationRaw.signature | ||
signature: authenticationRaw.signature, | ||
verbose: expected.verbose | ||
}) | ||
@@ -145,2 +147,3 @@ | ||
signature: string, // Base64url encoded | ||
verbose?: boolean, // Enables debug logs containing sensitive data like crypto keys | ||
} | ||
@@ -160,6 +163,9 @@ | ||
// see also https://gist.github.com/philholden/50120652bfe0498958fd5926694ba354 | ||
export async function verifySignature({ algorithm, publicKey, authenticatorData, clientData, signature }: VerifyParams): Promise<boolean> { | ||
export async function verifySignature({ algorithm, publicKey, authenticatorData, clientData, signature, verbose }: VerifyParams): Promise<boolean> { | ||
const algoParams = getAlgoParams(algorithm) | ||
let cryptoKey = await parseCryptoKey(algoParams, publicKey) | ||
console.debug(cryptoKey) | ||
if(verbose) { | ||
console.debug(cryptoKey) | ||
} | ||
@@ -171,6 +177,8 @@ let clientHash = await utils.sha256(utils.parseBase64url(clientData)); | ||
console.debug('Crypto Algo: ' + JSON.stringify(algoParams)) | ||
console.debug('Public key: ' + publicKey) | ||
console.debug('Data: ' + utils.toBase64url(comboBuffer)) | ||
console.debug('Signature: ' + signature) | ||
if(verbose) { | ||
console.debug('Crypto Algo: ' + JSON.stringify(algoParams)) | ||
console.debug('Public key: ' + publicKey) | ||
console.debug('Data: ' + utils.toBase64url(comboBuffer)) | ||
console.debug('Signature: ' + signature) | ||
} | ||
@@ -177,0 +185,0 @@ // https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/verify |
@@ -5,16 +5,2 @@ /******************************** | ||
/* | ||
let webCrypto :any = null | ||
export async function getCrypto() { | ||
if(!webCrypto) { | ||
console.log(window?.crypto) | ||
webCrypto = window?.crypto ?? (await import("crypto")).webcrypto | ||
console.log(webCrypto) | ||
} | ||
return webCrypto | ||
} | ||
*/ | ||
export function randomChallenge() { | ||
@@ -21,0 +7,0 @@ return crypto.randomUUID() |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
187946
569
1909