@bifold/core 2.12.12 β 3.0.1
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.
- package/lib/commonjs/components/animated/CredentialAdded.js +12 -2
- package/lib/commonjs/components/animated/CredentialAdded.js.map +1 -1
- package/lib/commonjs/components/animated/CredentialPending.js +12 -2
- package/lib/commonjs/components/animated/CredentialPending.js.map +1 -1
- package/lib/commonjs/components/inputs/BiometryControl.js +29 -5
- package/lib/commonjs/components/inputs/BiometryControl.js.map +1 -1
- package/lib/commonjs/components/listItems/ContactCredentialListItem.js +8 -9
- package/lib/commonjs/components/listItems/ContactCredentialListItem.js.map +1 -1
- package/lib/commonjs/components/listItems/NotificationListItem.js +22 -18
- package/lib/commonjs/components/listItems/NotificationListItem.js.map +1 -1
- package/lib/commonjs/components/misc/CredentialCardGen.js.map +1 -1
- package/lib/commonjs/components/misc/QRScanner.js +2 -2
- package/lib/commonjs/components/misc/QRScanner.js.map +1 -1
- package/lib/commonjs/components/modals/ConfirmPINModal.js +0 -1
- package/lib/commonjs/components/modals/ConfirmPINModal.js.map +1 -1
- package/lib/commonjs/components/views/CredentialDetailPrimaryHeader.js +1 -1
- package/lib/commonjs/components/views/CredentialDetailPrimaryHeader.js.map +1 -1
- package/lib/commonjs/components/views/HomeFooterView.js +2 -2
- package/lib/commonjs/components/views/HomeFooterView.js.map +1 -1
- package/lib/commonjs/container-impl.js +4 -2
- package/lib/commonjs/container-impl.js.map +1 -1
- package/lib/commonjs/contexts/activity.js +4 -4
- package/lib/commonjs/contexts/activity.js.map +1 -1
- package/lib/commonjs/contexts/auth.js +44 -27
- package/lib/commonjs/contexts/auth.js.map +1 -1
- package/lib/commonjs/hooks/chat-messages.js +12 -12
- package/lib/commonjs/hooks/chat-messages.js.map +1 -1
- package/lib/commonjs/hooks/connections.js +3 -2
- package/lib/commonjs/hooks/connections.js.map +1 -1
- package/lib/commonjs/hooks/credentials.js.map +1 -1
- package/lib/commonjs/hooks/notifications.js +10 -8
- package/lib/commonjs/hooks/notifications.js.map +1 -1
- package/lib/commonjs/hooks/oob.js +14 -6
- package/lib/commonjs/hooks/oob.js.map +1 -1
- package/lib/commonjs/hooks/proofs.js.map +1 -1
- package/lib/commonjs/hooks/useBifoldAgentSetup.js +22 -20
- package/lib/commonjs/hooks/useBifoldAgentSetup.js.map +1 -1
- package/lib/commonjs/index.js +9 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/localization/en/en.json +8 -1
- package/lib/commonjs/localization/fr/fr.json +8 -1
- package/lib/commonjs/localization/pt-br/pt-br.json +8 -1
- package/lib/commonjs/modules/history/context/historyManager.js.map +1 -1
- package/lib/commonjs/modules/openid/components/OpenIDCredentialCard.js +2 -2
- package/lib/commonjs/modules/openid/components/OpenIDCredentialCard.js.map +1 -1
- package/lib/commonjs/modules/openid/context/OpenIDCredentialRecordProvider.js +35 -31
- package/lib/commonjs/modules/openid/context/OpenIDCredentialRecordProvider.js.map +1 -1
- package/lib/commonjs/modules/openid/credentialRecord.js +114 -0
- package/lib/commonjs/modules/openid/credentialRecord.js.map +1 -0
- package/lib/commonjs/modules/openid/display.js +38 -34
- package/lib/commonjs/modules/openid/display.js.map +1 -1
- package/lib/commonjs/modules/openid/displayProof.js +2 -2
- package/lib/commonjs/modules/openid/displayProof.js.map +1 -1
- package/lib/commonjs/modules/openid/hooks/openid.js +12 -15
- package/lib/commonjs/modules/openid/hooks/openid.js.map +1 -1
- package/lib/commonjs/modules/openid/hooks/useAcceptReplacement.js +16 -19
- package/lib/commonjs/modules/openid/hooks/useAcceptReplacement.js.map +1 -1
- package/lib/commonjs/modules/openid/hooks/useDeclineReplacement.js +1 -10
- package/lib/commonjs/modules/openid/hooks/useDeclineReplacement.js.map +1 -1
- package/lib/commonjs/modules/openid/hooks/useExpiredNotifications.js +1 -1
- package/lib/commonjs/modules/openid/hooks/useExpiredNotifications.js.map +1 -1
- package/lib/commonjs/modules/openid/hooks/useUpgradeExpiredCredential.js +8 -42
- package/lib/commonjs/modules/openid/hooks/useUpgradeExpiredCredential.js.map +1 -1
- package/lib/commonjs/modules/openid/metadata.js +2 -0
- package/lib/commonjs/modules/openid/metadata.js.map +1 -1
- package/lib/commonjs/modules/openid/notification.js +5 -4
- package/lib/commonjs/modules/openid/notification.js.map +1 -1
- package/lib/commonjs/modules/openid/offerResolve.js +49 -76
- package/lib/commonjs/modules/openid/offerResolve.js.map +1 -1
- package/lib/commonjs/modules/openid/refresh/operations.js +37 -0
- package/lib/commonjs/modules/openid/refresh/operations.js.map +1 -0
- package/lib/commonjs/modules/openid/refresh/reIssuance.js +24 -30
- package/lib/commonjs/modules/openid/refresh/reIssuance.js.map +1 -1
- package/lib/commonjs/modules/openid/refresh/refreshOrchestrator.js +46 -61
- package/lib/commonjs/modules/openid/refresh/refreshOrchestrator.js.map +1 -1
- package/lib/commonjs/modules/openid/refresh/refreshToken.js +13 -13
- package/lib/commonjs/modules/openid/refresh/refreshToken.js.map +1 -1
- package/lib/commonjs/modules/openid/refresh/registry.js +1 -1
- package/lib/commonjs/modules/openid/refresh/registry.js.map +1 -1
- package/lib/commonjs/modules/openid/refresh/types.js +11 -1
- package/lib/commonjs/modules/openid/refresh/types.js.map +1 -1
- package/lib/commonjs/modules/openid/refresh/verifyCredentialStatus.js +7 -7
- package/lib/commonjs/modules/openid/refresh/verifyCredentialStatus.js.map +1 -1
- package/lib/commonjs/modules/openid/resolverProof.js +16 -103
- package/lib/commonjs/modules/openid/resolverProof.js.map +1 -1
- package/lib/commonjs/modules/openid/screens/OpenIDConnection.js +11 -23
- package/lib/commonjs/modules/openid/screens/OpenIDConnection.js.map +1 -1
- package/lib/commonjs/modules/openid/screens/OpenIDCredentialOffer.js +10 -6
- package/lib/commonjs/modules/openid/screens/OpenIDCredentialOffer.js.map +1 -1
- package/lib/commonjs/modules/openid/screens/OpenIDProofPresentation.js +1 -1
- package/lib/commonjs/modules/openid/screens/OpenIDProofPresentation.js.map +1 -1
- package/lib/commonjs/modules/openid/types.js.map +1 -1
- package/lib/commonjs/modules/openid/utils/utils.js +31 -32
- package/lib/commonjs/modules/openid/utils/utils.js.map +1 -1
- package/lib/commonjs/navigators/MainStack.js +3 -3
- package/lib/commonjs/navigators/MainStack.js.map +1 -1
- package/lib/commonjs/navigators/TabStack.js +5 -3
- package/lib/commonjs/navigators/TabStack.js.map +1 -1
- package/lib/commonjs/screens/Chat.js +3 -3
- package/lib/commonjs/screens/Chat.js.map +1 -1
- package/lib/commonjs/screens/ConfigureMediator.js +10 -10
- package/lib/commonjs/screens/ConfigureMediator.js.map +1 -1
- package/lib/commonjs/screens/Connection.js +2 -2
- package/lib/commonjs/screens/Connection.js.map +1 -1
- package/lib/commonjs/screens/ContactDetails.js +7 -7
- package/lib/commonjs/screens/ContactDetails.js.map +1 -1
- package/lib/commonjs/screens/CredentialDetails.js +15 -8
- package/lib/commonjs/screens/CredentialDetails.js.map +1 -1
- package/lib/commonjs/screens/CredentialOffer.js +11 -9
- package/lib/commonjs/screens/CredentialOffer.js.map +1 -1
- package/lib/commonjs/screens/CredentialOfferAccept.js +2 -2
- package/lib/commonjs/screens/CredentialOfferAccept.js.map +1 -1
- package/lib/commonjs/screens/Home.js +1 -1
- package/lib/commonjs/screens/Home.js.map +1 -1
- package/lib/commonjs/screens/ListContacts.js +2 -2
- package/lib/commonjs/screens/ListContacts.js.map +1 -1
- package/lib/commonjs/screens/ListCredentials.js +3 -2
- package/lib/commonjs/screens/ListCredentials.js.map +1 -1
- package/lib/commonjs/screens/MobileVerifierLoading.js +1 -1
- package/lib/commonjs/screens/MobileVerifierLoading.js.map +1 -1
- package/lib/commonjs/screens/ProofDetails.js +4 -4
- package/lib/commonjs/screens/ProofDetails.js.map +1 -1
- package/lib/commonjs/screens/ProofRequest.js +32 -23
- package/lib/commonjs/screens/ProofRequest.js.map +1 -1
- package/lib/commonjs/screens/ProofRequestAccept.js +7 -7
- package/lib/commonjs/screens/ProofRequestAccept.js.map +1 -1
- package/lib/commonjs/screens/ProofRequestUsageHistory.js +6 -6
- package/lib/commonjs/screens/ProofRequestUsageHistory.js.map +1 -1
- package/lib/commonjs/screens/ProofRequesting.js +3 -3
- package/lib/commonjs/screens/ProofRequesting.js.map +1 -1
- package/lib/commonjs/screens/RenameWallet.js +6 -7
- package/lib/commonjs/screens/RenameWallet.js.map +1 -1
- package/lib/commonjs/screens/Settings.js +4 -2
- package/lib/commonjs/screens/Settings.js.map +1 -1
- package/lib/commonjs/types/credentials.js.map +1 -1
- package/lib/commonjs/utils/agent.js +45 -36
- package/lib/commonjs/utils/agent.js.map +1 -1
- package/lib/commonjs/utils/anonCredsProofRequestMapper.js +4 -2
- package/lib/commonjs/utils/anonCredsProofRequestMapper.js.map +1 -1
- package/lib/commonjs/utils/contacts.js +3 -3
- package/lib/commonjs/utils/contacts.js.map +1 -1
- package/lib/commonjs/utils/credential.js +21 -4
- package/lib/commonjs/utils/credential.js.map +1 -1
- package/lib/commonjs/utils/helpers.js +57 -52
- package/lib/commonjs/utils/helpers.js.map +1 -1
- package/lib/commonjs/utils/mediatorhelpers.js +10 -10
- package/lib/commonjs/utils/mediatorhelpers.js.map +1 -1
- package/lib/commonjs/utils/migration.js +18 -12
- package/lib/commonjs/utils/migration.js.map +1 -1
- package/lib/commonjs/utils/oca.js.map +1 -1
- package/lib/commonjs/wallet/map-to-card.js +2 -2
- package/lib/commonjs/wallet/map-to-card.js.map +1 -1
- package/lib/module/components/animated/CredentialAdded.js +12 -2
- package/lib/module/components/animated/CredentialAdded.js.map +1 -1
- package/lib/module/components/animated/CredentialPending.js +12 -2
- package/lib/module/components/animated/CredentialPending.js.map +1 -1
- package/lib/module/components/buttons/Button.js +2 -1
- package/lib/module/components/buttons/Button.js.map +1 -1
- package/lib/module/components/inputs/BiometryControl.js +30 -6
- package/lib/module/components/inputs/BiometryControl.js.map +1 -1
- package/lib/module/components/listItems/ContactCredentialListItem.js +3 -3
- package/lib/module/components/listItems/ContactCredentialListItem.js.map +1 -1
- package/lib/module/components/listItems/NotificationListItem.js +22 -18
- package/lib/module/components/listItems/NotificationListItem.js.map +1 -1
- package/lib/module/components/misc/CredentialCardGen.js.map +1 -1
- package/lib/module/components/misc/QRScanner.js +2 -2
- package/lib/module/components/misc/QRScanner.js.map +1 -1
- package/lib/module/components/modals/ConfirmPINModal.js +0 -1
- package/lib/module/components/modals/ConfirmPINModal.js.map +1 -1
- package/lib/module/components/views/CredentialDetailPrimaryHeader.js +1 -1
- package/lib/module/components/views/CredentialDetailPrimaryHeader.js.map +1 -1
- package/lib/module/components/views/HomeFooterView.js +2 -2
- package/lib/module/components/views/HomeFooterView.js.map +1 -1
- package/lib/module/container-impl.js +4 -2
- package/lib/module/container-impl.js.map +1 -1
- package/lib/module/contexts/activity.js +4 -4
- package/lib/module/contexts/activity.js.map +1 -1
- package/lib/module/contexts/auth.js +45 -27
- package/lib/module/contexts/auth.js.map +1 -1
- package/lib/module/hooks/chat-messages.js +12 -12
- package/lib/module/hooks/chat-messages.js.map +1 -1
- package/lib/module/hooks/connections.js +4 -3
- package/lib/module/hooks/connections.js.map +1 -1
- package/lib/module/hooks/credentials.js.map +1 -1
- package/lib/module/hooks/notifications.js +10 -8
- package/lib/module/hooks/notifications.js.map +1 -1
- package/lib/module/hooks/oob.js +15 -7
- package/lib/module/hooks/oob.js.map +1 -1
- package/lib/module/hooks/proofs.js.map +1 -1
- package/lib/module/hooks/useBifoldAgentSetup.js +23 -21
- package/lib/module/hooks/useBifoldAgentSetup.js.map +1 -1
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/localization/en/en.json +8 -1
- package/lib/module/localization/fr/fr.json +8 -1
- package/lib/module/localization/pt-br/pt-br.json +8 -1
- package/lib/module/modules/history/context/historyManager.js.map +1 -1
- package/lib/module/modules/openid/components/OpenIDCredentialCard.js +2 -2
- package/lib/module/modules/openid/components/OpenIDCredentialCard.js.map +1 -1
- package/lib/module/modules/openid/context/OpenIDCredentialRecordProvider.js +36 -32
- package/lib/module/modules/openid/context/OpenIDCredentialRecordProvider.js.map +1 -1
- package/lib/module/modules/openid/credentialRecord.js +98 -0
- package/lib/module/modules/openid/credentialRecord.js.map +1 -0
- package/lib/module/modules/openid/display.js +38 -34
- package/lib/module/modules/openid/display.js.map +1 -1
- package/lib/module/modules/openid/displayProof.js +2 -2
- package/lib/module/modules/openid/displayProof.js.map +1 -1
- package/lib/module/modules/openid/hooks/openid.js +12 -15
- package/lib/module/modules/openid/hooks/openid.js.map +1 -1
- package/lib/module/modules/openid/hooks/useAcceptReplacement.js +16 -19
- package/lib/module/modules/openid/hooks/useAcceptReplacement.js.map +1 -1
- package/lib/module/modules/openid/hooks/useDeclineReplacement.js +2 -11
- package/lib/module/modules/openid/hooks/useDeclineReplacement.js.map +1 -1
- package/lib/module/modules/openid/hooks/useExpiredNotifications.js +1 -1
- package/lib/module/modules/openid/hooks/useExpiredNotifications.js.map +1 -1
- package/lib/module/modules/openid/hooks/useUpgradeExpiredCredential.js +8 -42
- package/lib/module/modules/openid/hooks/useUpgradeExpiredCredential.js.map +1 -1
- package/lib/module/modules/openid/metadata.js +3 -1
- package/lib/module/modules/openid/metadata.js.map +1 -1
- package/lib/module/modules/openid/notification.js +5 -4
- package/lib/module/modules/openid/notification.js.map +1 -1
- package/lib/module/modules/openid/offerResolve.js +51 -78
- package/lib/module/modules/openid/offerResolve.js.map +1 -1
- package/lib/module/modules/openid/refresh/operations.js +31 -0
- package/lib/module/modules/openid/refresh/operations.js.map +1 -0
- package/lib/module/modules/openid/refresh/reIssuance.js +24 -30
- package/lib/module/modules/openid/refresh/reIssuance.js.map +1 -1
- package/lib/module/modules/openid/refresh/refreshOrchestrator.js +48 -62
- package/lib/module/modules/openid/refresh/refreshOrchestrator.js.map +1 -1
- package/lib/module/modules/openid/refresh/refreshToken.js +13 -13
- package/lib/module/modules/openid/refresh/refreshToken.js.map +1 -1
- package/lib/module/modules/openid/refresh/registry.js +1 -1
- package/lib/module/modules/openid/refresh/registry.js.map +1 -1
- package/lib/module/modules/openid/refresh/types.js +11 -0
- package/lib/module/modules/openid/refresh/types.js.map +1 -1
- package/lib/module/modules/openid/refresh/verifyCredentialStatus.js +7 -7
- package/lib/module/modules/openid/refresh/verifyCredentialStatus.js.map +1 -1
- package/lib/module/modules/openid/resolverProof.js +16 -99
- package/lib/module/modules/openid/resolverProof.js.map +1 -1
- package/lib/module/modules/openid/screens/OpenIDConnection.js +11 -23
- package/lib/module/modules/openid/screens/OpenIDConnection.js.map +1 -1
- package/lib/module/modules/openid/screens/OpenIDCredentialOffer.js +10 -6
- package/lib/module/modules/openid/screens/OpenIDCredentialOffer.js.map +1 -1
- package/lib/module/modules/openid/screens/OpenIDProofPresentation.js +1 -1
- package/lib/module/modules/openid/screens/OpenIDProofPresentation.js.map +1 -1
- package/lib/module/modules/openid/types.js.map +1 -1
- package/lib/module/modules/openid/utils/utils.js +31 -31
- package/lib/module/modules/openid/utils/utils.js.map +1 -1
- package/lib/module/navigators/MainStack.js +3 -3
- package/lib/module/navigators/MainStack.js.map +1 -1
- package/lib/module/navigators/TabStack.js +5 -3
- package/lib/module/navigators/TabStack.js.map +1 -1
- package/lib/module/screens/Chat.js +3 -3
- package/lib/module/screens/Chat.js.map +1 -1
- package/lib/module/screens/ConfigureMediator.js +7 -7
- package/lib/module/screens/ConfigureMediator.js.map +1 -1
- package/lib/module/screens/Connection.js +2 -2
- package/lib/module/screens/Connection.js.map +1 -1
- package/lib/module/screens/ContactDetails.js +7 -7
- package/lib/module/screens/ContactDetails.js.map +1 -1
- package/lib/module/screens/CredentialDetails.js +15 -8
- package/lib/module/screens/CredentialDetails.js.map +1 -1
- package/lib/module/screens/CredentialOffer.js +11 -9
- package/lib/module/screens/CredentialOffer.js.map +1 -1
- package/lib/module/screens/CredentialOfferAccept.js +2 -2
- package/lib/module/screens/CredentialOfferAccept.js.map +1 -1
- package/lib/module/screens/Home.js +1 -1
- package/lib/module/screens/Home.js.map +1 -1
- package/lib/module/screens/ListContacts.js +2 -2
- package/lib/module/screens/ListContacts.js.map +1 -1
- package/lib/module/screens/ListCredentials.js +3 -2
- package/lib/module/screens/ListCredentials.js.map +1 -1
- package/lib/module/screens/MobileVerifierLoading.js +1 -1
- package/lib/module/screens/MobileVerifierLoading.js.map +1 -1
- package/lib/module/screens/ProofDetails.js +4 -4
- package/lib/module/screens/ProofDetails.js.map +1 -1
- package/lib/module/screens/ProofRequest.js +33 -24
- package/lib/module/screens/ProofRequest.js.map +1 -1
- package/lib/module/screens/ProofRequestAccept.js +7 -7
- package/lib/module/screens/ProofRequestAccept.js.map +1 -1
- package/lib/module/screens/ProofRequestUsageHistory.js +6 -6
- package/lib/module/screens/ProofRequestUsageHistory.js.map +1 -1
- package/lib/module/screens/ProofRequesting.js +3 -3
- package/lib/module/screens/ProofRequesting.js.map +1 -1
- package/lib/module/screens/RenameWallet.js +6 -7
- package/lib/module/screens/RenameWallet.js.map +1 -1
- package/lib/module/screens/Settings.js +4 -2
- package/lib/module/screens/Settings.js.map +1 -1
- package/lib/module/types/credentials.js.map +1 -1
- package/lib/module/utils/agent.js +47 -39
- package/lib/module/utils/agent.js.map +1 -1
- package/lib/module/utils/anonCredsProofRequestMapper.js +4 -2
- package/lib/module/utils/anonCredsProofRequestMapper.js.map +1 -1
- package/lib/module/utils/contacts.js +3 -3
- package/lib/module/utils/contacts.js.map +1 -1
- package/lib/module/utils/credential.js +21 -4
- package/lib/module/utils/credential.js.map +1 -1
- package/lib/module/utils/helpers.js +58 -53
- package/lib/module/utils/helpers.js.map +1 -1
- package/lib/module/utils/mediatorhelpers.js +10 -10
- package/lib/module/utils/mediatorhelpers.js.map +1 -1
- package/lib/module/utils/migration.js +17 -12
- package/lib/module/utils/migration.js.map +1 -1
- package/lib/module/utils/oca.js.map +1 -1
- package/lib/module/wallet/map-to-card.js +2 -2
- package/lib/module/wallet/map-to-card.js.map +1 -1
- package/lib/typescript/src/components/animated/CredentialAdded.d.ts.map +1 -1
- package/lib/typescript/src/components/animated/CredentialPending.d.ts.map +1 -1
- package/lib/typescript/src/components/buttons/Button.d.ts +3 -2
- package/lib/typescript/src/components/buttons/Button.d.ts.map +1 -1
- package/lib/typescript/src/components/inputs/BiometryControl.d.ts.map +1 -1
- package/lib/typescript/src/components/listItems/ContactCredentialListItem.d.ts +3 -4
- package/lib/typescript/src/components/listItems/ContactCredentialListItem.d.ts.map +1 -1
- package/lib/typescript/src/components/listItems/ContactListItem.d.ts +2 -2
- package/lib/typescript/src/components/listItems/ContactListItem.d.ts.map +1 -1
- package/lib/typescript/src/components/listItems/NotificationListItem.d.ts +2 -2
- package/lib/typescript/src/components/listItems/NotificationListItem.d.ts.map +1 -1
- package/lib/typescript/src/components/misc/CredentialCard10.d.ts +2 -2
- package/lib/typescript/src/components/misc/CredentialCard10.d.ts.map +1 -1
- package/lib/typescript/src/components/modals/ConfirmPINModal.d.ts.map +1 -1
- package/lib/typescript/src/components/views/CredentialDetailPrimaryHeader.d.ts +2 -2
- package/lib/typescript/src/components/views/CredentialDetailPrimaryHeader.d.ts.map +1 -1
- package/lib/typescript/src/container-impl.d.ts.map +1 -1
- package/lib/typescript/src/contexts/activity.d.ts.map +1 -1
- package/lib/typescript/src/contexts/auth.d.ts.map +1 -1
- package/lib/typescript/src/hooks/chat-messages.d.ts +2 -2
- package/lib/typescript/src/hooks/chat-messages.d.ts.map +1 -1
- package/lib/typescript/src/hooks/connections.d.ts +4 -4
- package/lib/typescript/src/hooks/connections.d.ts.map +1 -1
- package/lib/typescript/src/hooks/credentials.d.ts +2 -2
- package/lib/typescript/src/hooks/credentials.d.ts.map +1 -1
- package/lib/typescript/src/hooks/notifications.d.ts +3 -2
- package/lib/typescript/src/hooks/notifications.d.ts.map +1 -1
- package/lib/typescript/src/hooks/oob.d.ts +2 -2
- package/lib/typescript/src/hooks/oob.d.ts.map +1 -1
- package/lib/typescript/src/hooks/proofs.d.ts +2 -2
- package/lib/typescript/src/hooks/proofs.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useBifoldAgentSetup.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/modules/history/context/historyManager.d.ts +1 -2
- package/lib/typescript/src/modules/history/context/historyManager.d.ts.map +1 -1
- package/lib/typescript/src/modules/history/types/index.d.ts +1 -1
- package/lib/typescript/src/modules/history/types/index.d.ts.map +1 -1
- package/lib/typescript/src/modules/openid/context/OpenIDCredentialRecordProvider.d.ts +6 -5
- package/lib/typescript/src/modules/openid/context/OpenIDCredentialRecordProvider.d.ts.map +1 -1
- package/lib/typescript/src/modules/openid/credentialRecord.d.ts +19 -0
- package/lib/typescript/src/modules/openid/credentialRecord.d.ts.map +1 -0
- package/lib/typescript/src/modules/openid/display.d.ts +2 -3
- package/lib/typescript/src/modules/openid/display.d.ts.map +1 -1
- package/lib/typescript/src/modules/openid/hooks/openid.d.ts +2 -2
- package/lib/typescript/src/modules/openid/hooks/openid.d.ts.map +1 -1
- package/lib/typescript/src/modules/openid/hooks/useAcceptReplacement.d.ts +2 -4
- package/lib/typescript/src/modules/openid/hooks/useAcceptReplacement.d.ts.map +1 -1
- package/lib/typescript/src/modules/openid/hooks/useDeclineReplacement.d.ts.map +1 -1
- package/lib/typescript/src/modules/openid/hooks/useUpgradeExpiredCredential.d.ts.map +1 -1
- package/lib/typescript/src/modules/openid/metadata.d.ts +23 -18
- package/lib/typescript/src/modules/openid/metadata.d.ts.map +1 -1
- package/lib/typescript/src/modules/openid/notification.d.ts +3 -2
- package/lib/typescript/src/modules/openid/notification.d.ts.map +1 -1
- package/lib/typescript/src/modules/openid/offerResolve.d.ts +10 -16
- package/lib/typescript/src/modules/openid/offerResolve.d.ts.map +1 -1
- package/lib/typescript/src/modules/openid/refresh/operations.d.ts +13 -0
- package/lib/typescript/src/modules/openid/refresh/operations.d.ts.map +1 -0
- package/lib/typescript/src/modules/openid/refresh/reIssuance.d.ts +4 -7
- package/lib/typescript/src/modules/openid/refresh/reIssuance.d.ts.map +1 -1
- package/lib/typescript/src/modules/openid/refresh/refreshOrchestrator.d.ts +2 -5
- package/lib/typescript/src/modules/openid/refresh/refreshOrchestrator.d.ts.map +1 -1
- package/lib/typescript/src/modules/openid/refresh/refreshToken.d.ts +3 -2
- package/lib/typescript/src/modules/openid/refresh/refreshToken.d.ts.map +1 -1
- package/lib/typescript/src/modules/openid/refresh/types.d.ts +18 -6
- package/lib/typescript/src/modules/openid/refresh/types.d.ts.map +1 -1
- package/lib/typescript/src/modules/openid/refresh/verifyCredentialStatus.d.ts +4 -4
- package/lib/typescript/src/modules/openid/refresh/verifyCredentialStatus.d.ts.map +1 -1
- package/lib/typescript/src/modules/openid/resolverProof.d.ts +7 -24
- package/lib/typescript/src/modules/openid/resolverProof.d.ts.map +1 -1
- package/lib/typescript/src/modules/openid/screens/OpenIDConnection.d.ts.map +1 -1
- package/lib/typescript/src/modules/openid/screens/OpenIDCredentialOffer.d.ts.map +1 -1
- package/lib/typescript/src/modules/openid/types.d.ts +6 -6
- package/lib/typescript/src/modules/openid/types.d.ts.map +1 -1
- package/lib/typescript/src/modules/openid/utils/utils.d.ts +0 -2
- package/lib/typescript/src/modules/openid/utils/utils.d.ts.map +1 -1
- package/lib/typescript/src/screens/ConfigureMediator.d.ts.map +1 -1
- package/lib/typescript/src/screens/Connection.d.ts.map +1 -1
- package/lib/typescript/src/screens/CredentialDetails.d.ts.map +1 -1
- package/lib/typescript/src/screens/Home.d.ts.map +1 -1
- package/lib/typescript/src/screens/ProofDetails.d.ts.map +1 -1
- package/lib/typescript/src/screens/ProofRequest.d.ts.map +1 -1
- package/lib/typescript/src/screens/RenameWallet.d.ts.map +1 -1
- package/lib/typescript/src/types/credentials.d.ts +3 -2
- package/lib/typescript/src/types/credentials.d.ts.map +1 -1
- package/lib/typescript/src/types/navigators.d.ts +2 -2
- package/lib/typescript/src/types/navigators.d.ts.map +1 -1
- package/lib/typescript/src/types/proof-items.d.ts +4 -4
- package/lib/typescript/src/types/proof-items.d.ts.map +1 -1
- package/lib/typescript/src/utils/agent.d.ts +29 -14
- package/lib/typescript/src/utils/agent.d.ts.map +1 -1
- package/lib/typescript/src/utils/contacts.d.ts +2 -2
- package/lib/typescript/src/utils/contacts.d.ts.map +1 -1
- package/lib/typescript/src/utils/cred-def.d.ts +1 -1
- package/lib/typescript/src/utils/cred-def.d.ts.map +1 -1
- package/lib/typescript/src/utils/credential.d.ts +5 -5
- package/lib/typescript/src/utils/credential.d.ts.map +1 -1
- package/lib/typescript/src/utils/helpers.d.ts +28 -28
- package/lib/typescript/src/utils/helpers.d.ts.map +1 -1
- package/lib/typescript/src/utils/mediatorhelpers.d.ts.map +1 -1
- package/lib/typescript/src/utils/migration.d.ts.map +1 -1
- package/lib/typescript/src/utils/oca.d.ts +2 -2
- package/lib/typescript/src/utils/oca.d.ts.map +1 -1
- package/lib/typescript/src/utils/schema.d.ts +1 -1
- package/lib/typescript/src/utils/schema.d.ts.map +1 -1
- package/lib/typescript/src/wallet/map-to-card.d.ts +1 -1
- package/lib/typescript/src/wallet/map-to-card.d.ts.map +1 -1
- package/package.json +32 -27
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
import { OpenId4VciCredentialFormatProfile } from '@credo-ts/openid4vc';
|
|
2
|
-
import { DidJwk, DidKey,
|
|
3
|
-
import { extractOpenId4VcCredentialMetadata, setOpenId4VcCredentialMetadata
|
|
2
|
+
import { DidJwk, DidKey, Kms } from '@credo-ts/core';
|
|
3
|
+
import { extractOpenId4VcCredentialMetadata, setOpenId4VcCredentialMetadata } from './metadata';
|
|
4
|
+
const getCredentialConfigurationIdsToRequest = ({
|
|
5
|
+
resolvedCredentialOffer,
|
|
6
|
+
credentialConfigurationIdsToRequest
|
|
7
|
+
}) => {
|
|
8
|
+
const credentialConfigurationIds = credentialConfigurationIdsToRequest ?? [Object.keys(resolvedCredentialOffer.offeredCredentialConfigurations)[0]];
|
|
9
|
+
if (credentialConfigurationIds.length === 0 || !credentialConfigurationIds[0]) {
|
|
10
|
+
throw new Error('No credential configuration ID found in the credential offer.');
|
|
11
|
+
}
|
|
12
|
+
for (const credentialConfigurationId of credentialConfigurationIds) {
|
|
13
|
+
if (!resolvedCredentialOffer.offeredCredentialConfigurations[credentialConfigurationId]) {
|
|
14
|
+
throw new Error(`Parameter 'credentialConfigurationIdsToRequest' with values ${credentialConfigurationIdsToRequest} is not a credential_configuration_id in the credential offer.`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return credentialConfigurationIds;
|
|
18
|
+
};
|
|
4
19
|
export const resolveOpenId4VciOffer = async ({
|
|
5
20
|
agent,
|
|
6
21
|
data,
|
|
@@ -20,9 +35,9 @@ export const resolveOpenId4VciOffer = async ({
|
|
|
20
35
|
data: data,
|
|
21
36
|
uri: offerUri
|
|
22
37
|
});
|
|
23
|
-
const resolvedCredentialOffer = await agent.
|
|
38
|
+
const resolvedCredentialOffer = await agent.openid4vc.holder.resolveCredentialOffer(offerUri);
|
|
24
39
|
if (authorization) {
|
|
25
|
-
throw new Error('Authorization flow is not
|
|
40
|
+
throw new Error('Authorization code flow is not implemented in this OpenID credential offer flow.');
|
|
26
41
|
}
|
|
27
42
|
return resolvedCredentialOffer;
|
|
28
43
|
};
|
|
@@ -31,7 +46,7 @@ export async function acquirePreAuthorizedAccessToken({
|
|
|
31
46
|
resolvedCredentialOffer,
|
|
32
47
|
txCode
|
|
33
48
|
}) {
|
|
34
|
-
return await agent.
|
|
49
|
+
return await agent.openid4vc.holder.requestToken({
|
|
35
50
|
resolvedCredentialOffer,
|
|
36
51
|
txCode
|
|
37
52
|
});
|
|
@@ -39,64 +54,48 @@ export async function acquirePreAuthorizedAccessToken({
|
|
|
39
54
|
export const customCredentialBindingResolver = async ({
|
|
40
55
|
agent,
|
|
41
56
|
supportedDidMethods,
|
|
42
|
-
keyType,
|
|
43
57
|
supportsAllDidMethods,
|
|
44
58
|
supportsJwk,
|
|
45
59
|
credentialFormat,
|
|
46
|
-
|
|
47
|
-
resolvedCredentialOffer,
|
|
48
|
-
pidSchemes
|
|
60
|
+
proofTypes
|
|
49
61
|
}) => {
|
|
50
|
-
|
|
51
|
-
// Prefer did:jwk, otherwise use did:key, otherwise use undefined
|
|
62
|
+
var _proofTypes$jwt;
|
|
52
63
|
let didMethod = supportsAllDidMethods || supportedDidMethods !== null && supportedDidMethods !== void 0 && supportedDidMethods.includes('did:jwk') ? 'jwk' : supportedDidMethods !== null && supportedDidMethods !== void 0 && supportedDidMethods.includes('did:key') ? 'key' : undefined;
|
|
53
|
-
|
|
54
|
-
// If supportedDidMethods is undefined, and supportsJwk is false, we will default to did:key
|
|
55
|
-
// this is important as part of MATTR launchpad support which MUST use did:key but doesn't
|
|
56
|
-
// define which did methods they support
|
|
57
64
|
if (!supportedDidMethods && !supportsJwk) {
|
|
58
65
|
didMethod = 'key';
|
|
59
66
|
}
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
const shouldKeyBeHardwareBackedForSdJwtVc = (offeredCredentialConfiguration === null || offeredCredentialConfiguration === void 0 ? void 0 : offeredCredentialConfiguration.format) === 'vc+sd-jwt' && (pidSchemes === null || pidSchemes === void 0 ? void 0 : pidSchemes.sdJwtVcVcts.includes(offeredCredentialConfiguration.vct));
|
|
63
|
-
const shouldKeyBeHardwareBacked = shouldKeyBeHardwareBackedForSdJwtVc || shouldKeyBeHardwareBackedForMsoMdoc;
|
|
64
|
-
if (!keyType) {
|
|
65
|
-
throw new Error('keyType is required!');
|
|
66
|
-
}
|
|
67
|
-
const key = await agent.wallet.createKey({
|
|
68
|
-
keyType,
|
|
69
|
-
keyBackend: shouldKeyBeHardwareBacked ? KeyBackend.SecureElement : KeyBackend.Software
|
|
67
|
+
const key = await agent.kms.createKeyForSignatureAlgorithm({
|
|
68
|
+
algorithm: (proofTypes === null || proofTypes === void 0 || (_proofTypes$jwt = proofTypes.jwt) === null || _proofTypes$jwt === void 0 ? void 0 : _proofTypes$jwt.supportedSignatureAlgorithms[0]) ?? 'EdDSA'
|
|
70
69
|
});
|
|
70
|
+
const publicJwk = Kms.PublicJwk.fromPublicJwk(key.publicJwk);
|
|
71
71
|
if (didMethod) {
|
|
72
72
|
const didResult = await agent.dids.create({
|
|
73
73
|
method: didMethod,
|
|
74
74
|
options: {
|
|
75
|
-
key
|
|
75
|
+
keyId: key.keyId
|
|
76
76
|
}
|
|
77
77
|
});
|
|
78
78
|
if (didResult.didState.state !== 'finished') {
|
|
79
79
|
throw new Error('DID creation failed.');
|
|
80
80
|
}
|
|
81
|
-
let
|
|
81
|
+
let didUrl;
|
|
82
82
|
if (didMethod === 'jwk') {
|
|
83
|
-
|
|
84
|
-
verificationMethodId = didJwk.verificationMethodId;
|
|
83
|
+
didUrl = DidJwk.fromDid(didResult.didState.did).verificationMethodId;
|
|
85
84
|
} else {
|
|
86
85
|
const didKey = DidKey.fromDid(didResult.didState.did);
|
|
87
|
-
|
|
86
|
+
didUrl = `${didKey.did}#${didKey.publicJwk.fingerprint}`;
|
|
88
87
|
}
|
|
89
88
|
return {
|
|
90
|
-
|
|
91
|
-
|
|
89
|
+
method: 'did',
|
|
90
|
+
didUrls: [didUrl]
|
|
92
91
|
};
|
|
93
92
|
}
|
|
94
93
|
|
|
95
|
-
//
|
|
94
|
+
// Fallback: plain jwk for sd-jwt/mdoc only
|
|
96
95
|
if (supportsJwk && (credentialFormat === OpenId4VciCredentialFormatProfile.SdJwtVc || credentialFormat === OpenId4VciCredentialFormatProfile.MsoMdoc)) {
|
|
97
96
|
return {
|
|
98
97
|
method: 'jwk',
|
|
99
|
-
|
|
98
|
+
keys: [publicJwk] // Need to replace getJwkFromKey here
|
|
100
99
|
};
|
|
101
100
|
}
|
|
102
101
|
throw new Error(`No supported binding method could be found. Supported methods are did:key and did:jwk, or plain jwk for sd-jwt/mdoc. Issuer supports ${supportsJwk ? 'jwk, ' : ''}${(supportedDidMethods === null || supportedDidMethods === void 0 ? void 0 : supportedDidMethods.join(', ')) ?? 'Unknown'}`);
|
|
@@ -106,78 +105,52 @@ export const receiveCredentialFromOpenId4VciOffer = async ({
|
|
|
106
105
|
resolvedCredentialOffer,
|
|
107
106
|
tokenResponse,
|
|
108
107
|
credentialConfigurationIdsToRequest,
|
|
109
|
-
clientId
|
|
110
|
-
pidSchemes
|
|
108
|
+
clientId
|
|
111
109
|
}) => {
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
}
|
|
116
|
-
const credentials = await agent.
|
|
110
|
+
const credentialConfigurationIds = getCredentialConfigurationIdsToRequest({
|
|
111
|
+
resolvedCredentialOffer,
|
|
112
|
+
credentialConfigurationIdsToRequest
|
|
113
|
+
});
|
|
114
|
+
const credentials = await agent.openid4vc.holder.requestCredentials({
|
|
117
115
|
resolvedCredentialOffer,
|
|
118
116
|
...tokenResponse,
|
|
119
117
|
clientId,
|
|
120
|
-
|
|
118
|
+
credentialConfigurationIds,
|
|
121
119
|
verifyCredentialStatus: false,
|
|
122
120
|
allowedProofOfPossessionSignatureAlgorithms: [
|
|
123
121
|
// NOTE: MATTR launchpad for JFF MUST use EdDSA. So it is important that the default (first allowed one)
|
|
124
122
|
// is EdDSA. The list is ordered by preference, so if no suites are defined by the issuer, the first one
|
|
125
123
|
// will be used
|
|
126
|
-
|
|
124
|
+
'EdDSA', 'ES256'],
|
|
127
125
|
credentialBindingResolver: async ({
|
|
128
126
|
supportedDidMethods,
|
|
129
|
-
|
|
127
|
+
proofTypes,
|
|
130
128
|
supportsAllDidMethods,
|
|
131
129
|
supportsJwk,
|
|
132
|
-
credentialFormat
|
|
133
|
-
supportedCredentialId
|
|
130
|
+
credentialFormat
|
|
134
131
|
}) => {
|
|
135
132
|
return customCredentialBindingResolver({
|
|
136
133
|
agent,
|
|
137
134
|
supportedDidMethods,
|
|
138
|
-
|
|
135
|
+
proofTypes,
|
|
139
136
|
supportsAllDidMethods,
|
|
140
137
|
supportsJwk,
|
|
141
|
-
credentialFormat
|
|
142
|
-
supportedCredentialId,
|
|
143
|
-
resolvedCredentialOffer,
|
|
144
|
-
pidSchemes
|
|
138
|
+
credentialFormat
|
|
145
139
|
});
|
|
146
140
|
}
|
|
147
141
|
});
|
|
148
142
|
|
|
149
143
|
// We only support one credential for now
|
|
150
|
-
const [firstCredential] = credentials;
|
|
144
|
+
const [firstCredential] = credentials.credentials;
|
|
151
145
|
if (!firstCredential) throw new Error('Error retrieving credential using pre authorized flow: firstCredential undefined!.');
|
|
152
|
-
let record;
|
|
153
146
|
if (typeof firstCredential === 'string') {
|
|
154
147
|
throw new Error('Error retrieving credential using pre authorized flow: firstCredential is string.');
|
|
155
148
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
} else if (firstCredential.credential instanceof Mdoc) {
|
|
162
|
-
record = new MdocRecord({
|
|
163
|
-
mdoc: firstCredential.credential
|
|
164
|
-
});
|
|
165
|
-
} else {
|
|
166
|
-
record = new W3cCredentialRecord({
|
|
167
|
-
credential: firstCredential.credential,
|
|
168
|
-
// We don't support expanded types right now, but would become problem when we support JSON-LD
|
|
169
|
-
tags: {}
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
|
-
const notificationMetadata = {
|
|
173
|
-
...firstCredential.notificationMetadata
|
|
174
|
-
};
|
|
175
|
-
if (notificationMetadata) {
|
|
176
|
-
temporaryMetaVanillaObject.notificationMetadata = notificationMetadata;
|
|
177
|
-
}
|
|
178
|
-
const openId4VcMetadata = extractOpenId4VcCredentialMetadata(resolvedCredentialOffer.offeredCredentials[0], {
|
|
179
|
-
id: resolvedCredentialOffer.metadata.issuer,
|
|
180
|
-
display: resolvedCredentialOffer.metadata.credentialIssuerMetadata.display
|
|
149
|
+
const record = firstCredential.record;
|
|
150
|
+
const requestedCredentialConfiguration = resolvedCredentialOffer.offeredCredentialConfigurations[credentialConfigurationIds[0]];
|
|
151
|
+
const openId4VcMetadata = extractOpenId4VcCredentialMetadata(requestedCredentialConfiguration, {
|
|
152
|
+
id: resolvedCredentialOffer.metadata.credentialIssuer.credential_issuer,
|
|
153
|
+
display: resolvedCredentialOffer.metadata.credentialIssuer.display
|
|
181
154
|
});
|
|
182
155
|
setOpenId4VcCredentialMetadata(record, openId4VcMetadata);
|
|
183
156
|
return record;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["OpenId4VciCredentialFormatProfile","DidJwk","DidKey","
|
|
1
|
+
{"version":3,"names":["OpenId4VciCredentialFormatProfile","DidJwk","DidKey","Kms","extractOpenId4VcCredentialMetadata","setOpenId4VcCredentialMetadata","getCredentialConfigurationIdsToRequest","resolvedCredentialOffer","credentialConfigurationIdsToRequest","credentialConfigurationIds","Object","keys","offeredCredentialConfigurations","length","Error","credentialConfigurationId","resolveOpenId4VciOffer","agent","data","uri","authorization","offerUri","encodeURIComponent","JSON","stringify","config","logger","info","openid4vc","holder","resolveCredentialOffer","acquirePreAuthorizedAccessToken","txCode","requestToken","customCredentialBindingResolver","supportedDidMethods","supportsAllDidMethods","supportsJwk","credentialFormat","proofTypes","_proofTypes$jwt","didMethod","includes","undefined","key","kms","createKeyForSignatureAlgorithm","algorithm","jwt","supportedSignatureAlgorithms","publicJwk","PublicJwk","fromPublicJwk","didResult","dids","create","method","options","keyId","didState","state","didUrl","fromDid","did","verificationMethodId","didKey","fingerprint","didUrls","SdJwtVc","MsoMdoc","join","receiveCredentialFromOpenId4VciOffer","tokenResponse","clientId","credentials","requestCredentials","verifyCredentialStatus","allowedProofOfPossessionSignatureAlgorithms","credentialBindingResolver","firstCredential","record","requestedCredentialConfiguration","openId4VcMetadata","id","metadata","credentialIssuer","credential_issuer","display"],"sourceRoot":"../../../../src","sources":["modules/openid/offerResolve.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { toOpenIDCredentialLite } from '../credentialRecord';
|
|
2
|
+
import { refreshAccessToken } from './refreshToken';
|
|
3
|
+
import { credentialRegistry } from './registry';
|
|
4
|
+
import { reissueCredentialWithAccessToken } from './reIssuance';
|
|
5
|
+
export async function refreshAndQueueReplacement({
|
|
6
|
+
agent,
|
|
7
|
+
logger,
|
|
8
|
+
record,
|
|
9
|
+
toLite = toOpenIDCredentialLite
|
|
10
|
+
}) {
|
|
11
|
+
const token = await refreshAccessToken({
|
|
12
|
+
logger,
|
|
13
|
+
cred: record,
|
|
14
|
+
agentContext: agent.context
|
|
15
|
+
});
|
|
16
|
+
if (!token) {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
const newRecord = await reissueCredentialWithAccessToken({
|
|
20
|
+
agent,
|
|
21
|
+
logger,
|
|
22
|
+
record,
|
|
23
|
+
tokenResponse: token
|
|
24
|
+
});
|
|
25
|
+
if (!newRecord) {
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
credentialRegistry.getState().markExpiredWithReplacement(record.id, toLite(newRecord));
|
|
29
|
+
return newRecord;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=operations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["toOpenIDCredentialLite","refreshAccessToken","credentialRegistry","reissueCredentialWithAccessToken","refreshAndQueueReplacement","agent","logger","record","toLite","token","cred","agentContext","context","undefined","newRecord","tokenResponse","getState","markExpiredWithReplacement","id"],"sourceRoot":"../../../../../src","sources":["modules/openid/refresh/operations.ts"],"mappings":"AAEA,SAAiCA,sBAAsB,QAAQ,qBAAqB;AACpF,SAASC,kBAAkB,QAAQ,gBAAgB;AACnD,SAASC,kBAAkB,QAAQ,YAAY;AAC/C,SAASC,gCAAgC,QAAQ,cAAc;AAU/D,OAAO,eAAeC,0BAA0BA,CAAC;EAC/CC,KAAK;EACLC,MAAM;EACNC,MAAM;EACNC,MAAM,GAAGR;AACc,CAAC,EAAE;EAC1B,MAAMS,KAAK,GAAG,MAAMR,kBAAkB,CAAC;IAAEK,MAAM;IAAEI,IAAI,EAAEH,MAAM;IAAEI,YAAY,EAAEN,KAAK,CAACO;EAAQ,CAAC,CAAC;EAC7F,IAAI,CAACH,KAAK,EAAE;IACV,OAAOI,SAAS;EAClB;EAEA,MAAMC,SAAS,GAAG,MAAMX,gCAAgC,CAAC;IACvDE,KAAK;IACLC,MAAM;IACNC,MAAM;IACNQ,aAAa,EAAEN;EACjB,CAAC,CAAC;EAEF,IAAI,CAACK,SAAS,EAAE;IACd,OAAOD,SAAS;EAClB;EAEAX,kBAAkB,CAACc,QAAQ,CAAC,CAAC,CAACC,0BAA0B,CAACV,MAAM,CAACW,EAAE,EAAEV,MAAM,CAACM,SAAS,CAAC,CAAC;EACtF,OAAOA,SAAS;AAClB","ignoreList":[]}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { JwaSignatureAlgorithm, Mdoc, MdocRecord, SdJwtVcRecord, W3cCredentialRecord } from '@credo-ts/core';
|
|
2
1
|
import { customCredentialBindingResolver } from '../offerResolve';
|
|
3
2
|
import { extractOpenId4VcCredentialMetadata, getRefreshCredentialMetadata, setOpenId4VcCredentialMetadata, setRefreshCredentialMetadata } from '../metadata';
|
|
4
3
|
import { RefreshStatus } from './types';
|
|
@@ -7,8 +6,7 @@ export async function reissueCredentialWithAccessToken({
|
|
|
7
6
|
logger,
|
|
8
7
|
record,
|
|
9
8
|
tokenResponse,
|
|
10
|
-
clientId
|
|
11
|
-
pidSchemes
|
|
9
|
+
clientId
|
|
12
10
|
}) {
|
|
13
11
|
if (!record) {
|
|
14
12
|
throw new Error('No credential record provided for re-issuance.');
|
|
@@ -29,53 +27,49 @@ export async function reissueCredentialWithAccessToken({
|
|
|
29
27
|
}
|
|
30
28
|
logger.info('*** Starting to get new credential via re-issuance flow ***');
|
|
31
29
|
// Request a **new** credential using the *existing* configuration id
|
|
32
|
-
|
|
30
|
+
|
|
31
|
+
const creds = await agent.openid4vc.holder.requestCredentials({
|
|
33
32
|
resolvedCredentialOffer,
|
|
34
33
|
accessToken: tokenResponse.access_token,
|
|
35
34
|
tokenType: tokenResponse.token_type || 'Bearer',
|
|
36
35
|
cNonce: tokenResponse.c_nonce,
|
|
37
36
|
clientId,
|
|
38
|
-
|
|
37
|
+
credentialConfigurationIds: [credentialConfigurationId],
|
|
39
38
|
verifyCredentialStatus: false,
|
|
40
39
|
// youβll check after storing
|
|
41
|
-
allowedProofOfPossessionSignatureAlgorithms: [
|
|
40
|
+
allowedProofOfPossessionSignatureAlgorithms: ['EdDSA', 'ES256'],
|
|
42
41
|
credentialBindingResolver: async opts => customCredentialBindingResolver({
|
|
43
42
|
agent,
|
|
44
43
|
supportedDidMethods: opts.supportedDidMethods,
|
|
45
|
-
|
|
44
|
+
proofTypes: opts.proofTypes,
|
|
46
45
|
supportsAllDidMethods: opts.supportsAllDidMethods,
|
|
47
46
|
supportsJwk: opts.supportsJwk,
|
|
48
|
-
credentialFormat: opts.credentialFormat
|
|
49
|
-
supportedCredentialId: opts.supportedCredentialId,
|
|
50
|
-
resolvedCredentialOffer: resolvedCredentialOffer,
|
|
51
|
-
pidSchemes
|
|
47
|
+
credentialFormat: opts.credentialFormat
|
|
52
48
|
})
|
|
53
49
|
});
|
|
54
50
|
logger.info('*** New credential received via re-issuance flow ***.');
|
|
55
51
|
|
|
56
52
|
// Normalize to your local record types
|
|
57
|
-
const [firstCredential] = creds;
|
|
53
|
+
const [firstCredential] = creds.credentials;
|
|
58
54
|
if (!firstCredential || typeof firstCredential === 'string') {
|
|
59
55
|
throw new Error('Issuer returned empty or malformed credential on re-issuance.');
|
|
60
56
|
}
|
|
61
|
-
|
|
62
|
-
if ('compact' in firstCredential
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
} else
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
id: resolvedCredentialOffer.metadata.issuer,
|
|
78
|
-
display: resolvedCredentialOffer.metadata.credentialIssuerMetadata.display
|
|
57
|
+
const newRecord = firstCredential.record;
|
|
58
|
+
// if ('compact' in firstCredential) {
|
|
59
|
+
// newRecord = new SdJwtVcRecord({ c })
|
|
60
|
+
// } else if ((firstCredential as any)?.credential instanceof Mdoc) {
|
|
61
|
+
// newRecord = new MdocRecord({ mdoc: firstCredential.credential })
|
|
62
|
+
// } else {
|
|
63
|
+
// newRecord = new W3cCredentialRecord({
|
|
64
|
+
// credential: firstCredential.credential as W3cJwtVerifiableCredential | W3cJsonLdVerifiableCredential,
|
|
65
|
+
// tags: {},
|
|
66
|
+
// })
|
|
67
|
+
// }
|
|
68
|
+
|
|
69
|
+
const requestedCredentialConfiguration = resolvedCredentialOffer.offeredCredentialConfigurations[credentialConfigurationId];
|
|
70
|
+
const openId4VcMetadata = extractOpenId4VcCredentialMetadata(requestedCredentialConfiguration, {
|
|
71
|
+
id: resolvedCredentialOffer.metadata.credentialIssuer.credential_issuer,
|
|
72
|
+
display: resolvedCredentialOffer.metadata.credentialIssuer.display
|
|
79
73
|
});
|
|
80
74
|
setOpenId4VcCredentialMetadata(newRecord, openId4VcMetadata);
|
|
81
75
|
setRefreshCredentialMetadata(newRecord, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["customCredentialBindingResolver","extractOpenId4VcCredentialMetadata","getRefreshCredentialMetadata","setOpenId4VcCredentialMetadata","setRefreshCredentialMetadata","RefreshStatus","reissueCredentialWithAccessToken","agent","logger","record","tokenResponse","clientId","Error","refreshMetaData","credentialConfigurationId","resolvedCredentialOffer","access_token","info","creds","openid4vc","holder","requestCredentials","accessToken","tokenType","token_type","cNonce","c_nonce","credentialConfigurationIds","verifyCredentialStatus","allowedProofOfPossessionSignatureAlgorithms","credentialBindingResolver","opts","supportedDidMethods","proofTypes","supportsAllDidMethods","supportsJwk","credentialFormat","firstCredential","credentials","newRecord","requestedCredentialConfiguration","offeredCredentialConfigurations","openId4VcMetadata","id","metadata","credentialIssuer","credential_issuer","display","refreshToken","refresh_token","lastCheckedAt","Date","now","lastCheckResult","Valid"],"sourceRoot":"../../../../../src","sources":["modules/openid/refresh/reIssuance.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,41 +1,31 @@
|
|
|
1
1
|
// modules/openid/refresh/RefreshOrchestrator.ts
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
import { reissueCredentialWithAccessToken } from './reIssuance';
|
|
5
|
-
import { RefreshStatus } from './types';
|
|
2
|
+
|
|
3
|
+
import { OpenIDCredentialRefreshFlowType, RefreshStatus } from './types';
|
|
6
4
|
import { credentialRegistry } from './registry';
|
|
7
5
|
import { verifyCredentialStatus } from './verifyCredentialStatus';
|
|
8
6
|
import { getRefreshCredentialMetadata, markOpenIDCredentialStatus, persistCredentialRecord, setRefreshCredentialMetadata } from '../metadata';
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
return {
|
|
12
|
-
id: rec.id,
|
|
13
|
-
// best-effort: SdJwt/W3C both expose claimFormat via tags in many setups.
|
|
14
|
-
// Fallback to JwtVc if unknown so UI has *some* value.
|
|
15
|
-
format: rec instanceof W3cCredentialRecord && ClaimFormat.JwtVc || rec instanceof SdJwtVcRecord && ClaimFormat.SdJwtVc || ClaimFormat.JwtVc,
|
|
16
|
-
createdAt: (_rec$createdAt = rec.createdAt) === null || _rec$createdAt === void 0 ? void 0 : _rec$createdAt.toISOString(),
|
|
17
|
-
issuer: undefined
|
|
18
|
-
};
|
|
19
|
-
};
|
|
7
|
+
import { toOpenIDCredentialLite } from '../credentialRecord';
|
|
8
|
+
import { refreshAndQueueReplacement } from './operations';
|
|
20
9
|
export class RefreshOrchestrator {
|
|
21
10
|
intervalOn = false; // interval enabled?
|
|
22
11
|
runningOnce = false; // a run is in progress?
|
|
23
12
|
|
|
24
13
|
recentlyIssued = new Map();
|
|
25
|
-
checkStatusOnly = true;
|
|
26
14
|
constructor(logger, bridge, opts) {
|
|
27
15
|
this.logger = logger;
|
|
28
16
|
this.opts = {
|
|
29
17
|
intervalMs: 15 * 60 * 1000,
|
|
30
18
|
autoStart: true,
|
|
19
|
+
flowType: OpenIDCredentialRefreshFlowType.FullReplacement,
|
|
31
20
|
onError: e => this.logger.error(String(e)),
|
|
32
21
|
listRecords: async () => [],
|
|
33
|
-
toLite:
|
|
22
|
+
toLite: toOpenIDCredentialLite,
|
|
34
23
|
...(opts ?? {})
|
|
35
24
|
};
|
|
36
25
|
logger.info(`π§ [RefreshOrchestrator] initialized -> ${JSON.stringify({
|
|
37
26
|
intervalMs: this.opts.intervalMs,
|
|
38
|
-
autoStart: this.opts.autoStart
|
|
27
|
+
autoStart: this.opts.autoStart,
|
|
28
|
+
flowType: this.opts.flowType
|
|
39
29
|
})}`);
|
|
40
30
|
bridge.onReady(agent => {
|
|
41
31
|
this.agent = agent;
|
|
@@ -58,7 +48,8 @@ export class RefreshOrchestrator {
|
|
|
58
48
|
};
|
|
59
49
|
this.logger.info(`π§ [RefreshOrchestrator] configure -> ${JSON.stringify({
|
|
60
50
|
intervalMs: this.opts.intervalMs,
|
|
61
|
-
autoStart: this.opts.autoStart
|
|
51
|
+
autoStart: this.opts.autoStart,
|
|
52
|
+
flowType: this.opts.flowType
|
|
62
53
|
})}`);
|
|
63
54
|
const nowIntervalMs = this.opts.intervalMs ?? null;
|
|
64
55
|
const nowAutoStart = this.opts.autoStart ?? true;
|
|
@@ -132,8 +123,11 @@ export class RefreshOrchestrator {
|
|
|
132
123
|
for (const rec of records) {
|
|
133
124
|
// donβt block whole batch if one fails
|
|
134
125
|
try {
|
|
135
|
-
|
|
136
|
-
|
|
126
|
+
if (this.opts.flowType === OpenIDCredentialRefreshFlowType.FullReplacement) {
|
|
127
|
+
await this.refreshRecord(rec);
|
|
128
|
+
} else {
|
|
129
|
+
await this.checkRecordStatus(rec);
|
|
130
|
+
}
|
|
137
131
|
} catch (e) {
|
|
138
132
|
var _this$opts$onError, _this$opts;
|
|
139
133
|
this.logger.error(`π₯ [Refresh] record ${rec.id} failed: ${String(e)}`);
|
|
@@ -164,6 +158,7 @@ export class RefreshOrchestrator {
|
|
|
164
158
|
shouldSkip,
|
|
165
159
|
markRefreshing,
|
|
166
160
|
clearRefreshing,
|
|
161
|
+
clearExpired,
|
|
167
162
|
upsert,
|
|
168
163
|
markInvalid,
|
|
169
164
|
setLastSweep
|
|
@@ -188,19 +183,22 @@ export class RefreshOrchestrator {
|
|
|
188
183
|
this.logger.info(`π§ [Refresh] check credential ${id}`);
|
|
189
184
|
try {
|
|
190
185
|
// 3) verification
|
|
191
|
-
const
|
|
186
|
+
const status = await verifyCredentialStatus(rec, this.logger);
|
|
192
187
|
const now = Date.now();
|
|
193
188
|
const meta = getRefreshCredentialMetadata(rec) ?? {};
|
|
194
|
-
meta.lastCheckResult =
|
|
189
|
+
meta.lastCheckResult = status;
|
|
195
190
|
meta.lastCheckedAt = now;
|
|
196
191
|
meta.attemptCount = (meta.attemptCount ?? 0) + 1;
|
|
197
192
|
setRefreshCredentialMetadata(rec, meta);
|
|
198
193
|
await persistCredentialRecord(this.agent.context, rec);
|
|
199
|
-
if (
|
|
194
|
+
if (status === RefreshStatus.Valid) {
|
|
200
195
|
this.logger.info(`β
[Refresh] valid β ${id}`);
|
|
201
|
-
|
|
196
|
+
clearExpired(id);
|
|
197
|
+
} else if (status === RefreshStatus.Invalid) {
|
|
202
198
|
this.logger.info(`β [Refresh] invalid β ${id}`);
|
|
203
|
-
markInvalid(id);
|
|
199
|
+
markInvalid(id);
|
|
200
|
+
} else {
|
|
201
|
+
this.logger.warn(`β οΈ [Refresh] status check error β ${id}`);
|
|
204
202
|
}
|
|
205
203
|
setLastSweep(new Date(now).toISOString());
|
|
206
204
|
} catch (error) {
|
|
@@ -217,9 +215,8 @@ export class RefreshOrchestrator {
|
|
|
217
215
|
markRefreshing,
|
|
218
216
|
clearRefreshing,
|
|
219
217
|
clearExpired,
|
|
220
|
-
markExpiredWithReplacement,
|
|
221
|
-
blockAsFailed,
|
|
222
218
|
blockAsSucceeded,
|
|
219
|
+
markInvalid,
|
|
223
220
|
upsert
|
|
224
221
|
} = credentialRegistry.getState();
|
|
225
222
|
const id = rec.id;
|
|
@@ -242,8 +239,8 @@ export class RefreshOrchestrator {
|
|
|
242
239
|
this.logger.info(`π§ [Refresh] check credential ${id}`);
|
|
243
240
|
try {
|
|
244
241
|
// 3) verification
|
|
245
|
-
const
|
|
246
|
-
if (
|
|
242
|
+
const status = await verifyCredentialStatus(rec, this.logger);
|
|
243
|
+
if (status === RefreshStatus.Valid) {
|
|
247
244
|
this.logger.info(`β
[Refresh] valid β ${id}`);
|
|
248
245
|
// If it was previously expired for any reason, clear that and block as succeeded
|
|
249
246
|
clearExpired(id);
|
|
@@ -251,6 +248,15 @@ export class RefreshOrchestrator {
|
|
|
251
248
|
// blockAsSucceeded(id)
|
|
252
249
|
return;
|
|
253
250
|
}
|
|
251
|
+
if (status === RefreshStatus.Error) {
|
|
252
|
+
this.logger.warn(`β οΈ [Refresh] status check failed; deferring re-issue β ${id}`);
|
|
253
|
+
await markOpenIDCredentialStatus({
|
|
254
|
+
credential: rec,
|
|
255
|
+
status: RefreshStatus.Error,
|
|
256
|
+
agentContext: this.agent.context
|
|
257
|
+
});
|
|
258
|
+
return;
|
|
259
|
+
}
|
|
254
260
|
|
|
255
261
|
// Invalid case:
|
|
256
262
|
|
|
@@ -259,48 +265,28 @@ export class RefreshOrchestrator {
|
|
|
259
265
|
status: RefreshStatus.Invalid,
|
|
260
266
|
agentContext: this.agent.context
|
|
261
267
|
});
|
|
262
|
-
|
|
263
|
-
// 4) needs refresh β get access token
|
|
264
268
|
this.logger.info(`β»οΈ [Refresh] invalid, attempting re-issue β ${id}`);
|
|
265
|
-
const
|
|
266
|
-
logger: this.logger,
|
|
267
|
-
cred: rec,
|
|
268
|
-
agentContext: this.agent.context
|
|
269
|
-
});
|
|
270
|
-
if (!token) {
|
|
271
|
-
const msg = `no refresh token available`;
|
|
272
|
-
this.logger.warn(`β οΈ [Refresh] ${msg} for ${id}`);
|
|
273
|
-
blockAsFailed(id, msg);
|
|
274
|
-
return;
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
// 5) re-issue
|
|
278
|
-
const newRecord = await reissueCredentialWithAccessToken({
|
|
269
|
+
const newRecord = await refreshAndQueueReplacement({
|
|
279
270
|
agent: this.agent,
|
|
280
271
|
logger: this.logger,
|
|
281
272
|
record: rec,
|
|
282
|
-
|
|
273
|
+
toLite: this.opts.toLite
|
|
283
274
|
});
|
|
284
|
-
if (newRecord) {
|
|
285
|
-
|
|
286
|
-
// Queue a replacement for UI/notifications and block the old one as succeeded
|
|
287
|
-
markExpiredWithReplacement(id, this.opts.toLite(newRecord));
|
|
288
|
-
blockAsSucceeded(id);
|
|
289
|
-
this.recentlyIssued.set(newRecord.id, newRecord);
|
|
290
|
-
} else {
|
|
291
|
-
const msg = `re-issue returned no record`;
|
|
275
|
+
if (!newRecord) {
|
|
276
|
+
const msg = 'credential refresh did not yield a replacement';
|
|
292
277
|
this.logger.warn(`β οΈ [Refresh] ${msg} for ${id}`);
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
credential: rec,
|
|
296
|
-
status: RefreshStatus.Invalid,
|
|
297
|
-
agentContext: this.agent.context
|
|
298
|
-
});
|
|
278
|
+
markInvalid(id);
|
|
279
|
+
return;
|
|
299
280
|
}
|
|
281
|
+
this.logger.info(`πΎ [Refresh] new credential β ${newRecord.id}`);
|
|
282
|
+
blockAsSucceeded(id);
|
|
283
|
+
this.recentlyIssued.set(newRecord.id, newRecord);
|
|
300
284
|
} catch (e) {
|
|
285
|
+
var _this$opts$onError4, _this$opts4;
|
|
301
286
|
const err = String(e);
|
|
302
287
|
this.logger.error(`π₯ [Refresh] error on ${id}: ${err}`);
|
|
303
|
-
|
|
288
|
+
(_this$opts$onError4 = (_this$opts4 = this.opts).onError) === null || _this$opts$onError4 === void 0 || _this$opts$onError4.call(_this$opts4, e);
|
|
289
|
+
markInvalid(id);
|
|
304
290
|
} finally {
|
|
305
291
|
// 6) clear in-flight marker
|
|
306
292
|
clearRefreshing(id);
|