@aws-amplify/auth 6.7.1-unstable.ab33a03.0 → 6.8.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 (398) hide show
  1. package/dist/cjs/client/apis/associateWebAuthnCredential.js +62 -0
  2. package/dist/cjs/client/apis/associateWebAuthnCredential.js.map +1 -0
  3. package/dist/cjs/client/apis/deleteWebAuthnCredential.js +22 -0
  4. package/dist/cjs/client/apis/deleteWebAuthnCredential.js.map +1 -0
  5. package/dist/cjs/client/apis/index.js +13 -0
  6. package/dist/cjs/client/apis/index.js.map +1 -0
  7. package/dist/cjs/client/apis/listWebAuthnCredentials.js +23 -0
  8. package/dist/cjs/client/apis/listWebAuthnCredentials.js.map +1 -0
  9. package/dist/cjs/client/flows/shared/handlePasswordSRP.js +79 -0
  10. package/dist/cjs/client/flows/shared/handlePasswordSRP.js.map +1 -0
  11. package/dist/cjs/client/flows/userAuth/handleSelectChallenge.js +46 -0
  12. package/dist/cjs/client/flows/userAuth/handleSelectChallenge.js.map +1 -0
  13. package/dist/cjs/client/flows/userAuth/handleSelectChallengeWithPassword.js +59 -0
  14. package/dist/cjs/client/flows/userAuth/handleSelectChallengeWithPassword.js.map +1 -0
  15. package/dist/cjs/client/flows/userAuth/handleSelectChallengeWithPasswordSRP.js +74 -0
  16. package/dist/cjs/client/flows/userAuth/handleSelectChallengeWithPasswordSRP.js.map +1 -0
  17. package/dist/cjs/client/flows/userAuth/handleUserAuthFlow.js +84 -0
  18. package/dist/cjs/client/flows/userAuth/handleUserAuthFlow.js.map +1 -0
  19. package/dist/cjs/client/flows/userAuth/handleWebAuthnSignInResult.js +88 -0
  20. package/dist/cjs/client/flows/userAuth/handleWebAuthnSignInResult.js.map +1 -0
  21. package/dist/cjs/client/utils/index.js +9 -0
  22. package/dist/cjs/client/utils/index.js.map +1 -0
  23. package/dist/cjs/client/utils/passkey/errors.js +180 -0
  24. package/dist/cjs/client/utils/passkey/errors.js.map +1 -0
  25. package/dist/cjs/client/utils/passkey/getIsPasskeySupported.js +20 -0
  26. package/dist/cjs/client/utils/passkey/getIsPasskeySupported.js.map +1 -0
  27. package/dist/cjs/client/utils/passkey/getIsPasskeySupported.native.js +12 -0
  28. package/dist/cjs/client/utils/passkey/getIsPasskeySupported.native.js.map +1 -0
  29. package/dist/cjs/client/utils/passkey/getPasskey.js +27 -0
  30. package/dist/cjs/client/utils/passkey/getPasskey.js.map +1 -0
  31. package/dist/cjs/client/utils/passkey/getPasskey.native.js +12 -0
  32. package/dist/cjs/client/utils/passkey/getPasskey.native.js.map +1 -0
  33. package/dist/cjs/client/utils/passkey/index.js +11 -0
  34. package/dist/cjs/client/utils/passkey/index.js.map +1 -0
  35. package/dist/cjs/client/utils/passkey/registerPasskey.js +32 -0
  36. package/dist/cjs/client/utils/passkey/registerPasskey.js.map +1 -0
  37. package/dist/cjs/client/utils/passkey/registerPasskey.native.js +12 -0
  38. package/dist/cjs/client/utils/passkey/registerPasskey.native.js.map +1 -0
  39. package/dist/cjs/client/utils/passkey/serde.js +106 -0
  40. package/dist/cjs/client/utils/passkey/serde.js.map +1 -0
  41. package/dist/cjs/client/utils/passkey/types/index.js +25 -0
  42. package/dist/cjs/client/utils/passkey/types/index.js.map +1 -0
  43. package/dist/cjs/client/utils/passkey/types/shared.js +18 -0
  44. package/dist/cjs/client/utils/passkey/types/shared.js.map +1 -0
  45. package/dist/cjs/client/utils/store/autoSignInStore.js +45 -0
  46. package/dist/cjs/client/utils/store/autoSignInStore.js.map +1 -0
  47. package/dist/cjs/client/utils/store/index.js +9 -0
  48. package/dist/cjs/client/utils/store/index.js.map +1 -0
  49. package/dist/cjs/client/utils/store/signInStore.js.map +1 -0
  50. package/dist/cjs/client/utils/store/types.js +6 -0
  51. package/dist/cjs/client/utils/store/types.js.map +1 -0
  52. package/dist/cjs/foundation/apis/deleteWebAuthnCredential.js +33 -0
  53. package/dist/cjs/foundation/apis/deleteWebAuthnCredential.js.map +1 -0
  54. package/dist/cjs/foundation/apis/index.js +11 -0
  55. package/dist/cjs/foundation/apis/index.js.map +1 -0
  56. package/dist/cjs/foundation/apis/listWebAuthnCredentials.js +46 -0
  57. package/dist/cjs/foundation/apis/listWebAuthnCredentials.js.map +1 -0
  58. package/dist/cjs/foundation/convert/base64url/convertArrayBufferToBase64Url.js +21 -0
  59. package/dist/cjs/foundation/convert/base64url/convertArrayBufferToBase64Url.js.map +1 -0
  60. package/dist/cjs/foundation/convert/base64url/convertBase64UrlToArrayBuffer.js +17 -0
  61. package/dist/cjs/foundation/convert/base64url/convertBase64UrlToArrayBuffer.js.map +1 -0
  62. package/dist/cjs/foundation/convert/base64url/index.js +11 -0
  63. package/dist/cjs/foundation/convert/base64url/index.js.map +1 -0
  64. package/dist/cjs/foundation/convert/index.js +10 -0
  65. package/dist/cjs/foundation/convert/index.js.map +1 -0
  66. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/createCompleteWebAuthnRegistrationClient.js +16 -0
  67. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/createCompleteWebAuthnRegistrationClient.js.map +1 -0
  68. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/createDeleteWebAuthnCredentialClient.js +16 -0
  69. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/createDeleteWebAuthnCredentialClient.js.map +1 -0
  70. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/createListWebAuthnCredentialsClient.js +16 -0
  71. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/createListWebAuthnCredentialsClient.js.map +1 -0
  72. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/createSignUpClient.js +33 -4
  73. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/createSignUpClient.js.map +1 -1
  74. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/createStartWebAuthnRegistrationClient.js +16 -0
  75. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/createStartWebAuthnRegistrationClient.js.map +1 -0
  76. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/index.js +9 -1
  77. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/index.js.map +1 -1
  78. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/types/errors.js +44 -0
  79. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/types/errors.js.map +1 -0
  80. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/types/index.js +3 -2
  81. package/dist/cjs/foundation/factories/serviceClients/cognitoIdentityProvider/types/index.js.map +1 -1
  82. package/dist/cjs/foundation/types/index.js +6 -0
  83. package/dist/cjs/foundation/types/index.js.map +1 -0
  84. package/dist/cjs/foundation/types/inputs.js +6 -0
  85. package/dist/cjs/foundation/types/inputs.js.map +1 -0
  86. package/dist/cjs/foundation/types/models.js +6 -0
  87. package/dist/cjs/foundation/types/models.js.map +1 -0
  88. package/dist/cjs/foundation/types/outputs.js +6 -0
  89. package/dist/cjs/foundation/types/outputs.js.map +1 -0
  90. package/dist/cjs/index.js +6 -1
  91. package/dist/cjs/index.js.map +1 -1
  92. package/dist/cjs/providers/cognito/apis/autoSignIn.js +6 -2
  93. package/dist/cjs/providers/cognito/apis/autoSignIn.js.map +1 -1
  94. package/dist/cjs/providers/cognito/apis/confirmSignIn.js +4 -4
  95. package/dist/cjs/providers/cognito/apis/confirmSignIn.js.map +1 -1
  96. package/dist/cjs/providers/cognito/apis/confirmSignUp.js +8 -5
  97. package/dist/cjs/providers/cognito/apis/confirmSignUp.js.map +1 -1
  98. package/dist/cjs/providers/cognito/apis/signIn.js +9 -0
  99. package/dist/cjs/providers/cognito/apis/signIn.js.map +1 -1
  100. package/dist/cjs/providers/cognito/apis/signInWithCustomAuth.js +4 -4
  101. package/dist/cjs/providers/cognito/apis/signInWithCustomAuth.js.map +1 -1
  102. package/dist/cjs/providers/cognito/apis/signInWithCustomSRPAuth.js +4 -4
  103. package/dist/cjs/providers/cognito/apis/signInWithCustomSRPAuth.js.map +1 -1
  104. package/dist/cjs/providers/cognito/apis/signInWithSRP.js +7 -4
  105. package/dist/cjs/providers/cognito/apis/signInWithSRP.js.map +1 -1
  106. package/dist/cjs/providers/cognito/apis/signInWithUserAuth.js +102 -0
  107. package/dist/cjs/providers/cognito/apis/signInWithUserAuth.js.map +1 -0
  108. package/dist/cjs/providers/cognito/apis/signInWithUserPassword.js +7 -4
  109. package/dist/cjs/providers/cognito/apis/signInWithUserPassword.js.map +1 -1
  110. package/dist/cjs/providers/cognito/apis/signUp.js +56 -49
  111. package/dist/cjs/providers/cognito/apis/signUp.js.map +1 -1
  112. package/dist/cjs/providers/cognito/utils/signInHelpers.js +60 -42
  113. package/dist/cjs/providers/cognito/utils/signInHelpers.js.map +1 -1
  114. package/dist/cjs/providers/cognito/utils/signUpHelpers.js +5 -31
  115. package/dist/cjs/providers/cognito/utils/signUpHelpers.js.map +1 -1
  116. package/dist/esm/client/apis/associateWebAuthnCredential.d.ts +14 -0
  117. package/dist/esm/client/apis/associateWebAuthnCredential.mjs +69 -0
  118. package/dist/esm/client/apis/associateWebAuthnCredential.mjs.map +1 -0
  119. package/dist/esm/client/apis/deleteWebAuthnCredential.d.ts +11 -0
  120. package/dist/esm/client/apis/deleteWebAuthnCredential.mjs +29 -0
  121. package/dist/esm/client/apis/deleteWebAuthnCredential.mjs.map +1 -0
  122. package/dist/esm/client/apis/index.d.ts +3 -0
  123. package/dist/esm/client/apis/index.mjs +4 -0
  124. package/dist/esm/client/apis/index.mjs.map +1 -0
  125. package/dist/esm/client/apis/listWebAuthnCredentials.d.ts +12 -0
  126. package/dist/esm/client/apis/listWebAuthnCredentials.mjs +30 -0
  127. package/dist/esm/client/apis/listWebAuthnCredentials.mjs.map +1 -0
  128. package/dist/esm/client/flows/shared/handlePasswordSRP.d.ts +31 -0
  129. package/dist/esm/client/flows/shared/handlePasswordSRP.mjs +86 -0
  130. package/dist/esm/client/flows/shared/handlePasswordSRP.mjs.map +1 -0
  131. package/dist/esm/client/flows/userAuth/handleSelectChallenge.d.ts +23 -0
  132. package/dist/esm/client/flows/userAuth/handleSelectChallenge.mjs +51 -0
  133. package/dist/esm/client/flows/userAuth/handleSelectChallenge.mjs.map +1 -0
  134. package/dist/esm/client/flows/userAuth/handleSelectChallengeWithPassword.d.ts +16 -0
  135. package/dist/esm/client/flows/userAuth/handleSelectChallengeWithPassword.mjs +64 -0
  136. package/dist/esm/client/flows/userAuth/handleSelectChallengeWithPassword.mjs.map +1 -0
  137. package/dist/esm/client/flows/userAuth/handleSelectChallengeWithPasswordSRP.d.ts +18 -0
  138. package/dist/esm/client/flows/userAuth/handleSelectChallengeWithPasswordSRP.mjs +81 -0
  139. package/dist/esm/client/flows/userAuth/handleSelectChallengeWithPasswordSRP.mjs.map +1 -0
  140. package/dist/esm/client/flows/userAuth/handleUserAuthFlow.d.ts +27 -0
  141. package/dist/esm/client/flows/userAuth/handleUserAuthFlow.mjs +88 -0
  142. package/dist/esm/client/flows/userAuth/handleUserAuthFlow.mjs.map +1 -0
  143. package/dist/esm/client/flows/userAuth/handleWebAuthnSignInResult.d.ts +3 -0
  144. package/dist/esm/client/flows/userAuth/handleWebAuthnSignInResult.mjs +93 -0
  145. package/dist/esm/client/flows/userAuth/handleWebAuthnSignInResult.mjs.map +1 -0
  146. package/dist/esm/client/utils/index.d.ts +1 -0
  147. package/dist/esm/client/utils/index.mjs +4 -0
  148. package/dist/esm/client/utils/index.mjs.map +1 -0
  149. package/dist/esm/client/utils/passkey/errors.d.ts +33 -0
  150. package/dist/esm/client/utils/passkey/errors.mjs +176 -0
  151. package/dist/esm/client/utils/passkey/errors.mjs.map +1 -0
  152. package/dist/esm/client/utils/passkey/getIsPasskeySupported.d.ts +6 -0
  153. package/dist/esm/client/utils/passkey/getIsPasskeySupported.mjs +18 -0
  154. package/dist/esm/client/utils/passkey/getIsPasskeySupported.mjs.map +1 -0
  155. package/dist/esm/client/utils/passkey/getIsPasskeySupported.native.d.ts +1 -0
  156. package/dist/esm/client/utils/passkey/getIsPasskeySupported.native.mjs +10 -0
  157. package/dist/esm/client/utils/passkey/getIsPasskeySupported.native.mjs.map +1 -0
  158. package/dist/esm/client/utils/passkey/getPasskey.d.ts +2 -0
  159. package/dist/esm/client/utils/passkey/getPasskey.mjs +25 -0
  160. package/dist/esm/client/utils/passkey/getPasskey.mjs.map +1 -0
  161. package/dist/esm/client/utils/passkey/getPasskey.native.d.ts +1 -0
  162. package/dist/esm/client/utils/passkey/getPasskey.native.mjs +10 -0
  163. package/dist/esm/client/utils/passkey/getPasskey.native.mjs.map +1 -0
  164. package/dist/esm/client/utils/passkey/index.d.ts +2 -0
  165. package/dist/esm/client/utils/passkey/index.mjs +3 -0
  166. package/dist/esm/client/utils/passkey/index.mjs.map +1 -0
  167. package/dist/esm/client/utils/passkey/registerPasskey.d.ts +7 -0
  168. package/dist/esm/client/utils/passkey/registerPasskey.mjs +30 -0
  169. package/dist/esm/client/utils/passkey/registerPasskey.mjs.map +1 -0
  170. package/dist/esm/client/utils/passkey/registerPasskey.native.d.ts +1 -0
  171. package/dist/esm/client/utils/passkey/registerPasskey.native.mjs +10 -0
  172. package/dist/esm/client/utils/passkey/registerPasskey.native.mjs.map +1 -0
  173. package/dist/esm/client/utils/passkey/serde.d.ts +25 -0
  174. package/dist/esm/client/utils/passkey/serde.mjs +102 -0
  175. package/dist/esm/client/utils/passkey/serde.mjs.map +1 -0
  176. package/dist/esm/client/utils/passkey/types/index.d.ts +16 -0
  177. package/dist/esm/client/utils/passkey/types/index.mjs +18 -0
  178. package/dist/esm/client/utils/passkey/types/index.mjs.map +1 -0
  179. package/dist/esm/client/utils/passkey/types/shared.d.ts +106 -0
  180. package/dist/esm/client/utils/passkey/types/shared.mjs +16 -0
  181. package/dist/esm/client/utils/passkey/types/shared.mjs.map +1 -0
  182. package/dist/esm/client/utils/store/autoSignInStore.d.ts +21 -0
  183. package/dist/esm/client/utils/store/autoSignInStore.mjs +43 -0
  184. package/dist/esm/client/utils/store/autoSignInStore.mjs.map +1 -0
  185. package/dist/esm/client/utils/store/index.d.ts +2 -0
  186. package/dist/esm/client/utils/store/index.mjs +3 -0
  187. package/dist/esm/client/utils/store/index.mjs.map +1 -0
  188. package/dist/esm/{providers/cognito/utils → client/utils/store}/signInStore.d.ts +1 -1
  189. package/dist/esm/client/utils/store/signInStore.mjs.map +1 -0
  190. package/dist/esm/client/utils/store/types.d.ts +5 -0
  191. package/dist/esm/client/utils/store/types.mjs +2 -0
  192. package/dist/esm/client/utils/store/types.mjs.map +1 -0
  193. package/dist/esm/foundation/apis/deleteWebAuthnCredential.d.ts +3 -0
  194. package/dist/esm/foundation/apis/deleteWebAuthnCredential.mjs +38 -0
  195. package/dist/esm/foundation/apis/deleteWebAuthnCredential.mjs.map +1 -0
  196. package/dist/esm/foundation/apis/index.d.ts +2 -0
  197. package/dist/esm/foundation/apis/index.mjs +3 -0
  198. package/dist/esm/foundation/apis/index.mjs.map +1 -0
  199. package/dist/esm/foundation/apis/listWebAuthnCredentials.d.ts +3 -0
  200. package/dist/esm/foundation/apis/listWebAuthnCredentials.mjs +51 -0
  201. package/dist/esm/foundation/apis/listWebAuthnCredentials.mjs.map +1 -0
  202. package/dist/esm/foundation/convert/base64url/convertArrayBufferToBase64Url.d.ts +6 -0
  203. package/dist/esm/foundation/convert/base64url/convertArrayBufferToBase64Url.mjs +19 -0
  204. package/dist/esm/foundation/convert/base64url/convertArrayBufferToBase64Url.mjs.map +1 -0
  205. package/dist/esm/foundation/convert/base64url/convertBase64UrlToArrayBuffer.d.ts +6 -0
  206. package/dist/esm/foundation/convert/base64url/convertBase64UrlToArrayBuffer.mjs +15 -0
  207. package/dist/esm/foundation/convert/base64url/convertBase64UrlToArrayBuffer.mjs.map +1 -0
  208. package/dist/esm/foundation/convert/base64url/index.d.ts +2 -0
  209. package/dist/esm/foundation/convert/base64url/index.mjs +3 -0
  210. package/dist/esm/foundation/convert/base64url/index.mjs.map +1 -0
  211. package/dist/esm/foundation/convert/index.d.ts +1 -0
  212. package/dist/esm/foundation/convert/index.mjs +3 -0
  213. package/dist/esm/foundation/convert/index.mjs.map +1 -0
  214. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createCompleteWebAuthnRegistrationClient.d.ts +13 -0
  215. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createCompleteWebAuthnRegistrationClient.mjs +17 -0
  216. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createCompleteWebAuthnRegistrationClient.mjs.map +1 -0
  217. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createDeleteWebAuthnCredentialClient.d.ts +13 -0
  218. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createDeleteWebAuthnCredentialClient.mjs +17 -0
  219. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createDeleteWebAuthnCredentialClient.mjs.map +1 -0
  220. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createListWebAuthnCredentialsClient.d.ts +13 -0
  221. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createListWebAuthnCredentialsClient.mjs +17 -0
  222. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createListWebAuthnCredentialsClient.mjs.map +1 -0
  223. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createSignUpClient.d.ts +3 -1
  224. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createSignUpClient.mjs +32 -7
  225. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createSignUpClient.mjs.map +1 -1
  226. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createStartWebAuthnRegistrationClient.d.ts +13 -0
  227. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createStartWebAuthnRegistrationClient.mjs +17 -0
  228. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/createStartWebAuthnRegistrationClient.mjs.map +1 -0
  229. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/index.d.ts +4 -0
  230. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/index.mjs +4 -0
  231. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/index.mjs.map +1 -1
  232. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/shared/serde/createUserPoolSerializer.d.ts +1 -1
  233. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/types/errors.d.ts +37 -0
  234. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/types/errors.mjs +46 -0
  235. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/types/errors.mjs.map +1 -0
  236. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/types/index.d.ts +1 -0
  237. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/types/index.mjs +1 -1
  238. package/dist/esm/foundation/factories/serviceClients/cognitoIdentityProvider/types/sdk.d.ts +109 -5
  239. package/dist/esm/foundation/types/index.d.ts +3 -0
  240. package/dist/esm/foundation/types/index.mjs +2 -0
  241. package/dist/esm/foundation/types/index.mjs.map +1 -0
  242. package/dist/esm/foundation/types/inputs.d.ts +10 -0
  243. package/dist/esm/foundation/types/inputs.mjs +2 -0
  244. package/dist/esm/foundation/types/inputs.mjs.map +1 -0
  245. package/dist/esm/foundation/types/models.d.ts +11 -0
  246. package/dist/esm/foundation/types/models.mjs +2 -0
  247. package/dist/esm/foundation/types/models.mjs.map +1 -0
  248. package/dist/esm/foundation/types/outputs.d.ts +8 -0
  249. package/dist/esm/foundation/types/outputs.mjs +2 -0
  250. package/dist/esm/foundation/types/outputs.mjs.map +1 -0
  251. package/dist/esm/index.d.ts +3 -0
  252. package/dist/esm/index.mjs +3 -0
  253. package/dist/esm/index.mjs.map +1 -1
  254. package/dist/esm/providers/cognito/apis/autoSignIn.d.ts +1 -1
  255. package/dist/esm/providers/cognito/apis/autoSignIn.mjs +7 -2
  256. package/dist/esm/providers/cognito/apis/autoSignIn.mjs.map +1 -1
  257. package/dist/esm/providers/cognito/apis/confirmResetPassword.mjs +2 -0
  258. package/dist/esm/providers/cognito/apis/confirmResetPassword.mjs.map +1 -1
  259. package/dist/esm/providers/cognito/apis/confirmSignIn.mjs +2 -1
  260. package/dist/esm/providers/cognito/apis/confirmSignIn.mjs.map +1 -1
  261. package/dist/esm/providers/cognito/apis/confirmSignUp.mjs +11 -5
  262. package/dist/esm/providers/cognito/apis/confirmSignUp.mjs.map +1 -1
  263. package/dist/esm/providers/cognito/apis/confirmUserAttribute.mjs +2 -0
  264. package/dist/esm/providers/cognito/apis/confirmUserAttribute.mjs.map +1 -1
  265. package/dist/esm/providers/cognito/apis/deleteUser.mjs +3 -0
  266. package/dist/esm/providers/cognito/apis/deleteUser.mjs.map +1 -1
  267. package/dist/esm/providers/cognito/apis/deleteUserAttributes.mjs +3 -0
  268. package/dist/esm/providers/cognito/apis/deleteUserAttributes.mjs.map +1 -1
  269. package/dist/esm/providers/cognito/apis/fetchDevices.mjs +3 -0
  270. package/dist/esm/providers/cognito/apis/fetchDevices.mjs.map +1 -1
  271. package/dist/esm/providers/cognito/apis/fetchMFAPreference.mjs +3 -0
  272. package/dist/esm/providers/cognito/apis/fetchMFAPreference.mjs.map +1 -1
  273. package/dist/esm/providers/cognito/apis/forgetDevice.mjs +3 -0
  274. package/dist/esm/providers/cognito/apis/forgetDevice.mjs.map +1 -1
  275. package/dist/esm/providers/cognito/apis/internal/fetchUserAttributes.mjs +3 -0
  276. package/dist/esm/providers/cognito/apis/internal/fetchUserAttributes.mjs.map +1 -1
  277. package/dist/esm/providers/cognito/apis/rememberDevice.mjs +3 -0
  278. package/dist/esm/providers/cognito/apis/rememberDevice.mjs.map +1 -1
  279. package/dist/esm/providers/cognito/apis/resendSignUpCode.mjs +2 -0
  280. package/dist/esm/providers/cognito/apis/resendSignUpCode.mjs.map +1 -1
  281. package/dist/esm/providers/cognito/apis/resetPassword.mjs +2 -0
  282. package/dist/esm/providers/cognito/apis/resetPassword.mjs.map +1 -1
  283. package/dist/esm/providers/cognito/apis/sendUserAttributeVerificationCode.mjs +3 -0
  284. package/dist/esm/providers/cognito/apis/sendUserAttributeVerificationCode.mjs.map +1 -1
  285. package/dist/esm/providers/cognito/apis/setUpTOTP.mjs +2 -0
  286. package/dist/esm/providers/cognito/apis/setUpTOTP.mjs.map +1 -1
  287. package/dist/esm/providers/cognito/apis/signIn.mjs +9 -0
  288. package/dist/esm/providers/cognito/apis/signIn.mjs.map +1 -1
  289. package/dist/esm/providers/cognito/apis/signInWithCustomAuth.mjs +2 -1
  290. package/dist/esm/providers/cognito/apis/signInWithCustomAuth.mjs.map +1 -1
  291. package/dist/esm/providers/cognito/apis/signInWithCustomSRPAuth.mjs +2 -1
  292. package/dist/esm/providers/cognito/apis/signInWithCustomSRPAuth.mjs.map +1 -1
  293. package/dist/esm/providers/cognito/apis/signInWithSRP.mjs +5 -1
  294. package/dist/esm/providers/cognito/apis/signInWithSRP.mjs.map +1 -1
  295. package/dist/esm/providers/cognito/apis/signInWithUserAuth.d.ts +13 -0
  296. package/dist/esm/providers/cognito/apis/signInWithUserAuth.mjs +104 -0
  297. package/dist/esm/providers/cognito/apis/signInWithUserAuth.mjs.map +1 -0
  298. package/dist/esm/providers/cognito/apis/signInWithUserPassword.mjs +6 -2
  299. package/dist/esm/providers/cognito/apis/signInWithUserPassword.mjs.map +1 -1
  300. package/dist/esm/providers/cognito/apis/signOut.mjs +2 -0
  301. package/dist/esm/providers/cognito/apis/signOut.mjs.map +1 -1
  302. package/dist/esm/providers/cognito/apis/signUp.mjs +58 -50
  303. package/dist/esm/providers/cognito/apis/signUp.mjs.map +1 -1
  304. package/dist/esm/providers/cognito/apis/updateMFAPreference.mjs +3 -0
  305. package/dist/esm/providers/cognito/apis/updateMFAPreference.mjs.map +1 -1
  306. package/dist/esm/providers/cognito/apis/updatePassword.mjs +2 -0
  307. package/dist/esm/providers/cognito/apis/updatePassword.mjs.map +1 -1
  308. package/dist/esm/providers/cognito/apis/updateUserAttributes.mjs +3 -0
  309. package/dist/esm/providers/cognito/apis/updateUserAttributes.mjs.map +1 -1
  310. package/dist/esm/providers/cognito/apis/verifyTOTPSetup.mjs +2 -0
  311. package/dist/esm/providers/cognito/apis/verifyTOTPSetup.mjs.map +1 -1
  312. package/dist/esm/providers/cognito/types/index.d.ts +2 -2
  313. package/dist/esm/providers/cognito/types/inputs.d.ts +4 -0
  314. package/dist/esm/providers/cognito/types/models.d.ts +7 -1
  315. package/dist/esm/providers/cognito/types/options.d.ts +2 -1
  316. package/dist/esm/providers/cognito/types/outputs.d.ts +4 -0
  317. package/dist/esm/providers/cognito/utils/refreshAuthTokens.mjs +3 -0
  318. package/dist/esm/providers/cognito/utils/refreshAuthTokens.mjs.map +1 -1
  319. package/dist/esm/providers/cognito/utils/signInHelpers.d.ts +2 -1
  320. package/dist/esm/providers/cognito/utils/signInHelpers.mjs +56 -37
  321. package/dist/esm/providers/cognito/utils/signInHelpers.mjs.map +1 -1
  322. package/dist/esm/providers/cognito/utils/signUpHelpers.d.ts +0 -6
  323. package/dist/esm/providers/cognito/utils/signUpHelpers.mjs +5 -26
  324. package/dist/esm/providers/cognito/utils/signUpHelpers.mjs.map +1 -1
  325. package/dist/esm/types/inputs.d.ts +2 -2
  326. package/dist/esm/types/models.d.ts +9 -1
  327. package/package.json +104 -104
  328. package/src/client/apis/associateWebAuthnCredential.ts +94 -0
  329. package/src/client/apis/deleteWebAuthnCredential.ts +24 -0
  330. package/src/client/apis/index.ts +6 -0
  331. package/src/client/apis/listWebAuthnCredentials.ts +28 -0
  332. package/src/client/flows/shared/handlePasswordSRP.ts +123 -0
  333. package/src/client/flows/userAuth/handleSelectChallenge.ts +62 -0
  334. package/src/client/flows/userAuth/handleSelectChallengeWithPassword.ts +74 -0
  335. package/src/client/flows/userAuth/handleSelectChallengeWithPasswordSRP.ts +105 -0
  336. package/src/client/flows/userAuth/handleUserAuthFlow.ts +125 -0
  337. package/src/client/flows/userAuth/handleWebAuthnSignInResult.ts +130 -0
  338. package/src/client/utils/index.ts +4 -0
  339. package/src/client/utils/passkey/errors.ts +214 -0
  340. package/src/client/utils/passkey/getIsPasskeySupported.native.ts +8 -0
  341. package/src/client/utils/passkey/getIsPasskeySupported.ts +18 -0
  342. package/src/client/utils/passkey/getPasskey.native.ts +8 -0
  343. package/src/client/utils/passkey/getPasskey.ts +40 -0
  344. package/src/client/utils/passkey/index.ts +5 -0
  345. package/src/client/utils/passkey/registerPasskey.native.ts +8 -0
  346. package/src/client/utils/passkey/registerPasskey.ts +48 -0
  347. package/src/client/utils/passkey/serde.ts +151 -0
  348. package/src/client/utils/passkey/types/index.ts +61 -0
  349. package/src/client/utils/passkey/types/shared.ts +131 -0
  350. package/src/client/utils/store/autoSignInStore.ts +64 -0
  351. package/src/client/utils/store/index.ts +5 -0
  352. package/src/{providers/cognito/utils → client/utils/store}/signInStore.ts +3 -8
  353. package/src/client/utils/store/types.ts +9 -0
  354. package/src/foundation/apis/deleteWebAuthnCredential.ts +45 -0
  355. package/src/foundation/apis/index.ts +5 -0
  356. package/src/foundation/apis/listWebAuthnCredentials.ts +68 -0
  357. package/src/foundation/convert/base64url/convertArrayBufferToBase64Url.ts +18 -0
  358. package/src/foundation/convert/base64url/convertBase64UrlToArrayBuffer.ts +18 -0
  359. package/src/foundation/convert/base64url/index.ts +5 -0
  360. package/src/foundation/convert/index.ts +7 -0
  361. package/src/foundation/factories/serviceClients/cognitoIdentityProvider/createCompleteWebAuthnRegistrationClient.ts +31 -0
  362. package/src/foundation/factories/serviceClients/cognitoIdentityProvider/createDeleteWebAuthnCredentialClient.ts +31 -0
  363. package/src/foundation/factories/serviceClients/cognitoIdentityProvider/createListWebAuthnCredentialsClient.ts +31 -0
  364. package/src/foundation/factories/serviceClients/cognitoIdentityProvider/createSignUpClient.ts +44 -7
  365. package/src/foundation/factories/serviceClients/cognitoIdentityProvider/createStartWebAuthnRegistrationClient.ts +31 -0
  366. package/src/foundation/factories/serviceClients/cognitoIdentityProvider/index.ts +4 -0
  367. package/src/foundation/factories/serviceClients/cognitoIdentityProvider/shared/serde/createUserPoolSerializer.ts +5 -1
  368. package/src/foundation/factories/serviceClients/cognitoIdentityProvider/types/errors.ts +43 -0
  369. package/src/foundation/factories/serviceClients/cognitoIdentityProvider/types/index.ts +2 -0
  370. package/src/foundation/factories/serviceClients/cognitoIdentityProvider/types/sdk.ts +141 -5
  371. package/src/foundation/types/index.ts +9 -0
  372. package/src/foundation/types/inputs.ts +14 -0
  373. package/src/foundation/types/models.ts +14 -0
  374. package/src/foundation/types/outputs.ts +12 -0
  375. package/src/index.ts +14 -0
  376. package/src/providers/cognito/apis/autoSignIn.ts +6 -2
  377. package/src/providers/cognito/apis/confirmSignIn.ts +1 -1
  378. package/src/providers/cognito/apis/confirmSignUp.ts +10 -9
  379. package/src/providers/cognito/apis/signIn.ts +10 -0
  380. package/src/providers/cognito/apis/signInWithCustomAuth.ts +1 -1
  381. package/src/providers/cognito/apis/signInWithCustomSRPAuth.ts +1 -1
  382. package/src/providers/cognito/apis/signInWithSRP.ts +6 -1
  383. package/src/providers/cognito/apis/signInWithUserAuth.ts +141 -0
  384. package/src/providers/cognito/apis/signInWithUserPassword.ts +7 -2
  385. package/src/providers/cognito/apis/signUp.ts +81 -72
  386. package/src/providers/cognito/types/index.ts +2 -0
  387. package/src/providers/cognito/types/inputs.ts +5 -0
  388. package/src/providers/cognito/types/models.ts +13 -0
  389. package/src/providers/cognito/types/options.ts +7 -1
  390. package/src/providers/cognito/types/outputs.ts +5 -0
  391. package/src/providers/cognito/utils/signInHelpers.ts +77 -55
  392. package/src/providers/cognito/utils/signUpHelpers.ts +6 -31
  393. package/src/types/inputs.ts +2 -2
  394. package/src/types/models.ts +13 -0
  395. package/dist/cjs/providers/cognito/utils/signInStore.js.map +0 -1
  396. package/dist/esm/providers/cognito/utils/signInStore.mjs.map +0 -1
  397. /package/dist/cjs/{providers/cognito/utils → client/utils/store}/signInStore.js +0 -0
  398. /package/dist/esm/{providers/cognito/utils → client/utils/store}/signInStore.mjs +0 -0
@@ -0,0 +1,214 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import {
5
+ AmplifyError,
6
+ AmplifyErrorCode,
7
+ AmplifyErrorMap,
8
+ AmplifyErrorParams,
9
+ AssertionFunction,
10
+ createAssertionFunction,
11
+ } from '@aws-amplify/core/internals/utils';
12
+
13
+ export class PasskeyError extends AmplifyError {
14
+ constructor(params: AmplifyErrorParams) {
15
+ super(params);
16
+
17
+ // Hack for making the custom error class work when transpiled to es5
18
+ // TODO: Delete the following 2 lines after we change the build target to >= es2015
19
+ this.constructor = PasskeyError;
20
+ Object.setPrototypeOf(this, PasskeyError.prototype);
21
+ }
22
+ }
23
+
24
+ export enum PasskeyErrorCode {
25
+ // not supported
26
+ PasskeyNotSupported = 'PasskeyNotSupported',
27
+ // duplicate passkey
28
+ PasskeyAlreadyExists = 'PasskeyAlreadyExists',
29
+ // misconfigurations
30
+ InvalidPasskeyRegistrationOptions = 'InvalidPasskeyRegistrationOptions',
31
+ InvalidPasskeyAuthenticationOptions = 'InvalidPasskeyAuthenticationOptions',
32
+ RelyingPartyMismatch = 'RelyingPartyMismatch',
33
+ // failed credential creation / retrieval
34
+ PasskeyRegistrationFailed = 'PasskeyRegistrationFailed',
35
+ PasskeyRetrievalFailed = 'PasskeyRetrievalFailed',
36
+ // cancel / aborts
37
+ PasskeyRegistrationCanceled = 'PasskeyRegistrationCanceled',
38
+ PasskeyAuthenticationCanceled = 'PasskeyAuthenticationCanceled',
39
+ PasskeyOperationAborted = 'PasskeyOperationAborted',
40
+ }
41
+
42
+ const notSupportedRecoverySuggestion =
43
+ 'Passkeys may not be supported on this device. Ensure your application is running in a secure context (HTTPS) and Web Authentication API is supported.';
44
+ const abortOrCancelRecoverySuggestion =
45
+ 'User may have canceled the ceremony or another interruption has occurred. Check underlying error for details.';
46
+ const misconfigurationRecoverySuggestion =
47
+ 'Ensure your user pool is configured to support the WEB_AUTHN as an authentication factor.';
48
+
49
+ const passkeyErrorMap: AmplifyErrorMap<PasskeyErrorCode> = {
50
+ [PasskeyErrorCode.PasskeyNotSupported]: {
51
+ message: 'Passkeys may not be supported on this device.',
52
+ recoverySuggestion: notSupportedRecoverySuggestion,
53
+ },
54
+ [PasskeyErrorCode.InvalidPasskeyRegistrationOptions]: {
55
+ message: 'Invalid passkey registration options.',
56
+ recoverySuggestion: misconfigurationRecoverySuggestion,
57
+ },
58
+ [PasskeyErrorCode.InvalidPasskeyAuthenticationOptions]: {
59
+ message: 'Invalid passkey authentication options.',
60
+ recoverySuggestion: misconfigurationRecoverySuggestion,
61
+ },
62
+ [PasskeyErrorCode.PasskeyRegistrationFailed]: {
63
+ message: 'Device failed to create passkey.',
64
+ recoverySuggestion: notSupportedRecoverySuggestion,
65
+ },
66
+ [PasskeyErrorCode.PasskeyRetrievalFailed]: {
67
+ message: 'Device failed to retrieve passkey.',
68
+ recoverySuggestion:
69
+ 'Passkeys may not be available on this device. Try an alternative authentication factor like PASSWORD, EMAIL_OTP, or SMS_OTP.',
70
+ },
71
+ [PasskeyErrorCode.PasskeyAlreadyExists]: {
72
+ message: 'Passkey already exists in authenticator.',
73
+ recoverySuggestion:
74
+ 'Proceed with existing passkey or try again after deleting the credential.',
75
+ },
76
+ [PasskeyErrorCode.PasskeyRegistrationCanceled]: {
77
+ message: 'Passkey registration ceremony has been canceled.',
78
+ recoverySuggestion: abortOrCancelRecoverySuggestion,
79
+ },
80
+ [PasskeyErrorCode.PasskeyAuthenticationCanceled]: {
81
+ message: 'Passkey authentication ceremony has been canceled.',
82
+ recoverySuggestion: abortOrCancelRecoverySuggestion,
83
+ },
84
+ [PasskeyErrorCode.PasskeyOperationAborted]: {
85
+ message: 'Passkey operation has been aborted.',
86
+ recoverySuggestion: abortOrCancelRecoverySuggestion,
87
+ },
88
+ [PasskeyErrorCode.RelyingPartyMismatch]: {
89
+ message: 'Relying party does not match current domain.',
90
+ recoverySuggestion:
91
+ 'Ensure relying party identifier matches current domain.',
92
+ },
93
+ };
94
+
95
+ export const assertPasskeyError: AssertionFunction<PasskeyErrorCode> =
96
+ createAssertionFunction(passkeyErrorMap, PasskeyError);
97
+
98
+ /**
99
+ * Handle Passkey Authentication Errors
100
+ * https://w3c.github.io/webauthn/#sctn-get-request-exceptions
101
+ *
102
+ * @param err unknown
103
+ * @returns PasskeyError
104
+ */
105
+
106
+ export const handlePasskeyAuthenticationError = (
107
+ err: unknown,
108
+ ): PasskeyError => {
109
+ if (err instanceof PasskeyError) {
110
+ return err;
111
+ }
112
+
113
+ if (err instanceof Error) {
114
+ if (err.name === 'NotAllowedError') {
115
+ const { message, recoverySuggestion } =
116
+ passkeyErrorMap[PasskeyErrorCode.PasskeyAuthenticationCanceled];
117
+
118
+ return new PasskeyError({
119
+ name: PasskeyErrorCode.PasskeyAuthenticationCanceled,
120
+ message,
121
+ recoverySuggestion,
122
+ underlyingError: err,
123
+ });
124
+ }
125
+ }
126
+
127
+ return handlePasskeyError(err);
128
+ };
129
+
130
+ /**
131
+ * Handle Passkey Registration Errors
132
+ * https://w3c.github.io/webauthn/#sctn-create-request-exceptions
133
+ *
134
+ * @param err unknown
135
+ * @returns PasskeyError
136
+ */
137
+ export const handlePasskeyRegistrationError = (err: unknown): PasskeyError => {
138
+ if (err instanceof PasskeyError) {
139
+ return err;
140
+ }
141
+
142
+ if (err instanceof Error) {
143
+ // Duplicate Passkey
144
+ if (err.name === 'InvalidStateError') {
145
+ const { message, recoverySuggestion } =
146
+ passkeyErrorMap[PasskeyErrorCode.PasskeyAlreadyExists];
147
+
148
+ return new PasskeyError({
149
+ name: PasskeyErrorCode.PasskeyAlreadyExists,
150
+ message,
151
+ recoverySuggestion,
152
+ underlyingError: err,
153
+ });
154
+ }
155
+
156
+ // User Cancels Ceremony / Generic Catch All
157
+ if (err.name === 'NotAllowedError') {
158
+ const { message, recoverySuggestion } =
159
+ passkeyErrorMap[PasskeyErrorCode.PasskeyRegistrationCanceled];
160
+
161
+ return new PasskeyError({
162
+ name: PasskeyErrorCode.PasskeyRegistrationCanceled,
163
+ message,
164
+ recoverySuggestion,
165
+ underlyingError: err,
166
+ });
167
+ }
168
+ }
169
+
170
+ return handlePasskeyError(err);
171
+ };
172
+
173
+ /**
174
+ * Handles Overlapping Passkey Errors Between Registration & Authentication
175
+ * https://w3c.github.io/webauthn/#sctn-create-request-exceptions
176
+ * https://w3c.github.io/webauthn/#sctn-get-request-exceptions
177
+ *
178
+ * @param err unknown
179
+ * @returns PasskeyError
180
+ */
181
+ const handlePasskeyError = (err: unknown): PasskeyError => {
182
+ if (err instanceof Error) {
183
+ // Passkey Operation Aborted
184
+ if (err.name === 'AbortError') {
185
+ const { message, recoverySuggestion } =
186
+ passkeyErrorMap[PasskeyErrorCode.PasskeyOperationAborted];
187
+
188
+ return new PasskeyError({
189
+ name: PasskeyErrorCode.PasskeyOperationAborted,
190
+ message,
191
+ recoverySuggestion,
192
+ underlyingError: err,
193
+ });
194
+ }
195
+ // Relying Party / Domain Mismatch
196
+ if (err.name === 'SecurityError') {
197
+ const { message, recoverySuggestion } =
198
+ passkeyErrorMap[PasskeyErrorCode.RelyingPartyMismatch];
199
+
200
+ return new PasskeyError({
201
+ name: PasskeyErrorCode.RelyingPartyMismatch,
202
+ message,
203
+ recoverySuggestion,
204
+ underlyingError: err,
205
+ });
206
+ }
207
+ }
208
+
209
+ return new PasskeyError({
210
+ name: AmplifyErrorCode.Unknown,
211
+ message: 'An unknown error has occurred.',
212
+ underlyingError: err,
213
+ });
214
+ };
@@ -0,0 +1,8 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { PlatformNotSupportedError } from '@aws-amplify/core/internals/utils';
5
+
6
+ export const getIsPasskeySupported = () => {
7
+ throw new PlatformNotSupportedError();
8
+ };
@@ -0,0 +1,18 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { isBrowser } from '@aws-amplify/core/internals/utils';
5
+
6
+ /**
7
+ * Determines if passkey is supported in current context
8
+ * Will return false if executed in non-secure context
9
+ * @returns boolean
10
+ */
11
+ export const getIsPasskeySupported = (): boolean => {
12
+ return (
13
+ isBrowser() &&
14
+ window.isSecureContext &&
15
+ 'credentials' in navigator &&
16
+ typeof window.PublicKeyCredential === 'function'
17
+ );
18
+ };
@@ -0,0 +1,8 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { PlatformNotSupportedError } from '@aws-amplify/core/internals/utils';
5
+
6
+ export const getPasskey = async () => {
7
+ throw new PlatformNotSupportedError();
8
+ };
@@ -0,0 +1,40 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import {
5
+ PasskeyErrorCode,
6
+ assertPasskeyError,
7
+ handlePasskeyAuthenticationError,
8
+ } from './errors';
9
+ import { getIsPasskeySupported } from './getIsPasskeySupported';
10
+ import {
11
+ deserializeJsonToPkcGetOptions,
12
+ serializePkcWithAssertionToJson,
13
+ } from './serde';
14
+ import {
15
+ PasskeyGetOptionsJson,
16
+ assertCredentialIsPkcWithAuthenticatorAssertionResponse,
17
+ } from './types';
18
+
19
+ export const getPasskey = async (input: PasskeyGetOptionsJson) => {
20
+ try {
21
+ const isPasskeySupported = getIsPasskeySupported();
22
+
23
+ assertPasskeyError(
24
+ isPasskeySupported,
25
+ PasskeyErrorCode.PasskeyNotSupported,
26
+ );
27
+
28
+ const passkeyGetOptions = deserializeJsonToPkcGetOptions(input);
29
+
30
+ const credential = await navigator.credentials.get({
31
+ publicKey: passkeyGetOptions,
32
+ });
33
+
34
+ assertCredentialIsPkcWithAuthenticatorAssertionResponse(credential);
35
+
36
+ return serializePkcWithAssertionToJson(credential);
37
+ } catch (err: unknown) {
38
+ throw handlePasskeyAuthenticationError(err);
39
+ }
40
+ };
@@ -0,0 +1,5 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ export { registerPasskey } from './registerPasskey';
5
+ export { getPasskey } from './getPasskey';
@@ -0,0 +1,8 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { PlatformNotSupportedError } from '@aws-amplify/core/internals/utils';
5
+
6
+ export const registerPasskey = async () => {
7
+ throw new PlatformNotSupportedError();
8
+ };
@@ -0,0 +1,48 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import {
5
+ PasskeyCreateOptionsJson,
6
+ PasskeyCreateResultJson,
7
+ assertCredentialIsPkcWithAuthenticatorAttestationResponse,
8
+ } from './types';
9
+ import {
10
+ deserializeJsonToPkcCreationOptions,
11
+ serializePkcWithAttestationToJson,
12
+ } from './serde';
13
+ import {
14
+ PasskeyErrorCode,
15
+ assertPasskeyError,
16
+ handlePasskeyRegistrationError,
17
+ } from './errors';
18
+ import { getIsPasskeySupported } from './getIsPasskeySupported';
19
+
20
+ /**
21
+ * Registers a new passkey for user
22
+ * @param input - PasskeyCreateOptionsJson
23
+ * @returns serialized PasskeyCreateResult
24
+ */
25
+ export const registerPasskey = async (
26
+ input: PasskeyCreateOptionsJson,
27
+ ): Promise<PasskeyCreateResultJson> => {
28
+ try {
29
+ const isPasskeySupported = getIsPasskeySupported();
30
+
31
+ assertPasskeyError(
32
+ isPasskeySupported,
33
+ PasskeyErrorCode.PasskeyNotSupported,
34
+ );
35
+
36
+ const passkeyCreationOptions = deserializeJsonToPkcCreationOptions(input);
37
+
38
+ const credential = await navigator.credentials.create({
39
+ publicKey: passkeyCreationOptions,
40
+ });
41
+
42
+ assertCredentialIsPkcWithAuthenticatorAttestationResponse(credential);
43
+
44
+ return serializePkcWithAttestationToJson(credential);
45
+ } catch (err) {
46
+ throw handlePasskeyRegistrationError(err);
47
+ }
48
+ };
@@ -0,0 +1,151 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import {
5
+ convertArrayBufferToBase64Url,
6
+ convertBase64UrlToArrayBuffer,
7
+ } from '../../../foundation/convert';
8
+
9
+ import {
10
+ PasskeyCreateOptionsJson,
11
+ PasskeyCreateResultJson,
12
+ PasskeyGetOptionsJson,
13
+ PasskeyGetResultJson,
14
+ PkcAssertionResponse,
15
+ PkcAttestationResponse,
16
+ PkcWithAuthenticatorAssertionResponse,
17
+ PkcWithAuthenticatorAttestationResponse,
18
+ } from './types';
19
+
20
+ /**
21
+ * Deserializes Public Key Credential Creation Options JSON
22
+ * @param input PasskeyCreateOptionsJson
23
+ * @returns PublicKeyCredentialCreationOptions
24
+ */
25
+ export const deserializeJsonToPkcCreationOptions = (
26
+ input: PasskeyCreateOptionsJson,
27
+ ): PublicKeyCredentialCreationOptions => {
28
+ const userIdBuffer = convertBase64UrlToArrayBuffer(input.user.id);
29
+ const challengeBuffer = convertBase64UrlToArrayBuffer(input.challenge);
30
+ const excludeCredentialsWithBuffer = (input.excludeCredentials || []).map(
31
+ excludeCred => ({
32
+ ...excludeCred,
33
+ id: convertBase64UrlToArrayBuffer(excludeCred.id),
34
+ }),
35
+ );
36
+
37
+ return {
38
+ ...input,
39
+ excludeCredentials: excludeCredentialsWithBuffer,
40
+ challenge: challengeBuffer,
41
+ user: {
42
+ ...input.user,
43
+ id: userIdBuffer,
44
+ },
45
+ };
46
+ };
47
+
48
+ /**
49
+ * Serializes a Public Key Credential With Attestation to JSON
50
+ * @param input PasskeyCreateResult
51
+ * @returns PasskeyCreateResultJson
52
+ */
53
+ export const serializePkcWithAttestationToJson = (
54
+ input: PkcWithAuthenticatorAttestationResponse,
55
+ ): PasskeyCreateResultJson => {
56
+ const response: PkcAttestationResponse<string> = {
57
+ clientDataJSON: convertArrayBufferToBase64Url(
58
+ input.response.clientDataJSON,
59
+ ),
60
+ attestationObject: convertArrayBufferToBase64Url(
61
+ input.response.attestationObject,
62
+ ),
63
+ transports: input.response.getTransports(),
64
+ publicKeyAlgorithm: input.response.getPublicKeyAlgorithm(),
65
+ authenticatorData: convertArrayBufferToBase64Url(
66
+ input.response.getAuthenticatorData(),
67
+ ),
68
+ };
69
+
70
+ const publicKey = input.response.getPublicKey();
71
+
72
+ if (publicKey) {
73
+ response.publicKey = convertArrayBufferToBase64Url(publicKey);
74
+ }
75
+
76
+ const resultJson: PasskeyCreateResultJson = {
77
+ type: input.type,
78
+ id: input.id,
79
+ rawId: convertArrayBufferToBase64Url(input.rawId),
80
+ clientExtensionResults: input.getClientExtensionResults(),
81
+ response,
82
+ };
83
+
84
+ if (input.authenticatorAttachment) {
85
+ resultJson.authenticatorAttachment = input.authenticatorAttachment;
86
+ }
87
+
88
+ return resultJson;
89
+ };
90
+
91
+ /**
92
+ * Deserializes Public Key Credential Get Options JSON
93
+ * @param input PasskeyGetOptionsJson
94
+ * @returns PublicKeyCredentialRequestOptions
95
+ */
96
+ export const deserializeJsonToPkcGetOptions = (
97
+ input: PasskeyGetOptionsJson,
98
+ ): PublicKeyCredentialRequestOptions => {
99
+ const challengeBuffer = convertBase64UrlToArrayBuffer(input.challenge);
100
+ const allowedCredentialsWithBuffer = (input.allowCredentials || []).map(
101
+ allowedCred => ({
102
+ ...allowedCred,
103
+ id: convertBase64UrlToArrayBuffer(allowedCred.id),
104
+ }),
105
+ );
106
+
107
+ return {
108
+ ...input,
109
+ challenge: challengeBuffer,
110
+ allowCredentials: allowedCredentialsWithBuffer,
111
+ };
112
+ };
113
+
114
+ /**
115
+ * Serializes a Public Key Credential With Attestation to JSON
116
+ * @param input PasskeyGetResult
117
+ * @returns PasskeyGetResultJson
118
+ */
119
+ export const serializePkcWithAssertionToJson = (
120
+ input: PkcWithAuthenticatorAssertionResponse,
121
+ ): PasskeyGetResultJson => {
122
+ const response: PkcAssertionResponse<string> = {
123
+ clientDataJSON: convertArrayBufferToBase64Url(
124
+ input.response.clientDataJSON,
125
+ ),
126
+ authenticatorData: convertArrayBufferToBase64Url(
127
+ input.response.authenticatorData,
128
+ ),
129
+ signature: convertArrayBufferToBase64Url(input.response.signature),
130
+ };
131
+
132
+ if (input.response.userHandle) {
133
+ response.userHandle = convertArrayBufferToBase64Url(
134
+ input.response.userHandle,
135
+ );
136
+ }
137
+
138
+ const resultJson: PasskeyGetResultJson = {
139
+ id: input.id,
140
+ rawId: convertArrayBufferToBase64Url(input.rawId),
141
+ type: input.type,
142
+ clientExtensionResults: input.getClientExtensionResults(),
143
+ response,
144
+ };
145
+
146
+ if (input.authenticatorAttachment) {
147
+ resultJson.authenticatorAttachment = input.authenticatorAttachment;
148
+ }
149
+
150
+ return resultJson;
151
+ };
@@ -0,0 +1,61 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { PasskeyErrorCode, assertPasskeyError } from '../errors';
5
+
6
+ /**
7
+ * Passkey Create Types
8
+ */
9
+
10
+ export {
11
+ PkcAttestationResponse,
12
+ PasskeyCreateOptionsJson,
13
+ PasskeyCreateResultJson,
14
+ assertValidCredentialCreationOptions,
15
+ } from './shared';
16
+
17
+ export type PkcWithAuthenticatorAttestationResponse = Omit<
18
+ PublicKeyCredential,
19
+ 'response'
20
+ > & {
21
+ response: AuthenticatorAttestationResponse;
22
+ };
23
+
24
+ export function assertCredentialIsPkcWithAuthenticatorAttestationResponse(
25
+ credential: any,
26
+ ): asserts credential is PkcWithAuthenticatorAttestationResponse {
27
+ assertPasskeyError(
28
+ credential &&
29
+ credential instanceof PublicKeyCredential &&
30
+ credential.response instanceof AuthenticatorAttestationResponse,
31
+ PasskeyErrorCode.PasskeyRegistrationFailed,
32
+ );
33
+ }
34
+
35
+ /**
36
+ * Passkey Get Types
37
+ */
38
+
39
+ export {
40
+ PkcAssertionResponse,
41
+ PasskeyGetOptionsJson,
42
+ PasskeyGetResultJson,
43
+ } from './shared';
44
+
45
+ export type PkcWithAuthenticatorAssertionResponse = Omit<
46
+ PublicKeyCredential,
47
+ 'response'
48
+ > & {
49
+ response: AuthenticatorAssertionResponse;
50
+ };
51
+
52
+ export function assertCredentialIsPkcWithAuthenticatorAssertionResponse(
53
+ credential: any,
54
+ ): asserts credential is PkcWithAuthenticatorAssertionResponse {
55
+ assertPasskeyError(
56
+ credential &&
57
+ credential instanceof PublicKeyCredential &&
58
+ credential.response instanceof AuthenticatorAssertionResponse,
59
+ PasskeyErrorCode.PasskeyRetrievalFailed,
60
+ );
61
+ }
@@ -0,0 +1,131 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+
4
+ import { PasskeyErrorCode, assertPasskeyError } from '../errors';
5
+
6
+ type PasskeyTransport = 'ble' | 'hybrid' | 'internal' | 'nfc' | 'usb';
7
+ type UserVerificationRequirement = 'discouraged' | 'preferred' | 'required';
8
+ type AttestationConveyancePreference =
9
+ | 'direct'
10
+ | 'enterprise'
11
+ | 'indirect'
12
+ | 'none';
13
+
14
+ interface PkcDescriptor<T> {
15
+ type: 'public-key';
16
+ id: T;
17
+ transports?: PasskeyTransport[];
18
+ }
19
+
20
+ /**
21
+ * Passkey Create Types
22
+ */
23
+ export interface PasskeyCreateOptionsJson {
24
+ challenge: string;
25
+ rp: {
26
+ id: string;
27
+ name: string;
28
+ };
29
+ user: {
30
+ id: string;
31
+ name: string;
32
+ displayName: string;
33
+ };
34
+ pubKeyCredParams: {
35
+ alg: number;
36
+ type: 'public-key';
37
+ }[];
38
+ timeout?: number;
39
+ excludeCredentials?: PkcDescriptor<string>[];
40
+ authenticatorSelection?: {
41
+ requireResidentKey: boolean;
42
+ residentKey: UserVerificationRequirement;
43
+ userVerification: UserVerificationRequirement;
44
+ };
45
+ attestation?: AttestationConveyancePreference;
46
+ extensions?: {
47
+ appid?: string;
48
+ appidExclude?: string;
49
+ credProps?: boolean;
50
+ };
51
+ }
52
+
53
+ export interface PkcAttestationResponse<T> {
54
+ clientDataJSON: T;
55
+ attestationObject: T;
56
+ transports: string[];
57
+ publicKey?: string;
58
+ publicKeyAlgorithm: number;
59
+ authenticatorData: T;
60
+ }
61
+ export interface PasskeyCreateResult {
62
+ id: string;
63
+ rawId: ArrayBuffer;
64
+ type: 'public-key';
65
+ response: PkcAttestationResponse<ArrayBuffer>;
66
+ }
67
+
68
+ export interface PasskeyCreateResultJson {
69
+ id: string;
70
+ rawId: string;
71
+ type: string;
72
+ clientExtensionResults: {
73
+ appId?: boolean;
74
+ credProps?: { rk?: boolean };
75
+ hmacCreateSecret?: boolean;
76
+ };
77
+ authenticatorAttachment?: string;
78
+ response: PkcAttestationResponse<string>;
79
+ }
80
+
81
+ export function assertValidCredentialCreationOptions(
82
+ credentialCreationOptions: any,
83
+ ): asserts credentialCreationOptions is PasskeyCreateOptionsJson {
84
+ assertPasskeyError(
85
+ [
86
+ !!credentialCreationOptions,
87
+ !!credentialCreationOptions?.challenge,
88
+ !!credentialCreationOptions?.user,
89
+ !!credentialCreationOptions?.rp,
90
+ !!credentialCreationOptions?.pubKeyCredParams,
91
+ ].every(Boolean),
92
+ PasskeyErrorCode.InvalidPasskeyRegistrationOptions,
93
+ );
94
+ }
95
+
96
+ /**
97
+ * Passkey Get Types
98
+ */
99
+ export interface PasskeyGetOptionsJson {
100
+ challenge: string;
101
+ rpId: string;
102
+ timeout: number;
103
+ allowCredentials: PkcDescriptor<string>[];
104
+ userVerification: UserVerificationRequirement;
105
+ }
106
+
107
+ export interface PkcAssertionResponse<T> {
108
+ authenticatorData: T;
109
+ clientDataJSON: T;
110
+ signature: T;
111
+ userHandle?: T;
112
+ }
113
+
114
+ export interface PasskeyGetResult {
115
+ id: string;
116
+ rawId: ArrayBuffer;
117
+ type: 'public-key';
118
+ response: PkcAssertionResponse<ArrayBuffer>;
119
+ }
120
+ export interface PasskeyGetResultJson {
121
+ id: string;
122
+ rawId: string;
123
+ type: string;
124
+ clientExtensionResults: {
125
+ appId?: boolean;
126
+ credProps?: { rk?: boolean };
127
+ hmacCreateSecret?: boolean;
128
+ };
129
+ authenticatorAttachment?: string;
130
+ response: PkcAssertionResponse<string>;
131
+ }