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