diff --git a/apps/easypid/src/agent/initialize.ts b/apps/easypid/src/agent/initialize.ts index 266b240a..e7fbf3e8 100644 --- a/apps/easypid/src/agent/initialize.ts +++ b/apps/easypid/src/agent/initialize.ts @@ -1,7 +1,8 @@ -import { setFallbackSecureEnvironment } from '@animo-id/expo-secure-environment' +import { setFallbackSecureEnvironment, shouldUseFallbackSecureEnvironment } from '@animo-id/expo-secure-environment' import { trustedX509Certificates } from '@easypid/constants' import { WalletServiceProviderClient } from '@easypid/crypto/WalletServiceProviderClient' import { initializeEasyPIDAgent } from '@package/agent' +import { getShouldUseCloudHsm } from '../features/onboarding/useShouldUseCloudHsm' export async function initializeAppAgent({ walletKey, @@ -29,6 +30,7 @@ export async function initializeAppAgent({ await wsp.createSalt() await wsp.register() } + if (getShouldUseCloudHsm()) shouldUseFallbackSecureEnvironment(true) setFallbackSecureEnvironment(wsp) return agent diff --git a/apps/easypid/src/app/(app)/_layout.tsx b/apps/easypid/src/app/(app)/_layout.tsx index c0736b8c..8cf7a792 100644 --- a/apps/easypid/src/app/(app)/_layout.tsx +++ b/apps/easypid/src/app/(app)/_layout.tsx @@ -9,6 +9,7 @@ import { type CredentialDataHandlerOptions, DeeplinkHandler, useHaptics } from ' import { HeroIcons, IconContainer } from '@package/ui' import { useEffect, useState } from 'react' import { useTheme } from 'tamagui' +import { WithBackgroundPidRefresh } from '../../features/pid/WithBackPidRefresh' const jsonRecordIds = [activityStorage.recordId] @@ -65,42 +66,44 @@ export default function AppLayout() { return ( - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + ) diff --git a/apps/easypid/src/features/onboarding/hasFinishedOnboarding.ts b/apps/easypid/src/features/onboarding/hasFinishedOnboarding.ts index dc68692e..0b8a212b 100644 --- a/apps/easypid/src/features/onboarding/hasFinishedOnboarding.ts +++ b/apps/easypid/src/features/onboarding/hasFinishedOnboarding.ts @@ -1,6 +1,6 @@ import { MMKV, useMMKVBoolean } from 'react-native-mmkv' -const mmkv = new MMKV() +export const mmkv = new MMKV() export function useHasFinishedOnboarding() { return useMMKVBoolean('hasFinishedOnboarding', mmkv) diff --git a/apps/easypid/src/features/onboarding/onboardingContext.tsx b/apps/easypid/src/features/onboarding/onboardingContext.tsx index 9fe10af1..768238d9 100644 --- a/apps/easypid/src/features/onboarding/onboardingContext.tsx +++ b/apps/easypid/src/features/onboarding/onboardingContext.tsx @@ -13,7 +13,6 @@ import { type CardScanningState, type OnboardingPage, type OnboardingStep, - type PidFlowTypes, SIMULATOR_PIN, pidSetupSteps, } from '@easypid/utils/sharedPidSetup' @@ -36,6 +35,7 @@ import { OnboardingBiometrics } from './screens/biometrics' import { OnboardingIntroductionSteps } from './screens/introduction-steps' import OnboardingPinEnter from './screens/pin' import OnboardingWelcome from './screens/welcome' +import { useShouldUseCloudHsm } from './useShouldUseCloudHsm' export const onboardingSteps = [ { @@ -132,6 +132,7 @@ export function OnboardingContextProvider({ const [currentStepName, setCurrentStepName] = useState(initialStep ?? 'welcome') const router = useRouter() const [, setHasFinishedOnboarding] = useHasFinishedOnboarding() + const [shouldUseCloudHsm, setShouldUseCloudHsm] = useShouldUseCloudHsm() const pidDisplay = usePidDisplay() const [receivePidUseCase, setReceivePidUseCase] = useState() @@ -627,7 +628,15 @@ export function OnboardingContextProvider({ let screen: React.JSX.Element if (currentStep.step === 'welcome') { - screen = + screen = ( + { + // TODO: make configurable + // setShouldUseCloudHsm(true) + goToNextStep() + }} + /> + ) } else if (currentStep.step === 'pin' || currentStep.step === 'pin-reenter') { screen = ( { + if (!shouldUseCloudHsm) return {} + const sdJwt = credentials?.find((c) => c.record instanceof SdJwtVcRecord)?.record as SdJwtVcRecord | undefined + const mdoc = credentials?.find((c) => c.record instanceof MdocRecord)?.record as MdocRecord | undefined + + let shouldRefreshSdJwt = false + if (sdJwt) { + const sdJwtBatch = getBatchCredentialMetadata(sdJwt) + if (sdJwtBatch) { + shouldRefreshSdJwt = sdJwtBatch.additionalCredentials.length <= batchThreshold + } + } + + let shouldRefreshMdoc = false + if (mdoc) { + const mdocBatch = getBatchCredentialMetadata(mdoc) + if (mdocBatch) { + shouldRefreshMdoc = mdocBatch.additionalCredentials.length <= batchThreshold + } + } + + return { + sdJwt: sdJwt + ? { + record: sdJwt, + shouldRefresh: shouldRefreshSdJwt, + } + : undefined, + mdoc: mdoc + ? { + record: mdoc, + shouldRefresh: shouldRefreshMdoc, + } + : undefined, + } + }, [credentials, batchThreshold, shouldUseCloudHsm]) + + useEffect(() => { + if (isRefreshing || !hasInternet || !shouldUseCloudHsm) return + + if (sdJwt?.shouldRefresh || mdoc?.shouldRefresh) { + setIsRefreshing(true) + + refreshPid({ + agent, + sdJwt: sdJwt?.shouldRefresh ? sdJwt?.record : undefined, + mdoc: mdoc?.shouldRefresh ? mdoc?.record : undefined, + }).finally(() => setIsRefreshing(false)) + } + }, [ + sdJwt?.shouldRefresh, + mdoc?.shouldRefresh, + hasInternet, + agent, + isRefreshing, + mdoc?.record, + sdJwt?.record, + shouldUseCloudHsm, + ]) +} diff --git a/apps/easypid/src/hooks/usePidCredential.tsx b/apps/easypid/src/hooks/usePidCredential.tsx index a3a60fbd..c92e40ee 100644 --- a/apps/easypid/src/hooks/usePidCredential.tsx +++ b/apps/easypid/src/hooks/usePidCredential.tsx @@ -386,13 +386,14 @@ export function usePidCredential() { attributesForDisplay: getPidAttributesForDisplay(attributes, claimFormat), metadata: pidCredential.metadata, metadataForDisplay: getPidMetadataAttributesForDisplay(attributes, pidCredential.metadata, ClaimFormat.SdJwtVc), + record: pidCredential.record, } }) }, [credentials]) if (isLoading) { return { - credential: undefined, + credentials: undefined, isLoading: true, } as const } diff --git a/apps/easypid/src/use-cases/ReceivePidUseCaseCFlow.ts b/apps/easypid/src/use-cases/ReceivePidUseCaseCFlow.ts index f7949314..3d0fc251 100644 --- a/apps/easypid/src/use-cases/ReceivePidUseCaseCFlow.ts +++ b/apps/easypid/src/use-cases/ReceivePidUseCaseCFlow.ts @@ -6,22 +6,32 @@ import { type SdJwtVcRecord, receiveCredentialFromOpenId4VciOffer, resolveOpenId4VciOffer, + setRefreshCredentialMetadata, storeCredential, } from '@package/agent' +import { getShouldUseCloudHsm } from '../features/onboarding/useShouldUseCloudHsm' import { ReceivePidUseCaseFlow, type ReceivePidUseCaseFlowOptions } from './ReceivePidUseCaseFlow' -import { C_SD_JWT_MDOC_OFFER } from './bdrPidIssuerOffers' +import { C_PRIME_SD_JWT_MDOC_OFFER } from './bdrPidIssuerOffers' export class ReceivePidUseCaseCFlow extends ReceivePidUseCaseFlow { public static async initialize(options: ReceivePidUseCaseFlowOptions) { const resolved = await resolveOpenId4VciOffer({ agent: options.agent, - offer: { uri: C_SD_JWT_MDOC_OFFER }, + offer: { uri: C_PRIME_SD_JWT_MDOC_OFFER }, authorization: { clientId: ReceivePidUseCaseCFlow.CLIENT_ID, redirectUri: ReceivePidUseCaseCFlow.REDIRECT_URI, }, }) + // NOTE: the bdr pid issuer does not include in their metadata that they support batch while they do support is + // and Credo checks for this. We modify the metadata so we can still use batch issuance + if (!resolved.resolvedCredentialOffer.metadata.credentialIssuer.batch_credential_issuance) { + resolved.resolvedCredentialOffer.metadata.credentialIssuer.batch_credential_issuance = { + batch_size: 10, + } + } + if ( !resolved.resolvedAuthorizationRequest || resolved.resolvedAuthorizationRequest.authorizationFlow === OpenId4VciAuthorizationFlow.PresentationDuringIssuance @@ -57,17 +67,28 @@ export class ReceivePidUseCaseCFlow extends ReceivePidUseCaseFlow { resolvedCredentialOffer: this.resolvedCredentialOffer, credentialConfigurationIdsToRequest, clientId: ReceivePidUseCaseCFlow.CLIENT_ID, + requestBatch: getShouldUseCloudHsm() ? 10 : false, pidSchemes, }) const credentialRecords: Array = [] for (const credentialResponse of credentialResponses) { const credentialRecord = credentialResponse.credential - if (typeof credentialRecord === 'string') throw new Error('No string expected for c flow') + if (credentialRecord.type !== 'SdJwtVcRecord' && credentialRecord.type !== 'MdocRecord') { throw new Error(`Unexpected record type ${credentialRecord.type}`) } + // It seems the refresh token can be re-used, so we store it on all the records + if (this.accessToken.accessTokenResponse.refresh_token) { + setRefreshCredentialMetadata(credentialRecord, { + refreshToken: this.accessToken.accessTokenResponse.refresh_token, + dpop: this.accessToken.dpop + ? { alg: this.accessToken.dpop.alg, jwk: this.accessToken.dpop.jwk.toJson() } + : undefined, + }) + } + credentialRecords.push(credentialRecord) await storeCredential(this.options.agent, credentialRecord) } diff --git a/apps/easypid/src/use-cases/RefreshPidUseCase.ts.ts b/apps/easypid/src/use-cases/RefreshPidUseCase.ts.ts new file mode 100644 index 00000000..f0e6c024 --- /dev/null +++ b/apps/easypid/src/use-cases/RefreshPidUseCase.ts.ts @@ -0,0 +1,124 @@ +import { ClaimFormat, MdocRecord, getJwkFromJson } from '@credo-ts/core' +import type { AppAgent } from '@easypid/agent' +import { + type OpenId4VciRequestTokenResponse, + type OpenId4VciResolvedCredentialOffer, + SdJwtVcRecord, + acquireRefreshTokenAccessToken, + getRefreshCredentialMetadata, + receiveCredentialFromOpenId4VciOffer, + resolveOpenId4VciOffer, + setRefreshCredentialMetadata, + storeCredential, +} from '@package/agent' +import { pidSchemes } from '../constants' +import { ReceivePidUseCaseFlow } from './ReceivePidUseCaseFlow' +import { C_PRIME_SD_JWT_MDOC_OFFER } from './bdrPidIssuerOffers' + +export interface RefreshPidUseCaseOptions { + agent: AppAgent +} + +export class RefreshPidUseCase { + protected options: RefreshPidUseCaseOptions + + public resolvedCredentialOffer: OpenId4VciResolvedCredentialOffer + protected accessToken?: OpenId4VciRequestTokenResponse + + static REDIRECT_URI = ReceivePidUseCaseFlow.REDIRECT_URI + static CLIENT_ID = ReceivePidUseCaseFlow.CLIENT_ID + + public static async initialize(options: RefreshPidUseCaseOptions) { + const resolved = await resolveOpenId4VciOffer({ + agent: options.agent, + offer: { uri: C_PRIME_SD_JWT_MDOC_OFFER }, + fetchAuthorization: false, + }) + + if (!resolved.resolvedCredentialOffer.metadata.credentialIssuer.batch_credential_issuance) { + // NOTE: the bdr pid issuer does not include in their metadata that they support batch while they do support is + // and Credo checks for this. We modify the metadata so we can still use batch issuance + resolved.resolvedCredentialOffer.metadata.credentialIssuer.batch_credential_issuance = { + batch_size: 10, + } + } + + return new RefreshPidUseCase(options, resolved.resolvedCredentialOffer) + } + + protected constructor(options: RefreshPidUseCaseOptions, resolvedCredentialOffer: OpenId4VciResolvedCredentialOffer) { + this.resolvedCredentialOffer = resolvedCredentialOffer + this.options = options + } + + public async retrieveCredentialsUsingExistingRecords({ + sdJwt, + mdoc, + }: { + sdJwt?: SdJwtVcRecord + mdoc?: MdocRecord + }) { + const existingRefreshMetadata = + (sdJwt ? getRefreshCredentialMetadata(sdJwt) : undefined) ?? + (mdoc ? getRefreshCredentialMetadata(mdoc) : undefined) + + if (!existingRefreshMetadata) { + throw new Error('Refresh metadata must be available for refresh') + } + + const accessToken = await acquireRefreshTokenAccessToken({ + agent: this.options.agent, + clientId: ReceivePidUseCaseFlow.CLIENT_ID, + resolvedCredentialOffer: this.resolvedCredentialOffer, + authorizationServer: this.resolvedCredentialOffer.metadata.authorizationServers[0].issuer, + refreshToken: existingRefreshMetadata?.refreshToken, + dpop: existingRefreshMetadata?.dpop + ? { alg: existingRefreshMetadata.dpop.alg, jwk: getJwkFromJson(existingRefreshMetadata.dpop.jwk) } + : undefined, + }) + + const limitToFormats: string[] = [] + if (mdoc) limitToFormats.push(ClaimFormat.MsoMdoc) + if (sdJwt) limitToFormats.push(ClaimFormat.SdJwtVc) + + const credentialConfigurationIdsToRequest = Object.entries( + this.resolvedCredentialOffer.offeredCredentialConfigurations + ) + .filter(([, configuration]) => limitToFormats.includes(configuration.format)) + .map(([id]) => id) + + const credentialResponses = await receiveCredentialFromOpenId4VciOffer({ + agent: this.options.agent, + accessToken, + resolvedCredentialOffer: this.resolvedCredentialOffer, + credentialConfigurationIdsToRequest, + clientId: RefreshPidUseCase.CLIENT_ID, + requestBatch: 10, + pidSchemes, + }) + + const credentialRecords: Array = [] + for (const credentialResponse of credentialResponses) { + const credentialRecord = credentialResponse.credential + + if (credentialRecord.type !== 'SdJwtVcRecord' && credentialRecord.type !== 'MdocRecord') { + throw new Error(`Unexpected record type ${credentialRecord.type}`) + } + + // No refresh token is issued for the refresh access token so we take the existing refresh metadata + setRefreshCredentialMetadata(credentialRecord, existingRefreshMetadata) + + if (credentialRecord instanceof SdJwtVcRecord && sdJwt) { + credentialRecords.push(credentialRecord) + await storeCredential(this.options.agent, credentialRecord) + await this.options.agent.sdJwtVc.deleteById(sdJwt.id) + } else if (credentialRecord instanceof MdocRecord && mdoc) { + credentialRecords.push(credentialRecord) + await storeCredential(this.options.agent, credentialRecord) + await this.options.agent.mdoc.deleteById(mdoc.id) + } + } + + return credentialRecords + } +} diff --git a/apps/easypid/src/use-cases/bdrPidIssuerOffers.ts b/apps/easypid/src/use-cases/bdrPidIssuerOffers.ts index 0f9d32a4..dc71f633 100644 --- a/apps/easypid/src/use-cases/bdrPidIssuerOffers.ts +++ b/apps/easypid/src/use-cases/bdrPidIssuerOffers.ts @@ -4,5 +4,9 @@ export const B_PRIME_SD_JWT_VC_OFFER = export const C_SD_JWT_MDOC_OFFER = 'openid-credential-offer://?credential_offer=%7B%22credential_issuer%22%3A%22https%3A%2F%2Fdemo.pid-issuer.bundesdruckerei.de%2Fc%22%2C%22credential_configuration_ids%22%3A%5B%22pid-sd-jwt%22%2C%20%22pid-mso-mdoc%22%5D%2C%22grants%22%3A%7B%22authorization_code%22%3A%7B%7D%7D%7D' +// issues refresh_token +export const C_PRIME_SD_JWT_MDOC_OFFER = + 'openid-credential-offer://?credential_offer=%7B%22credential_issuer%22%3A%22https%3A%2F%2Fdemo.pid-issuer.bundesdruckerei.de%2Fc1%22%2C%22credential_configuration_ids%22%3A%5B%22pid-sd-jwt%22%2C%20%22pid-mso-mdoc%22%5D%2C%22grants%22%3A%7B%22authorization_code%22%3A%7B%7D%7D%7D' + export const C_SD_JWT_OFFER = 'openid-credential-offer://?credential_offer=%7B%22credential_issuer%22%3A%22https%3A%2F%2Fdemo.pid-issuer.bundesdruckerei.de%2Fc%22%2C%22credential_configuration_ids%22%3A%5B%22pid-sd-jwt%22%5D%2C%22grants%22%3A%7B%22authorization_code%22%3A%7B%7D%7D%7D' diff --git a/apps/easypid/src/utils/resetWallet.ts b/apps/easypid/src/utils/resetWallet.ts index c1864097..135050ca 100644 --- a/apps/easypid/src/utils/resetWallet.ts +++ b/apps/easypid/src/utils/resetWallet.ts @@ -9,6 +9,7 @@ import { removeHasFinishedOnboarding, removeHasSeenIntroTooltip, } from '@easypid/features/onboarding/hasFinishedOnboarding' +import { removeShouldUseCloudHsm } from '../features/onboarding/useShouldUseCloudHsm' export async function resetWallet(secureUnlock: SecureUnlockReturn) { if (secureUnlock.state === 'unlocked') { @@ -24,8 +25,8 @@ export async function resetWallet(secureUnlock: SecureUnlockReturn | string): W3cVerifiableCredential { + return typeof credential === 'string' + ? W3cJwtVerifiableCredential.fromSerializedJwt(credential) + : W3cJsonLdVerifiableCredential.fromJson(credential) +} + export function encodeCredential(credential: VerifiableCredential): Record | string { const credentialResult = credentialWithClaimFormat(credential) diff --git a/packages/agent/src/index.ts b/packages/agent/src/index.ts index 3518dc99..3d695132 100644 --- a/packages/agent/src/index.ts +++ b/packages/agent/src/index.ts @@ -2,11 +2,16 @@ import 'react-native-get-random-values' import 'fast-text-encoding' import { Buffer } from '@credo-ts/core' +export { + setRefreshCredentialMetadata, + RefreshCredentialMetadata, + getRefreshCredentialMetadata, +} from './openid4vc/refreshMetadata' // @ts-ignore global.Buffer = Buffer -export type { OpenId4VciTxCode } from '@credo-ts/openid4vc' +export type { OpenId4VciTxCode, OpenId4VciDpopRequestOptions } from '@credo-ts/openid4vc' export { initializeFullAgent, initializeEasyPIDAgent, diff --git a/packages/agent/src/invitation/handler.ts b/packages/agent/src/invitation/handler.ts index 001bf469..a32f534c 100644 --- a/packages/agent/src/invitation/handler.ts +++ b/packages/agent/src/invitation/handler.ts @@ -2,9 +2,6 @@ import type { ConnectionRecord, CredentialStateChangedEvent, DifPexCredentialsForRequest, - JwkDidCreateOptions, - Key, - KeyDidCreateOptions, OutOfBandInvitation, OutOfBandRecord, P256Jwk, @@ -14,10 +11,12 @@ import type { PlaintextMessage } from '@credo-ts/core/build/types' import type { OpenId4VcSiopVerifiedAuthorizationRequest, OpenId4VciCredentialConfigurationSupportedWithFormats, + OpenId4VciDpopRequestOptions, OpenId4VciRequestTokenResponse, OpenId4VciResolvedAuthorizationRequest, OpenId4VciResolvedCredentialOffer, } from '@credo-ts/openid4vc' +import { getOid4vciCallbacks } from '@credo-ts/openid4vc/build/shared/callbacks' import { Linking } from 'react-native' import type { EitherAgent, FullAppAgent } from '../agent' @@ -25,28 +24,20 @@ import { V1OfferCredentialMessage, V1RequestPresentationMessage } from '@credo-t import { CredentialEventTypes, CredentialState, + Hasher, JwaSignatureAlgorithm, Jwt, - KeyBackend, - KeyType, - Mdoc, - MdocRecord, - MdocRepository, OutOfBandRepository, ProofEventTypes, ProofState, - type SdJwtVcRecord, - SdJwtVcRepository, V2OfferCredentialMessage, V2RequestPresentationMessage, - W3cCredentialRecord, - W3cCredentialRepository, X509ModuleConfig, - getJwkFromKey, parseMessageType, } from '@credo-ts/core' import { supportsIncomingMessageType } from '@credo-ts/core/build/utils/messageType' import { + OpenId4VciHolderService, getOfferedCredentials, getScopesFromCredentialConfigurationsSupported, preAuthorizedCodeGrantIdentifier, @@ -54,10 +45,11 @@ import { import { getHostNameFromUrl } from '@package/utils' import { filter, first, firstValueFrom, merge, timeout } from 'rxjs' +import { Oauth2Client, getAuthorizationServerMetadataFromList } from '@animo-id/oauth2' import q from 'query-string' +import { handleBatchCredential } from '../batch' import { credentialRecordFromCredential, encodeCredential } from '../format/credentialEncoding' import { formatDifPexCredentialsForRequest } from '../format/formatPresentation' -import type { CredentialForDisplayId } from '../hooks' import { setBatchCredentialMetadata } from '../openid4vc/batchMetadata' import { getCredentialBindingResolver } from '../openid4vc/credentialBindingResolver' import { extractOpenId4VcCredentialMetadata, setOpenId4VcCredentialMetadata } from '../openid4vc/displayMetadata' @@ -69,11 +61,13 @@ export async function resolveOpenId4VciOffer({ offer, authorization, customHeaders, + fetchAuthorization = true, }: { agent: EitherAgent offer: { data?: string; uri?: string } authorization?: { clientId: string; redirectUri: string } customHeaders?: Record + fetchAuthorization?: boolean }) { let offerUri = offer.uri @@ -95,7 +89,7 @@ export async function resolveOpenId4VciOffer({ let resolvedAuthorizationRequest: OpenId4VciResolvedAuthorizationRequest | undefined = undefined // NOTE: we always assume scopes are used at the moment - if (resolvedCredentialOffer.credentialOfferPayload.grants?.authorization_code) { + if (fetchAuthorization && resolvedCredentialOffer.credentialOfferPayload.grants?.authorization_code) { // If only authorization_code grant is valid and user didn't provide authorization details we can't continue if (!resolvedCredentialOffer.credentialOfferPayload.grants[preAuthorizedCodeGrantIdentifier] && !authorization) { throw new Error( @@ -168,6 +162,54 @@ export async function acquireAuthorizationCodeUsingPresentation({ }) } +export async function acquireRefreshTokenAccessToken({ + authorizationServer, + resolvedCredentialOffer, + agent, + clientId, + refreshToken, + dpop, +}: { + agent: EitherAgent + resolvedCredentialOffer: OpenId4VciResolvedCredentialOffer + authorizationServer: string + clientId: string + refreshToken: string + dpop?: OpenId4VciDpopRequestOptions +}): Promise { + const oauth2Client = new Oauth2Client({ callbacks: getOid4vciCallbacks(agent.context) }) + + // TODO: dpop retry also for this method + const accessTokenResponse = await oauth2Client.retrieveRefreshTokenAccessToken({ + refreshToken, + resource: resolvedCredentialOffer.credentialOfferPayload.credential_issuer, + authorizationServerMetadata: getAuthorizationServerMetadataFromList( + resolvedCredentialOffer.metadata.authorizationServers, + authorizationServer + ), + additionalRequestPayload: { + client_id: clientId, + }, + dpop: dpop + ? { + nonce: dpop.nonce, + signer: { + method: 'jwk', + alg: dpop.alg, + publicJwk: dpop.jwk.toJson(), + }, + } + : undefined, + }) + + return { + accessToken: accessTokenResponse.accessTokenResponse.access_token, + cNonce: accessTokenResponse.accessTokenResponse.c_nonce, + dpop: dpop ? { ...dpop, nonce: accessTokenResponse.dpop?.nonce } : undefined, + accessTokenResponse: accessTokenResponse.accessTokenResponse, + } +} + export async function acquireAuthorizationCodeAccessToken({ resolvedCredentialOffer, agent, @@ -199,12 +241,14 @@ export const receiveCredentialFromOpenId4VciOffer = async ({ accessToken, clientId, pidSchemes, + requestBatch, }: { agent: EitherAgent resolvedCredentialOffer: OpenId4VciResolvedCredentialOffer credentialConfigurationIdsToRequest?: string[] clientId?: string pidSchemes?: { sdJwtVcVcts: Array; msoMdocDoctypes: Array } + requestBatch?: boolean | number // TODO: cNonce should maybe be provided separately (multiple calls can have different c_nonce values) accessToken: OpenId4VciRequestTokenResponse @@ -229,6 +273,7 @@ export const receiveCredentialFromOpenId4VciOffer = async ({ clientId, credentialConfigurationIds: Object.keys(offeredCredentialsToRequest), verifyCredentialStatus: false, + requestBatch, allowedProofOfPossessionSignatureAlgorithms: [ // NOTE: MATTR launchpad for JFF MUST use EdDSA. So it is important that the default (first allowed one) // is EdDSA. The list is ordered by preference, so if no suites are defined by the issuer, the first one @@ -248,14 +293,6 @@ export const receiveCredentialFromOpenId4VciOffer = async ({ ] as OpenId4VciCredentialConfigurationSupportedWithFormats const firstCredential = credentials[0] - if (typeof firstCredential === 'string') { - return { - ...credentialResponse, - configuration, - credential: firstCredential, - } - } - const record = credentialRecordFromCredential(firstCredential) // OpenID4VC metadata @@ -474,20 +511,25 @@ export const shareProof = async ({ // input descriptor has been provided in `selectedCredentials` we will use that. Otherwise // it will pick the first available credential. const credentials = Object.fromEntries( - credentialsForRequest.requirements.flatMap((requirement) => - requirement.submissionEntry.map((entry) => { - const credentialId = selectedCredentials[entry.inputDescriptorId] - const credential = - entry.verifiableCredentials.find((vc) => vc.credentialRecord.id === credentialId) ?? - entry.verifiableCredentials[0] - - return [entry.inputDescriptorId, [credential.credentialRecord]] - }) + await Promise.all( + credentialsForRequest.requirements.flatMap((requirement) => + requirement.submissionEntry.map(async (entry) => { + const credentialId = selectedCredentials[entry.inputDescriptorId] + const credential = + entry.verifiableCredentials.find((vc) => vc.credentialRecord.id === credentialId) ?? + entry.verifiableCredentials[0] + + // Optionally use a batch credential + const credentialRecord = await handleBatchCredential(agent, credential.credentialRecord) + + return [entry.inputDescriptorId, [credentialRecord]] as [string, (typeof credentialRecord)[]] + }) + ) ) ) try { - // Temp solution to add and remove the trusted certicaite + // Temp solution to add and remove the trusted certificate const certificate = authorizationRequest.jwt && allowUntrustedCertificate ? extractCertificateFromJwt(authorizationRequest.jwt) : null @@ -519,32 +561,6 @@ export const shareProof = async ({ } } -export async function storeCredential( - agent: EitherAgent, - credentialRecord: W3cCredentialRecord | SdJwtVcRecord | MdocRecord -) { - if (credentialRecord instanceof W3cCredentialRecord) { - await agent.dependencyManager.resolve(W3cCredentialRepository).save(agent.context, credentialRecord) - } else if (credentialRecord instanceof MdocRecord) { - await agent.dependencyManager.resolve(MdocRepository).save(agent.context, credentialRecord) - } else { - await agent.dependencyManager.resolve(SdJwtVcRepository).save(agent.context, credentialRecord) - } -} - -export async function deleteCredential(agent: EitherAgent, credentialId: CredentialForDisplayId) { - if (credentialId.startsWith('w3c-credential-')) { - const w3cCredentialId = credentialId.replace('w3c-credential-', '') - await agent.w3cCredentials.removeCredentialRecord(w3cCredentialId) - } else if (credentialId.startsWith('sd-jwt-vc')) { - const sdJwtVcId = credentialId.replace('sd-jwt-vc-', '') - await agent.sdJwtVc.deleteById(sdJwtVcId) - } else if (credentialId.startsWith('mdoc-')) { - const mdocId = credentialId.replace('mdoc-', '') - await agent.mdoc.deleteById(mdocId) - } -} - /** * @todo we probably need a way to cancel this method, if the qr scanner is .e.g dismissed. */ diff --git a/packages/agent/src/invitation/index.ts b/packages/agent/src/invitation/index.ts index 6f6412c4..4908fe99 100644 --- a/packages/agent/src/invitation/index.ts +++ b/packages/agent/src/invitation/index.ts @@ -31,12 +31,11 @@ export { receiveOutOfBandInvitation, receiveCredentialFromOpenId4VciOffer, acquireAuthorizationCodeAccessToken, + acquireRefreshTokenAccessToken, acquirePreAuthorizedAccessToken, resolveOpenId4VciOffer, - storeCredential, getCredentialsForProofRequest, shareProof, - deleteCredential, withTrustedCertificate, acquireAuthorizationCodeUsingPresentation, } from './handler' diff --git a/packages/agent/src/openid4vc/refreshMetadata.ts b/packages/agent/src/openid4vc/refreshMetadata.ts new file mode 100644 index 00000000..af50392a --- /dev/null +++ b/packages/agent/src/openid4vc/refreshMetadata.ts @@ -0,0 +1,29 @@ +import type { JwaSignatureAlgorithm, JwkJson, MdocRecord, SdJwtVcRecord, W3cCredentialRecord } from '@credo-ts/core' + +export interface RefreshCredentialMetadata { + refreshToken: string + dpop?: { alg: JwaSignatureAlgorithm; jwk: JwkJson } +} + +const refreshCredentialMetadataKey = '_paradym/refreshCredentialMetadata' + +/** + * Gets the refresh credential metadata from the given credential record. + */ +export function getRefreshCredentialMetadata( + credentialRecord: W3cCredentialRecord | SdJwtVcRecord | MdocRecord +): RefreshCredentialMetadata | null { + return credentialRecord.metadata.get(refreshCredentialMetadataKey) +} + +/** + * Sets the refresh credential metadata on the given credential record + * + * NOTE: this does not save the record. + */ +export function setRefreshCredentialMetadata( + credentialRecord: W3cCredentialRecord | SdJwtVcRecord | MdocRecord, + metadata: RefreshCredentialMetadata +) { + credentialRecord.metadata.set(refreshCredentialMetadataKey, metadata) +} diff --git a/packages/agent/src/storage/credential.ts b/packages/agent/src/storage/credential.ts new file mode 100644 index 00000000..ef2b8617 --- /dev/null +++ b/packages/agent/src/storage/credential.ts @@ -0,0 +1,48 @@ +import { + MdocRecord, + MdocRepository, + type SdJwtVcRecord, + SdJwtVcRepository, + W3cCredentialRecord, + W3cCredentialRepository, +} from '@credo-ts/core' +import type { EitherAgent } from '../agent' +import type { CredentialForDisplayId } from '../hooks' + +export async function updateCredential( + agent: EitherAgent, + credentialRecord: W3cCredentialRecord | SdJwtVcRecord | MdocRecord +) { + if (credentialRecord instanceof W3cCredentialRecord) { + await agent.dependencyManager.resolve(W3cCredentialRepository).update(agent.context, credentialRecord) + } else if (credentialRecord instanceof MdocRecord) { + await agent.dependencyManager.resolve(MdocRepository).update(agent.context, credentialRecord) + } else { + await agent.dependencyManager.resolve(SdJwtVcRepository).update(agent.context, credentialRecord) + } +} +export async function storeCredential( + agent: EitherAgent, + credentialRecord: W3cCredentialRecord | SdJwtVcRecord | MdocRecord +) { + if (credentialRecord instanceof W3cCredentialRecord) { + await agent.dependencyManager.resolve(W3cCredentialRepository).save(agent.context, credentialRecord) + } else if (credentialRecord instanceof MdocRecord) { + await agent.dependencyManager.resolve(MdocRepository).save(agent.context, credentialRecord) + } else { + await agent.dependencyManager.resolve(SdJwtVcRepository).save(agent.context, credentialRecord) + } +} + +export async function deleteCredential(agent: EitherAgent, credentialId: CredentialForDisplayId) { + if (credentialId.startsWith('w3c-credential-')) { + const w3cCredentialId = credentialId.replace('w3c-credential-', '') + await agent.w3cCredentials.removeCredentialRecord(w3cCredentialId) + } else if (credentialId.startsWith('sd-jwt-vc')) { + const sdJwtVcId = credentialId.replace('sd-jwt-vc-', '') + await agent.sdJwtVc.deleteById(sdJwtVcId) + } else if (credentialId.startsWith('mdoc-')) { + const mdocId = credentialId.replace('mdoc-', '') + await agent.mdoc.deleteById(mdocId) + } +} diff --git a/packages/agent/src/storage/index.ts b/packages/agent/src/storage/index.ts index 24ae6d9f..4cb8d5b2 100644 --- a/packages/agent/src/storage/index.ts +++ b/packages/agent/src/storage/index.ts @@ -1,2 +1,3 @@ export * from './walletJsonStore' export * from './WalletJsonStoreProvider' +export * from './credential' diff --git a/packages/app/src/provider/Provider.tsx b/packages/app/src/provider/Provider.tsx index 5d333478..d4ceaf10 100644 --- a/packages/app/src/provider/Provider.tsx +++ b/packages/app/src/provider/Provider.tsx @@ -14,7 +14,7 @@ export function Provider({ children, ...rest }: PropsWithChildren - + {children} diff --git a/patches/@credo-ts__askar@0.6.0-alpha-20241119125554.patch b/patches/@credo-ts__askar@0.6.0-alpha-20241120153226.patch similarity index 100% rename from patches/@credo-ts__askar@0.6.0-alpha-20241119125554.patch rename to patches/@credo-ts__askar@0.6.0-alpha-20241120153226.patch diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ec559830..776102eb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,17 +11,20 @@ overrides: '@hyperledger/anoncreds-react-native': ^0.2.4 '@hyperledger/aries-askar-react-native': ^0.2.3 '@hyperledger/indy-vdr-react-native': ^0.2.0 - '@credo-ts/anoncreds': 0.6.0-alpha-20241119125554 - '@credo-ts/askar': 0.6.0-alpha-20241119125554 - '@credo-ts/cheqd': 0.6.0-alpha-20241119125554 - '@credo-ts/core': 0.6.0-alpha-20241119125554 - '@credo-ts/indy-vdr': 0.6.0-alpha-20241119125554 - '@credo-ts/openid4vc': 0.6.0-alpha-20241119125554 - '@credo-ts/question-answer': 0.6.0-alpha-20241119125554 - '@credo-ts/react-native': 0.6.0-alpha-20241119125554 + '@credo-ts/anoncreds': 0.6.0-alpha-20241120153226 + '@credo-ts/askar': 0.6.0-alpha-20241120153226 + '@credo-ts/cheqd': 0.6.0-alpha-20241120153226 + '@credo-ts/core': 0.6.0-alpha-20241120153226 + '@credo-ts/indy-vdr': 0.6.0-alpha-20241120153226 + '@credo-ts/openid4vc': 0.6.0-alpha-20241120153226 + '@credo-ts/question-answer': 0.6.0-alpha-20241120153226 + '@credo-ts/react-native': 0.6.0-alpha-20241120153226 '@credo-ts/react-hooks': 0.6.1 '@animo-id/expo-ausweis-sdk': 0.0.1-alpha.14 - '@animo-id/expo-secure-environment': 0.1.0-alpha.9 + '@animo-id/oid4vci': 0.1.4-alpha-20241120145259 + '@animo-id/oauth2': 0.1.4-alpha-20241120145259 + '@animo-id/oauth2-utils': 0.1.4-alpha-20241120145259 + '@animo-id/expo-secure-environment': 0.1.0-alpha.10 '@animo-id/expo-mdoc-data-transfer': 0.0.3-alpha.7 '@types/react': ~18.2.79 react-docgen-typescript: 2.2.2 @@ -32,9 +35,9 @@ patchedDependencies: '@animo-id/mdoc@0.2.38': hash: zifb323ygrtdb6olnw5okh7czy path: patches/@animo-id__mdoc@0.2.38.patch - '@credo-ts/askar@0.6.0-alpha-20241119125554': + '@credo-ts/askar@0.6.0-alpha-20241120153226': hash: zbu2rcss5evxukkhh5w5venkba - path: patches/@credo-ts__askar@0.6.0-alpha-20241119125554.patch + path: patches/@credo-ts__askar@0.6.0-alpha-20241120153226.patch '@hyperledger/indy-vdr-react-native@0.2.2': hash: jtxhiuxe2e3i7qwlurpufqwh5a path: patches/@hyperledger__indy-vdr-react-native@0.2.2.patch @@ -62,11 +65,11 @@ importers: specifier: 0.0.3-alpha.7 version: 0.0.3-alpha.7(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.2.79)(expo@51.0.39(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react@18.3.1) '@animo-id/expo-secure-environment': - specifier: 0.1.0-alpha.9 - version: 0.1.0-alpha.9(expo@51.0.39(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.74.6(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.2.79)(react@18.3.1))(react@18.3.1) + specifier: 0.1.0-alpha.10 + version: 0.1.0-alpha.10(expo@51.0.39(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.74.6(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.2.79)(react@18.3.1))(react@18.3.1) '@credo-ts/core': - specifier: 0.6.0-alpha-20241119125554 - version: 0.6.0-alpha-20241119125554(expo@51.0.39(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.74.6(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + specifier: 0.6.0-alpha-20241120153226 + version: 0.6.0-alpha-20241120153226(expo@51.0.39(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.74.6(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) '@expo-google-fonts/open-sans': specifier: ^0.2.3 version: 0.2.3 @@ -231,8 +234,8 @@ importers: apps/paradym: dependencies: '@animo-id/expo-secure-environment': - specifier: 0.1.0-alpha.9 - version: 0.1.0-alpha.9(expo@51.0.39(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.74.6(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.2.79)(react@18.3.1))(react@18.3.1) + specifier: 0.1.0-alpha.10 + version: 0.1.0-alpha.10(expo@51.0.39(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.74.6(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.2.79)(react@18.3.1))(react@18.3.1) '@hyperledger/anoncreds-react-native': specifier: ^0.2.4 version: 0.2.4(react-native@0.74.6(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.2.79)(react@18.3.1))(react@18.3.1) @@ -529,33 +532,39 @@ importers: packages/agent: dependencies: + '@animo-id/oauth2': + specifier: 0.1.4-alpha-20241120145259 + version: 0.1.4-alpha-20241120145259(typescript@5.3.3) + '@animo-id/oid4vci': + specifier: 0.1.4-alpha-20241120145259 + version: 0.1.4-alpha-20241120145259(typescript@5.3.3) '@credo-ts/anoncreds': - specifier: 0.6.0-alpha-20241119125554 - version: 0.6.0-alpha-20241119125554(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + specifier: 0.6.0-alpha-20241120153226 + version: 0.6.0-alpha-20241120153226(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) '@credo-ts/askar': - specifier: 0.6.0-alpha-20241119125554 - version: 0.6.0-alpha-20241119125554(patch_hash=zbu2rcss5evxukkhh5w5venkba)(@animo-id/expo-secure-environment@0.1.0-alpha.9(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(react@18.3.1))(@hyperledger/aries-askar-shared@0.2.3)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + specifier: 0.6.0-alpha-20241120153226 + version: 0.6.0-alpha-20241120153226(patch_hash=zbu2rcss5evxukkhh5w5venkba)(@animo-id/expo-secure-environment@0.1.0-alpha.10(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(react@18.3.1))(@hyperledger/aries-askar-shared@0.2.3)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) '@credo-ts/cheqd': - specifier: 0.6.0-alpha-20241119125554 - version: 0.6.0-alpha-20241119125554(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + specifier: 0.6.0-alpha-20241120153226 + version: 0.6.0-alpha-20241120153226(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) '@credo-ts/core': - specifier: 0.6.0-alpha-20241119125554 - version: 0.6.0-alpha-20241119125554(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + specifier: 0.6.0-alpha-20241120153226 + version: 0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) '@credo-ts/indy-vdr': - specifier: 0.6.0-alpha-20241119125554 - version: 0.6.0-alpha-20241119125554(@hyperledger/anoncreds-shared@0.2.4)(@hyperledger/indy-vdr-shared@0.2.2)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + specifier: 0.6.0-alpha-20241120153226 + version: 0.6.0-alpha-20241120153226(@hyperledger/anoncreds-shared@0.2.4)(@hyperledger/indy-vdr-shared@0.2.2)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) '@credo-ts/openid4vc': - specifier: 0.6.0-alpha-20241119125554 - version: 0.6.0-alpha-20241119125554(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(typescript@5.3.3)(web-streams-polyfill@3.3.3) + specifier: 0.6.0-alpha-20241120153226 + version: 0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(typescript@5.3.3)(web-streams-polyfill@3.3.3) '@credo-ts/question-answer': - specifier: 0.6.0-alpha-20241119125554 - version: 0.6.0-alpha-20241119125554(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + specifier: 0.6.0-alpha-20241120153226 + version: 0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) '@credo-ts/react-hooks': specifier: 0.6.1 - version: 0.6.1(@credo-ts/core@0.6.0-alpha-20241119125554(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(@credo-ts/question-answer@0.6.0-alpha-20241119125554(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(react@18.3.1) + version: 0.6.1(@credo-ts/core@0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(@credo-ts/question-answer@0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(react@18.3.1) '@credo-ts/react-native': - specifier: 0.6.0-alpha-20241119125554 - version: 0.6.0-alpha-20241119125554(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native-fs@2.20.0(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1)))(react-native-get-random-values@1.11.0(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + specifier: 0.6.0-alpha-20241120153226 + version: 0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native-fs@2.20.0(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1)))(react-native-get-random-values@1.11.0(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) '@hyperledger/anoncreds-react-native': specifier: ^0.2.4 version: 0.2.4(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(react@18.3.1) @@ -573,7 +582,7 @@ importers: version: 5.59.16(react@18.3.1) credo-ts-didweb-anoncreds: specifier: 0.0.1-alpha.13 - version: 0.0.1-alpha.13(@credo-ts/anoncreds@0.6.0-alpha-20241119125554(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(@credo-ts/core@0.6.0-alpha-20241119125554(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(@hyperledger/anoncreds-shared@0.2.4) + version: 0.0.1-alpha.13(@credo-ts/anoncreds@0.6.0-alpha-20241120153226(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(@credo-ts/core@0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(@hyperledger/anoncreds-shared@0.2.4) expo: specifier: '*' version: 51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)) @@ -775,8 +784,8 @@ packages: expo: '>= 51' react: 18.3.1 - '@animo-id/expo-secure-environment@0.1.0-alpha.9': - resolution: {integrity: sha512-PUNwemorocBwHfvDoB4tzv6nDlxobDetsbyqeSnQCDdrapKHIubdtEaWNlrzRhiKqSCg9dWwhQdCmTE9pY0ilw==} + '@animo-id/expo-secure-environment@0.1.0-alpha.10': + resolution: {integrity: sha512-ZnEnayIbjDarLizdT1FDhx1N00kObEs8uT+X60zattWXufrhaetlHZwMI2mK8eqK1bdiyVE/g0Gd+BcfinU4Jw==} peerDependencies: expo: '*' react: 18.3.1 @@ -785,14 +794,14 @@ packages: '@animo-id/mdoc@0.2.38': resolution: {integrity: sha512-98KQ0jvwTYsFOffTGvvHXBDo23b5xmhYjPiMIX6e807I6iS4fZZ9ypfBySdA5IiGUvXELKqEv27AUaayQa/9bg==} - '@animo-id/oauth2-utils@0.1.3': - resolution: {integrity: sha512-PzAx57LbDmmhI1qnF6Y/soYHLyHXxheSzlle+8rHexZmnWHXwxJ5nyOn/EQhGOqk5UEXLHYsD+27oyrMH3iR4A==} + '@animo-id/oauth2-utils@0.1.4-alpha-20241120145259': + resolution: {integrity: sha512-gbc2bOpnM101KTmVtZJwbo9IAn3bn5Ah1UMUdQbdxD8M2DPAMuvM1j4JxVsIn46DGoPUWW0uGspGXAjxFv2x5g==} - '@animo-id/oauth2@0.1.3': - resolution: {integrity: sha512-e4i+9nn3hyaxJ5LFTRb8Ri43VCAN5xpOvD0o2DcL6U90Y5ih3L+GVU6pzYylwk0iX/VD/HCMayDvF9qusDBh4w==} + '@animo-id/oauth2@0.1.4-alpha-20241120145259': + resolution: {integrity: sha512-w3lCkPh0I15Nbq0RZvQTBreDLcsIicCXmeNRUQx3xrrd25+GSaBoIMQel299I07ozDjDn9VptMCJGXNSSNBMyw==} - '@animo-id/oid4vci@0.1.3': - resolution: {integrity: sha512-01ka6sIQUVXNcrw6/fcWCbFpso60bb9Ejv4WUunA/7pGiowdzmmf4aaMRd2em/v5riRpo2tsIqv23SAbyTl41A==} + '@animo-id/oid4vci@0.1.4-alpha-20241120145259': + resolution: {integrity: sha512-OkqVn2XSlyMYZV+WyPcjh7Iz9dJx6ZTYlMiIc4/qM3j5cQeVf70wKwVZLzBLMrdiQWBw2l+AC7cPtTjl25F/MA==} '@astronautlabs/jsonpath@1.1.2': resolution: {integrity: sha512-FqL/muoreH7iltYC1EB5Tvox5E8NSOOPGkgns4G+qxRKl6k5dxEVljUjB5NcKESzkqwnUqWjSZkL61XGYOuV+A==} @@ -1682,46 +1691,46 @@ packages: '@cosmjs/utils@0.30.1': resolution: {integrity: sha512-KvvX58MGMWh7xA+N+deCfunkA/ZNDvFLw4YbOmX3f/XBIkqrVY7qlotfy2aNb1kgp6h4B6Yc8YawJPDTfvWX7g==} - '@credo-ts/anoncreds@0.6.0-alpha-20241119125554': - resolution: {integrity: sha512-A2IuQk01CnHjduO44W3LM8OimZCHCGs81pTkKEP395m/PnGo9n/nmSXB2gsQkB1h41MBMypXHZjE4E9t9wueeg==} + '@credo-ts/anoncreds@0.6.0-alpha-20241120153226': + resolution: {integrity: sha512-9E1iQGqzdGGoELuoysSymJ9ZBkF4aZkok6HDqs6h3kJB1qHgBPw005SVHXN0+5ABVxJJo9/C7ENAEv5VAZ+2KQ==} peerDependencies: '@hyperledger/anoncreds-shared': ^0.2.2 - '@credo-ts/askar@0.6.0-alpha-20241119125554': - resolution: {integrity: sha512-Ue12HCt2QZacKFF7ZMNRfnEFbDYHbLMyDjT9CVPjd/80cgxViOsdtvVa///r/yxPiPpBsuVxs3oBP7RwYkUKTA==} + '@credo-ts/askar@0.6.0-alpha-20241120153226': + resolution: {integrity: sha512-oTIjsSON8uWHnFQueOMTVuv8uXbOo+xJ/QxIs8znmbMRiCTsDPDxHTlMOAmpXPv62yknSKPjRPkjzgeUg8X6JQ==} peerDependencies: - '@animo-id/expo-secure-environment': 0.1.0-alpha.9 + '@animo-id/expo-secure-environment': 0.1.0-alpha.10 '@hyperledger/aries-askar-shared': ^0.2.3 peerDependenciesMeta: '@animo-id/expo-secure-environment': optional: true - '@credo-ts/cheqd@0.6.0-alpha-20241119125554': - resolution: {integrity: sha512-/GCp+IwkZ/W0m8WZ+HfMY+2Es8JgemZP+LQPR7JyTLObLy10heaQK86nqf+yG00eZN5tpGlfIutmIYf2LW12JQ==} + '@credo-ts/cheqd@0.6.0-alpha-20241120153226': + resolution: {integrity: sha512-VVuxM0kutWyQbaimOHVMuiJ4nqEQkQOYyPg7RbWX4LOwSxWnxIOzTzhhm5j6xUJ6yGu7T8lcvI8Hx3zLVDzFiw==} - '@credo-ts/core@0.6.0-alpha-20241119125554': - resolution: {integrity: sha512-bhy+CS/j9fXbtdYK4tAhvhey9gajh0xgqaPOrVG1lkLLDAkOgWRu2+hdTJhsWroMYKicSIeDF2wnbrvlyTdmMQ==} + '@credo-ts/core@0.6.0-alpha-20241120153226': + resolution: {integrity: sha512-j0my549nfyo+AizUkgvMWLcAbBtd41WhXRLfSHlfr7cZlNc4CmPSV9BUKjmeBoPGW9kWl778GlhWt4sCdxvkhA==} - '@credo-ts/indy-vdr@0.6.0-alpha-20241119125554': - resolution: {integrity: sha512-LG5pkKrpIIF9Iv4GNTuDWBPy/0oo6L6ePACBomYHvUvODqsHVElUVWmFi7P+rrBcdHQjxmfPQoT2VVtjIFtclA==} + '@credo-ts/indy-vdr@0.6.0-alpha-20241120153226': + resolution: {integrity: sha512-rYkXp2754hbKz4UUC5UNy3N6tPfB9rHrZildGo0qXuKCGhJZpJ7Ut96LT3VcoPRPvXw4nmSMniiCusYaeEd2fQ==} peerDependencies: '@hyperledger/indy-vdr-shared': ^0.2.2 - '@credo-ts/openid4vc@0.6.0-alpha-20241119125554': - resolution: {integrity: sha512-OgRThR/E+ixiHJ8xJkaG8+Kr1adH8cZoMIFBakrqmQkXxImRjH9AsUdswTq05agxy3Kx0Lu0eGZjg2HcR/EykQ==} + '@credo-ts/openid4vc@0.6.0-alpha-20241120153226': + resolution: {integrity: sha512-GWE1bZqc1TDXCidGnpy+lyo0UVhIgD3xaoytYj4Z8iYF7B+m6BFU0zw1yFtiEFxRn25+vTLeYw+KVVzVLlyOww==} - '@credo-ts/question-answer@0.6.0-alpha-20241119125554': - resolution: {integrity: sha512-YNpvVDYtgLdRKgplwDGkHdmvwpKbKFT/op0ixU8NdGwbNHYoprUVTlAVo0NSS4ZhzPvkwIj/5fjNaNqZhpGUPQ==} + '@credo-ts/question-answer@0.6.0-alpha-20241120153226': + resolution: {integrity: sha512-ZlGrPYs2sP51IIgMpG6YZ27KHEhDIdBScvMl2HtxjkveRX3zoZmU9nq2W74xL4alHHTPTGT83YnIXVpTdkDJ6w==} '@credo-ts/react-hooks@0.6.1': resolution: {integrity: sha512-lZt1N5oKzYfh9DMUBauX9Q2irJPxbztfK9zkYU93mhSV7jF5up0X/TdWxj85l9Guu7iL84JDQJY11CpIHquPOQ==} peerDependencies: - '@credo-ts/core': 0.6.0-alpha-20241119125554 - '@credo-ts/question-answer': 0.6.0-alpha-20241119125554 + '@credo-ts/core': 0.6.0-alpha-20241120153226 + '@credo-ts/question-answer': 0.6.0-alpha-20241120153226 react: 18.3.1 - '@credo-ts/react-native@0.6.0-alpha-20241119125554': - resolution: {integrity: sha512-CMOSnnfk0m8dMy+ol78ZYXMvGQy+I/AVK5illF1qOv2KZwKPVG4KEJIWGInsxmFM8L0qe2dVjWgo8IRjiDidgg==} + '@credo-ts/react-native@0.6.0-alpha-20241120153226': + resolution: {integrity: sha512-VvSb/SX02w+fQ6d4Uqb8zzLIX4ocDd6YRbOvHEAIoL3tZoaYAkdsNk8E4WmKK2mG83uCY0HBfqqwroPIa3FrYw==} peerDependencies: react-native: ~0.74.5 react-native-fs: ^2.20.0 @@ -5616,8 +5625,8 @@ packages: credo-ts-didweb-anoncreds@0.0.1-alpha.13: resolution: {integrity: sha512-0x8lipY82+ALdTu+gVRe6RKvoJRvn2/Bhj/klk8PhmvWAAQXVMvzVOmUrw0BLTQ+19+koY1yufltglWXxRMxqA==} peerDependencies: - '@credo-ts/anoncreds': 0.6.0-alpha-20241119125554 - '@credo-ts/core': 0.6.0-alpha-20241119125554 + '@credo-ts/anoncreds': 0.6.0-alpha-20241120153226 + '@credo-ts/core': 0.6.0-alpha-20241120153226 '@hyperledger/anoncreds-shared': ^0.2.1 cross-env@7.0.3: @@ -10457,7 +10466,7 @@ snapshots: - supports-color - utf-8-validate - '@animo-id/expo-secure-environment@0.1.0-alpha.9(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(react@18.3.1)': + '@animo-id/expo-secure-environment@0.1.0-alpha.10(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(react@18.3.1)': dependencies: '@peculiar/asn1-ecc': 2.3.14 '@peculiar/asn1-schema': 2.3.13 @@ -10467,7 +10476,7 @@ snapshots: react-native: 0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1) optional: true - '@animo-id/expo-secure-environment@0.1.0-alpha.9(expo@51.0.39(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.74.6(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.2.79)(react@18.3.1))(react@18.3.1)': + '@animo-id/expo-secure-environment@0.1.0-alpha.10(expo@51.0.39(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.74.6(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.2.79)(react@18.3.1))(react@18.3.1)': dependencies: '@peculiar/asn1-ecc': 2.3.14 '@peculiar/asn1-schema': 2.3.13 @@ -10480,24 +10489,24 @@ snapshots: dependencies: compare-versions: 6.1.1 - '@animo-id/oauth2-utils@0.1.3(typescript@5.3.3)': + '@animo-id/oauth2-utils@0.1.4-alpha-20241120145259(typescript@5.3.3)': dependencies: buffer: 6.0.3 valibot: 0.42.1(typescript@5.3.3) transitivePeerDependencies: - typescript - '@animo-id/oauth2@0.1.3(typescript@5.3.3)': + '@animo-id/oauth2@0.1.4-alpha-20241120145259(typescript@5.3.3)': dependencies: - '@animo-id/oauth2-utils': 0.1.3(typescript@5.3.3) + '@animo-id/oauth2-utils': 0.1.4-alpha-20241120145259(typescript@5.3.3) valibot: 0.42.1(typescript@5.3.3) transitivePeerDependencies: - typescript - '@animo-id/oid4vci@0.1.3(typescript@5.3.3)': + '@animo-id/oid4vci@0.1.4-alpha-20241120145259(typescript@5.3.3)': dependencies: - '@animo-id/oauth2': 0.1.3(typescript@5.3.3) - '@animo-id/oauth2-utils': 0.1.3(typescript@5.3.3) + '@animo-id/oauth2': 0.1.4-alpha-20241120145259(typescript@5.3.3) + '@animo-id/oauth2-utils': 0.1.4-alpha-20241120145259(typescript@5.3.3) valibot: 0.42.1(typescript@5.3.3) transitivePeerDependencies: - typescript @@ -11654,10 +11663,10 @@ snapshots: '@cosmjs/utils@0.30.1': {} - '@credo-ts/anoncreds@0.6.0-alpha-20241119125554(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': + '@credo-ts/anoncreds@0.6.0-alpha-20241120153226(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: '@astronautlabs/jsonpath': 1.1.2 - '@credo-ts/core': 0.6.0-alpha-20241119125554(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + '@credo-ts/core': 0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) '@hyperledger/anoncreds-shared': 0.2.4 '@sphereon/pex-models': 2.3.1 big-integer: 1.6.52 @@ -11673,9 +11682,9 @@ snapshots: - supports-color - web-streams-polyfill - '@credo-ts/askar@0.6.0-alpha-20241119125554(patch_hash=zbu2rcss5evxukkhh5w5venkba)(@animo-id/expo-secure-environment@0.1.0-alpha.9(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(react@18.3.1))(@hyperledger/aries-askar-shared@0.2.3)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': + '@credo-ts/askar@0.6.0-alpha-20241120153226(patch_hash=zbu2rcss5evxukkhh5w5venkba)(@animo-id/expo-secure-environment@0.1.0-alpha.10(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(react@18.3.1))(@hyperledger/aries-askar-shared@0.2.3)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: - '@credo-ts/core': 0.6.0-alpha-20241119125554(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + '@credo-ts/core': 0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) '@hyperledger/aries-askar-shared': 0.2.3 bn.js: 5.2.1 class-transformer: 0.5.1 @@ -11683,7 +11692,7 @@ snapshots: rxjs: 7.8.1 tsyringe: 4.8.0 optionalDependencies: - '@animo-id/expo-secure-environment': 0.1.0-alpha.9(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(react@18.3.1) + '@animo-id/expo-secure-environment': 0.1.0-alpha.10(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - domexception - encoding @@ -11692,15 +11701,15 @@ snapshots: - supports-color - web-streams-polyfill - '@credo-ts/cheqd@0.6.0-alpha-20241119125554(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': + '@credo-ts/cheqd@0.6.0-alpha-20241120153226(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: '@cheqd/sdk': 2.5.1 '@cheqd/ts-proto': 2.3.2 '@cosmjs/crypto': 0.30.1 '@cosmjs/proto-signing': 0.30.1 '@cosmjs/stargate': 0.30.1 - '@credo-ts/anoncreds': 0.6.0-alpha-20241119125554(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) - '@credo-ts/core': 0.6.0-alpha-20241119125554(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + '@credo-ts/anoncreds': 0.6.0-alpha-20241120153226(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + '@credo-ts/core': 0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) '@stablelib/ed25519': 1.0.3 class-transformer: 0.5.1 class-validator: 0.14.1 @@ -11718,7 +11727,7 @@ snapshots: - utf-8-validate - web-streams-polyfill - '@credo-ts/core@0.6.0-alpha-20241119125554(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': + '@credo-ts/core@0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: '@animo-id/mdoc': 0.2.38(patch_hash=zifb323ygrtdb6olnw5okh7czy) '@digitalcredentials/jsonld': 6.0.0(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) @@ -11770,7 +11779,7 @@ snapshots: - supports-color - web-streams-polyfill - '@credo-ts/core@0.6.0-alpha-20241119125554(expo@51.0.39(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.74.6(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': + '@credo-ts/core@0.6.0-alpha-20241120153226(expo@51.0.39(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.74.6(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: '@animo-id/mdoc': 0.2.38(patch_hash=zifb323ygrtdb6olnw5okh7czy) '@digitalcredentials/jsonld': 6.0.0(expo@51.0.39(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.74.6(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) @@ -11822,10 +11831,10 @@ snapshots: - supports-color - web-streams-polyfill - '@credo-ts/indy-vdr@0.6.0-alpha-20241119125554(@hyperledger/anoncreds-shared@0.2.4)(@hyperledger/indy-vdr-shared@0.2.2)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': + '@credo-ts/indy-vdr@0.6.0-alpha-20241120153226(@hyperledger/anoncreds-shared@0.2.4)(@hyperledger/indy-vdr-shared@0.2.2)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: - '@credo-ts/anoncreds': 0.6.0-alpha-20241119125554(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) - '@credo-ts/core': 0.6.0-alpha-20241119125554(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + '@credo-ts/anoncreds': 0.6.0-alpha-20241120153226(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + '@credo-ts/core': 0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) '@hyperledger/indy-vdr-shared': 0.2.2 transitivePeerDependencies: - '@hyperledger/anoncreds-shared' @@ -11836,11 +11845,11 @@ snapshots: - supports-color - web-streams-polyfill - '@credo-ts/openid4vc@0.6.0-alpha-20241119125554(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(typescript@5.3.3)(web-streams-polyfill@3.3.3)': + '@credo-ts/openid4vc@0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(typescript@5.3.3)(web-streams-polyfill@3.3.3)': dependencies: - '@animo-id/oauth2': 0.1.3(typescript@5.3.3) - '@animo-id/oid4vci': 0.1.3(typescript@5.3.3) - '@credo-ts/core': 0.6.0-alpha-20241119125554(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + '@animo-id/oauth2': 0.1.4-alpha-20241120145259(typescript@5.3.3) + '@animo-id/oid4vci': 0.1.4-alpha-20241120145259(typescript@5.3.3) + '@credo-ts/core': 0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) '@sphereon/did-auth-siop': 0.16.1-fix.173(typescript@5.3.3) '@sphereon/oid4vc-common': 0.16.1-fix.173 '@sphereon/ssi-types': 0.30.2-next.135 @@ -11873,9 +11882,9 @@ snapshots: - typescript - web-streams-polyfill - '@credo-ts/question-answer@0.6.0-alpha-20241119125554(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': + '@credo-ts/question-answer@0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: - '@credo-ts/core': 0.6.0-alpha-20241119125554(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + '@credo-ts/core': 0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) class-transformer: 0.5.1 class-validator: 0.14.1 rxjs: 7.8.1 @@ -11887,17 +11896,17 @@ snapshots: - supports-color - web-streams-polyfill - '@credo-ts/react-hooks@0.6.1(@credo-ts/core@0.6.0-alpha-20241119125554(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(@credo-ts/question-answer@0.6.0-alpha-20241119125554(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(react@18.3.1)': + '@credo-ts/react-hooks@0.6.1(@credo-ts/core@0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(@credo-ts/question-answer@0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(react@18.3.1)': dependencies: - '@credo-ts/core': 0.6.0-alpha-20241119125554(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) - '@credo-ts/question-answer': 0.6.0-alpha-20241119125554(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + '@credo-ts/core': 0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + '@credo-ts/question-answer': 0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) react: 18.3.1 rxjs: 7.8.1 - '@credo-ts/react-native@0.6.0-alpha-20241119125554(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native-fs@2.20.0(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1)))(react-native-get-random-values@1.11.0(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': + '@credo-ts/react-native@0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native-fs@2.20.0(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1)))(react-native-get-random-values@1.11.0(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3)': dependencies: '@azure/core-asynciterator-polyfill': 1.0.2 - '@credo-ts/core': 0.6.0-alpha-20241119125554(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + '@credo-ts/core': 0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) events: 3.3.0 react-native: 0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1) react-native-fs: 2.20.0(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1)) @@ -18367,10 +18376,10 @@ snapshots: credentials-context@2.0.0: {} - credo-ts-didweb-anoncreds@0.0.1-alpha.13(@credo-ts/anoncreds@0.6.0-alpha-20241119125554(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(@credo-ts/core@0.6.0-alpha-20241119125554(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(@hyperledger/anoncreds-shared@0.2.4): + credo-ts-didweb-anoncreds@0.0.1-alpha.13(@credo-ts/anoncreds@0.6.0-alpha-20241120153226(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(@credo-ts/core@0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3))(@hyperledger/anoncreds-shared@0.2.4): dependencies: - '@credo-ts/anoncreds': 0.6.0-alpha-20241119125554(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) - '@credo-ts/core': 0.6.0-alpha-20241119125554(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + '@credo-ts/anoncreds': 0.6.0-alpha-20241120153226(@hyperledger/anoncreds-shared@0.2.4)(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) + '@credo-ts/core': 0.6.0-alpha-20241120153226(expo@51.0.38(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0)))(react-native@0.76.1(@babel/core@7.26.0)(@babel/preset-env@7.26.0(@babel/core@7.26.0))(@react-native-community/cli-server-api@15.1.0)(@types/react@18.2.79)(react@18.3.1))(web-streams-polyfill@3.3.3) '@hyperledger/anoncreds-shared': 0.2.4 canonicalize: 1.0.8 query-string: 7.1.3