@bifold/core 2.4.6 → 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 (401) 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/MobileVerifierLoading.js +4 -3
  8. package/lib/commonjs/screens/MobileVerifierLoading.js.map +1 -1
  9. package/lib/commonjs/screens/PINCreate.js +3 -10
  10. package/lib/commonjs/screens/PINCreate.js.map +1 -1
  11. package/lib/commonjs/screens/WhatAreContacts.js +3 -2
  12. package/lib/commonjs/screens/WhatAreContacts.js.map +1 -1
  13. package/lib/module/contexts/reducers/store.js +3 -2
  14. package/lib/module/contexts/reducers/store.js.map +1 -1
  15. package/lib/module/index.js +42 -45
  16. package/lib/module/index.js.map +1 -1
  17. package/lib/module/screens/AttemptLockout.js +28 -36
  18. package/lib/module/screens/AttemptLockout.js.map +1 -1
  19. package/lib/module/screens/MobileVerifierLoading.js +4 -3
  20. package/lib/module/screens/MobileVerifierLoading.js.map +1 -1
  21. package/lib/module/screens/PINCreate.js +3 -10
  22. package/lib/module/screens/PINCreate.js.map +1 -1
  23. package/lib/module/screens/WhatAreContacts.js +3 -2
  24. package/lib/module/screens/WhatAreContacts.js.map +1 -1
  25. package/lib/typescript/src/contexts/reducers/store.d.ts.map +1 -1
  26. package/lib/typescript/src/index.d.ts +57 -61
  27. package/lib/typescript/src/index.d.ts.map +1 -1
  28. package/lib/typescript/src/screens/AttemptLockout.d.ts.map +1 -1
  29. package/lib/typescript/src/screens/MobileVerifierLoading.d.ts.map +1 -1
  30. package/lib/typescript/src/screens/PINCreate.d.ts.map +1 -1
  31. package/lib/typescript/src/screens/WhatAreContacts.d.ts.map +1 -1
  32. package/package.json +3 -4
  33. package/src/App.tsx +0 -79
  34. package/src/animated-components.ts +0 -30
  35. package/src/assets/fonts/MaterialIcons.ttf +0 -0
  36. package/src/assets/icons/code.svg +0 -4
  37. package/src/assets/icons/large-arrow.svg +0 -5
  38. package/src/assets/icons/pencil.svg +0 -15
  39. package/src/assets/icons/trash.svg +0 -31
  40. package/src/assets/img/Artwork_1024x1024.png +0 -0
  41. package/src/assets/img/HistoryCardAcceptedIcon.svg +0 -4
  42. package/src/assets/img/HistoryCardExpiredIcon.svg +0 -4
  43. package/src/assets/img/HistoryCardRevokedIcon.svg +0 -4
  44. package/src/assets/img/HistoryInformationSentIcon.svg +0 -4
  45. package/src/assets/img/HistoryPinUpdatedIcon.svg +0 -4
  46. package/src/assets/img/IconChevronRight.svg +0 -5
  47. package/src/assets/img/activity-indicator-circle.svg +0 -90
  48. package/src/assets/img/app-lockout.svg +0 -1
  49. package/src/assets/img/biometrics.svg +0 -74
  50. package/src/assets/img/chat-loading.svg +0 -1
  51. package/src/assets/img/check-in-circle.svg +0 -18
  52. package/src/assets/img/connection-pending.svg +0 -112
  53. package/src/assets/img/contact-book.svg +0 -21
  54. package/src/assets/img/credential-card.svg +0 -18
  55. package/src/assets/img/credential-declined.svg +0 -28
  56. package/src/assets/img/credential-in-hand.svg +0 -48
  57. package/src/assets/img/credential-list.svg +0 -60
  58. package/src/assets/img/credential-pending.svg +0 -96
  59. package/src/assets/img/credential-success.svg +0 -48
  60. package/src/assets/img/delete-notification.svg +0 -1
  61. package/src/assets/img/empty-wallet.svg +0 -23
  62. package/src/assets/img/error-filled.svg +0 -12
  63. package/src/assets/img/exclamation-mark.svg +0 -17
  64. package/src/assets/img/home-center-img.svg +0 -71
  65. package/src/assets/img/icon-credential-offer-dark.svg +0 -7
  66. package/src/assets/img/icon-credential-offer-light.svg +0 -7
  67. package/src/assets/img/icon-info-recieved-dark.svg +0 -8
  68. package/src/assets/img/icon-info-recieved-light.svg +0 -8
  69. package/src/assets/img/icon-info-sent-dark.svg +0 -8
  70. package/src/assets/img/icon-info-sent-light.svg +0 -8
  71. package/src/assets/img/icon-proof-request-dark.svg +0 -11
  72. package/src/assets/img/icon-proof-request-light.svg +0 -11
  73. package/src/assets/img/information-received.svg +0 -1
  74. package/src/assets/img/logo-large.png +0 -0
  75. package/src/assets/img/logo-large@2x.png +0 -0
  76. package/src/assets/img/logo-large@3x.png +0 -0
  77. package/src/assets/img/logo.svg +0 -15
  78. package/src/assets/img/message-text-icon-outline.svg +0 -1
  79. package/src/assets/img/message-text-icon.svg +0 -1
  80. package/src/assets/img/no_information_shared.svg +0 -36
  81. package/src/assets/img/preface.svg +0 -15
  82. package/src/assets/img/proof-declined.svg +0 -66
  83. package/src/assets/img/proof-pending.svg +0 -61
  84. package/src/assets/img/proof-success.svg +0 -72
  85. package/src/assets/img/push-notifications.svg +0 -1
  86. package/src/assets/img/qrcode-scan-icon.svg +0 -1
  87. package/src/assets/img/scan-share.svg +0 -102
  88. package/src/assets/img/secure-check.svg +0 -4
  89. package/src/assets/img/secure-image.svg +0 -64
  90. package/src/assets/img/update-available.svg +0 -26
  91. package/src/assets/img/verifier-request-declined.svg +0 -34
  92. package/src/assets/img/wallet-back.svg +0 -20
  93. package/src/assets/img/wallet-front.svg +0 -32
  94. package/src/assets/img/wallet-icon-outline.svg +0 -1
  95. package/src/assets/img/wallet-icon.svg +0 -1
  96. package/src/assets/img/wallet.svg +0 -43
  97. package/src/assets/oca-bundles.json +0 -174
  98. package/src/components/animated/ButtonLoading.tsx +0 -32
  99. package/src/components/animated/ConnectionLoading.tsx +0 -53
  100. package/src/components/animated/CredentialAdded.tsx +0 -72
  101. package/src/components/animated/CredentialPending.tsx +0 -63
  102. package/src/components/animated/LoadingIndicator.tsx +0 -49
  103. package/src/components/animated/PresentationLoading.tsx +0 -52
  104. package/src/components/animated/RecordLoading.tsx +0 -75
  105. package/src/components/animated/SendingProof.tsx +0 -53
  106. package/src/components/animated/SentProof.tsx +0 -72
  107. package/src/components/buttons/Button-api.tsx +0 -46
  108. package/src/components/buttons/Button.tsx +0 -125
  109. package/src/components/buttons/HeaderHome.tsx +0 -25
  110. package/src/components/buttons/IconButton.tsx +0 -93
  111. package/src/components/buttons/InfoIcon.tsx +0 -35
  112. package/src/components/buttons/SettingsMenu.tsx +0 -26
  113. package/src/components/buttons/ToggleButton.tsx +0 -93
  114. package/src/components/buttons/index.ts +0 -4
  115. package/src/components/chat/ActionSlider.tsx +0 -104
  116. package/src/components/chat/ChatActions.tsx +0 -33
  117. package/src/components/chat/ChatBubble.tsx +0 -20
  118. package/src/components/chat/ChatEvent.tsx +0 -31
  119. package/src/components/chat/ChatMessage.tsx +0 -142
  120. package/src/components/chat/MessageInput.tsx +0 -46
  121. package/src/components/chat/index.ts +0 -4
  122. package/src/components/forms/WalletNameForm.tsx +0 -148
  123. package/src/components/index.ts +0 -4
  124. package/src/components/inputs/BiometryControl.tsx +0 -190
  125. package/src/components/inputs/BulletPoint.tsx +0 -32
  126. package/src/components/inputs/CheckBoxRow.tsx +0 -67
  127. package/src/components/inputs/InlineErrorText.tsx +0 -60
  128. package/src/components/inputs/LimitedTextInput.tsx +0 -71
  129. package/src/components/inputs/PINInput.tsx +0 -175
  130. package/src/components/inputs/SingleSelectBlock.tsx +0 -53
  131. package/src/components/listItems/ContactCredentialListItem.tsx +0 -79
  132. package/src/components/listItems/ContactListItem.tsx +0 -121
  133. package/src/components/listItems/NotificationListItem.tsx +0 -514
  134. package/src/components/misc/AvatarView.tsx +0 -33
  135. package/src/components/misc/CardWatermark.tsx +0 -52
  136. package/src/components/misc/ConnectionAlert.tsx +0 -123
  137. package/src/components/misc/ConnectionImage.tsx +0 -45
  138. package/src/components/misc/ContentGradient.tsx +0 -40
  139. package/src/components/misc/CredentialCard.tsx +0 -161
  140. package/src/components/misc/CredentialCard10.tsx +0 -329
  141. package/src/components/misc/CredentialCard11.tsx +0 -701
  142. package/src/components/misc/CredentialCard11ActionFooter.tsx +0 -55
  143. package/src/components/misc/CredentialCard11Issuer.tsx +0 -74
  144. package/src/components/misc/CredentialCard11Logo.tsx +0 -61
  145. package/src/components/misc/EmptyList.tsx +0 -27
  146. package/src/components/misc/EmptyListContacts.tsx +0 -55
  147. package/src/components/misc/ErrorBoundary.tsx +0 -200
  148. package/src/components/misc/FauxHeader.tsx +0 -75
  149. package/src/components/misc/InfoBox.tsx +0 -283
  150. package/src/components/misc/NoNewUpdates.tsx +0 -38
  151. package/src/components/misc/PINHeader.tsx +0 -25
  152. package/src/components/misc/PINValidationHelper.tsx +0 -48
  153. package/src/components/misc/Pagination.tsx +0 -114
  154. package/src/components/misc/QRRenderer.tsx +0 -53
  155. package/src/components/misc/QRScanner.tsx +0 -395
  156. package/src/components/misc/QRScannerTorch.tsx +0 -74
  157. package/src/components/misc/ScanCamera.tsx +0 -86
  158. package/src/components/misc/ScanTab.tsx +0 -45
  159. package/src/components/misc/SharedProofData.tsx +0 -98
  160. package/src/components/misc/UnorderedList.tsx +0 -28
  161. package/src/components/misc/VerifierCredentialCard.tsx +0 -378
  162. package/src/components/misc/index.ts +0 -2
  163. package/src/components/modals/AlertModal.tsx +0 -42
  164. package/src/components/modals/AppGuideModal.tsx +0 -142
  165. package/src/components/modals/CameraDisclosureModal.tsx +0 -126
  166. package/src/components/modals/CommonRemoveModal.tsx +0 -337
  167. package/src/components/modals/DeveloperModal.tsx +0 -32
  168. package/src/components/modals/DismissiblePopupModal.tsx +0 -169
  169. package/src/components/modals/ErrorModal.tsx +0 -107
  170. package/src/components/modals/ImageModal.tsx +0 -80
  171. package/src/components/modals/NetInfoModal.tsx +0 -35
  172. package/src/components/modals/PopupModal.tsx +0 -56
  173. package/src/components/modals/ProofCancelModal.tsx +0 -79
  174. package/src/components/modals/SafeAreaModal.tsx +0 -17
  175. package/src/components/record/Record.tsx +0 -100
  176. package/src/components/record/RecordBinaryField.tsx +0 -55
  177. package/src/components/record/RecordDateIntField.tsx +0 -63
  178. package/src/components/record/RecordField.tsx +0 -154
  179. package/src/components/record/RecordFooter.tsx +0 -17
  180. package/src/components/record/RecordHeader.tsx +0 -17
  181. package/src/components/record/RecordRemove.tsx +0 -66
  182. package/src/components/texts/HeaderTitle.tsx +0 -25
  183. package/src/components/texts/HighlightTextBox.tsx +0 -41
  184. package/src/components/texts/InfoTextBox.tsx +0 -129
  185. package/src/components/texts/Link.tsx +0 -41
  186. package/src/components/texts/Text.tsx +0 -21
  187. package/src/components/texts/ThemedText.tsx +0 -24
  188. package/src/components/toast/BaseToast.tsx +0 -128
  189. package/src/components/toast/ToastConfig.tsx +0 -21
  190. package/src/components/tour/AttachTourStep.tsx +0 -73
  191. package/src/components/tour/CredentialOfferTourSteps.tsx +0 -41
  192. package/src/components/tour/CredentialsTourSteps.tsx +0 -41
  193. package/src/components/tour/HomeTourSteps.tsx +0 -104
  194. package/src/components/tour/ProofRequestTourSteps.tsx +0 -41
  195. package/src/components/tour/SpotCutout.tsx +0 -65
  196. package/src/components/tour/TourBox.tsx +0 -255
  197. package/src/components/tour/TourOverlay.tsx +0 -134
  198. package/src/components/views/Banner.tsx +0 -181
  199. package/src/components/views/CredentialCardLogo.tsx +0 -77
  200. package/src/components/views/CredentialDetailPrimaryHeader.tsx +0 -107
  201. package/src/components/views/CredentialDetailSecondaryHeader.tsx +0 -60
  202. package/src/components/views/HeaderWithBanner.tsx +0 -17
  203. package/src/components/views/HomeFooterView.tsx +0 -110
  204. package/src/components/views/HomeHeaderView.tsx +0 -12
  205. package/src/components/views/KeyboardView.tsx +0 -41
  206. package/src/components/views/LoadingPlaceholder.tsx +0 -168
  207. package/src/components/views/LoadingView.tsx +0 -29
  208. package/src/components/views/ProgressBar.tsx +0 -53
  209. package/src/components/views/PushNotificationsContent.tsx +0 -51
  210. package/src/components/views/PushNotificationsDisabledContent.tsx +0 -47
  211. package/src/configs/ledgers/indy/index.ts +0 -8
  212. package/src/configs/ledgers/indy/ledgers.json +0 -51
  213. package/src/constants.ts +0 -107
  214. package/src/container-api.ts +0 -247
  215. package/src/container-impl.ts +0 -243
  216. package/src/contexts/activity.tsx +0 -145
  217. package/src/contexts/animated-components.ts +0 -9
  218. package/src/contexts/auth.tsx +0 -240
  219. package/src/contexts/index.ts +0 -3
  220. package/src/contexts/navigation.tsx +0 -19
  221. package/src/contexts/network.tsx +0 -125
  222. package/src/contexts/reducers/index.ts +0 -3
  223. package/src/contexts/reducers/store.ts +0 -754
  224. package/src/contexts/store.tsx +0 -103
  225. package/src/contexts/theme.tsx +0 -51
  226. package/src/contexts/tour/tour-context.tsx +0 -160
  227. package/src/contexts/tour/tour-provider.tsx +0 -160
  228. package/src/hooks/bundle-resolver.ts +0 -95
  229. package/src/hooks/chat-messages.tsx +0 -263
  230. package/src/hooks/connections.ts +0 -37
  231. package/src/hooks/credential-card-styles.ts +0 -144
  232. package/src/hooks/credentials.ts +0 -11
  233. package/src/hooks/deep-links.ts +0 -49
  234. package/src/hooks/developer-mode.ts +0 -25
  235. package/src/hooks/lockout.ts +0 -77
  236. package/src/hooks/notifications.ts +0 -108
  237. package/src/hooks/oob.ts +0 -17
  238. package/src/hooks/proof-request-templates.ts +0 -40
  239. package/src/hooks/proofs.ts +0 -32
  240. package/src/hooks/screen-capture.ts +0 -52
  241. package/src/hooks/useBifoldAgentSetup.ts +0 -169
  242. package/src/hooks/useOnboardingState.ts +0 -53
  243. package/src/hooks/usePINValidation.ts +0 -98
  244. package/src/index.ts +0 -239
  245. package/src/layout/ScreenLayout.tsx +0 -53
  246. package/src/localization/en/en.json +0 -951
  247. package/src/localization/en/index.ts +0 -3
  248. package/src/localization/fr/fr.json +0 -933
  249. package/src/localization/fr/index.ts +0 -3
  250. package/src/localization/index.ts +0 -66
  251. package/src/localization/pt-br/index.ts +0 -3
  252. package/src/localization/pt-br/pt-br.json +0 -911
  253. package/src/modules/history/context/historyManager.tsx +0 -247
  254. package/src/modules/history/index.ts +0 -2
  255. package/src/modules/history/navigation/HistoryStack.tsx +0 -29
  256. package/src/modules/history/services/queue.service.tsx +0 -31
  257. package/src/modules/history/types/index.ts +0 -92
  258. package/src/modules/history/ui/HistoryPage.tsx +0 -133
  259. package/src/modules/history/ui/HistorySettings.tsx +0 -183
  260. package/src/modules/history/ui/assets/img/HistoryCardAcceptedIcon.svg +0 -4
  261. package/src/modules/history/ui/assets/img/HistoryCardExpiredIcon.svg +0 -4
  262. package/src/modules/history/ui/assets/img/HistoryCardRevokedIcon.svg +0 -4
  263. package/src/modules/history/ui/assets/img/HistoryInformationSentIcon.svg +0 -4
  264. package/src/modules/history/ui/assets/img/HistoryPinUpdatedIcon.svg +0 -4
  265. package/src/modules/history/ui/assets/img/IconChevronRight.svg +0 -3
  266. package/src/modules/history/ui/components/BulletPoint.tsx +0 -49
  267. package/src/modules/history/ui/components/HistoryListItem.tsx +0 -251
  268. package/src/modules/history/ui/components/HistoryMenu.tsx +0 -25
  269. package/src/modules/history/ui/components/SingleSelectBlock.tsx +0 -72
  270. package/src/modules/openid/components/CredentialRowCard.tsx +0 -64
  271. package/src/modules/openid/components/OpenIDCredentialCard.tsx +0 -276
  272. package/src/modules/openid/context/OpenIDCredentialRecordProvider.tsx +0 -296
  273. package/src/modules/openid/display.tsx +0 -467
  274. package/src/modules/openid/displayProof.tsx +0 -86
  275. package/src/modules/openid/hooks/openid.tsx +0 -111
  276. package/src/modules/openid/metadata.tsx +0 -59
  277. package/src/modules/openid/offerResolve.tsx +0 -281
  278. package/src/modules/openid/resolverProof.tsx +0 -286
  279. package/src/modules/openid/screens/OpenIDCredentialDetails.tsx +0 -214
  280. package/src/modules/openid/screens/OpenIDCredentialOffer.tsx +0 -192
  281. package/src/modules/openid/screens/OpenIDProofChangeCredential.tsx +0 -133
  282. package/src/modules/openid/screens/OpenIDProofPresentation.tsx +0 -423
  283. package/src/modules/openid/types.tsx +0 -111
  284. package/src/modules/openid/utils/utils.tsx +0 -119
  285. package/src/navigators/ConnectStack.tsx +0 -68
  286. package/src/navigators/ContactStack.tsx +0 -91
  287. package/src/navigators/CredentialStack.tsx +0 -48
  288. package/src/navigators/DeliveryStack.tsx +0 -76
  289. package/src/navigators/HomeStack.tsx +0 -37
  290. package/src/navigators/MainStack.tsx +0 -146
  291. package/src/navigators/NotificationStack.tsx +0 -56
  292. package/src/navigators/OnboardingScreens.ts +0 -142
  293. package/src/navigators/OnboardingStack.tsx +0 -205
  294. package/src/navigators/ProofRequestStack.tsx +0 -113
  295. package/src/navigators/RootStack.tsx +0 -71
  296. package/src/navigators/SettingStack.tsx +0 -174
  297. package/src/navigators/TabStack.tsx +0 -304
  298. package/src/navigators/defaultLayoutOptions.tsx +0 -17
  299. package/src/navigators/defaultStackOptions.tsx +0 -102
  300. package/src/navigators/index.ts +0 -27
  301. package/src/onboarding.ts +0 -90
  302. package/src/screens/AttemptLockout.tsx +0 -153
  303. package/src/screens/AutoLock.tsx +0 -140
  304. package/src/screens/Biometry.tsx +0 -54
  305. package/src/screens/Chat.tsx +0 -141
  306. package/src/screens/ConfigureMediator.tsx +0 -160
  307. package/src/screens/Connection.tsx +0 -394
  308. package/src/screens/ContactDetails.tsx +0 -350
  309. package/src/screens/CredentialDetails.tsx +0 -473
  310. package/src/screens/CredentialOffer.tsx +0 -334
  311. package/src/screens/CredentialOfferAccept.tsx +0 -189
  312. package/src/screens/DataRetention.tsx +0 -91
  313. package/src/screens/Developer.tsx +0 -289
  314. package/src/screens/Home.tsx +0 -173
  315. package/src/screens/JSONDetails.tsx +0 -104
  316. package/src/screens/Language.tsx +0 -97
  317. package/src/screens/ListContacts.tsx +0 -112
  318. package/src/screens/ListCredentials.tsx +0 -135
  319. package/src/screens/ListProofRequests.tsx +0 -148
  320. package/src/screens/MobileVerifierLoading.tsx +0 -106
  321. package/src/screens/NameWallet.tsx +0 -9
  322. package/src/screens/Onboarding.tsx +0 -162
  323. package/src/screens/OnboardingPages.tsx +0 -160
  324. package/src/screens/PINChange.tsx +0 -249
  325. package/src/screens/PINCreate.tsx +0 -185
  326. package/src/screens/PINEnter.tsx +0 -432
  327. package/src/screens/PINExplainer.tsx +0 -85
  328. package/src/screens/PINVerify.tsx +0 -195
  329. package/src/screens/PasteUrl.tsx +0 -140
  330. package/src/screens/Preface.tsx +0 -78
  331. package/src/screens/ProofChangeCredential.tsx +0 -179
  332. package/src/screens/ProofDetails.tsx +0 -348
  333. package/src/screens/ProofRequest.tsx +0 -999
  334. package/src/screens/ProofRequestAccept.tsx +0 -133
  335. package/src/screens/ProofRequestDetails.tsx +0 -270
  336. package/src/screens/ProofRequestUsageHistory.tsx +0 -152
  337. package/src/screens/ProofRequesting.tsx +0 -245
  338. package/src/screens/PushNotifications.tsx +0 -59
  339. package/src/screens/RenameContact.tsx +0 -155
  340. package/src/screens/RenameWallet.tsx +0 -26
  341. package/src/screens/Scan.tsx +0 -145
  342. package/src/screens/ScanHelp.tsx +0 -48
  343. package/src/screens/Settings.tsx +0 -415
  344. package/src/screens/Splash.tsx +0 -80
  345. package/src/screens/Terms.tsx +0 -127
  346. package/src/screens/ToggleBiometry.tsx +0 -153
  347. package/src/screens/TogglePushNotifications.tsx +0 -118
  348. package/src/screens/Tours.tsx +0 -93
  349. package/src/screens/UpdateAvailable.tsx +0 -119
  350. package/src/screens/WhatAreContacts.tsx +0 -71
  351. package/src/services/bifoldLogger.ts +0 -3
  352. package/src/services/keychain.ts +0 -184
  353. package/src/services/logger.ts +0 -89
  354. package/src/services/storage.ts +0 -136
  355. package/src/theme-builder.ts +0 -157
  356. package/src/theme.interface.ts +0 -580
  357. package/src/theme.ts +0 -1346
  358. package/src/types/attempt-lockout-config.ts +0 -8
  359. package/src/types/attestation.ts +0 -17
  360. package/src/types/chat.ts +0 -4
  361. package/src/types/config.ts +0 -64
  362. package/src/types/contact-details.ts +0 -5
  363. package/src/types/credential-list-footer.ts +0 -3
  364. package/src/types/credential-status.ts +0 -3
  365. package/src/types/credentials.ts +0 -7
  366. package/src/types/decline.ts +0 -5
  367. package/src/types/error.ts +0 -40
  368. package/src/types/fn.ts +0 -2
  369. package/src/types/genesis.ts +0 -35
  370. package/src/types/index.ts +0 -2
  371. package/src/types/metadata.ts +0 -16
  372. package/src/types/navigators.ts +0 -239
  373. package/src/types/notification.ts +0 -24
  374. package/src/types/permissions.ts +0 -2
  375. package/src/types/proof-items.ts +0 -32
  376. package/src/types/react-i18next.d.ts +0 -10
  377. package/src/types/remove.ts +0 -8
  378. package/src/types/security.ts +0 -32
  379. package/src/types/settings.ts +0 -28
  380. package/src/types/state.ts +0 -97
  381. package/src/types/tour.ts +0 -20
  382. package/src/types/version-check.ts +0 -18
  383. package/src/utils/PINValidation.ts +0 -98
  384. package/src/utils/agent.ts +0 -128
  385. package/src/utils/anonCredsProofRequestMapper.ts +0 -205
  386. package/src/utils/contacts.ts +0 -59
  387. package/src/utils/cred-def.ts +0 -33
  388. package/src/utils/credential.ts +0 -37
  389. package/src/utils/crypto.ts +0 -12
  390. package/src/utils/fileCache.ts +0 -152
  391. package/src/utils/helpers.ts +0 -1292
  392. package/src/utils/ledger.ts +0 -212
  393. package/src/utils/luminance.ts +0 -40
  394. package/src/utils/mediatorhelpers.ts +0 -71
  395. package/src/utils/migration.ts +0 -40
  396. package/src/utils/network.tsx +0 -55
  397. package/src/utils/oca.ts +0 -173
  398. package/src/utils/parsers.tsx +0 -111
  399. package/src/utils/proofBundle.ts +0 -220
  400. package/src/utils/schema.ts +0 -28
  401. 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
- }