@bifold/core 2.4.5 → 2.5.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 (416) hide show
  1. package/lib/commonjs/contexts/reducers/store.js +3 -2
  2. package/lib/commonjs/contexts/reducers/store.js.map +1 -1
  3. package/lib/commonjs/index.js +119 -104
  4. package/lib/commonjs/index.js.map +1 -1
  5. package/lib/commonjs/screens/AttemptLockout.js +27 -35
  6. package/lib/commonjs/screens/AttemptLockout.js.map +1 -1
  7. package/lib/commonjs/screens/ContactDetails.js +1 -1
  8. package/lib/commonjs/screens/ContactDetails.js.map +1 -1
  9. package/lib/commonjs/screens/CredentialDetails.js +1 -1
  10. package/lib/commonjs/screens/CredentialDetails.js.map +1 -1
  11. package/lib/commonjs/screens/JSONDetails.js +6 -3
  12. package/lib/commonjs/screens/JSONDetails.js.map +1 -1
  13. package/lib/commonjs/screens/MobileVerifierLoading.js +4 -3
  14. package/lib/commonjs/screens/MobileVerifierLoading.js.map +1 -1
  15. package/lib/commonjs/screens/PINCreate.js +3 -10
  16. package/lib/commonjs/screens/PINCreate.js.map +1 -1
  17. package/lib/commonjs/screens/WhatAreContacts.js +3 -2
  18. package/lib/commonjs/screens/WhatAreContacts.js.map +1 -1
  19. package/lib/module/contexts/reducers/store.js +3 -2
  20. package/lib/module/contexts/reducers/store.js.map +1 -1
  21. package/lib/module/index.js +42 -45
  22. package/lib/module/index.js.map +1 -1
  23. package/lib/module/screens/AttemptLockout.js +28 -36
  24. package/lib/module/screens/AttemptLockout.js.map +1 -1
  25. package/lib/module/screens/ContactDetails.js +1 -1
  26. package/lib/module/screens/ContactDetails.js.map +1 -1
  27. package/lib/module/screens/CredentialDetails.js +1 -1
  28. package/lib/module/screens/CredentialDetails.js.map +1 -1
  29. package/lib/module/screens/JSONDetails.js +6 -3
  30. package/lib/module/screens/JSONDetails.js.map +1 -1
  31. package/lib/module/screens/MobileVerifierLoading.js +4 -3
  32. package/lib/module/screens/MobileVerifierLoading.js.map +1 -1
  33. package/lib/module/screens/PINCreate.js +3 -10
  34. package/lib/module/screens/PINCreate.js.map +1 -1
  35. package/lib/module/screens/WhatAreContacts.js +3 -2
  36. package/lib/module/screens/WhatAreContacts.js.map +1 -1
  37. package/lib/typescript/src/contexts/reducers/store.d.ts.map +1 -1
  38. package/lib/typescript/src/index.d.ts +57 -61
  39. package/lib/typescript/src/index.d.ts.map +1 -1
  40. package/lib/typescript/src/screens/AttemptLockout.d.ts.map +1 -1
  41. package/lib/typescript/src/screens/JSONDetails.d.ts.map +1 -1
  42. package/lib/typescript/src/screens/MobileVerifierLoading.d.ts.map +1 -1
  43. package/lib/typescript/src/screens/PINCreate.d.ts.map +1 -1
  44. package/lib/typescript/src/screens/WhatAreContacts.d.ts.map +1 -1
  45. package/lib/typescript/src/types/navigators.d.ts +1 -1
  46. package/lib/typescript/src/types/navigators.d.ts.map +1 -1
  47. package/package.json +3 -4
  48. package/src/App.tsx +0 -79
  49. package/src/animated-components.ts +0 -30
  50. package/src/assets/fonts/MaterialIcons.ttf +0 -0
  51. package/src/assets/icons/code.svg +0 -4
  52. package/src/assets/icons/large-arrow.svg +0 -5
  53. package/src/assets/icons/pencil.svg +0 -15
  54. package/src/assets/icons/trash.svg +0 -31
  55. package/src/assets/img/Artwork_1024x1024.png +0 -0
  56. package/src/assets/img/HistoryCardAcceptedIcon.svg +0 -4
  57. package/src/assets/img/HistoryCardExpiredIcon.svg +0 -4
  58. package/src/assets/img/HistoryCardRevokedIcon.svg +0 -4
  59. package/src/assets/img/HistoryInformationSentIcon.svg +0 -4
  60. package/src/assets/img/HistoryPinUpdatedIcon.svg +0 -4
  61. package/src/assets/img/IconChevronRight.svg +0 -5
  62. package/src/assets/img/activity-indicator-circle.svg +0 -90
  63. package/src/assets/img/app-lockout.svg +0 -1
  64. package/src/assets/img/biometrics.svg +0 -74
  65. package/src/assets/img/chat-loading.svg +0 -1
  66. package/src/assets/img/check-in-circle.svg +0 -18
  67. package/src/assets/img/connection-pending.svg +0 -112
  68. package/src/assets/img/contact-book.svg +0 -21
  69. package/src/assets/img/credential-card.svg +0 -18
  70. package/src/assets/img/credential-declined.svg +0 -28
  71. package/src/assets/img/credential-in-hand.svg +0 -48
  72. package/src/assets/img/credential-list.svg +0 -60
  73. package/src/assets/img/credential-pending.svg +0 -96
  74. package/src/assets/img/credential-success.svg +0 -48
  75. package/src/assets/img/delete-notification.svg +0 -1
  76. package/src/assets/img/empty-wallet.svg +0 -23
  77. package/src/assets/img/error-filled.svg +0 -12
  78. package/src/assets/img/exclamation-mark.svg +0 -17
  79. package/src/assets/img/home-center-img.svg +0 -71
  80. package/src/assets/img/icon-credential-offer-dark.svg +0 -7
  81. package/src/assets/img/icon-credential-offer-light.svg +0 -7
  82. package/src/assets/img/icon-info-recieved-dark.svg +0 -8
  83. package/src/assets/img/icon-info-recieved-light.svg +0 -8
  84. package/src/assets/img/icon-info-sent-dark.svg +0 -8
  85. package/src/assets/img/icon-info-sent-light.svg +0 -8
  86. package/src/assets/img/icon-proof-request-dark.svg +0 -11
  87. package/src/assets/img/icon-proof-request-light.svg +0 -11
  88. package/src/assets/img/information-received.svg +0 -1
  89. package/src/assets/img/logo-large.png +0 -0
  90. package/src/assets/img/logo-large@2x.png +0 -0
  91. package/src/assets/img/logo-large@3x.png +0 -0
  92. package/src/assets/img/logo.svg +0 -15
  93. package/src/assets/img/message-text-icon-outline.svg +0 -1
  94. package/src/assets/img/message-text-icon.svg +0 -1
  95. package/src/assets/img/no_information_shared.svg +0 -36
  96. package/src/assets/img/preface.svg +0 -15
  97. package/src/assets/img/proof-declined.svg +0 -66
  98. package/src/assets/img/proof-pending.svg +0 -61
  99. package/src/assets/img/proof-success.svg +0 -72
  100. package/src/assets/img/push-notifications.svg +0 -1
  101. package/src/assets/img/qrcode-scan-icon.svg +0 -1
  102. package/src/assets/img/scan-share.svg +0 -102
  103. package/src/assets/img/secure-check.svg +0 -4
  104. package/src/assets/img/secure-image.svg +0 -64
  105. package/src/assets/img/update-available.svg +0 -26
  106. package/src/assets/img/verifier-request-declined.svg +0 -34
  107. package/src/assets/img/wallet-back.svg +0 -20
  108. package/src/assets/img/wallet-front.svg +0 -32
  109. package/src/assets/img/wallet-icon-outline.svg +0 -1
  110. package/src/assets/img/wallet-icon.svg +0 -1
  111. package/src/assets/img/wallet.svg +0 -43
  112. package/src/assets/oca-bundles.json +0 -174
  113. package/src/components/animated/ButtonLoading.tsx +0 -32
  114. package/src/components/animated/ConnectionLoading.tsx +0 -53
  115. package/src/components/animated/CredentialAdded.tsx +0 -72
  116. package/src/components/animated/CredentialPending.tsx +0 -63
  117. package/src/components/animated/LoadingIndicator.tsx +0 -49
  118. package/src/components/animated/PresentationLoading.tsx +0 -52
  119. package/src/components/animated/RecordLoading.tsx +0 -75
  120. package/src/components/animated/SendingProof.tsx +0 -53
  121. package/src/components/animated/SentProof.tsx +0 -72
  122. package/src/components/buttons/Button-api.tsx +0 -46
  123. package/src/components/buttons/Button.tsx +0 -125
  124. package/src/components/buttons/HeaderHome.tsx +0 -25
  125. package/src/components/buttons/IconButton.tsx +0 -93
  126. package/src/components/buttons/InfoIcon.tsx +0 -35
  127. package/src/components/buttons/SettingsMenu.tsx +0 -26
  128. package/src/components/buttons/ToggleButton.tsx +0 -93
  129. package/src/components/buttons/index.ts +0 -4
  130. package/src/components/chat/ActionSlider.tsx +0 -104
  131. package/src/components/chat/ChatActions.tsx +0 -33
  132. package/src/components/chat/ChatBubble.tsx +0 -20
  133. package/src/components/chat/ChatEvent.tsx +0 -31
  134. package/src/components/chat/ChatMessage.tsx +0 -142
  135. package/src/components/chat/MessageInput.tsx +0 -46
  136. package/src/components/chat/index.ts +0 -4
  137. package/src/components/forms/WalletNameForm.tsx +0 -148
  138. package/src/components/index.ts +0 -4
  139. package/src/components/inputs/BiometryControl.tsx +0 -190
  140. package/src/components/inputs/BulletPoint.tsx +0 -32
  141. package/src/components/inputs/CheckBoxRow.tsx +0 -67
  142. package/src/components/inputs/InlineErrorText.tsx +0 -60
  143. package/src/components/inputs/LimitedTextInput.tsx +0 -71
  144. package/src/components/inputs/PINInput.tsx +0 -175
  145. package/src/components/inputs/SingleSelectBlock.tsx +0 -53
  146. package/src/components/listItems/ContactCredentialListItem.tsx +0 -79
  147. package/src/components/listItems/ContactListItem.tsx +0 -121
  148. package/src/components/listItems/NotificationListItem.tsx +0 -514
  149. package/src/components/misc/AvatarView.tsx +0 -33
  150. package/src/components/misc/CardWatermark.tsx +0 -52
  151. package/src/components/misc/ConnectionAlert.tsx +0 -123
  152. package/src/components/misc/ConnectionImage.tsx +0 -45
  153. package/src/components/misc/ContentGradient.tsx +0 -40
  154. package/src/components/misc/CredentialCard.tsx +0 -161
  155. package/src/components/misc/CredentialCard10.tsx +0 -329
  156. package/src/components/misc/CredentialCard11.tsx +0 -701
  157. package/src/components/misc/CredentialCard11ActionFooter.tsx +0 -55
  158. package/src/components/misc/CredentialCard11Issuer.tsx +0 -74
  159. package/src/components/misc/CredentialCard11Logo.tsx +0 -61
  160. package/src/components/misc/EmptyList.tsx +0 -27
  161. package/src/components/misc/EmptyListContacts.tsx +0 -55
  162. package/src/components/misc/ErrorBoundary.tsx +0 -200
  163. package/src/components/misc/FauxHeader.tsx +0 -75
  164. package/src/components/misc/InfoBox.tsx +0 -283
  165. package/src/components/misc/NoNewUpdates.tsx +0 -38
  166. package/src/components/misc/PINHeader.tsx +0 -25
  167. package/src/components/misc/PINValidationHelper.tsx +0 -48
  168. package/src/components/misc/Pagination.tsx +0 -114
  169. package/src/components/misc/QRRenderer.tsx +0 -53
  170. package/src/components/misc/QRScanner.tsx +0 -395
  171. package/src/components/misc/QRScannerTorch.tsx +0 -74
  172. package/src/components/misc/ScanCamera.tsx +0 -86
  173. package/src/components/misc/ScanTab.tsx +0 -45
  174. package/src/components/misc/SharedProofData.tsx +0 -98
  175. package/src/components/misc/UnorderedList.tsx +0 -28
  176. package/src/components/misc/VerifierCredentialCard.tsx +0 -378
  177. package/src/components/misc/index.ts +0 -2
  178. package/src/components/modals/AlertModal.tsx +0 -42
  179. package/src/components/modals/AppGuideModal.tsx +0 -142
  180. package/src/components/modals/CameraDisclosureModal.tsx +0 -126
  181. package/src/components/modals/CommonRemoveModal.tsx +0 -337
  182. package/src/components/modals/DeveloperModal.tsx +0 -32
  183. package/src/components/modals/DismissiblePopupModal.tsx +0 -169
  184. package/src/components/modals/ErrorModal.tsx +0 -107
  185. package/src/components/modals/ImageModal.tsx +0 -80
  186. package/src/components/modals/NetInfoModal.tsx +0 -35
  187. package/src/components/modals/PopupModal.tsx +0 -56
  188. package/src/components/modals/ProofCancelModal.tsx +0 -79
  189. package/src/components/modals/SafeAreaModal.tsx +0 -17
  190. package/src/components/record/Record.tsx +0 -100
  191. package/src/components/record/RecordBinaryField.tsx +0 -55
  192. package/src/components/record/RecordDateIntField.tsx +0 -63
  193. package/src/components/record/RecordField.tsx +0 -154
  194. package/src/components/record/RecordFooter.tsx +0 -17
  195. package/src/components/record/RecordHeader.tsx +0 -17
  196. package/src/components/record/RecordRemove.tsx +0 -66
  197. package/src/components/texts/HeaderTitle.tsx +0 -25
  198. package/src/components/texts/HighlightTextBox.tsx +0 -41
  199. package/src/components/texts/InfoTextBox.tsx +0 -129
  200. package/src/components/texts/Link.tsx +0 -41
  201. package/src/components/texts/Text.tsx +0 -21
  202. package/src/components/texts/ThemedText.tsx +0 -24
  203. package/src/components/toast/BaseToast.tsx +0 -128
  204. package/src/components/toast/ToastConfig.tsx +0 -21
  205. package/src/components/tour/AttachTourStep.tsx +0 -73
  206. package/src/components/tour/CredentialOfferTourSteps.tsx +0 -41
  207. package/src/components/tour/CredentialsTourSteps.tsx +0 -41
  208. package/src/components/tour/HomeTourSteps.tsx +0 -104
  209. package/src/components/tour/ProofRequestTourSteps.tsx +0 -41
  210. package/src/components/tour/SpotCutout.tsx +0 -65
  211. package/src/components/tour/TourBox.tsx +0 -255
  212. package/src/components/tour/TourOverlay.tsx +0 -134
  213. package/src/components/views/Banner.tsx +0 -181
  214. package/src/components/views/CredentialCardLogo.tsx +0 -77
  215. package/src/components/views/CredentialDetailPrimaryHeader.tsx +0 -107
  216. package/src/components/views/CredentialDetailSecondaryHeader.tsx +0 -60
  217. package/src/components/views/HeaderWithBanner.tsx +0 -17
  218. package/src/components/views/HomeFooterView.tsx +0 -110
  219. package/src/components/views/HomeHeaderView.tsx +0 -12
  220. package/src/components/views/KeyboardView.tsx +0 -41
  221. package/src/components/views/LoadingPlaceholder.tsx +0 -168
  222. package/src/components/views/LoadingView.tsx +0 -29
  223. package/src/components/views/ProgressBar.tsx +0 -53
  224. package/src/components/views/PushNotificationsContent.tsx +0 -51
  225. package/src/components/views/PushNotificationsDisabledContent.tsx +0 -47
  226. package/src/configs/ledgers/indy/index.ts +0 -8
  227. package/src/configs/ledgers/indy/ledgers.json +0 -51
  228. package/src/constants.ts +0 -107
  229. package/src/container-api.ts +0 -247
  230. package/src/container-impl.ts +0 -243
  231. package/src/contexts/activity.tsx +0 -145
  232. package/src/contexts/animated-components.ts +0 -9
  233. package/src/contexts/auth.tsx +0 -240
  234. package/src/contexts/index.ts +0 -3
  235. package/src/contexts/navigation.tsx +0 -19
  236. package/src/contexts/network.tsx +0 -125
  237. package/src/contexts/reducers/index.ts +0 -3
  238. package/src/contexts/reducers/store.ts +0 -754
  239. package/src/contexts/store.tsx +0 -103
  240. package/src/contexts/theme.tsx +0 -51
  241. package/src/contexts/tour/tour-context.tsx +0 -160
  242. package/src/contexts/tour/tour-provider.tsx +0 -160
  243. package/src/hooks/bundle-resolver.ts +0 -95
  244. package/src/hooks/chat-messages.tsx +0 -263
  245. package/src/hooks/connections.ts +0 -37
  246. package/src/hooks/credential-card-styles.ts +0 -144
  247. package/src/hooks/credentials.ts +0 -11
  248. package/src/hooks/deep-links.ts +0 -49
  249. package/src/hooks/developer-mode.ts +0 -25
  250. package/src/hooks/lockout.ts +0 -77
  251. package/src/hooks/notifications.ts +0 -108
  252. package/src/hooks/oob.ts +0 -17
  253. package/src/hooks/proof-request-templates.ts +0 -40
  254. package/src/hooks/proofs.ts +0 -32
  255. package/src/hooks/screen-capture.ts +0 -52
  256. package/src/hooks/useBifoldAgentSetup.ts +0 -169
  257. package/src/hooks/useOnboardingState.ts +0 -53
  258. package/src/hooks/usePINValidation.ts +0 -98
  259. package/src/index.ts +0 -239
  260. package/src/layout/ScreenLayout.tsx +0 -53
  261. package/src/localization/en/en.json +0 -951
  262. package/src/localization/en/index.ts +0 -3
  263. package/src/localization/fr/fr.json +0 -933
  264. package/src/localization/fr/index.ts +0 -3
  265. package/src/localization/index.ts +0 -66
  266. package/src/localization/pt-br/index.ts +0 -3
  267. package/src/localization/pt-br/pt-br.json +0 -911
  268. package/src/modules/history/context/historyManager.tsx +0 -247
  269. package/src/modules/history/index.ts +0 -2
  270. package/src/modules/history/navigation/HistoryStack.tsx +0 -29
  271. package/src/modules/history/services/queue.service.tsx +0 -31
  272. package/src/modules/history/types/index.ts +0 -92
  273. package/src/modules/history/ui/HistoryPage.tsx +0 -133
  274. package/src/modules/history/ui/HistorySettings.tsx +0 -183
  275. package/src/modules/history/ui/assets/img/HistoryCardAcceptedIcon.svg +0 -4
  276. package/src/modules/history/ui/assets/img/HistoryCardExpiredIcon.svg +0 -4
  277. package/src/modules/history/ui/assets/img/HistoryCardRevokedIcon.svg +0 -4
  278. package/src/modules/history/ui/assets/img/HistoryInformationSentIcon.svg +0 -4
  279. package/src/modules/history/ui/assets/img/HistoryPinUpdatedIcon.svg +0 -4
  280. package/src/modules/history/ui/assets/img/IconChevronRight.svg +0 -3
  281. package/src/modules/history/ui/components/BulletPoint.tsx +0 -49
  282. package/src/modules/history/ui/components/HistoryListItem.tsx +0 -251
  283. package/src/modules/history/ui/components/HistoryMenu.tsx +0 -25
  284. package/src/modules/history/ui/components/SingleSelectBlock.tsx +0 -72
  285. package/src/modules/openid/components/CredentialRowCard.tsx +0 -64
  286. package/src/modules/openid/components/OpenIDCredentialCard.tsx +0 -276
  287. package/src/modules/openid/context/OpenIDCredentialRecordProvider.tsx +0 -296
  288. package/src/modules/openid/display.tsx +0 -467
  289. package/src/modules/openid/displayProof.tsx +0 -86
  290. package/src/modules/openid/hooks/openid.tsx +0 -111
  291. package/src/modules/openid/metadata.tsx +0 -59
  292. package/src/modules/openid/offerResolve.tsx +0 -281
  293. package/src/modules/openid/resolverProof.tsx +0 -286
  294. package/src/modules/openid/screens/OpenIDCredentialDetails.tsx +0 -214
  295. package/src/modules/openid/screens/OpenIDCredentialOffer.tsx +0 -192
  296. package/src/modules/openid/screens/OpenIDProofChangeCredential.tsx +0 -133
  297. package/src/modules/openid/screens/OpenIDProofPresentation.tsx +0 -423
  298. package/src/modules/openid/types.tsx +0 -111
  299. package/src/modules/openid/utils/utils.tsx +0 -119
  300. package/src/navigators/ConnectStack.tsx +0 -68
  301. package/src/navigators/ContactStack.tsx +0 -91
  302. package/src/navigators/CredentialStack.tsx +0 -48
  303. package/src/navigators/DeliveryStack.tsx +0 -76
  304. package/src/navigators/HomeStack.tsx +0 -37
  305. package/src/navigators/MainStack.tsx +0 -146
  306. package/src/navigators/NotificationStack.tsx +0 -56
  307. package/src/navigators/OnboardingScreens.ts +0 -142
  308. package/src/navigators/OnboardingStack.tsx +0 -205
  309. package/src/navigators/ProofRequestStack.tsx +0 -113
  310. package/src/navigators/RootStack.tsx +0 -71
  311. package/src/navigators/SettingStack.tsx +0 -174
  312. package/src/navigators/TabStack.tsx +0 -304
  313. package/src/navigators/defaultLayoutOptions.tsx +0 -17
  314. package/src/navigators/defaultStackOptions.tsx +0 -102
  315. package/src/navigators/index.ts +0 -27
  316. package/src/onboarding.ts +0 -90
  317. package/src/screens/AttemptLockout.tsx +0 -153
  318. package/src/screens/AutoLock.tsx +0 -140
  319. package/src/screens/Biometry.tsx +0 -54
  320. package/src/screens/Chat.tsx +0 -141
  321. package/src/screens/ConfigureMediator.tsx +0 -160
  322. package/src/screens/Connection.tsx +0 -394
  323. package/src/screens/ContactDetails.tsx +0 -350
  324. package/src/screens/CredentialDetails.tsx +0 -473
  325. package/src/screens/CredentialOffer.tsx +0 -334
  326. package/src/screens/CredentialOfferAccept.tsx +0 -189
  327. package/src/screens/DataRetention.tsx +0 -91
  328. package/src/screens/Developer.tsx +0 -289
  329. package/src/screens/Home.tsx +0 -173
  330. package/src/screens/JSONDetails.tsx +0 -102
  331. package/src/screens/Language.tsx +0 -97
  332. package/src/screens/ListContacts.tsx +0 -112
  333. package/src/screens/ListCredentials.tsx +0 -135
  334. package/src/screens/ListProofRequests.tsx +0 -148
  335. package/src/screens/MobileVerifierLoading.tsx +0 -106
  336. package/src/screens/NameWallet.tsx +0 -9
  337. package/src/screens/Onboarding.tsx +0 -162
  338. package/src/screens/OnboardingPages.tsx +0 -160
  339. package/src/screens/PINChange.tsx +0 -249
  340. package/src/screens/PINCreate.tsx +0 -185
  341. package/src/screens/PINEnter.tsx +0 -432
  342. package/src/screens/PINExplainer.tsx +0 -85
  343. package/src/screens/PINVerify.tsx +0 -195
  344. package/src/screens/PasteUrl.tsx +0 -140
  345. package/src/screens/Preface.tsx +0 -78
  346. package/src/screens/ProofChangeCredential.tsx +0 -179
  347. package/src/screens/ProofDetails.tsx +0 -348
  348. package/src/screens/ProofRequest.tsx +0 -999
  349. package/src/screens/ProofRequestAccept.tsx +0 -133
  350. package/src/screens/ProofRequestDetails.tsx +0 -270
  351. package/src/screens/ProofRequestUsageHistory.tsx +0 -152
  352. package/src/screens/ProofRequesting.tsx +0 -245
  353. package/src/screens/PushNotifications.tsx +0 -59
  354. package/src/screens/RenameContact.tsx +0 -155
  355. package/src/screens/RenameWallet.tsx +0 -26
  356. package/src/screens/Scan.tsx +0 -145
  357. package/src/screens/ScanHelp.tsx +0 -48
  358. package/src/screens/Settings.tsx +0 -415
  359. package/src/screens/Splash.tsx +0 -80
  360. package/src/screens/Terms.tsx +0 -127
  361. package/src/screens/ToggleBiometry.tsx +0 -153
  362. package/src/screens/TogglePushNotifications.tsx +0 -118
  363. package/src/screens/Tours.tsx +0 -93
  364. package/src/screens/UpdateAvailable.tsx +0 -119
  365. package/src/screens/WhatAreContacts.tsx +0 -71
  366. package/src/services/bifoldLogger.ts +0 -3
  367. package/src/services/keychain.ts +0 -184
  368. package/src/services/logger.ts +0 -89
  369. package/src/services/storage.ts +0 -136
  370. package/src/theme-builder.ts +0 -157
  371. package/src/theme.interface.ts +0 -580
  372. package/src/theme.ts +0 -1346
  373. package/src/types/attempt-lockout-config.ts +0 -8
  374. package/src/types/attestation.ts +0 -17
  375. package/src/types/chat.ts +0 -4
  376. package/src/types/config.ts +0 -64
  377. package/src/types/contact-details.ts +0 -5
  378. package/src/types/credential-list-footer.ts +0 -3
  379. package/src/types/credential-status.ts +0 -3
  380. package/src/types/credentials.ts +0 -7
  381. package/src/types/decline.ts +0 -5
  382. package/src/types/error.ts +0 -40
  383. package/src/types/fn.ts +0 -2
  384. package/src/types/genesis.ts +0 -35
  385. package/src/types/index.ts +0 -2
  386. package/src/types/metadata.ts +0 -16
  387. package/src/types/navigators.ts +0 -239
  388. package/src/types/notification.ts +0 -24
  389. package/src/types/permissions.ts +0 -2
  390. package/src/types/proof-items.ts +0 -32
  391. package/src/types/react-i18next.d.ts +0 -10
  392. package/src/types/remove.ts +0 -8
  393. package/src/types/security.ts +0 -32
  394. package/src/types/settings.ts +0 -28
  395. package/src/types/state.ts +0 -97
  396. package/src/types/tour.ts +0 -20
  397. package/src/types/version-check.ts +0 -18
  398. package/src/utils/PINValidation.ts +0 -98
  399. package/src/utils/agent.ts +0 -128
  400. package/src/utils/anonCredsProofRequestMapper.ts +0 -205
  401. package/src/utils/contacts.ts +0 -59
  402. package/src/utils/cred-def.ts +0 -33
  403. package/src/utils/credential.ts +0 -37
  404. package/src/utils/crypto.ts +0 -12
  405. package/src/utils/fileCache.ts +0 -152
  406. package/src/utils/helpers.ts +0 -1292
  407. package/src/utils/ledger.ts +0 -212
  408. package/src/utils/luminance.ts +0 -40
  409. package/src/utils/mediatorhelpers.ts +0 -71
  410. package/src/utils/migration.ts +0 -40
  411. package/src/utils/network.tsx +0 -55
  412. package/src/utils/oca.ts +0 -173
  413. package/src/utils/parsers.tsx +0 -111
  414. package/src/utils/proofBundle.ts +0 -220
  415. package/src/utils/schema.ts +0 -28
  416. package/src/utils/testable.ts +0 -17
@@ -1,59 +0,0 @@
1
- import type { W3cCredentialRecord, SdJwtVcRecord, MdocRecord } from '@credo-ts/core'
2
- import type { OpenId4VciCredentialSupported, OpenId4VciIssuerMetadataDisplay } from '@credo-ts/openid4vc'
3
- import type { MetadataDisplay } from '@sphereon/oid4vci-common'
4
- import { CredentialSubjectRecord } from './types'
5
-
6
- export interface OpenId4VcCredentialMetadata {
7
- credential: {
8
- display?: OpenId4VciCredentialSupported['display']
9
- order?: OpenId4VciCredentialSupported['order']
10
- credential_subject?: CredentialSubjectRecord
11
- }
12
- issuer: {
13
- display?: OpenId4VciIssuerMetadataDisplay[]
14
- id: string
15
- }
16
- }
17
-
18
- export type OpenId4VcCredentialMetadataExtended = Partial<
19
- OpenId4VciCredentialSupported & { credential_subject: CredentialSubjectRecord }
20
- >
21
- const openId4VcCredentialMetadataKey = '_bifold/openId4VcCredentialMetadata'
22
-
23
- export function extractOpenId4VcCredentialMetadata(
24
- credentialMetadata: Partial<OpenId4VciCredentialSupported & { credential_subject: CredentialSubjectRecord }>,
25
- serverMetadata: { display?: MetadataDisplay[]; id: string }
26
- ): OpenId4VcCredentialMetadata {
27
- return {
28
- credential: {
29
- display: credentialMetadata.display,
30
- order: credentialMetadata.order,
31
- credential_subject: credentialMetadata.credential_subject,
32
- },
33
- issuer: {
34
- display: serverMetadata.display,
35
- id: serverMetadata.id,
36
- },
37
- }
38
- }
39
-
40
- /**
41
- * Gets the OpenId4Vc credential metadata from the given W3C credential record.
42
- */
43
- export function getOpenId4VcCredentialMetadata(
44
- credentialRecord: W3cCredentialRecord | SdJwtVcRecord | MdocRecord
45
- ): OpenId4VcCredentialMetadata | null {
46
- return credentialRecord.metadata.get(openId4VcCredentialMetadataKey)
47
- }
48
-
49
- /**
50
- * Sets the OpenId4Vc credential metadata on the given W3cCredentialRecord or SdJwtVcRecord.
51
- *
52
- * NOTE: this does not save the record.
53
- */
54
- export function setOpenId4VcCredentialMetadata(
55
- credentialRecord: W3cCredentialRecord | SdJwtVcRecord | MdocRecord,
56
- metadata: OpenId4VcCredentialMetadata
57
- ) {
58
- credentialRecord.metadata.set(openId4VcCredentialMetadataKey, metadata)
59
- }
@@ -1,281 +0,0 @@
1
- import {
2
- OpenId4VcCredentialHolderBinding,
3
- OpenId4VciCredentialBindingOptions,
4
- OpenId4VciCredentialFormatProfile,
5
- OpenId4VciCredentialSupportedWithId,
6
- OpenId4VciRequestTokenResponse,
7
- OpenId4VciResolvedCredentialOffer,
8
- } from '@credo-ts/openid4vc'
9
- import {
10
- Agent,
11
- DidJwk,
12
- DidKey,
13
- getJwkFromKey,
14
- JwaSignatureAlgorithm,
15
- JwkDidCreateOptions,
16
- KeyBackend,
17
- KeyDidCreateOptions,
18
- Mdoc,
19
- MdocRecord,
20
- SdJwtVcRecord,
21
- W3cCredentialRecord,
22
- W3cJsonLdVerifiableCredential,
23
- W3cJwtVerifiableCredential,
24
- } from '@credo-ts/core'
25
- import { extractOpenId4VcCredentialMetadata, setOpenId4VcCredentialMetadata } from './metadata'
26
-
27
- export const resolveOpenId4VciOffer = async ({
28
- agent,
29
- data,
30
- uri,
31
- authorization,
32
- }: {
33
- agent: Agent
34
- // Either data itself (the offer) or uri can be passed
35
- data?: string
36
- uri?: string
37
- fetchAuthorization?: boolean
38
- authorization?: { clientId: string; redirectUri: string }
39
- }): Promise<OpenId4VciResolvedCredentialOffer> => {
40
- let offerUri = uri
41
-
42
- if (!offerUri && data) {
43
- // FIXME: Credo only support credential offer string, but we already parsed it before. So we construct an offer here
44
- // but in the future we need to support the parsed offer in Credo directly
45
- offerUri = `openid-credential-offer://credential_offer=${encodeURIComponent(JSON.stringify(data))}`
46
- } else if (!offerUri) {
47
- throw new Error('either data or uri must be provided')
48
- }
49
-
50
- agent.config.logger.info(`Receiving openid uri ${offerUri}`, {
51
- offerUri,
52
- data: data,
53
- uri: offerUri,
54
- })
55
-
56
- const resolvedCredentialOffer = await agent.modules.openId4VcHolder.resolveCredentialOffer(offerUri)
57
-
58
- if (authorization) {
59
- throw new Error('Authorization flow is not supported yet as of Credo 0.5.13')
60
- }
61
-
62
- return resolvedCredentialOffer
63
- }
64
-
65
- export async function acquirePreAuthorizedAccessToken({
66
- agent,
67
- resolvedCredentialOffer,
68
- txCode,
69
- }: {
70
- agent: Agent
71
- resolvedCredentialOffer: OpenId4VciResolvedCredentialOffer
72
- txCode?: string
73
- }) {
74
- return await agent.modules.openId4VcHolder.requestToken({
75
- resolvedCredentialOffer,
76
- txCode,
77
- })
78
- }
79
-
80
- export const customCredentialBindingResolver = async ({
81
- agent,
82
- supportedDidMethods,
83
- keyType,
84
- supportsAllDidMethods,
85
- supportsJwk,
86
- credentialFormat,
87
- supportedCredentialId,
88
- resolvedCredentialOffer,
89
- pidSchemes,
90
- }: Partial<OpenId4VciCredentialBindingOptions> & {
91
- agent: Agent
92
- resolvedCredentialOffer: OpenId4VciResolvedCredentialOffer
93
- pidSchemes?: { sdJwtVcVcts: Array<string>; msoMdocDoctypes: Array<string> }
94
- }): Promise<OpenId4VcCredentialHolderBinding> => {
95
- // First, we try to pick a did method
96
- // Prefer did:jwk, otherwise use did:key, otherwise use undefined
97
- let didMethod: 'key' | 'jwk' | undefined =
98
- supportsAllDidMethods || supportedDidMethods?.includes('did:jwk')
99
- ? 'jwk'
100
- : supportedDidMethods?.includes('did:key')
101
- ? 'key'
102
- : undefined
103
-
104
- // If supportedDidMethods is undefined, and supportsJwk is false, we will default to did:key
105
- // this is important as part of MATTR launchpad support which MUST use did:key but doesn't
106
- // define which did methods they support
107
- if (!supportedDidMethods && !supportsJwk) {
108
- didMethod = 'key'
109
- }
110
-
111
- const offeredCredentialConfiguration = supportedCredentialId
112
- ? resolvedCredentialOffer.offeredCredentialConfigurations[supportedCredentialId]
113
- : undefined
114
-
115
- const shouldKeyBeHardwareBackedForMsoMdoc =
116
- offeredCredentialConfiguration?.format === OpenId4VciCredentialFormatProfile.MsoMdoc &&
117
- pidSchemes?.msoMdocDoctypes.includes(offeredCredentialConfiguration.doctype)
118
-
119
- const shouldKeyBeHardwareBackedForSdJwtVc =
120
- offeredCredentialConfiguration?.format === 'vc+sd-jwt' &&
121
- pidSchemes?.sdJwtVcVcts.includes(offeredCredentialConfiguration.vct)
122
-
123
- const shouldKeyBeHardwareBacked = shouldKeyBeHardwareBackedForSdJwtVc || shouldKeyBeHardwareBackedForMsoMdoc
124
-
125
- if (!keyType) {
126
- throw new Error('keyType is required!')
127
- }
128
-
129
- const key = await agent.wallet.createKey({
130
- keyType,
131
- keyBackend: shouldKeyBeHardwareBacked ? KeyBackend.SecureElement : KeyBackend.Software,
132
- })
133
-
134
- if (didMethod) {
135
- const didResult = await agent.dids.create<JwkDidCreateOptions | KeyDidCreateOptions>({
136
- method: didMethod,
137
- options: {
138
- key,
139
- },
140
- })
141
-
142
- if (didResult.didState.state !== 'finished') {
143
- throw new Error('DID creation failed.')
144
- }
145
-
146
- let verificationMethodId: string
147
- if (didMethod === 'jwk') {
148
- const didJwk = DidJwk.fromDid(didResult.didState.did)
149
- verificationMethodId = didJwk.verificationMethodId
150
- } else {
151
- const didKey = DidKey.fromDid(didResult.didState.did)
152
- verificationMethodId = `${didKey.did}#${didKey.key.fingerprint}`
153
- }
154
-
155
- return {
156
- didUrl: verificationMethodId,
157
- method: 'did',
158
- }
159
- }
160
-
161
- // Otherwise we also support plain jwk for sd-jwt only
162
- if (
163
- supportsJwk &&
164
- (credentialFormat === OpenId4VciCredentialFormatProfile.SdJwtVc ||
165
- credentialFormat === OpenId4VciCredentialFormatProfile.MsoMdoc)
166
- ) {
167
- return {
168
- method: 'jwk',
169
- jwk: getJwkFromKey(key),
170
- }
171
- }
172
-
173
- throw new Error(
174
- `No supported binding method could be found. Supported methods are did:key and did:jwk, or plain jwk for sd-jwt/mdoc. Issuer supports ${
175
- supportsJwk ? 'jwk, ' : ''
176
- }${supportedDidMethods?.join(', ') ?? 'Unknown'}`
177
- )
178
- }
179
-
180
- export const receiveCredentialFromOpenId4VciOffer = async ({
181
- agent,
182
- resolvedCredentialOffer,
183
- accessToken,
184
- credentialConfigurationIdsToRequest,
185
- clientId,
186
- pidSchemes,
187
- }: {
188
- agent: Agent
189
- resolvedCredentialOffer: OpenId4VciResolvedCredentialOffer
190
- accessToken: OpenId4VciRequestTokenResponse
191
- credentialConfigurationIdsToRequest?: string[]
192
- clientId?: string
193
- pidSchemes?: { sdJwtVcVcts: Array<string>; msoMdocDoctypes: Array<string> }
194
- }) => {
195
- const offeredCredentialsToRequest = credentialConfigurationIdsToRequest
196
- ? resolvedCredentialOffer.offeredCredentials.filter((offered) =>
197
- credentialConfigurationIdsToRequest.includes(offered.id)
198
- )
199
- : [resolvedCredentialOffer.offeredCredentials[0]]
200
-
201
- if (offeredCredentialsToRequest.length === 0) {
202
- throw new Error(
203
- `Parameter 'credentialConfigurationIdsToRequest' with values ${credentialConfigurationIdsToRequest} is not a credential_configuration_id in the credential offer.`
204
- )
205
- }
206
-
207
- const credentials = await agent.modules.openId4VcHolder.requestCredentials({
208
- resolvedCredentialOffer,
209
- ...accessToken,
210
- clientId,
211
- credentialsToRequest: credentialConfigurationIdsToRequest,
212
- verifyCredentialStatus: false,
213
- allowedProofOfPossessionSignatureAlgorithms: [
214
- // NOTE: MATTR launchpad for JFF MUST use EdDSA. So it is important that the default (first allowed one)
215
- // is EdDSA. The list is ordered by preference, so if no suites are defined by the issuer, the first one
216
- // will be used
217
- JwaSignatureAlgorithm.EdDSA,
218
- JwaSignatureAlgorithm.ES256,
219
- ],
220
- credentialBindingResolver: async ({
221
- supportedDidMethods,
222
- keyType,
223
- supportsAllDidMethods,
224
- supportsJwk,
225
- credentialFormat,
226
- supportedCredentialId,
227
- }: OpenId4VciCredentialBindingOptions) => {
228
- return customCredentialBindingResolver({
229
- agent,
230
- supportedDidMethods,
231
- keyType,
232
- supportsAllDidMethods,
233
- supportsJwk,
234
- credentialFormat,
235
- supportedCredentialId,
236
- resolvedCredentialOffer,
237
- pidSchemes,
238
- })
239
- },
240
- })
241
-
242
- // We only support one credential for now
243
- const [firstCredential] = credentials
244
- if (!firstCredential)
245
- throw new Error('Error retrieving credential using pre authorized flow: firstCredential undefined!.')
246
-
247
- let record: SdJwtVcRecord | W3cCredentialRecord | MdocRecord
248
-
249
- if (typeof firstCredential === 'string') {
250
- throw new Error('Error retrieving credential using pre authorized flow: firstCredential is string.')
251
- }
252
-
253
- if ('compact' in firstCredential.credential) {
254
- // TODO: add claimFormat to SdJwtVc
255
- record = new SdJwtVcRecord({
256
- compactSdJwtVc: firstCredential.credential.compact,
257
- })
258
- } else if (firstCredential.credential instanceof Mdoc) {
259
- record = new MdocRecord({
260
- mdoc: firstCredential.credential,
261
- })
262
- } else {
263
- record = new W3cCredentialRecord({
264
- credential: firstCredential.credential as W3cJwtVerifiableCredential | W3cJsonLdVerifiableCredential,
265
- // We don't support expanded types right now, but would become problem when we support JSON-LD
266
- tags: {},
267
- })
268
- }
269
-
270
- const openId4VcMetadata = extractOpenId4VcCredentialMetadata(
271
- resolvedCredentialOffer.offeredCredentials[0] as OpenId4VciCredentialSupportedWithId,
272
- {
273
- id: resolvedCredentialOffer.metadata.issuer,
274
- display: resolvedCredentialOffer.metadata.credentialIssuerMetadata.display,
275
- }
276
- )
277
-
278
- setOpenId4VcCredentialMetadata(record, openId4VcMetadata)
279
-
280
- return record
281
- }
@@ -1,286 +0,0 @@
1
- import { Agent, DifPexCredentialsForRequest, Jwt, X509ModuleConfig } from '@credo-ts/core'
2
- import { ParseInvitationResult } from '../../utils/parsers'
3
- import q from 'query-string'
4
- import { OpenId4VPRequestRecord } from './types'
5
- import { getHostNameFromUrl } from './utils/utils'
6
- import { OpenId4VcSiopVerifiedAuthorizationRequest } from '@credo-ts/openid4vc'
7
- import { Linking } from 'react-native'
8
-
9
- function handleTextResponse(text: string): ParseInvitationResult {
10
- // If the text starts with 'ey' we assume it's a JWT and thus an OpenID authorization request
11
- if (text.startsWith('ey')) {
12
- return {
13
- success: true,
14
- result: {
15
- format: 'parsed',
16
- type: 'openid-authorization-request',
17
- data: text,
18
- },
19
- }
20
- }
21
-
22
- // Otherwise we still try to parse it as JSON
23
- try {
24
- const json: unknown = JSON.parse(text)
25
- return handleJsonResponse(json)
26
-
27
- // handel like above
28
- } catch (error) {
29
- throw new Error(`[handleTextResponse] Error:${error}`)
30
- }
31
- }
32
-
33
- function handleJsonResponse(json: unknown): ParseInvitationResult {
34
- // We expect a JSON object
35
- if (!json || typeof json !== 'object' || Array.isArray(json)) {
36
- throw new Error('[handleJsonResponse] Invitation not recognized.')
37
- }
38
-
39
- if ('@type' in json) {
40
- return {
41
- success: true,
42
- result: {
43
- format: 'parsed',
44
- type: 'didcomm',
45
- data: json,
46
- },
47
- }
48
- }
49
-
50
- if ('credential_issuer' in json) {
51
- return {
52
- success: true,
53
- result: {
54
- format: 'parsed',
55
- type: 'openid-credential-offer',
56
- data: json,
57
- },
58
- }
59
- }
60
-
61
- throw new Error('[handleJsonResponse] Invitation not recognized.')
62
- }
63
-
64
- export async function fetchInvitationDataUrl(dataUrl: string): Promise<ParseInvitationResult> {
65
- // If we haven't had a response after 10 seconds, we will handle as if the invitation is not valid.
66
- const abortController = new AbortController()
67
- const timeout = setTimeout(() => abortController.abort(), 10000)
68
-
69
- try {
70
- // If we still don't know what type of invitation it is, we assume it is a URL that we need to fetch to retrieve the invitation.
71
- const response = await fetch(dataUrl, {
72
- headers: {
73
- // for DIDComm out of band invitations we should include application/json
74
- // but we are flexible and also want to support other types of invitations
75
- // as e.g. the OpenID SIOP request is a signed encoded JWT string
76
- Accept: 'application/json, text/plain, */*',
77
- },
78
- })
79
- clearTimeout(timeout)
80
- if (!response.ok) {
81
- throw new Error('[retrieve_invitation_error] Unable to retrieve invitation.')
82
- }
83
-
84
- const contentType = response.headers.get('content-type')
85
- if (contentType?.includes('application/json')) {
86
- const json: unknown = await response.json()
87
- return handleJsonResponse(json)
88
- }
89
- const text = await response.text()
90
- return handleTextResponse(text)
91
- } catch (error) {
92
- clearTimeout(timeout)
93
- throw new Error(`[retrieve_invitation_error] Unable to retrieve invitation: ${error}`)
94
- }
95
- }
96
-
97
- const extractCertificateFromJwt = (jwt: string) => {
98
- const jwtHeader = Jwt.fromSerializedJwt(jwt).header
99
- return Array.isArray(jwtHeader.x5c) && typeof jwtHeader.x5c[0] === 'string' ? jwtHeader.x5c[0] : null
100
- }
101
-
102
- /**
103
- * This is a temp method to allow for untrusted certificates to still work with the wallet.
104
- */
105
- export const extractCertificateFromAuthorizationRequest = async ({
106
- data,
107
- uri,
108
- }: {
109
- data?: string
110
- uri?: string
111
- }): Promise<{ data: string | null; certificate: string | null }> => {
112
- try {
113
- if (data) {
114
- return {
115
- data,
116
- certificate: extractCertificateFromJwt(data),
117
- }
118
- }
119
-
120
- if (uri) {
121
- const query = q.parseUrl(uri).query
122
- if (query.request_uri && typeof query.request_uri === 'string') {
123
- const result = await fetchInvitationDataUrl(query.request_uri)
124
- if (
125
- result.success &&
126
- result.result.type === 'openid-authorization-request' &&
127
- typeof result.result.data === 'string'
128
- ) {
129
- return {
130
- data: result.result.data,
131
- certificate: extractCertificateFromJwt(result.result.data),
132
- }
133
- }
134
- } else if (query.request && typeof query.request === 'string') {
135
- const _res = {
136
- data: query.request,
137
- certificate: extractCertificateFromJwt(query.request),
138
- }
139
- return _res
140
- }
141
- }
142
- return { data: null, certificate: null }
143
- } catch (error) {
144
- return { data: null, certificate: null }
145
- }
146
- }
147
-
148
- export async function withTrustedCertificate<T>(
149
- agent: Agent,
150
- certificate: string | null,
151
- method: () => Promise<T> | T
152
- ): Promise<T> {
153
- const x509ModuleConfig = agent.dependencyManager.resolve(X509ModuleConfig)
154
- const currentTrustedCertificates = x509ModuleConfig.trustedCertificates
155
- ? [...x509ModuleConfig.trustedCertificates]
156
- : []
157
-
158
- try {
159
- if (certificate) agent.x509.addTrustedCertificate(certificate)
160
- return await method()
161
- } finally {
162
- if (certificate) x509ModuleConfig.setTrustedCertificates(currentTrustedCertificates as [string])
163
- }
164
- }
165
-
166
- //This settings should be moved to an injectable config
167
- const allowUntrustedCertificates = false
168
-
169
- export const getCredentialsForProofRequest = async ({
170
- agent,
171
- data,
172
- uri,
173
- }: {
174
- agent: Agent
175
- // Either data itself (the offer) or uri can be passed
176
- data?: string
177
- uri?: string
178
- fetchAuthorization?: boolean
179
- authorization?: { clientId: string; redirectUri: string }
180
- }): Promise<OpenId4VPRequestRecord | undefined> => {
181
- let requestUri = uri
182
-
183
- try {
184
- const { certificate = null, data: newData = null } = allowUntrustedCertificates
185
- ? await extractCertificateFromAuthorizationRequest({ data, uri })
186
- : {}
187
-
188
- if (newData) {
189
- // FIXME: Credo only support request string, but we already parsed it before. So we construct an request here
190
- // but in the future we need to support the parsed request in Credo directly
191
- requestUri = `openid://?request=${encodeURIComponent(newData)}`
192
- } else if (uri) {
193
- requestUri = uri
194
- } else {
195
- throw new Error('Either data or uri must be provided')
196
- }
197
-
198
- agent.config.logger.info(`$$Receiving openid uri ${requestUri}`)
199
-
200
- // Temp solution to add and remove the trusted certificate
201
- const resolved = await withTrustedCertificate(agent, certificate, () => {
202
- return agent.modules.openId4VcHolder.resolveSiopAuthorizationRequest(requestUri)
203
- })
204
-
205
- if (!resolved.presentationExchange) {
206
- throw new Error('No presentation exchange found in authorization request.')
207
- }
208
-
209
- return {
210
- ...resolved.presentationExchange,
211
- authorizationRequest: resolved.authorizationRequest,
212
- verifierHostName: resolved.authorizationRequest.responseURI
213
- ? getHostNameFromUrl(resolved.authorizationRequest.responseURI)
214
- : undefined,
215
- createdAt: new Date(),
216
- type: 'OpenId4VPRequestRecord',
217
- }
218
- } catch (err) {
219
- agent.config.logger.error(`Parsing presentation request: ${(err as Error)?.message ?? err}`)
220
- throw err
221
- }
222
- }
223
-
224
- export const shareProof = async ({
225
- agent,
226
- authorizationRequest,
227
- credentialsForRequest,
228
- selectedCredentials,
229
- allowUntrustedCertificate = false,
230
- }: {
231
- agent: Agent
232
- authorizationRequest: OpenId4VcSiopVerifiedAuthorizationRequest
233
- credentialsForRequest: DifPexCredentialsForRequest
234
- selectedCredentials: { [inputDescriptorId: string]: { id: string; claimFormat: string } }
235
- allowUntrustedCertificate?: boolean
236
- }) => {
237
- if (!credentialsForRequest.areRequirementsSatisfied) {
238
- throw new Error('Requirements from proof request are not satisfied')
239
- }
240
-
241
- // Map all requirements and entries to a credential record. If a credential record for an
242
- // input descriptor has been provided in `selectedCredentials` we will use that. Otherwise
243
- // it will pick the first available credential.
244
- const credentials = Object.fromEntries(
245
- credentialsForRequest.requirements.flatMap((requirement) =>
246
- requirement.submissionEntry.map((entry) => {
247
- const credentialId = selectedCredentials[entry.inputDescriptorId].id
248
- const credential =
249
- entry.verifiableCredentials.find((vc) => vc.credentialRecord.id === credentialId) ??
250
- entry.verifiableCredentials[0]
251
-
252
- return [entry.inputDescriptorId, [credential.credentialRecord]]
253
- })
254
- )
255
- )
256
-
257
- try {
258
- // Temp solution to add and remove the trusted certicaite
259
- const certificate =
260
- authorizationRequest.jwt && allowUntrustedCertificate ? extractCertificateFromJwt(authorizationRequest.jwt) : null
261
-
262
- const result = await withTrustedCertificate(agent, certificate, () =>
263
- agent.modules.openId4VcHolder.acceptSiopAuthorizationRequest({
264
- authorizationRequest,
265
- presentationExchange: {
266
- credentials,
267
- },
268
- })
269
- )
270
-
271
- // if redirect_uri is provided, open it in the browser
272
- // Even if the response returned an error, we must open this uri
273
- if (typeof result.serverResponse.body === 'object' && typeof result.serverResponse.body.redirect_uri === 'string') {
274
- await Linking.openURL(result.serverResponse.body.redirect_uri)
275
- }
276
-
277
- if (result.serverResponse.status < 200 || result.serverResponse.status > 299) {
278
- throw new Error(`Error while accepting authorization request. ${result.serverResponse.body as string}`)
279
- }
280
-
281
- return result
282
- } catch (error) {
283
- // Handle biometric authentication errors
284
- throw new Error(`Error accepting proof request. ${(error as Error)?.message ?? error}`)
285
- }
286
- }