@simplewebauthn/server 7.4.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. package/LICENSE.md +11 -14
  2. package/README.md +20 -7
  3. package/{dist → esm}/authentication/generateAuthenticationOptions.d.ts +2 -2
  4. package/esm/authentication/generateAuthenticationOptions.js +36 -0
  5. package/{dist → esm}/authentication/verifyAuthenticationResponse.d.ts +2 -2
  6. package/esm/authentication/verifyAuthenticationResponse.js +164 -0
  7. package/esm/deps.d.ts +11 -0
  8. package/esm/deps.js +14 -0
  9. package/esm/helpers/convertAAGUIDToString.js +17 -0
  10. package/esm/helpers/convertCOSEtoPKCS.js +21 -0
  11. package/{dist → esm}/helpers/convertCertBufferToPEM.d.ts +1 -1
  12. package/esm/helpers/convertCertBufferToPEM.js +31 -0
  13. package/esm/helpers/convertPEMToBytes.js +11 -0
  14. package/{dist → esm}/helpers/convertX509PublicKeyToCOSE.d.ts +1 -1
  15. package/esm/helpers/convertX509PublicKeyToCOSE.js +70 -0
  16. package/{dist → esm}/helpers/cose.d.ts +2 -1
  17. package/esm/helpers/cose.js +81 -0
  18. package/{dist → esm}/helpers/decodeAttestationObject.d.ts +3 -0
  19. package/esm/helpers/decodeAttestationObject.js +13 -0
  20. package/esm/helpers/decodeAuthenticatorExtensions.js +34 -0
  21. package/{dist → esm}/helpers/decodeClientDataJSON.d.ts +3 -0
  22. package/esm/helpers/decodeClientDataJSON.js +13 -0
  23. package/esm/helpers/decodeCredentialPublicKey.d.ts +5 -0
  24. package/esm/helpers/decodeCredentialPublicKey.js +8 -0
  25. package/esm/helpers/fetch.d.ts +8 -0
  26. package/esm/helpers/fetch.js +12 -0
  27. package/esm/helpers/generateChallenge.d.ts +7 -0
  28. package/esm/helpers/generateChallenge.js +21 -0
  29. package/{dist → esm}/helpers/getCertificateInfo.d.ts +1 -1
  30. package/esm/helpers/getCertificateInfo.js +76 -0
  31. package/esm/helpers/index.d.ts +22 -0
  32. package/esm/helpers/index.js +16 -0
  33. package/{dist → esm}/helpers/isCertRevoked.d.ts +1 -1
  34. package/esm/helpers/isCertRevoked.js +98 -0
  35. package/{dist → esm}/helpers/iso/index.d.ts +4 -4
  36. package/esm/helpers/iso/index.js +11 -0
  37. package/esm/helpers/iso/isoBase64URL.js +57 -0
  38. package/{dist → esm}/helpers/iso/isoCBOR.d.ts +1 -1
  39. package/esm/helpers/iso/isoCBOR.js +44 -0
  40. package/{dist → esm}/helpers/iso/isoCrypto/digest.d.ts +1 -1
  41. package/esm/helpers/iso/isoCrypto/digest.js +14 -0
  42. package/{dist → esm}/helpers/iso/isoCrypto/getRandomValues.d.ts +1 -1
  43. package/esm/helpers/iso/isoCrypto/getRandomValues.js +11 -0
  44. package/esm/helpers/iso/isoCrypto/getWebCrypto.d.ts +6 -0
  45. package/esm/helpers/iso/isoCrypto/getWebCrypto.js +40 -0
  46. package/esm/helpers/iso/isoCrypto/importKey.js +8 -0
  47. package/esm/helpers/iso/isoCrypto/index.d.ts +3 -0
  48. package/esm/helpers/iso/isoCrypto/index.js +3 -0
  49. package/{dist → esm}/helpers/iso/isoCrypto/mapCoseAlgToWebCryptoAlg.d.ts +2 -2
  50. package/esm/helpers/iso/isoCrypto/mapCoseAlgToWebCryptoAlg.js +20 -0
  51. package/{dist → esm}/helpers/iso/isoCrypto/mapCoseAlgToWebCryptoKeyAlgName.d.ts +2 -2
  52. package/esm/helpers/iso/isoCrypto/mapCoseAlgToWebCryptoKeyAlgName.js +19 -0
  53. package/esm/helpers/iso/isoCrypto/structs.js +1 -0
  54. package/esm/helpers/iso/isoCrypto/unwrapEC2Signature.js +30 -0
  55. package/{dist → esm}/helpers/iso/isoCrypto/verify.d.ts +1 -1
  56. package/esm/helpers/iso/isoCrypto/verify.js +28 -0
  57. package/{dist → esm}/helpers/iso/isoCrypto/verifyEC2.d.ts +1 -1
  58. package/esm/helpers/iso/isoCrypto/verifyEC2.js +73 -0
  59. package/{dist → esm}/helpers/iso/isoCrypto/verifyOKP.d.ts +1 -1
  60. package/esm/helpers/iso/isoCrypto/verifyOKP.js +51 -0
  61. package/{dist → esm}/helpers/iso/isoCrypto/verifyRSA.d.ts +1 -1
  62. package/esm/helpers/iso/isoCrypto/verifyRSA.js +91 -0
  63. package/esm/helpers/iso/isoUint8Array.js +75 -0
  64. package/{dist → esm}/helpers/logging.d.ts +1 -1
  65. package/esm/helpers/logging.js +19 -0
  66. package/{dist → esm}/helpers/mapX509SignatureAlgToCOSEAlg.d.ts +1 -1
  67. package/esm/helpers/mapX509SignatureAlgToCOSEAlg.js +35 -0
  68. package/esm/helpers/matchExpectedRPID.js +41 -0
  69. package/{dist → esm}/helpers/parseAuthenticatorData.d.ts +4 -1
  70. package/esm/helpers/parseAuthenticatorData.js +71 -0
  71. package/{dist → esm}/helpers/parseBackupFlags.d.ts +4 -1
  72. package/esm/helpers/parseBackupFlags.js +25 -0
  73. package/{dist → esm}/helpers/toHash.d.ts +1 -1
  74. package/esm/helpers/toHash.js +12 -0
  75. package/esm/helpers/validateCertificatePath.js +122 -0
  76. package/{dist → esm}/helpers/verifySignature.d.ts +4 -1
  77. package/esm/helpers/verifySignature.js +32 -0
  78. package/esm/index.d.ts +17 -0
  79. package/esm/index.js +11 -0
  80. package/{dist → esm}/metadata/mdsTypes.d.ts +1 -1
  81. package/esm/metadata/mdsTypes.js +17 -0
  82. package/esm/metadata/parseJWT.js +12 -0
  83. package/{dist → esm}/metadata/verifyAttestationWithMetadata.d.ts +3 -3
  84. package/esm/metadata/verifyAttestationWithMetadata.js +159 -0
  85. package/esm/metadata/verifyJWT.js +37 -0
  86. package/esm/package.json +3 -0
  87. package/{dist → esm}/registration/generateRegistrationOptions.d.ts +2 -2
  88. package/esm/registration/generateRegistrationOptions.js +142 -0
  89. package/esm/registration/verifications/tpm/constants.js +182 -0
  90. package/esm/registration/verifications/tpm/parseCertInfo.js +58 -0
  91. package/esm/registration/verifications/tpm/parsePubArea.js +94 -0
  92. package/{dist → esm}/registration/verifications/tpm/verifyAttestationTPM.d.ts +1 -1
  93. package/esm/registration/verifications/tpm/verifyAttestationTPM.js +323 -0
  94. package/{dist → esm}/registration/verifications/verifyAttestationAndroidKey.d.ts +1 -1
  95. package/esm/registration/verifications/verifyAttestationAndroidKey.js +90 -0
  96. package/{dist → esm}/registration/verifications/verifyAttestationAndroidSafetyNet.d.ts +1 -1
  97. package/esm/registration/verifications/verifyAttestationAndroidSafetyNet.js +112 -0
  98. package/{dist → esm}/registration/verifications/verifyAttestationApple.d.ts +1 -1
  99. package/esm/registration/verifications/verifyAttestationApple.js +57 -0
  100. package/{dist → esm}/registration/verifications/verifyAttestationFIDOU2F.d.ts +1 -1
  101. package/esm/registration/verifications/verifyAttestationFIDOU2F.js +48 -0
  102. package/{dist → esm}/registration/verifications/verifyAttestationPacked.d.ts +1 -1
  103. package/esm/registration/verifications/verifyAttestationPacked.js +105 -0
  104. package/{dist → esm}/registration/verifyRegistrationResponse.d.ts +3 -3
  105. package/esm/registration/verifyRegistrationResponse.js +198 -0
  106. package/esm/services/defaultRootCerts/android-key.js +85 -0
  107. package/esm/services/defaultRootCerts/android-safetynet.js +32 -0
  108. package/esm/services/defaultRootCerts/apple.js +25 -0
  109. package/esm/services/defaultRootCerts/mds.js +32 -0
  110. package/{dist → esm}/services/metadataService.d.ts +1 -1
  111. package/{dist → esm}/services/metadataService.js +52 -36
  112. package/{dist → esm}/services/settingsService.d.ts +1 -1
  113. package/esm/services/settingsService.js +65 -0
  114. package/package.json +40 -42
  115. package/script/authentication/generateAuthenticationOptions.d.ts +23 -0
  116. package/{dist → script}/authentication/generateAuthenticationOptions.js +8 -9
  117. package/script/authentication/verifyAuthenticationResponse.d.ts +66 -0
  118. package/{dist → script}/authentication/verifyAuthenticationResponse.js +25 -23
  119. package/script/deps.d.ts +11 -0
  120. package/script/deps.js +71 -0
  121. package/script/helpers/convertAAGUIDToString.d.ts +4 -0
  122. package/{dist → script}/helpers/convertAAGUIDToString.js +2 -3
  123. package/script/helpers/convertCOSEtoPKCS.d.ts +4 -0
  124. package/{dist → script}/helpers/convertCOSEtoPKCS.js +7 -8
  125. package/script/helpers/convertCertBufferToPEM.d.ts +5 -0
  126. package/{dist → script}/helpers/convertCertBufferToPEM.js +5 -6
  127. package/script/helpers/convertPEMToBytes.d.ts +4 -0
  128. package/{dist → script}/helpers/convertPEMToBytes.js +2 -3
  129. package/script/helpers/convertX509PublicKeyToCOSE.d.ts +2 -0
  130. package/{dist → script}/helpers/convertX509PublicKeyToCOSE.js +21 -25
  131. package/script/helpers/cose.d.ts +98 -0
  132. package/{dist → script}/helpers/cose.js +1 -1
  133. package/script/helpers/decodeAttestationObject.d.ts +29 -0
  134. package/script/helpers/decodeAttestationObject.js +17 -0
  135. package/script/helpers/decodeAuthenticatorExtensions.d.ts +20 -0
  136. package/{dist → script}/helpers/decodeAuthenticatorExtensions.js +2 -3
  137. package/script/helpers/decodeClientDataJSON.d.ts +17 -0
  138. package/script/helpers/decodeClientDataJSON.js +17 -0
  139. package/script/helpers/decodeCredentialPublicKey.d.ts +5 -0
  140. package/script/helpers/decodeCredentialPublicKey.js +12 -0
  141. package/script/helpers/fetch.d.ts +8 -0
  142. package/script/helpers/fetch.js +16 -0
  143. package/script/helpers/generateChallenge.d.ts +7 -0
  144. package/{dist → script}/helpers/generateChallenge.js +9 -6
  145. package/script/helpers/getCertificateInfo.d.ts +31 -0
  146. package/{dist → script}/helpers/getCertificateInfo.js +4 -6
  147. package/script/helpers/index.d.ts +22 -0
  148. package/script/helpers/index.js +59 -0
  149. package/script/helpers/isCertRevoked.d.ts +8 -0
  150. package/{dist → script}/helpers/isCertRevoked.js +20 -25
  151. package/script/helpers/iso/index.d.ts +11 -0
  152. package/{dist → script}/helpers/iso/index.js +4 -5
  153. package/script/helpers/iso/isoBase64URL.d.ts +37 -0
  154. package/{dist → script}/helpers/iso/isoBase64URL.js +9 -13
  155. package/script/helpers/iso/isoCBOR.d.ts +12 -0
  156. package/{dist → script}/helpers/iso/isoCBOR.js +8 -28
  157. package/script/helpers/iso/isoCrypto/digest.d.ts +8 -0
  158. package/script/helpers/iso/isoCrypto/digest.js +18 -0
  159. package/script/helpers/iso/isoCrypto/getRandomValues.d.ts +6 -0
  160. package/script/helpers/iso/isoCrypto/getRandomValues.js +15 -0
  161. package/script/helpers/iso/isoCrypto/getWebCrypto.d.ts +6 -0
  162. package/script/helpers/iso/isoCrypto/getWebCrypto.js +44 -0
  163. package/script/helpers/iso/isoCrypto/importKey.d.ts +4 -0
  164. package/script/helpers/iso/isoCrypto/importKey.js +12 -0
  165. package/script/helpers/iso/isoCrypto/index.d.ts +3 -0
  166. package/{dist → script}/helpers/iso/isoCrypto/index.js +6 -7
  167. package/script/helpers/iso/isoCrypto/mapCoseAlgToWebCryptoAlg.d.ts +6 -0
  168. package/{dist → script}/helpers/iso/isoCrypto/mapCoseAlgToWebCryptoAlg.js +6 -6
  169. package/script/helpers/iso/isoCrypto/mapCoseAlgToWebCryptoKeyAlgName.d.ts +6 -0
  170. package/{dist → script}/helpers/iso/isoCrypto/mapCoseAlgToWebCryptoKeyAlgName.js +5 -6
  171. package/script/helpers/iso/isoCrypto/structs.d.ts +3 -0
  172. package/{dist → script}/helpers/iso/isoCrypto/structs.js +0 -1
  173. package/script/helpers/iso/isoCrypto/unwrapEC2Signature.d.ts +6 -0
  174. package/{dist → script}/helpers/iso/isoCrypto/unwrapEC2Signature.js +4 -6
  175. package/script/helpers/iso/isoCrypto/verify.d.ts +10 -0
  176. package/script/helpers/iso/isoCrypto/verify.js +32 -0
  177. package/script/helpers/iso/isoCrypto/verifyEC2.d.ts +10 -0
  178. package/{dist → script}/helpers/iso/isoCrypto/verifyEC2.js +19 -22
  179. package/script/helpers/iso/isoCrypto/verifyOKP.d.ts +6 -0
  180. package/{dist → script}/helpers/iso/isoCrypto/verifyOKP.js +13 -16
  181. package/script/helpers/iso/isoCrypto/verifyRSA.d.ts +10 -0
  182. package/{dist → script}/helpers/iso/isoCrypto/verifyRSA.js +19 -22
  183. package/script/helpers/iso/isoUint8Array.d.ts +36 -0
  184. package/{dist → script}/helpers/iso/isoUint8Array.js +7 -8
  185. package/script/helpers/logging.d.ts +17 -0
  186. package/{dist → script}/helpers/logging.js +2 -6
  187. package/script/helpers/mapX509SignatureAlgToCOSEAlg.d.ts +8 -0
  188. package/{dist → script}/helpers/mapX509SignatureAlgToCOSEAlg.js +8 -9
  189. package/script/helpers/matchExpectedRPID.d.ts +7 -0
  190. package/{dist → script}/helpers/matchExpectedRPID.js +5 -6
  191. package/script/helpers/parseAuthenticatorData.d.ts +28 -0
  192. package/{dist → script}/helpers/parseAuthenticatorData.js +19 -16
  193. package/script/helpers/parseBackupFlags.d.ts +19 -0
  194. package/{dist → script}/helpers/parseBackupFlags.js +2 -2
  195. package/script/helpers/toHash.d.ts +6 -0
  196. package/{dist → script}/helpers/toHash.js +4 -5
  197. package/script/helpers/validateCertificatePath.d.ts +6 -0
  198. package/{dist → script}/helpers/validateCertificatePath.js +13 -15
  199. package/script/helpers/verifySignature.d.ts +14 -0
  200. package/script/helpers/verifySignature.js +36 -0
  201. package/script/index.d.ts +17 -0
  202. package/script/index.js +19 -0
  203. package/script/metadata/mdsTypes.d.ts +216 -0
  204. package/{dist → script}/metadata/mdsTypes.js +0 -1
  205. package/script/metadata/parseJWT.d.ts +4 -0
  206. package/{dist → script}/metadata/parseJWT.js +3 -4
  207. package/script/metadata/verifyAttestationWithMetadata.d.ts +29 -0
  208. package/{dist → script}/metadata/verifyAttestationWithMetadata.js +24 -22
  209. package/script/metadata/verifyJWT.d.ts +10 -0
  210. package/script/metadata/verifyJWT.js +41 -0
  211. package/script/package.json +3 -0
  212. package/script/registration/generateRegistrationOptions.d.ts +43 -0
  213. package/{dist → script}/registration/generateRegistrationOptions.js +9 -10
  214. package/script/registration/verifications/tpm/constants.d.ts +47 -0
  215. package/{dist → script}/registration/verifications/tpm/constants.js +1 -2
  216. package/script/registration/verifications/tpm/parseCertInfo.d.ts +24 -0
  217. package/{dist → script}/registration/verifications/tpm/parseCertInfo.js +13 -14
  218. package/script/registration/verifications/tpm/parsePubArea.d.ts +43 -0
  219. package/{dist → script}/registration/verifications/tpm/parsePubArea.js +16 -17
  220. package/script/registration/verifications/tpm/verifyAttestationTPM.d.ts +2 -0
  221. package/{dist → script}/registration/verifications/tpm/verifyAttestationTPM.js +58 -58
  222. package/script/registration/verifications/verifyAttestationAndroidKey.d.ts +5 -0
  223. package/{dist → script}/registration/verifications/verifyAttestationAndroidKey.js +22 -26
  224. package/script/registration/verifications/verifyAttestationAndroidSafetyNet.d.ts +5 -0
  225. package/{dist → script}/registration/verifications/verifyAttestationAndroidSafetyNet.js +22 -23
  226. package/script/registration/verifications/verifyAttestationApple.d.ts +2 -0
  227. package/{dist → script}/registration/verifications/verifyAttestationApple.js +15 -17
  228. package/script/registration/verifications/verifyAttestationFIDOU2F.d.ts +5 -0
  229. package/{dist → script}/registration/verifications/verifyAttestationFIDOU2F.js +12 -13
  230. package/script/registration/verifications/verifyAttestationPacked.d.ts +5 -0
  231. package/{dist → script}/registration/verifications/verifyAttestationPacked.js +17 -18
  232. package/script/registration/verifyRegistrationResponse.d.ts +85 -0
  233. package/{dist → script}/registration/verifyRegistrationResponse.js +39 -38
  234. package/script/services/defaultRootCerts/android-key.d.ts +24 -0
  235. package/{dist → script}/services/defaultRootCerts/android-key.js +0 -1
  236. package/script/services/defaultRootCerts/android-safetynet.d.ts +11 -0
  237. package/{dist → script}/services/defaultRootCerts/android-safetynet.js +0 -1
  238. package/script/services/defaultRootCerts/apple.d.ts +11 -0
  239. package/{dist → script}/services/defaultRootCerts/apple.js +0 -1
  240. package/script/services/defaultRootCerts/mds.d.ts +11 -0
  241. package/{dist → script}/services/defaultRootCerts/mds.js +0 -1
  242. package/script/services/metadataService.d.ts +53 -0
  243. package/script/services/metadataService.js +277 -0
  244. package/script/services/settingsService.d.ts +25 -0
  245. package/{dist → script}/services/settingsService.js +21 -13
  246. package/dist/authentication/generateAuthenticationOptions.js.map +0 -1
  247. package/dist/authentication/verifyAuthenticationResponse.js.map +0 -1
  248. package/dist/helpers/convertAAGUIDToString.js.map +0 -1
  249. package/dist/helpers/convertCOSEtoPKCS.js.map +0 -1
  250. package/dist/helpers/convertCertBufferToPEM.js.map +0 -1
  251. package/dist/helpers/convertPEMToBytes.js.map +0 -1
  252. package/dist/helpers/convertX509PublicKeyToCOSE.js.map +0 -1
  253. package/dist/helpers/cose.js.map +0 -1
  254. package/dist/helpers/decodeAttestationObject.js +0 -14
  255. package/dist/helpers/decodeAttestationObject.js.map +0 -1
  256. package/dist/helpers/decodeAuthenticatorExtensions.js.map +0 -1
  257. package/dist/helpers/decodeClientDataJSON.js +0 -14
  258. package/dist/helpers/decodeClientDataJSON.js.map +0 -1
  259. package/dist/helpers/decodeCredentialPublicKey.d.ts +0 -2
  260. package/dist/helpers/decodeCredentialPublicKey.js +0 -9
  261. package/dist/helpers/decodeCredentialPublicKey.js.map +0 -1
  262. package/dist/helpers/generateChallenge.d.ts +0 -4
  263. package/dist/helpers/generateChallenge.js.map +0 -1
  264. package/dist/helpers/getCertificateInfo.js.map +0 -1
  265. package/dist/helpers/index.d.ts +0 -22
  266. package/dist/helpers/index.js +0 -60
  267. package/dist/helpers/index.js.map +0 -1
  268. package/dist/helpers/isCertRevoked.js.map +0 -1
  269. package/dist/helpers/iso/index.js.map +0 -1
  270. package/dist/helpers/iso/isoBase64URL.js.map +0 -1
  271. package/dist/helpers/iso/isoCBOR.js.map +0 -1
  272. package/dist/helpers/iso/isoCrypto/digest.js +0 -21
  273. package/dist/helpers/iso/isoCrypto/digest.js.map +0 -1
  274. package/dist/helpers/iso/isoCrypto/getRandomValues.js +0 -18
  275. package/dist/helpers/iso/isoCrypto/getRandomValues.js.map +0 -1
  276. package/dist/helpers/iso/isoCrypto/importKey.js +0 -13
  277. package/dist/helpers/iso/isoCrypto/importKey.js.map +0 -1
  278. package/dist/helpers/iso/isoCrypto/index.d.ts +0 -3
  279. package/dist/helpers/iso/isoCrypto/index.js.map +0 -1
  280. package/dist/helpers/iso/isoCrypto/mapCoseAlgToWebCryptoAlg.js.map +0 -1
  281. package/dist/helpers/iso/isoCrypto/mapCoseAlgToWebCryptoKeyAlgName.js.map +0 -1
  282. package/dist/helpers/iso/isoCrypto/structs.js.map +0 -1
  283. package/dist/helpers/iso/isoCrypto/unwrapEC2Signature.js.map +0 -1
  284. package/dist/helpers/iso/isoCrypto/verify.js +0 -28
  285. package/dist/helpers/iso/isoCrypto/verify.js.map +0 -1
  286. package/dist/helpers/iso/isoCrypto/verifyEC2.js.map +0 -1
  287. package/dist/helpers/iso/isoCrypto/verifyOKP.js.map +0 -1
  288. package/dist/helpers/iso/isoCrypto/verifyRSA.js.map +0 -1
  289. package/dist/helpers/iso/isoUint8Array.js.map +0 -1
  290. package/dist/helpers/logging.js.map +0 -1
  291. package/dist/helpers/mapX509SignatureAlgToCOSEAlg.js.map +0 -1
  292. package/dist/helpers/matchExpectedRPID.js.map +0 -1
  293. package/dist/helpers/parseAuthenticatorData.js.map +0 -1
  294. package/dist/helpers/parseBackupFlags.js.map +0 -1
  295. package/dist/helpers/toHash.js.map +0 -1
  296. package/dist/helpers/validateCertificatePath.js.map +0 -1
  297. package/dist/helpers/verifySignature.js +0 -33
  298. package/dist/helpers/verifySignature.js.map +0 -1
  299. package/dist/index.d.ts +0 -17
  300. package/dist/index.js +0 -20
  301. package/dist/index.js.map +0 -1
  302. package/dist/metadata/mdsTypes.js.map +0 -1
  303. package/dist/metadata/parseJWT.js.map +0 -1
  304. package/dist/metadata/verifyAttestationWithMetadata.js.map +0 -1
  305. package/dist/metadata/verifyJWT.js +0 -42
  306. package/dist/metadata/verifyJWT.js.map +0 -1
  307. package/dist/registration/generateRegistrationOptions.js.map +0 -1
  308. package/dist/registration/verifications/tpm/constants.js.map +0 -1
  309. package/dist/registration/verifications/tpm/parseCertInfo.js.map +0 -1
  310. package/dist/registration/verifications/tpm/parsePubArea.js.map +0 -1
  311. package/dist/registration/verifications/tpm/verifyAttestationTPM.js.map +0 -1
  312. package/dist/registration/verifications/verifyAttestationAndroidKey.js.map +0 -1
  313. package/dist/registration/verifications/verifyAttestationAndroidSafetyNet.js.map +0 -1
  314. package/dist/registration/verifications/verifyAttestationApple.js.map +0 -1
  315. package/dist/registration/verifications/verifyAttestationFIDOU2F.js.map +0 -1
  316. package/dist/registration/verifications/verifyAttestationPacked.js.map +0 -1
  317. package/dist/registration/verifyRegistrationResponse.js.map +0 -1
  318. package/dist/services/defaultRootCerts/android-key.js.map +0 -1
  319. package/dist/services/defaultRootCerts/android-safetynet.js.map +0 -1
  320. package/dist/services/defaultRootCerts/apple.js.map +0 -1
  321. package/dist/services/defaultRootCerts/mds.js.map +0 -1
  322. package/dist/services/metadataService.js.map +0 -1
  323. package/dist/services/settingsService.js.map +0 -1
  324. /package/{dist → esm}/helpers/convertAAGUIDToString.d.ts +0 -0
  325. /package/{dist → esm}/helpers/convertCOSEtoPKCS.d.ts +0 -0
  326. /package/{dist → esm}/helpers/convertPEMToBytes.d.ts +0 -0
  327. /package/{dist → esm}/helpers/decodeAuthenticatorExtensions.d.ts +0 -0
  328. /package/{dist → esm}/helpers/iso/isoBase64URL.d.ts +0 -0
  329. /package/{dist → esm}/helpers/iso/isoCrypto/importKey.d.ts +0 -0
  330. /package/{dist → esm}/helpers/iso/isoCrypto/structs.d.ts +0 -0
  331. /package/{dist → esm}/helpers/iso/isoCrypto/unwrapEC2Signature.d.ts +0 -0
  332. /package/{dist → esm}/helpers/iso/isoUint8Array.d.ts +0 -0
  333. /package/{dist → esm}/helpers/matchExpectedRPID.d.ts +0 -0
  334. /package/{dist → esm}/helpers/validateCertificatePath.d.ts +0 -0
  335. /package/{dist → esm}/metadata/parseJWT.d.ts +0 -0
  336. /package/{dist → esm}/metadata/verifyJWT.d.ts +0 -0
  337. /package/{dist → esm}/registration/verifications/tpm/constants.d.ts +0 -0
  338. /package/{dist → esm}/registration/verifications/tpm/parseCertInfo.d.ts +0 -0
  339. /package/{dist → esm}/registration/verifications/tpm/parsePubArea.d.ts +0 -0
  340. /package/{dist → esm}/services/defaultRootCerts/android-key.d.ts +0 -0
  341. /package/{dist → esm}/services/defaultRootCerts/android-safetynet.d.ts +0 -0
  342. /package/{dist → esm}/services/defaultRootCerts/apple.d.ts +0 -0
  343. /package/{dist → esm}/services/defaultRootCerts/mds.d.ts +0 -0
@@ -0,0 +1,11 @@
1
+ /**
2
+ * GlobalSign Root CA
3
+ *
4
+ * Downloaded from https://pki.goog/roots.pem
5
+ *
6
+ * Valid until 2028-01-28 @ 04:00 PST
7
+ *
8
+ * SHA256 Fingerprint
9
+ * EB:D4:10:40:E4:BB:3E:C7:42:C9:E3:81:D3:1E:F2:A4:1A:48:B6:68:5C:96:E7:CE:F3:C1:DF:6C:D4:33:1C:99
10
+ */
11
+ export declare const GlobalSign_Root_CA = "-----BEGIN CERTIFICATE-----\nMIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG\nA1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv\nb3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw\nMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i\nYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT\naWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ\njc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp\nxy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp\n1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG\nsnUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ\nU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8\n9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E\nBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B\nAQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz\nyj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE\n38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP\nAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad\nDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME\nHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==\n-----END CERTIFICATE-----\n";
@@ -33,4 +33,3 @@ DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME
33
33
  HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
34
34
  -----END CERTIFICATE-----
35
35
  `;
36
- //# sourceMappingURL=android-safetynet.js.map
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Apple WebAuthn Root CA
3
+ *
4
+ * Downloaded from https://www.apple.com/certificateauthority/Apple_WebAuthn_Root_CA.pem
5
+ *
6
+ * Valid until 2045-03-14 @ 17:00 PST
7
+ *
8
+ * SHA256 Fingerprint
9
+ * 09:15:DD:5C:07:A2:8D:B5:49:D1:F6:77:BB:5A:75:D4:BF:BE:95:61:A7:73:42:43:27:76:2E:9E:02:F9:BB:29
10
+ */
11
+ export declare const Apple_WebAuthn_Root_CA = "-----BEGIN CERTIFICATE-----\nMIICEjCCAZmgAwIBAgIQaB0BbHo84wIlpQGUKEdXcTAKBggqhkjOPQQDAzBLMR8w\nHQYDVQQDDBZBcHBsZSBXZWJBdXRobiBSb290IENBMRMwEQYDVQQKDApBcHBsZSBJ\nbmMuMRMwEQYDVQQIDApDYWxpZm9ybmlhMB4XDTIwMDMxODE4MjEzMloXDTQ1MDMx\nNTAwMDAwMFowSzEfMB0GA1UEAwwWQXBwbGUgV2ViQXV0aG4gUm9vdCBDQTETMBEG\nA1UECgwKQXBwbGUgSW5jLjETMBEGA1UECAwKQ2FsaWZvcm5pYTB2MBAGByqGSM49\nAgEGBSuBBAAiA2IABCJCQ2pTVhzjl4Wo6IhHtMSAzO2cv+H9DQKev3//fG59G11k\nxu9eI0/7o6V5uShBpe1u6l6mS19S1FEh6yGljnZAJ+2GNP1mi/YK2kSXIuTHjxA/\npcoRf7XkOtO4o1qlcaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUJtdk\n2cV4wlpn0afeaxLQG2PxxtcwDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2cA\nMGQCMFrZ+9DsJ1PW9hfNdBywZDsWDbWFp28it1d/5w2RPkRX3Bbn/UbDTNLx7Jr3\njAGGiQIwHFj+dJZYUJR786osByBelJYsVZd2GbHQu209b5RCmGQ21gpSAk9QZW4B\n1bWeT0vT\n-----END CERTIFICATE-----\n";
@@ -26,4 +26,3 @@ jAGGiQIwHFj+dJZYUJR786osByBelJYsVZd2GbHQu209b5RCmGQ21gpSAk9QZW4B
26
26
  1bWeT0vT
27
27
  -----END CERTIFICATE-----
28
28
  `;
29
- //# sourceMappingURL=apple.js.map
@@ -0,0 +1,11 @@
1
+ /**
2
+ * GlobalSign Root CA - R3
3
+ *
4
+ * Downloaded from https://valid.r3.roots.globalsign.com/
5
+ *
6
+ * Valid until 2029-03-18 @ 00:00 PST
7
+ *
8
+ * SHA256 Fingerprint
9
+ * CB:B5:22:D7:B7:F1:27:AD:6A:01:13:86:5B:DF:1C:D4:10:2E:7D:07:59:AF:63:5A:7C:F4:72:0D:C9:63:C5:3B
10
+ */
11
+ export declare const GlobalSign_Root_CA_R3 = "-----BEGIN CERTIFICATE-----\n MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G\n A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp\n Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4\n MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG\n A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI\n hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8\n RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT\n gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm\n KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd\n QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ\n XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw\n DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o\n LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU\n RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp\n jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK\n 6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX\n mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs\n Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH\n WD9f\n -----END CERTIFICATE-----\n ";
@@ -33,4 +33,3 @@ exports.GlobalSign_Root_CA_R3 = `-----BEGIN CERTIFICATE-----
33
33
  WD9f
34
34
  -----END CERTIFICATE-----
35
35
  `;
36
- //# sourceMappingURL=mds.js.map
@@ -0,0 +1,53 @@
1
+ import type { MetadataStatement } from '../metadata/mdsTypes.js';
2
+ type VerificationMode = 'permissive' | 'strict';
3
+ /**
4
+ * A basic service for coordinating interactions with the FIDO Metadata Service. This includes BLOB
5
+ * download and parsing, and on-demand requesting and caching of individual metadata statements.
6
+ *
7
+ * https://fidoalliance.org/metadata/
8
+ */
9
+ export declare class BaseMetadataService {
10
+ private mdsCache;
11
+ private statementCache;
12
+ private state;
13
+ private verificationMode;
14
+ /**
15
+ * Prepare the service to handle remote MDS servers and/or cache local metadata statements.
16
+ *
17
+ * **Options:**
18
+ *
19
+ * @param opts.mdsServers An array of URLs to FIDO Alliance Metadata Service
20
+ * (version 3.0)-compatible servers. Defaults to the official FIDO MDS server
21
+ * @param opts.statements An array of local metadata statements
22
+ * @param opts.verificationMode How MetadataService will handle unregistered AAGUIDs. Defaults to
23
+ * `"strict"` which throws errors during registration response verification when an
24
+ * unregistered AAGUID is encountered. Set to `"permissive"` to allow registration by
25
+ * authenticators with unregistered AAGUIDs
26
+ */
27
+ initialize(opts?: {
28
+ mdsServers?: string[];
29
+ statements?: MetadataStatement[];
30
+ verificationMode?: VerificationMode;
31
+ }): Promise<void>;
32
+ /**
33
+ * Get a metadata statement for a given AAGUID.
34
+ *
35
+ * This method will coordinate updating the cache as per the `nextUpdate` property in the initial
36
+ * BLOB download.
37
+ */
38
+ getStatement(aaguid: string | Uint8Array): Promise<MetadataStatement | undefined>;
39
+ /**
40
+ * Download and process the latest BLOB from MDS
41
+ */
42
+ private downloadBlob;
43
+ /**
44
+ * A helper method to pause execution until the service is ready
45
+ */
46
+ private pauseUntilReady;
47
+ /**
48
+ * Report service status on change
49
+ */
50
+ private setState;
51
+ }
52
+ export declare const MetadataService: BaseMetadataService;
53
+ export {};
@@ -0,0 +1,277 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MetadataService = exports.BaseMetadataService = void 0;
4
+ const validateCertificatePath_js_1 = require("../helpers/validateCertificatePath.js");
5
+ const convertCertBufferToPEM_js_1 = require("../helpers/convertCertBufferToPEM.js");
6
+ const convertAAGUIDToString_js_1 = require("../helpers/convertAAGUIDToString.js");
7
+ const settingsService_js_1 = require("./settingsService.js");
8
+ const logging_js_1 = require("../helpers/logging.js");
9
+ const convertPEMToBytes_js_1 = require("../helpers/convertPEMToBytes.js");
10
+ const fetch_js_1 = require("../helpers/fetch.js");
11
+ const parseJWT_js_1 = require("../metadata/parseJWT.js");
12
+ const verifyJWT_js_1 = require("../metadata/verifyJWT.js");
13
+ const defaultURLMDS = 'https://mds.fidoalliance.org/'; // v3
14
+ var SERVICE_STATE;
15
+ (function (SERVICE_STATE) {
16
+ SERVICE_STATE[SERVICE_STATE["DISABLED"] = 0] = "DISABLED";
17
+ SERVICE_STATE[SERVICE_STATE["REFRESHING"] = 1] = "REFRESHING";
18
+ SERVICE_STATE[SERVICE_STATE["READY"] = 2] = "READY";
19
+ })(SERVICE_STATE || (SERVICE_STATE = {}));
20
+ const log = (0, logging_js_1.getLogger)('MetadataService');
21
+ /**
22
+ * A basic service for coordinating interactions with the FIDO Metadata Service. This includes BLOB
23
+ * download and parsing, and on-demand requesting and caching of individual metadata statements.
24
+ *
25
+ * https://fidoalliance.org/metadata/
26
+ */
27
+ class BaseMetadataService {
28
+ constructor() {
29
+ Object.defineProperty(this, "mdsCache", {
30
+ enumerable: true,
31
+ configurable: true,
32
+ writable: true,
33
+ value: {}
34
+ });
35
+ Object.defineProperty(this, "statementCache", {
36
+ enumerable: true,
37
+ configurable: true,
38
+ writable: true,
39
+ value: {}
40
+ });
41
+ Object.defineProperty(this, "state", {
42
+ enumerable: true,
43
+ configurable: true,
44
+ writable: true,
45
+ value: SERVICE_STATE.DISABLED
46
+ });
47
+ Object.defineProperty(this, "verificationMode", {
48
+ enumerable: true,
49
+ configurable: true,
50
+ writable: true,
51
+ value: 'strict'
52
+ });
53
+ }
54
+ /**
55
+ * Prepare the service to handle remote MDS servers and/or cache local metadata statements.
56
+ *
57
+ * **Options:**
58
+ *
59
+ * @param opts.mdsServers An array of URLs to FIDO Alliance Metadata Service
60
+ * (version 3.0)-compatible servers. Defaults to the official FIDO MDS server
61
+ * @param opts.statements An array of local metadata statements
62
+ * @param opts.verificationMode How MetadataService will handle unregistered AAGUIDs. Defaults to
63
+ * `"strict"` which throws errors during registration response verification when an
64
+ * unregistered AAGUID is encountered. Set to `"permissive"` to allow registration by
65
+ * authenticators with unregistered AAGUIDs
66
+ */
67
+ async initialize(opts = {}) {
68
+ const { mdsServers = [defaultURLMDS], statements, verificationMode } = opts;
69
+ this.setState(SERVICE_STATE.REFRESHING);
70
+ // If metadata statements are provided, load them into the cache first
71
+ if (statements?.length) {
72
+ let statementsAdded = 0;
73
+ statements.forEach((statement) => {
74
+ // Only cache statements that are for FIDO2-compatible authenticators
75
+ if (statement.aaguid) {
76
+ this.statementCache[statement.aaguid] = {
77
+ entry: {
78
+ metadataStatement: statement,
79
+ statusReports: [],
80
+ timeOfLastStatusChange: '1970-01-01',
81
+ },
82
+ url: '',
83
+ };
84
+ statementsAdded += 1;
85
+ }
86
+ });
87
+ log(`Cached ${statementsAdded} local statements`);
88
+ }
89
+ // If MDS servers are provided, then process them and add their statements to the cache
90
+ if (mdsServers?.length) {
91
+ // Get a current count so we know how many new statements we've added from MDS servers
92
+ const currentCacheCount = Object.keys(this.statementCache).length;
93
+ let numServers = mdsServers.length;
94
+ for (const url of mdsServers) {
95
+ try {
96
+ await this.downloadBlob({
97
+ url,
98
+ no: 0,
99
+ nextUpdate: new Date(0),
100
+ });
101
+ }
102
+ catch (err) {
103
+ // Notify of the error and move on
104
+ log(`Could not download BLOB from ${url}:`, err);
105
+ numServers -= 1;
106
+ }
107
+ }
108
+ // Calculate the difference to get the total number of new statements we successfully added
109
+ const newCacheCount = Object.keys(this.statementCache).length;
110
+ const cacheDiff = newCacheCount - currentCacheCount;
111
+ log(`Cached ${cacheDiff} statements from ${numServers} metadata server(s)`);
112
+ }
113
+ if (verificationMode) {
114
+ this.verificationMode = verificationMode;
115
+ }
116
+ this.setState(SERVICE_STATE.READY);
117
+ }
118
+ /**
119
+ * Get a metadata statement for a given AAGUID.
120
+ *
121
+ * This method will coordinate updating the cache as per the `nextUpdate` property in the initial
122
+ * BLOB download.
123
+ */
124
+ async getStatement(aaguid) {
125
+ if (this.state === SERVICE_STATE.DISABLED) {
126
+ return;
127
+ }
128
+ if (!aaguid) {
129
+ return;
130
+ }
131
+ if (aaguid instanceof Uint8Array) {
132
+ aaguid = (0, convertAAGUIDToString_js_1.convertAAGUIDToString)(aaguid);
133
+ }
134
+ // If a cache refresh is in progress then pause this until the service is ready
135
+ await this.pauseUntilReady();
136
+ // Try to grab a cached statement
137
+ const cachedStatement = this.statementCache[aaguid];
138
+ if (!cachedStatement) {
139
+ if (this.verificationMode === 'strict') {
140
+ // FIDO conformance requires RP's to only support registered AAGUID's
141
+ throw new Error(`No metadata statement found for aaguid "${aaguid}"`);
142
+ }
143
+ // Allow registration verification to continue without using metadata
144
+ return;
145
+ }
146
+ // If the statement points to an MDS API, check the MDS' nextUpdate to see if we need to refresh
147
+ if (cachedStatement.url) {
148
+ const mds = this.mdsCache[cachedStatement.url];
149
+ const now = new Date();
150
+ if (now > mds.nextUpdate) {
151
+ try {
152
+ this.setState(SERVICE_STATE.REFRESHING);
153
+ await this.downloadBlob(mds);
154
+ }
155
+ finally {
156
+ this.setState(SERVICE_STATE.READY);
157
+ }
158
+ }
159
+ }
160
+ const { entry } = cachedStatement;
161
+ // Check to see if the this aaguid has a status report with a "compromised" status
162
+ for (const report of entry.statusReports) {
163
+ const { status } = report;
164
+ if (status === 'USER_VERIFICATION_BYPASS' ||
165
+ status === 'ATTESTATION_KEY_COMPROMISE' ||
166
+ status === 'USER_KEY_REMOTE_COMPROMISE' ||
167
+ status === 'USER_KEY_PHYSICAL_COMPROMISE') {
168
+ throw new Error(`Detected compromised aaguid "${aaguid}"`);
169
+ }
170
+ }
171
+ return entry.metadataStatement;
172
+ }
173
+ /**
174
+ * Download and process the latest BLOB from MDS
175
+ */
176
+ async downloadBlob(mds) {
177
+ const { url, no } = mds;
178
+ // Get latest "BLOB" (FIDO's terminology, not mine)
179
+ const resp = await (0, fetch_js_1.fetch)(url);
180
+ const data = await resp.text();
181
+ // Parse the JWT
182
+ const parsedJWT = (0, parseJWT_js_1.parseJWT)(data);
183
+ const header = parsedJWT[0];
184
+ const payload = parsedJWT[1];
185
+ if (payload.no <= no) {
186
+ // From FIDO MDS docs: "also ignore the file if its number (no) is less or equal to the
187
+ // number of the last BLOB cached locally."
188
+ throw new Error(`Latest BLOB no. "${payload.no}" is not greater than previous ${no}`);
189
+ }
190
+ const headerCertsPEM = header.x5c.map(convertCertBufferToPEM_js_1.convertCertBufferToPEM);
191
+ try {
192
+ // Validate the certificate chain
193
+ const rootCerts = settingsService_js_1.SettingsService.getRootCertificates({
194
+ identifier: 'mds',
195
+ });
196
+ await (0, validateCertificatePath_js_1.validateCertificatePath)(headerCertsPEM, rootCerts);
197
+ }
198
+ catch (error) {
199
+ const _error = error;
200
+ // From FIDO MDS docs: "ignore the file if the chain cannot be verified or if one of the
201
+ // chain certificates is revoked"
202
+ throw new Error(`BLOB certificate path could not be validated: ${_error.message}`);
203
+ }
204
+ // Verify the BLOB JWT signature
205
+ const leafCert = headerCertsPEM[0];
206
+ const verified = await (0, verifyJWT_js_1.verifyJWT)(data, (0, convertPEMToBytes_js_1.convertPEMToBytes)(leafCert));
207
+ if (!verified) {
208
+ // From FIDO MDS docs: "The FIDO Server SHOULD ignore the file if the signature is invalid."
209
+ throw new Error('BLOB signature could not be verified');
210
+ }
211
+ // Cache statements for FIDO2 devices
212
+ for (const entry of payload.entries) {
213
+ // Only cache entries with an `aaguid`
214
+ if (entry.aaguid) {
215
+ this.statementCache[entry.aaguid] = { entry, url };
216
+ }
217
+ }
218
+ // Remember info about the server so we can refresh later
219
+ const [year, month, day] = payload.nextUpdate.split('-');
220
+ this.mdsCache[url] = {
221
+ ...mds,
222
+ // Store the payload `no` to make sure we're getting the next BLOB in the sequence
223
+ no: payload.no,
224
+ // Convert the nextUpdate property into a Date so we can determine when to re-download
225
+ nextUpdate: new Date(parseInt(year, 10),
226
+ // Months need to be zero-indexed
227
+ parseInt(month, 10) - 1, parseInt(day, 10)),
228
+ };
229
+ }
230
+ /**
231
+ * A helper method to pause execution until the service is ready
232
+ */
233
+ pauseUntilReady() {
234
+ if (this.state === SERVICE_STATE.READY) {
235
+ return new Promise((resolve) => {
236
+ resolve();
237
+ });
238
+ }
239
+ // State isn't ready, so set up polling
240
+ const readyPromise = new Promise((resolve, reject) => {
241
+ const totalTimeoutMS = 70000;
242
+ const intervalMS = 100;
243
+ let iterations = totalTimeoutMS / intervalMS;
244
+ // Check service state every `intervalMS` milliseconds
245
+ const intervalID = globalThis.setInterval(() => {
246
+ if (iterations < 1) {
247
+ clearInterval(intervalID);
248
+ reject(`State did not become ready in ${totalTimeoutMS / 1000} seconds`);
249
+ }
250
+ else if (this.state === SERVICE_STATE.READY) {
251
+ clearInterval(intervalID);
252
+ resolve();
253
+ }
254
+ iterations -= 1;
255
+ }, intervalMS);
256
+ });
257
+ return readyPromise;
258
+ }
259
+ /**
260
+ * Report service status on change
261
+ */
262
+ setState(newState) {
263
+ this.state = newState;
264
+ if (newState === SERVICE_STATE.DISABLED) {
265
+ log('MetadataService is DISABLED');
266
+ }
267
+ else if (newState === SERVICE_STATE.REFRESHING) {
268
+ log('MetadataService is REFRESHING');
269
+ }
270
+ else if (newState === SERVICE_STATE.READY) {
271
+ log('MetadataService is READY');
272
+ }
273
+ }
274
+ }
275
+ exports.BaseMetadataService = BaseMetadataService;
276
+ // Export a service singleton
277
+ exports.MetadataService = new BaseMetadataService();
@@ -0,0 +1,25 @@
1
+ import { AttestationFormat } from '../helpers/decodeAttestationObject.js';
2
+ type RootCertIdentifier = AttestationFormat | 'mds';
3
+ declare class BaseSettingsService {
4
+ private pemCertificates;
5
+ constructor();
6
+ /**
7
+ * Set potential root certificates for attestation formats that use them. Root certs will be tried
8
+ * one-by-one when validating a certificate path.
9
+ *
10
+ * Certificates can be specified as a raw `Buffer`, or as a PEM-formatted string. If a
11
+ * `Buffer` is passed in it will be converted to PEM format.
12
+ */
13
+ setRootCertificates(opts: {
14
+ identifier: RootCertIdentifier;
15
+ certificates: (Uint8Array | string)[];
16
+ }): void;
17
+ /**
18
+ * Get any registered root certificates for the specified attestation format
19
+ */
20
+ getRootCertificates(opts: {
21
+ identifier: RootCertIdentifier;
22
+ }): string[];
23
+ }
24
+ export declare const SettingsService: BaseSettingsService;
25
+ export {};
@@ -1,13 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SettingsService = void 0;
4
- const convertCertBufferToPEM_1 = require("../helpers/convertCertBufferToPEM");
5
- const android_safetynet_1 = require("./defaultRootCerts/android-safetynet");
6
- const android_key_1 = require("./defaultRootCerts/android-key");
7
- const apple_1 = require("./defaultRootCerts/apple");
8
- const mds_1 = require("./defaultRootCerts/mds");
4
+ const convertCertBufferToPEM_js_1 = require("../helpers/convertCertBufferToPEM.js");
5
+ const android_safetynet_js_1 = require("./defaultRootCerts/android-safetynet.js");
6
+ const android_key_js_1 = require("./defaultRootCerts/android-key.js");
7
+ const apple_js_1 = require("./defaultRootCerts/apple.js");
8
+ const mds_js_1 = require("./defaultRootCerts/mds.js");
9
9
  class BaseSettingsService {
10
10
  constructor() {
11
+ // Certificates are stored as PEM-formatted strings
12
+ Object.defineProperty(this, "pemCertificates", {
13
+ enumerable: true,
14
+ configurable: true,
15
+ writable: true,
16
+ value: void 0
17
+ });
11
18
  this.pemCertificates = new Map();
12
19
  }
13
20
  /**
@@ -22,7 +29,7 @@ class BaseSettingsService {
22
29
  const newCertificates = [];
23
30
  for (const cert of certificates) {
24
31
  if (cert instanceof Uint8Array) {
25
- newCertificates.push((0, convertCertBufferToPEM_1.convertCertBufferToPEM)(cert));
32
+ newCertificates.push((0, convertCertBufferToPEM_js_1.convertCertBufferToPEM)(cert));
26
33
  }
27
34
  else {
28
35
  newCertificates.push(cert);
@@ -34,27 +41,28 @@ class BaseSettingsService {
34
41
  * Get any registered root certificates for the specified attestation format
35
42
  */
36
43
  getRootCertificates(opts) {
37
- var _a;
38
44
  const { identifier } = opts;
39
- return (_a = this.pemCertificates.get(identifier)) !== null && _a !== void 0 ? _a : [];
45
+ return this.pemCertificates.get(identifier) ?? [];
40
46
  }
41
47
  }
42
48
  exports.SettingsService = new BaseSettingsService();
43
49
  // Initialize default certificates
44
50
  exports.SettingsService.setRootCertificates({
45
51
  identifier: 'android-key',
46
- certificates: [android_key_1.Google_Hardware_Attestation_Root_1, android_key_1.Google_Hardware_Attestation_Root_2],
52
+ certificates: [
53
+ android_key_js_1.Google_Hardware_Attestation_Root_1,
54
+ android_key_js_1.Google_Hardware_Attestation_Root_2,
55
+ ],
47
56
  });
48
57
  exports.SettingsService.setRootCertificates({
49
58
  identifier: 'android-safetynet',
50
- certificates: [android_safetynet_1.GlobalSign_Root_CA],
59
+ certificates: [android_safetynet_js_1.GlobalSign_Root_CA],
51
60
  });
52
61
  exports.SettingsService.setRootCertificates({
53
62
  identifier: 'apple',
54
- certificates: [apple_1.Apple_WebAuthn_Root_CA],
63
+ certificates: [apple_js_1.Apple_WebAuthn_Root_CA],
55
64
  });
56
65
  exports.SettingsService.setRootCertificates({
57
66
  identifier: 'mds',
58
- certificates: [mds_1.GlobalSign_Root_CA_R3],
67
+ certificates: [mds_js_1.GlobalSign_Root_CA_R3],
59
68
  });
60
- //# sourceMappingURL=settingsService.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generateAuthenticationOptions.js","sourceRoot":"","sources":["../../src/authentication/generateAuthenticationOptions.ts"],"names":[],"mappings":";;;AAOA,wCAA6D;AAC7D,oEAAiE;AAWjE;;;;;;;;;;;;GAYG;AACH,SAAgB,6BAA6B,CAC3C,UAA6C,EAAE;IAE/C,MAAM,EACJ,gBAAgB,EAChB,SAAS,GAAG,IAAA,qCAAiB,GAAE,EAC/B,OAAO,GAAG,KAAK,EACf,gBAAgB,GAAG,WAAW,EAC9B,UAAU,EACV,IAAI,GACL,GAAG,OAAO,CAAC;IAEZ;;OAEG;IACH,IAAI,UAAU,GAAG,SAAS,CAAC;IAC3B,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;QAClC,UAAU,GAAG,mBAAa,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;KACvD;IAED,OAAO;QACL,SAAS,EAAE,kBAAY,CAAC,UAAU,CAAC,UAAU,CAAC;QAC9C,gBAAgB,EAAE,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/C,GAAG,IAAI;YACP,EAAE,EAAE,kBAAY,CAAC,UAAU,CAAC,IAAI,CAAC,EAAgB,CAAC;SACnD,CAAC,CAAC;QACH,OAAO;QACP,gBAAgB;QAChB,UAAU;QACV,IAAI,EAAE,IAAI;KACX,CAAC;AACJ,CAAC;AA/BD,sEA+BC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"verifyAuthenticationResponse.js","sourceRoot":"","sources":["../../src/authentication/verifyAuthenticationResponse.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"convertAAGUIDToString.js","sourceRoot":"","sources":["../../src/helpers/convertAAGUIDToString.ts"],"names":[],"mappings":";;;AAAA,+BAAsC;AAEtC;;GAEG;AACH,SAAgB,qBAAqB,CAAC,MAAkB;IACtD,4CAA4C;IAC5C,MAAM,GAAG,GAAG,mBAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAExC,MAAM,QAAQ,GAAa;QACzB,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACf,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QAChB,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;QACjB,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;QACjB,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI;KACxB,CAAC;IAEF,kDAAkD;IAClD,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAdD,sDAcC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"convertCOSEtoPKCS.js","sourceRoot":"","sources":["../../src/helpers/convertCOSEtoPKCS.ts"],"names":[],"mappings":";;;AAAA,+BAA+C;AAC/C,iCAAoD;AAEpD;;GAEG;AACH,SAAgB,iBAAiB,CAAC,aAAyB;IACzD,iGAAiG;IACjG,gGAAgG;IAChG,6DAA6D;IAC7D,MAAM,MAAM,GAAG,aAAO,CAAC,WAAW,CAAmB,aAAa,CAAC,CAAC;IAEpE,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,eAAQ,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,eAAQ,CAAC,CAAC,CAAC,CAAC;IAEjC,IAAI,CAAC,CAAC,EAAE;QACN,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;KAClD;IAED,IAAI,CAAC,EAAE;QACL,OAAO,mBAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KAC1C;IAED,OAAO,mBAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AACxC,CAAC;AAnBD,8CAmBC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"convertCertBufferToPEM.js","sourceRoot":"","sources":["../../src/helpers/convertCertBufferToPEM.ts"],"names":[],"mappings":";;;AAEA,+BAAqC;AAErC;;GAEG;AACH,SAAgB,sBAAsB,CAAC,UAAwC;IAC7E,IAAI,OAAe,CAAC;IAEpB;;OAEG;IACH,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;QAClC,IAAI,kBAAY,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE;YACxC,OAAO,GAAG,kBAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;SAC7C;aAAM,IAAI,kBAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;YAC5C,OAAO,GAAG,UAAU,CAAC;SACtB;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;SAC1E;KACF;SAAM;QACL,OAAO,GAAG,kBAAY,CAAC,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;KACzD;IAED,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;QAC1D,MAAM,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC;QAErB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC;KAC5C;IAED,MAAM,GAAG,gCAAgC,MAAM,6BAA6B,CAAC;IAE7E,OAAO,MAAM,CAAC;AAChB,CAAC;AA5BD,wDA4BC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"convertPEMToBytes.js","sourceRoot":"","sources":["../../src/helpers/convertPEMToBytes.ts"],"names":[],"mappings":";;;AAAA,+BAAqC;AAErC;;GAEG;AACH,SAAgB,iBAAiB,CAAC,GAAW;IAC3C,MAAM,UAAU,GAAG,GAAG;SACnB,OAAO,CAAC,6BAA6B,EAAE,EAAE,CAAC;SAC1C,OAAO,CAAC,2BAA2B,EAAE,EAAE,CAAC;SACxC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAEzB,OAAO,kBAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AACrD,CAAC;AAPD,8CAOC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"convertX509PublicKeyToCOSE.js","sourceRoot":"","sources":["../../src/helpers/convertX509PublicKeyToCOSE.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"cose.js","sourceRoot":"","sources":["../../src/helpers/cose.ts"],"names":[],"mappings":";;;AAgDA,SAAgB,kBAAkB,CAChC,aAA4B;IAE5B,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC5C,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC;AAC/C,CAAC;AALD,gDAKC;AAED,SAAgB,kBAAkB,CAChC,aAA4B;IAE5B,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC5C,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC;AAC/C,CAAC;AALD,gDAKC;AAED,SAAgB,kBAAkB,CAChC,aAA4B;IAE5B,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC5C,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC;AAC/C,CAAC;AALD,gDAKC;AAED;;;;;GAKG;AACH,IAAY,QAQX;AARD,WAAY,QAAQ;IAClB,qCAAO,CAAA;IACP,qCAAO,CAAA;IACP,sCAAQ,CAAA;IACR,kCAAM,CAAA;IACN,kCAAM,CAAA;IACN,kCAAM,CAAA;IACN,kCAAM,CAAA;AACR,CAAC,EARW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAQnB;AAED;;;;GAIG;AACH,IAAY,OAIX;AAJD,WAAY,OAAO;IACjB,mCAAO,CAAA;IACP,mCAAO,CAAA;IACP,mCAAO,CAAA;AACT,CAAC,EAJW,OAAO,GAAP,eAAO,KAAP,eAAO,QAIlB;AAED,SAAgB,SAAS,CAAC,GAAuB;IAC/C,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAc,CAAC,IAAI,CAAC,CAAC;AAC7D,CAAC;AAFD,8BAEC;AAED;;;;GAIG;AACH,IAAY,OAKX;AALD,WAAY,OAAO;IACjB,qCAAQ,CAAA;IACR,qCAAQ,CAAA;IACR,qCAAQ,CAAA;IACR,2CAAW,CAAA;AACb,CAAC,EALW,OAAO,GAAP,eAAO,KAAP,eAAO,QAKlB;AAED,SAAgB,SAAS,CAAC,GAAuB;IAC/C,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAc,CAAC,IAAI,CAAC,CAAC;AAC7D,CAAC;AAFD,8BAEC;AAED;;;;GAIG;AACH,IAAY,OAaX;AAbD,WAAY,OAAO;IACjB,wCAAU,CAAA;IACV,wCAAU,CAAA;IACV,yCAAW,CAAA;IACX,yCAAW,CAAA;IACX,yCAAW,CAAA;IACX,yCAAW,CAAA;IACX,yCAAW,CAAA;IACX,2CAAY,CAAA;IACZ,0CAAY,CAAA;IACZ,0CAAY,CAAA;IACZ,0CAAY,CAAA;IACZ,wCAAY,CAAA;AACd,CAAC,EAbW,OAAO,GAAP,eAAO,KAAP,eAAO,QAalB;AAED,SAAgB,SAAS,CAAC,GAAuB;IAC/C,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAc,CAAC,IAAI,CAAC,CAAC;AAC7D,CAAC;AAFD,8BAEC"}
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.decodeAttestationObject = void 0;
4
- const iso_1 = require("./iso");
5
- /**
6
- * Convert an AttestationObject buffer to a proper object
7
- *
8
- * @param base64AttestationObject Attestation Object buffer
9
- */
10
- function decodeAttestationObject(attestationObject) {
11
- return iso_1.isoCBOR.decodeFirst(attestationObject);
12
- }
13
- exports.decodeAttestationObject = decodeAttestationObject;
14
- //# sourceMappingURL=decodeAttestationObject.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"decodeAttestationObject.js","sourceRoot":"","sources":["../../src/helpers/decodeAttestationObject.ts"],"names":[],"mappings":";;;AAAA,+BAAgC;AAEhC;;;;GAIG;AACH,SAAgB,uBAAuB,CAAC,iBAA6B;IACnE,OAAO,aAAO,CAAC,WAAW,CAAoB,iBAAiB,CAAC,CAAC;AACnE,CAAC;AAFD,0DAEC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"decodeAuthenticatorExtensions.js","sourceRoot":"","sources":["../../src/helpers/decodeAuthenticatorExtensions.ts"],"names":[],"mappings":";;;AAAA,+BAAgC;AAEhC;;;;GAIG;AACH,SAAgB,6BAA6B,CAC3C,aAAyB;IAEzB,IAAI,MAA4B,CAAC;IACjC,IAAI;QACF,MAAM,GAAG,aAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;KAC7C;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAI,GAAG,GAAY,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,4CAA4C,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;KAC7E;IAED,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC;AAZD,sEAYC;AAqBD;;;;GAIG;AACH,SAAS,sBAAsB,CAAC,KAA2B;IACzD,MAAM,MAAM,GAA+B,EAAE,CAAC;IAE9C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE;QAChC,IAAI,KAAK,YAAY,GAAG,EAAE;YACxB,MAAM,CAAC,GAAG,CAAC,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;SAC7C;aAAM;YACL,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SACrB;KACF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.decodeClientDataJSON = void 0;
4
- const iso_1 = require("./iso");
5
- /**
6
- * Decode an authenticator's base64url-encoded clientDataJSON to JSON
7
- */
8
- function decodeClientDataJSON(data) {
9
- const toString = iso_1.isoBase64URL.toString(data);
10
- const clientData = JSON.parse(toString);
11
- return clientData;
12
- }
13
- exports.decodeClientDataJSON = decodeClientDataJSON;
14
- //# sourceMappingURL=decodeClientDataJSON.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"decodeClientDataJSON.js","sourceRoot":"","sources":["../../src/helpers/decodeClientDataJSON.ts"],"names":[],"mappings":";;;AAAA,+BAAqC;AAErC;;GAEG;AACH,SAAgB,oBAAoB,CAAC,IAAY;IAC/C,MAAM,QAAQ,GAAG,kBAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAmB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAExD,OAAO,UAAU,CAAC;AACpB,CAAC;AALD,oDAKC"}
@@ -1,2 +0,0 @@
1
- import { COSEPublicKey } from './cose';
2
- export declare function decodeCredentialPublicKey(publicKey: Uint8Array): COSEPublicKey;
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.decodeCredentialPublicKey = void 0;
4
- const iso_1 = require("./iso");
5
- function decodeCredentialPublicKey(publicKey) {
6
- return iso_1.isoCBOR.decodeFirst(publicKey);
7
- }
8
- exports.decodeCredentialPublicKey = decodeCredentialPublicKey;
9
- //# sourceMappingURL=decodeCredentialPublicKey.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"decodeCredentialPublicKey.js","sourceRoot":"","sources":["../../src/helpers/decodeCredentialPublicKey.ts"],"names":[],"mappings":";;;AACA,+BAAgC;AAEhC,SAAgB,yBAAyB,CAAC,SAAqB;IAC7D,OAAO,aAAO,CAAC,WAAW,CAAgB,SAAS,CAAC,CAAC;AACvD,CAAC;AAFD,8DAEC"}
@@ -1,4 +0,0 @@
1
- /**
2
- * Generate a suitably random value to be used as an attestation or assertion challenge
3
- */
4
- export declare function generateChallenge(): Uint8Array;
@@ -1 +0,0 @@
1
- {"version":3,"file":"generateChallenge.js","sourceRoot":"","sources":["../../src/helpers/generateChallenge.ts"],"names":[],"mappings":";;;AAAA,+BAAkC;AAElC;;GAEG;AACH,SAAgB,iBAAiB;IAC/B;;;;;;;OAOG;IACH,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAErC,eAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IAErC,OAAO,SAAS,CAAC;AACnB,CAAC;AAdD,8CAcC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"getCertificateInfo.js","sourceRoot":"","sources":["../../src/helpers/getCertificateInfo.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- import { convertAAGUIDToString } from './convertAAGUIDToString';
2
- import { convertCertBufferToPEM } from './convertCertBufferToPEM';
3
- import { convertCOSEtoPKCS } from './convertCOSEtoPKCS';
4
- import { decodeAttestationObject } from './decodeAttestationObject';
5
- import { decodeClientDataJSON } from './decodeClientDataJSON';
6
- import { decodeCredentialPublicKey } from './decodeCredentialPublicKey';
7
- import { generateChallenge } from './generateChallenge';
8
- import { getCertificateInfo } from './getCertificateInfo';
9
- import { isCertRevoked } from './isCertRevoked';
10
- import { parseAuthenticatorData } from './parseAuthenticatorData';
11
- import { toHash } from './toHash';
12
- import { validateCertificatePath } from './validateCertificatePath';
13
- import { verifySignature } from './verifySignature';
14
- import { isoCBOR, isoBase64URL, isoUint8Array, isoCrypto } from './iso';
15
- import * as cose from './cose';
16
- export { convertAAGUIDToString, convertCertBufferToPEM, convertCOSEtoPKCS, decodeAttestationObject, decodeClientDataJSON, decodeCredentialPublicKey, generateChallenge, getCertificateInfo, isCertRevoked, parseAuthenticatorData, toHash, validateCertificatePath, verifySignature, isoCBOR, isoCrypto, isoBase64URL, isoUint8Array, cose, };
17
- import type { AttestationFormat, AttestationObject, AttestationStatement } from './decodeAttestationObject';
18
- import type { CertificateInfo } from './getCertificateInfo';
19
- import type { ClientDataJSON } from './decodeClientDataJSON';
20
- import type { COSEPublicKey } from './cose';
21
- import type { ParsedAuthenticatorData } from './parseAuthenticatorData';
22
- export type { AttestationFormat, AttestationObject, AttestationStatement, CertificateInfo, ClientDataJSON, COSEPublicKey, ParsedAuthenticatorData, };