diff --git a/apps/easypid/README.md b/apps/easypid/README.md index 0c7155cb..00740d7e 100644 --- a/apps/easypid/README.md +++ b/apps/easypid/README.md @@ -176,12 +176,6 @@ The [app pacakge](packages/app) and [ui pacakge](packages/ui) contain the underl The C flow supported in the Pardaym Wallet is mostly implemetned in Credo, the underlying identity framework we use. -For the B' flow, more custom work was needed and this is implemented in the following files: -- [src/crypto/bPrime.ts](src/crypto/bPrime.ts) -- [src/crypto/aes.ts](src/crypto/aes.ts) - -The crypto for the B' flow is implemented using Aries Askar. - ## Tech stack / base components The following section lists the software components used to create the EasyPID wallet. The heavy lifting is done by [Credo](https://github.com/openwallet-foundation/credo-ts). The most notable dependencies consumed by Credo are the [OpenId4Vc](https://github.com/Sphereon-Opensource/OID4VC) [Mdoc](https://github.com/Sphereon-Opensource/mdoc-cbor-crypto-multiplatform) and [SdJwt](https://github.com/openwallet-foundation-labs/sd-jwt-js) libraries. Other notable dependencies include the Animo [Expo Secure Environment](https://github.com/animo/expo-secure-environment), which provides support for cryptographic operations using the device's secure environment (HSM, SE, etc.) hidden behind biometric authentication, and Animo [Ausweis Sdk](https://github.com/animo/expo-ausweis-sdk) for automatic setup and configuration of the Ausweis SDK for iOS and Android in Expo apps. diff --git a/apps/easypid/src/app/(app)/_layout.tsx b/apps/easypid/src/app/(app)/_layout.tsx index b3a38550..c0736b8c 100644 --- a/apps/easypid/src/app/(app)/_layout.tsx +++ b/apps/easypid/src/app/(app)/_layout.tsx @@ -3,7 +3,6 @@ import { Redirect, Stack, useRouter } from 'expo-router' import { useSecureUnlock } from '@easypid/agent' import { activityStorage } from '@easypid/features/activity/activityRecord' import { useHasFinishedOnboarding } from '@easypid/features/onboarding' -import { seedCredentialStorage } from '@easypid/storage' import { resetWallet, useResetWalletDevMenu } from '@easypid/utils/resetWallet' import { AgentProvider, WalletJsonStoreProvider } from '@package/agent' import { type CredentialDataHandlerOptions, DeeplinkHandler, useHaptics } from '@package/app' @@ -11,7 +10,7 @@ import { HeroIcons, IconContainer } from '@package/ui' import { useEffect, useState } from 'react' import { useTheme } from 'tamagui' -const jsonRecordIds = [seedCredentialStorage.recordId, activityStorage.recordId] +const jsonRecordIds = [activityStorage.recordId] // When deeplink routing we want to push export const credentialDataHandlerOptions = { diff --git a/apps/easypid/src/constants.ts b/apps/easypid/src/constants.ts index 57d283f3..fff5e9f1 100644 --- a/apps/easypid/src/constants.ts +++ b/apps/easypid/src/constants.ts @@ -1,4 +1,3 @@ -export const EASYPID_WALLET_SEED_CREDENTIAL_RECORD_ID = 'EASYPID_WALLET_SEED_CREDENTIAL_RECORD_ID' export const EASYPID_WALLET_PID_PIN_KEY_ID = 'EASYPID_WALLET_PID_PIN_KEY_ID_NO_BIOMETRICS' export const EASYPID_WALLET_INSTANCE_LONG_TERM_AES_KEY_ID = 'EASYPID_WALLET_INSTANCE_LONG_TERM_AES_KEY_ID' diff --git a/apps/easypid/src/crypto/bPrime.ts b/apps/easypid/src/crypto/bPrime.ts deleted file mode 100644 index 70d835fd..00000000 --- a/apps/easypid/src/crypto/bPrime.ts +++ /dev/null @@ -1,551 +0,0 @@ -import { assertAskarWallet } from '@credo-ts/askar/build/utils/assertAskarWallet' -import { - type AgentContext, - Buffer, - type JwkJson, - type JwsProtectedHeaderOptions, - JwsService, - JwtPayload, - Key, - KeyType, - P256Jwk, - SdJwtVcRecord, - TypedArrayEncoder, - getJwkFromKey, - utils, -} from '@credo-ts/core' -import { type SeedCredentialPidData, seedCredentialStorage } from '@easypid/storage' -import { deviceKeyPair } from '@easypid/storage/pidPin' -import { ReceivePidUseCaseFlow } from '@easypid/use-cases/ReceivePidUseCaseFlow' -import { Key as AskarKey, KeyAlgs } from '@hyperledger/aries-askar-react-native' -import { - type EasyPIDAppAgent, - type OpenId4VcCredentialMetadata, - extractOpenId4VcCredentialMetadata, - setOpenId4VcCredentialMetadata, - storeCredential, -} from '@package/agent' -import { - extractCertificateFromAuthorizationRequest, - getCreateJwtCallbackForBPrime, - withTrustedCertificate, -} from '@package/agent/src/invitation/handler' -import { kdf } from '@package/secure-store/kdf' -import { B_PRIME_SD_JWT_VC_OFFER } from '../use-cases/bdrPidIssuerOffers' -import { easyPidAes256Gcm } from './aes' - -/** - * - * Derive a key pair based on a numeric pin according to the steps in B' - * - * returns pin_derived_eph_pub + pin_derived_eph_priv - * - * @todo Might be good later to add methods like `signWithPidPin` - * - */ -export const deriveKeypairFromPin = async (agentContext: AgentContext, pin: Array) => { - const pinSecret = await easyPidAes256Gcm.aes256GcmEncrypt({ - agentContext, - data: new Uint8Array(pin), - }) - - const pinSeed = await kdf.derive( - TypedArrayEncoder.toUtf8String(new Uint8Array(pin)), - TypedArrayEncoder.toUtf8String(pinSecret) - ) - - const askarKey = AskarKey.fromSecretBytes({ - algorithm: KeyAlgs.EcSecp256r1, - secretKey: new Uint8Array(TypedArrayEncoder.fromHex(pinSeed)), - }) - - const wallet = agentContext.wallet - assertAskarWallet(wallet) - - await wallet.withSession(async (session) => { - const key = await session.fetchKey({ - name: TypedArrayEncoder.toBase58(askarKey.publicBytes), - }) - if (key) return - await session.insertKey({ - name: TypedArrayEncoder.toBase58(askarKey.publicBytes), - key: askarKey, - }) - }) - - return new Key(askarKey.publicBytes, KeyType.P256) -} - -export const createPinDerivedEphKeyPop = async ( - agent: EasyPIDAppAgent, - { aud, cNonce, deviceKey, pinDerivedEph }: { pinDerivedEph: Key; deviceKey: Key; cNonce: string; aud: string } -) => { - const deviceKeyClaim = getJwkFromKey(deviceKey).toJson() - - const payload = new JwtPayload({ - aud, - additionalClaims: { - nonce: cNonce, - device_key: { jwk: deviceKeyClaim }, - }, - }) - - const protectedHeaderOptions: JwsProtectedHeaderOptions = { - alg: 'ES256', - typ: 'pin_derived_eph_key_pop', - jwk: getJwkFromKey(pinDerivedEph), - } - - const jwsService = agent.dependencyManager.resolve(JwsService) - - const compact = await jwsService.createJwsCompact(agent.context, { - key: pinDerivedEph, - payload, - protectedHeaderOptions, - }) - - return compact -} - -/** - * - * The Wallet signs the PIN nonce concatenated with the device-bound public key dev_pub with the key pin_derived_eph_priv - * - */ -export const signPinNonceAndDeviceKeyWithPinDerivedEphPriv = async ( - agent: EasyPIDAppAgent, - { - pinNonce, - pinDerivedEphKey, - }: { - pinNonce: string - pinDerivedEphKey: Key - } -): Promise => { - const header = { - alg: 'ES256', - jwk: getJwkFromKey(pinDerivedEphKey).toJson(), - } - - const payload = Buffer.from([ - ...TypedArrayEncoder.fromString(pinNonce), - ...TypedArrayEncoder.fromString(TypedArrayEncoder.toBase64URL(deviceKeyPair.asJwkInBytes())), - ]) - - const toBeSigned = `${TypedArrayEncoder.toBase64URL( - TypedArrayEncoder.fromString(JSON.stringify(header)) - )}.${TypedArrayEncoder.toBase64URL(payload)}` - - const signature = await agent.context.wallet.sign({ - data: TypedArrayEncoder.fromString(toBeSigned), - key: pinDerivedEphKey, - }) - - const compact = `${toBeSigned}.${TypedArrayEncoder.toBase64URL(signature)}` - - return compact -} - -/** - * - * The Wallet signs the PIN nonce concatenated with the Wallet PIN derived public key pin_derived_eph_pub with the key dev_priv - * - */ -export const signPinNonceAndPinDerivedEphPubWithDeviceKey = async ({ - pinNonce, - pinDerivedEphKey, -}: { - pinNonce: string - pinDerivedEphKey: Key -}): Promise => { - const pinDerivedEphPubAsJwkBytes = TypedArrayEncoder.fromString( - JSON.stringify(getJwkFromKey(pinDerivedEphKey).toJson()) - ) - - const header = { alg: 'ES256' } - const payload = Buffer.from([ - ...TypedArrayEncoder.fromString(pinNonce), - ...TypedArrayEncoder.fromString(TypedArrayEncoder.toBase64URL(pinDerivedEphPubAsJwkBytes)), - ]) - - const toBeSigned = `${TypedArrayEncoder.toBase64URL( - TypedArrayEncoder.fromString(JSON.stringify(header)) - )}.${TypedArrayEncoder.toBase64URL(payload)}` - - const signature = await deviceKeyPair.sign(new Uint8Array(TypedArrayEncoder.fromString(toBeSigned))) - const compact = `${toBeSigned}.${TypedArrayEncoder.toBase64URL(signature)}` - - return compact -} - -export const requestToPidProvider = async ( - endpoint: string, - agent: EasyPIDAppAgent, - pinDerivedEphKey: Key, - pinNonce: string -) => { - const pin_signed_nonce = await signPinNonceAndDeviceKeyWithPinDerivedEphPriv(agent, { - pinNonce, - pinDerivedEphKey, - }) - const device_key_signed_nonce = await signPinNonceAndPinDerivedEphPubWithDeviceKey({ - pinDerivedEphKey, - pinNonce, - }) - - const body = { - pin_signed_nonce, - device_key_signed_nonce, - } - - const response = await fetch(endpoint, { - method: 'POST', - body: JSON.stringify(body), - headers: { 'Content-Type': 'application/json' }, - }) - - if (response.ok) { - const url = new URL(response.url) - const code = url.searchParams.get('code') - if (code) { - return code - } - throw Error('Could not extract the code from the returned URL') - } - const txt = await response.text() - throw Error(txt) -} - -const fetchPidIssuerNonce = async (issuer: string): Promise => { - const response = await fetch(`${issuer}/nonce`, { method: 'POST' }) - - if (response.ok) { - const parsed = await response.json() - return parsed.nonce - } - - throw Error(await response.text()) -} - -export const createMockedClientAttestationAndProofOfPossession = async ( - agent: EasyPIDAppAgent, - { - audience, - nonce: nonceFromArgs, - }: { - audience: string - nonce?: string - } -) => { - const nonce = nonceFromArgs ?? (await fetchPidIssuerNonce(audience)) - - const askarKey = AskarKey.fromSecretBytes({ - algorithm: KeyAlgs.EcSecp256r1, - secretKey: new Uint8Array( - TypedArrayEncoder.fromHex('ad38184e0d5d9af97b023b6421707dc079f7d66a185bfd4c589837e3cb69fbfa') - ), - }) - - const wallet = agent.context.wallet - assertAskarWallet(wallet) - - await wallet.withSession(async (session) => { - const key = await session.fetchKey({ - name: TypedArrayEncoder.toBase58(askarKey.publicBytes), - }) - if (key) return - await session.insertKey({ - name: TypedArrayEncoder.toBase58(askarKey.publicBytes), - key: askarKey, - }) - }) - - const key = new Key(askarKey.publicBytes, KeyType.P256) - - const exp = new Date() - exp.setMinutes(exp.getMinutes() + 4) - - const payload = { - iss: ReceivePidUseCaseFlow.CLIENT_ID, - sub: ReceivePidUseCaseFlow.CLIENT_ID, - exp: Math.floor(new Date().getTime() / 1000 + 100), - cnf: { - jwk: deviceKeyPair.asJwk(), - }, - } - - const header = { - alg: 'ES256', - } - - const payloadString = TypedArrayEncoder.toBase64URL(TypedArrayEncoder.fromString(JSON.stringify(payload))) - const headerString = TypedArrayEncoder.toBase64URL(TypedArrayEncoder.fromString(JSON.stringify(header))) - const toBeSigned = `${headerString}.${payloadString}` - const signature = await agent.context.wallet.sign({ - key, - data: TypedArrayEncoder.fromString(toBeSigned), - }) - const jwtCompact = `${toBeSigned}.${TypedArrayEncoder.toBase64URL(signature)}` - - const clientAttestationPopJwtPayload = { - iss: ReceivePidUseCaseFlow.CLIENT_ID, - exp: Math.floor(new Date().getTime() / 1000 + 100), - jti: utils.uuid(), - aud: audience, - nonce: nonceFromArgs ? undefined : nonce, - pid_issuer_nonce: nonce, - } - - const popPayloadString = TypedArrayEncoder.toBase64URL( - TypedArrayEncoder.fromString(JSON.stringify(clientAttestationPopJwtPayload)) - ) - const popHeaderString = TypedArrayEncoder.toBase64URL(TypedArrayEncoder.fromString(JSON.stringify({ alg: 'ES256' }))) - const popToBeSigned = `${popHeaderString}.${popPayloadString}` - const popSignature = await deviceKeyPair.sign(new Uint8Array(TypedArrayEncoder.fromString(popToBeSigned))) - const popJwtCompact = `${popToBeSigned}.${TypedArrayEncoder.toBase64URL(popSignature)}` - - return `${jwtCompact}~${popJwtCompact}` -} - -export class PidIssuerPinInvalidError extends Error {} -export class PidIssuerPinLockedError extends Error {} - -export const requestSdJwtVcFromSeedCredential = async ({ - agent, - authorizationRequestUri, - pidPin, -}: { - agent: EasyPIDAppAgent - authorizationRequestUri: string - pidPin: string -}) => { - try { - await agent.context.wallet.createKey({ - keyType: KeyType.P256, - privateKey: TypedArrayEncoder.fromHex('ad38184e0d5d9af97b023b6421707dc079f7d66a185bfd4c589837e3cb69fbfc'), - }) - } catch {} - - try { - const issuer = 'https://demo.pid-issuer.bundesdruckerei.de/b1' - const pinNonce = await fetchPidIssuerNonce(issuer) - const resolvedCredentialOffer = await agent.modules.openId4VcHolder.resolveCredentialOffer(B_PRIME_SD_JWT_VC_OFFER) - const pinDerivedEphKey = await deriveKeypairFromPin(agent.context, pidPin.split('').map(Number)) - - const clientAttestation = await createMockedClientAttestationAndProofOfPossession(agent, { - audience: issuer, - nonce: pinNonce, - }) - - const seedCredential = (await seedCredentialStorage.get(agent))?.seedCredential - - const pinSignedNonce = await signPinNonceAndDeviceKeyWithPinDerivedEphPriv(agent, { - pinNonce, - pinDerivedEphKey, - }) - const deviceKeySignedNonce = await signPinNonceAndPinDerivedEphPubWithDeviceKey({ - pinDerivedEphKey, - pinNonce, - }) - - const tokenResponse = await agent.modules.openId4VcHolder.requestToken({ - resolvedCredentialOffer, - dPopKeyJwk: P256Jwk.fromJson(deviceKeyPair.asJwk() as unknown as JwkJson), - getCreateJwtCallback: getCreateJwtCallbackForBPrime, - customBody: { - grant_type: 'seed_credential', - client_assertion_type: 'urn:ietf:params:oauth:client-assertion-type:jwt-client-attestation', - client_assertion: clientAttestation, - seed_credential: seedCredential, - pin_signed_nonce: pinSignedNonce, - device_key_signed_nonce: deviceKeySignedNonce, - client_id: ReceivePidUseCaseFlow.CLIENT_ID, - }, - }) - - // Temp solution to add and remove the trusted certicaite - const { certificate, data: requestData } = await extractCertificateFromAuthorizationRequest({ - uri: authorizationRequestUri, - }) - const resolvedAuthorizationRequest = await withTrustedCertificate(agent, certificate, () => - agent.modules.openId4VcHolder.resolveSiopAuthorizationRequest( - requestData ? `openid://?request=${encodeURIComponent(requestData)}` : authorizationRequestUri - ) - ) - - const payload = - await resolvedAuthorizationRequest.authorizationRequest.authorizationRequest.requestObject?.getPayload() - const rpEphPub = payload?.rp_eph_pub - if (!rpEphPub) { - throw new Error('rp_eph_pub not found in the payload of the authorization request') - } - - const key = await agent.context.wallet.createKey({ - keyType: KeyType.P256, - }) - - const offeredCredentialToRequest = resolvedCredentialOffer.offeredCredentials.find((i) => i.id === 'pid-sd-jwt') - - if (!offeredCredentialToRequest) { - throw new Error('Could not find an pid-sd-jwt') - } - - const credentialAndNotifications = await agent.modules.openId4VcHolder.requestCredentials({ - resolvedCredentialOffer, - credentialBindingResolver: async ({ keyType, supportsJwk }) => { - if (!supportsJwk) { - throw Error('Issuer does not support JWK') - } - - if (keyType !== KeyType.P256) { - throw new Error(`invalid key type used '${keyType}' and only ${KeyType.P256} is allowed.`) - } - - return { - method: 'jwk', - jwk: getJwkFromKey(key), - } - }, - ...tokenResponse, - additionalCredentialRequestPayloadClaims: { - verifier_ka: rpEphPub, - }, - clientId: ReceivePidUseCaseFlow.CLIENT_ID, - getCreateJwtCallback: getCreateJwtCallbackForBPrime, - // we do this because the credential is hmac'ed between the verifier and issuer, so the validation can be done with the `rp_eph_pub` and the issuer key from the cert, but it does not add a lot of value - skipSdJwtVcValidation: true, - }) - - const [firstCredential] = credentialAndNotifications - if (!firstCredential) throw new Error('Error retrieving credential.') - if (typeof firstCredential === 'string') throw new Error('string cred not allowed here') - - let record: SdJwtVcRecord - - if ('compact' in firstCredential.credential) { - record = new SdJwtVcRecord({ - compactSdJwtVc: firstCredential.credential.compact, - }) - } else { - throw new Error('Only sd-jwt-vc is allowed') - } - - const openId4VcMetadata = extractOpenId4VcCredentialMetadata(offeredCredentialToRequest, { - id: resolvedCredentialOffer.metadata.issuer, - display: resolvedCredentialOffer.metadata.credentialIssuerMetadata.display, - }) - - setOpenId4VcCredentialMetadata(record, openId4VcMetadata) - - return record - } catch (e) { - if (e instanceof Error && e.message.includes('PIN invalid')) { - throw new PidIssuerPinInvalidError() - } - if (e instanceof Error && e.message.includes('PIN locked')) { - throw new PidIssuerPinLockedError() - } - throw e - } -} - -const getAge = (birthDate: Date) => { - const today = new Date() - let age = today.getFullYear() - birthDate.getFullYear() - const m = today.getMonth() - birthDate.getMonth() - if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) { - age-- - } - return age -} - -const convertDate = (date: string) => { - const [year, month, day] = date.split('-').map(Number) - const parsedDate = new Date(0) - parsedDate.setFullYear(year) - parsedDate.setMonth(month) - parsedDate.setDate(day) - const age = getAge(parsedDate) - return { - age_birth_year: year, - age_in_years: age, - age_equal_or_over: { - '12': age >= 12, - '14': age >= 14, - '16': age >= 16, - '18': age >= 18, - '21': age >= 21, - '65': age >= 65, - }, - } -} - -export const convertAndStorePidDataIntoFakeSdJwtVc = async ( - agent: EasyPIDAppAgent, - pid_data: SeedCredentialPidData['pid_data'], - openId4VcMetadata: OpenId4VcCredentialMetadata -) => { - const date = convertDate(pid_data.birthdate as string) - - const payload = { - vct: 'urn:eu.europa.ec.eudi:pid:1', - issuing_country: 'DE', - issuing_authority: 'DE', - given_name: pid_data.given_name, - family_name: pid_data.family_name, - birth_family_name: pid_data.birth_family_name, - birthdate: pid_data.birthdate, - age_birth_year: date.age_birth_year, - age_in_years: date.age_in_years, - age_equal_or_over: date.age_equal_or_over, - place_of_birth: pid_data.place_of_birth, - address: pid_data.address, - nationalities: [pid_data.nationality], - } - - const key = await agent.context.wallet.createKey({ - keyType: KeyType.P256, - }) - const cert = await agent.x509.createSelfSignedCertificate({ - key, - extensions: [[{ type: 'url', value: 'https://demo.pid-issuer.bundesdruckerei.de/b1' }]], - }) - const sdJwtVc = await agent.sdJwtVc.sign({ - payload, - issuer: { - issuer: 'https://demo.pid-issuer.bundesdruckerei.de/b1', - x5c: [cert.toString('base64')], - method: 'x5c', - }, - holder: { method: 'jwk', jwk: getJwkFromKey(key) }, - disclosureFrame: { - _sd: [ - 'family_name', - 'given_name', - 'birthdate', - 'age_birth_year', - 'age_in_years', - 'birth_family_name', - // TODO: each item separately or disclosed as a whole? - 'nationalities', - ], - age_equal_or_over: { - _sd: ['12', '14', '16', '18', '21', '65'], - }, - place_of_birth: { - _sd: ['locality'], - }, - address: { - _sd: ['locality', 'postal_code', 'street_address', 'country'], - }, - }, - }) - - const record = await agent.sdJwtVc.store(sdJwtVc.compact) - const sdJwtVcRecord = new SdJwtVcRecord({ - compactSdJwtVc: sdJwtVc.compact, - }) - setOpenId4VcCredentialMetadata(record, openId4VcMetadata) - await storeCredential(agent, sdJwtVcRecord) - return sdJwtVcRecord -} diff --git a/apps/easypid/src/crypto/pin.ts b/apps/easypid/src/crypto/pin.ts new file mode 100644 index 00000000..d46b77c6 --- /dev/null +++ b/apps/easypid/src/crypto/pin.ts @@ -0,0 +1,161 @@ +import { assertAskarWallet } from '@credo-ts/askar/build/utils/assertAskarWallet' +import { + type AgentContext, + Buffer, + type JwsProtectedHeaderOptions, + JwsService, + JwtPayload, + Key, + KeyType, + TypedArrayEncoder, + getJwkFromKey, +} from '@credo-ts/core' +import { deviceKeyPair } from '@easypid/storage/pidPin' +import { Key as AskarKey, KeyAlgs } from '@hyperledger/aries-askar-react-native' +import type { EasyPIDAppAgent } from '@package/agent' +import { kdf } from '@package/secure-store/kdf' +import { easyPidAes256Gcm } from './aes' + +/** + * + * Derive a key pair based on a numeric pin according to the steps in B' + * + * returns pin_derived_eph_pub + pin_derived_eph_priv + * + * @todo Might be good later to add methods like `signWithPidPin` + * + */ +export const deriveKeypairFromPin = async (agentContext: AgentContext, pin: Array) => { + const pinSecret = await easyPidAes256Gcm.aes256GcmEncrypt({ + agentContext, + data: new Uint8Array(pin), + }) + + const pinSeed = await kdf.derive( + TypedArrayEncoder.toUtf8String(new Uint8Array(pin)), + TypedArrayEncoder.toUtf8String(pinSecret) + ) + + const askarKey = AskarKey.fromSecretBytes({ + algorithm: KeyAlgs.EcSecp256r1, + secretKey: new Uint8Array(TypedArrayEncoder.fromHex(pinSeed)), + }) + + const wallet = agentContext.wallet + assertAskarWallet(wallet) + + await wallet.withSession(async (session) => { + const key = await session.fetchKey({ + name: TypedArrayEncoder.toBase58(askarKey.publicBytes), + }) + if (key) return + await session.insertKey({ + name: TypedArrayEncoder.toBase58(askarKey.publicBytes), + key: askarKey, + }) + }) + + return new Key(askarKey.publicBytes, KeyType.P256) +} + +export const createPinDerivedEphKeyPop = async ( + agent: EasyPIDAppAgent, + { aud, cNonce, deviceKey, pinDerivedEph }: { pinDerivedEph: Key; deviceKey: Key; cNonce: string; aud: string } +) => { + const deviceKeyClaim = getJwkFromKey(deviceKey).toJson() + + const payload = new JwtPayload({ + aud, + additionalClaims: { + nonce: cNonce, + device_key: { jwk: deviceKeyClaim }, + }, + }) + + const protectedHeaderOptions: JwsProtectedHeaderOptions = { + alg: 'ES256', + typ: 'pin_derived_eph_key_pop', + jwk: getJwkFromKey(pinDerivedEph), + } + + const jwsService = agent.dependencyManager.resolve(JwsService) + + const compact = await jwsService.createJwsCompact(agent.context, { + key: pinDerivedEph, + payload, + protectedHeaderOptions, + }) + + return compact +} + +/** + * + * The Wallet signs the PIN nonce concatenated with the device-bound public key dev_pub with the key pin_derived_eph_priv + * + */ +export const signPinNonceAndDeviceKeyWithPinDerivedEphPriv = async ( + agent: EasyPIDAppAgent, + { + pinNonce, + pinDerivedEphKey, + }: { + pinNonce: string + pinDerivedEphKey: Key + } +): Promise => { + const header = { + alg: 'ES256', + jwk: getJwkFromKey(pinDerivedEphKey).toJson(), + } + + const payload = Buffer.from([ + ...TypedArrayEncoder.fromString(pinNonce), + ...TypedArrayEncoder.fromString(TypedArrayEncoder.toBase64URL(deviceKeyPair.asJwkInBytes())), + ]) + + const toBeSigned = `${TypedArrayEncoder.toBase64URL( + TypedArrayEncoder.fromString(JSON.stringify(header)) + )}.${TypedArrayEncoder.toBase64URL(payload)}` + + const signature = await agent.context.wallet.sign({ + data: TypedArrayEncoder.fromString(toBeSigned), + key: pinDerivedEphKey, + }) + + const compact = `${toBeSigned}.${TypedArrayEncoder.toBase64URL(signature)}` + + return compact +} + +/** + * + * The Wallet signs the PIN nonce concatenated with the Wallet PIN derived public key pin_derived_eph_pub with the key dev_priv + * + */ +export const signPinNonceAndPinDerivedEphPubWithDeviceKey = async ({ + pinNonce, + pinDerivedEphKey, +}: { + pinNonce: string + pinDerivedEphKey: Key +}): Promise => { + const pinDerivedEphPubAsJwkBytes = TypedArrayEncoder.fromString( + JSON.stringify(getJwkFromKey(pinDerivedEphKey).toJson()) + ) + + const header = { alg: 'ES256' } + const payload = Buffer.from([ + ...TypedArrayEncoder.fromString(pinNonce), + ...TypedArrayEncoder.fromString(TypedArrayEncoder.toBase64URL(pinDerivedEphPubAsJwkBytes)), + ]) + + const toBeSigned = `${TypedArrayEncoder.toBase64URL( + TypedArrayEncoder.fromString(JSON.stringify(header)) + )}.${TypedArrayEncoder.toBase64URL(payload)}` + + const signature = await deviceKeyPair.sign(new Uint8Array(TypedArrayEncoder.fromString(toBeSigned))) + const compact = `${toBeSigned}.${TypedArrayEncoder.toBase64URL(signature)}` + + return compact +} diff --git a/apps/easypid/src/features/onboarding/onboardingContext.tsx b/apps/easypid/src/features/onboarding/onboardingContext.tsx index d40133b5..928eaae3 100644 --- a/apps/easypid/src/features/onboarding/onboardingContext.tsx +++ b/apps/easypid/src/features/onboarding/onboardingContext.tsx @@ -1,8 +1,6 @@ import { sendCommand } from '@animo-id/expo-ausweis-sdk' import type { SdJwtVcHeader } from '@credo-ts/core' import { type AppAgent, initializeAppAgent, useSecureUnlock } from '@easypid/agent' -import { deviceKeyPair } from '@easypid/storage/pidPin' -import { PinPossiblyReusedError, ReceivePidUseCaseBPrimeFlow } from '@easypid/use-cases/ReceivePidUseCaseBPrimeFlow' import { ReceivePidUseCaseCFlow } from '@easypid/use-cases/ReceivePidUseCaseCFlow' import type { CardScanningErrorDetails, @@ -135,8 +133,7 @@ export function OnboardingContextProvider({ const [, setHasFinishedOnboarding] = useHasFinishedOnboarding() const pidDisplay = usePidDisplay() - const [selectedFlow, setSelectedFlow] = useState('c') - const [receivePidUseCase, setReceivePidUseCase] = useState() + const [receivePidUseCase, setReceivePidUseCase] = useState() const [receivePidUseCaseState, setReceivePidUseCaseState] = useState() const [allowSimulatorCard, setAllowSimulatorCard] = useState(false) @@ -190,12 +187,6 @@ export function OnboardingContextProvider({ goToNextStep() } - const selectFlow = (flow: 'c' | 'bprime') => { - setSelectedFlow(flow) - - goToNextStep() - } - // Bit sad but if we try to call this in the initializeAgent callback sometimes the state hasn't updated // in the secure unlock yet, which means that it will throw an error, so we use an effect. Probably need // to do a refactor on this and move more logic outside of the react world, as it's a bit weird with state @@ -232,25 +223,14 @@ export function OnboardingContextProvider({ return } - return ( - secureUnlock - .setup(walletPin as string) - .then(({ walletKey }) => initializeAgent(walletKey)) - // After `initializeAgent` function is finished we can assume that `setAgent(agent)` is called and the agent is set - // We store the wallet pin as the pid pin. We do this to avoid a double key derivation which is too much of a slow down - // In the future we can possibly sync the key derivation between what the - // Architecture Proposal suggests and what we require to do for our wallet storage - .then(() => { - if (selectedFlow === 'bprime') { - deviceKeyPair.generate() - } - }) - .then(goToNextStep) - .catch((e) => { - reset({ error: e, resetToStep: 'welcome' }) - throw e - }) - ) + return secureUnlock + .setup(walletPin as string) + .then(({ walletKey }) => initializeAgent(walletKey)) + .then(goToNextStep) + .catch((e) => { + reset({ error: e, resetToStep: 'welcome' }) + throw e + }) } const onEnableBiometricsDisabled = async () => { @@ -523,19 +503,9 @@ export function OnboardingContextProvider({ // Acquire access token await receivePidUseCase.acquireAccessToken() - - if (selectedFlow === 'c') { - // For c flow we need to do a biometrics check, so we first inform the user of that - setCurrentStepName('id-card-verify') - } else if (selectedFlow === 'bprime') { - await retrieveCredential() - } + setCurrentStepName('id-card-verify') } catch (error) { - if (error instanceof PinPossiblyReusedError) { - await reset({ resetToStep: 'pin', error, toastMessage: 'Have you used this PIN before?' }) - } else { - await reset({ resetToStep: 'id-card-pin', error }) - } + await reset({ resetToStep: 'id-card-pin', error }) } } @@ -633,12 +603,7 @@ export function OnboardingContextProvider({ } as const satisfies ReceivePidUseCaseFlowOptions if (!receivePidUseCase && receivePidUseCaseState !== 'initializing') { - const flow = - selectedFlow === 'c' - ? ReceivePidUseCaseCFlow.initialize(baseOptions) - : ReceivePidUseCaseBPrimeFlow.initialize({ ...baseOptions, pidPin: walletPin.split('').map(Number) }) - - return flow + return ReceivePidUseCaseCFlow.initialize(baseOptions) .then(async ({ accessRights, authFlow }) => { setReceivePidUseCase(authFlow) setEidCardRequestedAccessRights(accessRights) @@ -656,7 +621,7 @@ export function OnboardingContextProvider({ let screen: React.JSX.Element if (currentStep.step === 'welcome') { - screen = + screen = } else if (currentStep.step === 'pin' || currentStep.step === 'pin-reenter') { screen = ( void -} - -const readableFlow = { - c: 'C', - bprime: "B'", + goToNextStep: () => void } export default function OnboardingWelcome({ goToNextStep }: OnboardingWelcomeProps) { const toast = useToastController() - const [selectedFlow, setSelectedFlow] = useState<'c' | 'bprime'>('c') const [isBlockedByHsm, setIsBlockedByHsm] = useState(false) - const onPressFlow = () => { - return toast.show("B' flow is currently unavailable", { - type: 'warning', - customData: { - preset: 'warning', - }, - }) - // const newFlow = selectedFlow === 'c' ? 'bprime' : 'c' - // setSelectedFlow(newFlow) - // toast.show(`${readableFlow[newFlow]} flow activated!`, { - // type: 'info', - // message: `You are now using the ${readableFlow[newFlow]} flow.`, - // }) - } - useEffect(() => { try { generateKeypair('123', false) @@ -108,9 +87,6 @@ export default function OnboardingWelcome({ goToNextStep }: OnboardingWelcomePro - - {selectedFlow === 'c' ? 'C' : "B'"} - diff --git a/apps/easypid/src/features/pid/FunkePidSetupScreen.tsx b/apps/easypid/src/features/pid/FunkePidSetupScreen.tsx index e198b10a..3af0e85b 100644 --- a/apps/easypid/src/features/pid/FunkePidSetupScreen.tsx +++ b/apps/easypid/src/features/pid/FunkePidSetupScreen.tsx @@ -2,10 +2,6 @@ import { sendCommand } from '@animo-id/expo-ausweis-sdk' import { type SdJwtVcHeader, SdJwtVcRecord } from '@credo-ts/core' import { useSecureUnlock } from '@easypid/agent' import { type PidSdJwtVcAttributes, usePidDisplay } from '@easypid/hooks' -import { - PinPossiblyReusedError, - type ReceivePidUseCaseBPrimeFlow, -} from '@easypid/use-cases/ReceivePidUseCaseBPrimeFlow' import { ReceivePidUseCaseCFlow } from '@easypid/use-cases/ReceivePidUseCaseCFlow' import type { CardScanningErrorDetails, @@ -35,7 +31,7 @@ export function FunkePidSetupScreen() { const pidDisplay = usePidDisplay() const [idCardPin, setIdCardPin] = useState() - const [receivePidUseCase, setReceivePidUseCase] = useState() + const [receivePidUseCase, setReceivePidUseCase] = useState() const [receivePidUseCaseState, setReceivePidUseCaseState] = useState() const [idCardScanningState, setIdCardScanningState] = useState({ isCardAttached: undefined, @@ -255,21 +251,12 @@ export function FunkePidSetupScreen() { await retrieveCredential() } catch (error) { - if (error instanceof PinPossiblyReusedError) { - toast.show('Have you used this PIN before?', { - customData: { - preset: 'danger', - }, - }) - pushToWallet() - } else { - toast.show('Something went wrong', { - customData: { - preset: 'danger', - }, - }) - pushToWallet() - } + toast.show('Something went wrong', { + customData: { + preset: 'danger', + }, + }) + pushToWallet() } } diff --git a/apps/easypid/src/features/share/FunkeOpenIdPresentationNotificationScreen.tsx b/apps/easypid/src/features/share/FunkeOpenIdPresentationNotificationScreen.tsx index c0b12b01..581e91f9 100644 --- a/apps/easypid/src/features/share/FunkeOpenIdPresentationNotificationScreen.tsx +++ b/apps/easypid/src/features/share/FunkeOpenIdPresentationNotificationScreen.tsx @@ -1,6 +1,5 @@ import { BiometricAuthenticationCancelledError, - type EasyPIDAppAgent, formatDifPexCredentialsForRequest, getCredentialsForProofRequest, shareProof, @@ -9,14 +8,7 @@ import { useToastController } from '@package/ui' import { useLocalSearchParams } from 'expo-router' import React, { useEffect, useState, useMemo, useCallback } from 'react' -import { ClaimFormat } from '@credo-ts/core' import { useAppAgent } from '@easypid/agent' -import { - PidIssuerPinInvalidError, - PidIssuerPinLockedError, - requestSdJwtVcFromSeedCredential, -} from '@easypid/crypto/bPrime' -import { useSeedCredentialPidData } from '@easypid/storage' import { getOpenIdFedIssuerMetadata } from '@easypid/utils/issuer' import { usePushToWallet } from '@package/app/src/hooks/usePushToWallet' import { isPidCredential } from '../../hooks' @@ -39,7 +31,6 @@ export function FunkeOpenIdPresentationNotificationScreen() { const params = useLocalSearchParams() const pushToWallet = usePushToWallet() const { agent } = useAppAgent() - const { seedCredential } = useSeedCredentialPidData() const { activities } = useActivities() const [credentialsForRequest, setCredentialsForRequest] = @@ -103,8 +94,9 @@ export function FunkeOpenIdPresentationNotificationScreen() { submission?.entries.some((entry) => entry.credentials.some((credential) => isPidCredential(credential.metadata?.type)) ) ?? false - return isPidInSubmission && !!seedCredential - }, [submission, seedCredential]) + // TODO: usePin when HSM or no PID + return !isPidInSubmission + }, [submission]) useEffect(() => { if (credentialsForRequest) return @@ -191,64 +183,6 @@ export function FunkeOpenIdPresentationNotificationScreen() { } }, [submission, credentialsForRequest, agent, credentialsWithDisclosedPayload, fedDisplayData]) - const onProofAcceptWithSeedCredential = async (pin: string): Promise => { - return await requestSdJwtVcFromSeedCredential({ - agent: agent as unknown as EasyPIDAppAgent, - authorizationRequestUri: params.uri ?? 'TODO: this is temp anyways', - pidPin: pin, - }) - .then(async (sdJwtVc) => { - // We add the newly retrieved SD-JWT VC as the first credential in the credentials for request - // So it will automatically be selected when creating the presentation - const entry = credentialsForRequest?.credentialsForRequest.requirements[0].submissionEntry[0] - entry?.verifiableCredentials.unshift({ - type: ClaimFormat.SdJwtVc, - // FIXME: we don't have the disclosures anymore. Need to reapply limit disclosure - credentialRecord: sdJwtVc, - disclosedPayload: {}, - }) - - return await onProofAccept() - }) - .catch((error) => { - if (error instanceof PidIssuerPinInvalidError) { - return { - status: 'error', - result: { - title: 'Wrong PIN', - message: 'Use your app PIN to confirm the request.', - }, - } - } - - if (error instanceof PidIssuerPinLockedError) { - // FIXME: Redirect to a wallet reset screen. - return { - status: 'error', - redirectToWallet: true, - result: { - title: 'Too many incorrect attempts', - message: - 'You have entered an incorrect PIN. The wallet was locked, please reset it to set a new PIN and continue.', - }, - } - } - - agent.config.logger.error('Error accepting presentation', { - error, - }) - - return { - status: 'error', - redirectToWallet: true, - result: { - title: 'Presentation could not be shared.', - message: 'Please try again.', - }, - } - }) - } - const onProofDecline = async () => { const activityData = { entity: { @@ -284,7 +218,8 @@ export function FunkeOpenIdPresentationNotificationScreen() { { const pidCredentials = credentials.filter( @@ -392,7 +390,7 @@ export function usePidCredential() { }) }, [credentials]) - if (isLoading || isSeedCredentialLoading) { + if (isLoading) { return { credential: undefined, isLoading: true, diff --git a/apps/easypid/src/storage/index.ts b/apps/easypid/src/storage/index.ts deleted file mode 100644 index 840978b8..00000000 --- a/apps/easypid/src/storage/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './seedCredential' diff --git a/apps/easypid/src/storage/seedCredential.tsx b/apps/easypid/src/storage/seedCredential.tsx deleted file mode 100644 index ada51838..00000000 --- a/apps/easypid/src/storage/seedCredential.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import { TypedArrayEncoder } from '@credo-ts/core' -import { EASYPID_WALLET_SEED_CREDENTIAL_RECORD_ID } from '@easypid/constants' -import { getWalletJsonStore, useWalletJsonRecord } from '@package/agent' - -export const seedCredentialStorage = getWalletJsonStore<{ seedCredential: string }>( - EASYPID_WALLET_SEED_CREDENTIAL_RECORD_ID -) - -export interface SeedCredentialPidData { - seedCredential: string - iat: number - pid_data: { - place_of_birth: { locality: string } - birthdate: string - address: { - street_address: string - country: string - locality: string - postal_code: string - } - birth_family_name: string - nationality: string - given_name: string - family_name: string - } -} - -export const useSeedCredential = () => { - return useWalletJsonRecord<{ seedCredential: string }>(seedCredentialStorage.recordId) -} - -export const useSeedCredentialPidData = (): { - isLoading: boolean - seedCredential: SeedCredentialPidData | undefined -} => { - const { record, isLoading } = useSeedCredential() - - if (!record) { - return { - seedCredential: undefined, - isLoading, - } - } - - const payload = record.seedCredential.split('.')[1] - const parsedPayload = JSON.parse(TypedArrayEncoder.fromBase64(payload).toString()) as SeedCredentialPidData - - return { - isLoading, - seedCredential: parsedPayload, - } -} diff --git a/apps/easypid/src/use-cases/ReceivePidUseCaseBPrimeFlow.ts b/apps/easypid/src/use-cases/ReceivePidUseCaseBPrimeFlow.ts deleted file mode 100644 index 705f74b1..00000000 --- a/apps/easypid/src/use-cases/ReceivePidUseCaseBPrimeFlow.ts +++ /dev/null @@ -1,152 +0,0 @@ -import { type JwkJson, Key, KeyType, P256Jwk, TypedArrayEncoder } from '@credo-ts/core' -import { pidSchemes } from '@easypid/constants' -import { - convertAndStorePidDataIntoFakeSdJwtVc, - createMockedClientAttestationAndProofOfPossession, - deriveKeypairFromPin, - requestToPidProvider, -} from '@easypid/crypto/bPrime' -import { - BiometricAuthenticationError, - acquireAccessToken, - receiveCredentialFromOpenId4VciOfferAuthenticatedChannel, - resolveOpenId4VciOffer, -} from '@package/agent' -import { seedCredentialStorage } from '../storage' -import { deviceKeyPair } from '../storage/pidPin' -import { ReceivePidUseCaseFlow, type ReceivePidUseCaseFlowOptions } from './ReceivePidUseCaseFlow' -import { B_PRIME_SD_JWT_VC_OFFER } from './bdrPidIssuerOffers' - -export interface ReceivePidUseCaseBPrimeOptions extends ReceivePidUseCaseFlowOptions { - pidPin: Array -} - -export class PinPossiblyReusedError extends Error {} - -export class ReceivePidUseCaseBPrimeFlow extends ReceivePidUseCaseFlow { - private static REDIRECT_URI = 'https://funke.animo.id/redirect' - - static async initialize(options: ReceivePidUseCaseBPrimeOptions) { - const headers = { - client_assertion_type: 'urn:ietf:params:oauth:client-assertion-type:jwt-client-attestation', - client_assertion: await createMockedClientAttestationAndProofOfPossession(options.agent, { - audience: 'https://demo.pid-issuer.bundesdruckerei.de/b1', - }), - } - const resolved = await resolveOpenId4VciOffer({ - agent: options.agent, - offer: { uri: B_PRIME_SD_JWT_VC_OFFER }, - authorization: { - clientId: ReceivePidUseCaseBPrimeFlow.CLIENT_ID, - redirectUri: ReceivePidUseCaseBPrimeFlow.REDIRECT_URI, - }, - customHeaders: headers, - }) - - if (!resolved.resolvedAuthorizationRequest) { - throw new Error('Expected authorization_code grant, but not found') - } - - const authFlow = new ReceivePidUseCaseBPrimeFlow( - options, - resolved.resolvedAuthorizationRequest, - resolved.resolvedCredentialOffer - ) - authFlow.startAuthFlow() - const accessRights = await authFlow.accessRights - authFlow.options.onStateChange?.('id-card-auth') - return { authFlow, accessRights } - } - - public async retrieveCredentials() { - try { - this.assertState({ expectedState: 'retrieve-credential' }) - - if (!this.accessToken) { - throw new Error('Expected accessToken be defined in state retrieve-credential') - } - - const deviceKeyPublicKeyBytes = deviceKeyPair.publicKey() - const deviceKey = Key.fromPublicKey(deviceKeyPublicKeyBytes, KeyType.P256) - const credentialConfigurationIdToRequest = this.resolvedCredentialOffer.offeredCredentials[0].id - const { credential, openId4VcMetadata } = await receiveCredentialFromOpenId4VciOfferAuthenticatedChannel({ - deviceKey, - agent: this.options.agent, - accessToken: this.accessToken, - resolvedCredentialOffer: this.resolvedCredentialOffer, - credentialConfigurationIdToRequest, - clientId: ReceivePidUseCaseBPrimeFlow.CLIENT_ID, - pidSchemes, - }) - - await seedCredentialStorage.store(this.options.agent, { seedCredential: credential }) - - const payload = credential.split('.')[1] - const { pid_data } = JSON.parse(TypedArrayEncoder.fromBase64(payload).toString()) - const sdJwtVc = await convertAndStorePidDataIntoFakeSdJwtVc(this.options.agent, pid_data, openId4VcMetadata) - - return [sdJwtVc] - } catch (error) { - // We can recover from this error, so we shouldn't set the state to error - if (error instanceof BiometricAuthenticationError) { - throw error - } - - this.handleError(error) - throw error - } - } - - public async acquireAccessToken() { - this.assertState({ expectedState: 'acquire-access-token' }) - - try { - if (!this.refreshUrl) { - throw new Error('Expected refreshUrl be defined in state acquire-access-token') - } - - const authorizationCodeResponse = await fetch(this.refreshUrl) - if (!authorizationCodeResponse.ok) { - this.handleError(`Auth code response has invalid status. ${authorizationCodeResponse.status}`) - return - } - - const { pin_nonce: pinNonce } = await authorizationCodeResponse.json() - - const pinDerivedEph = await deriveKeypairFromPin(this.options.agent.context, this.options.pidPin) - - const code = await requestToPidProvider( - authorizationCodeResponse.url, - this.options.agent, - pinDerivedEph, - pinNonce - ) - - this.accessToken = await acquireAccessToken({ - resolvedCredentialOffer: this.resolvedCredentialOffer, - resolvedAuthorizationRequest: { - ...this.resolvedAuthorizationRequest, - code, - }, - agent: this.options.agent, - dPopKeyJwk: P256Jwk.fromJson(deviceKeyPair.asJwk() as unknown as JwkJson), - }) - - this.assertState({ - expectedState: 'acquire-access-token', - newState: 'retrieve-credential', - }) - } catch (error) { - if (error instanceof Error) { - if (error.message.includes('Internal server error')) { - const pinPossiblyReusedError = new PinPossiblyReusedError('PIN is possibly reused') - this.handleError(pinPossiblyReusedError) - throw pinPossiblyReusedError - } - } - - this.handleError(error) - throw error - } - } -} diff --git a/package.json b/package.json index 13f9bfa1..25c06d38 100644 --- a/package.json +++ b/package.json @@ -28,33 +28,27 @@ "@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": "https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/anoncreds?funke", - "@credo-ts/askar": "https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/askar?funke", - "@credo-ts/cheqd": "https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/cheqd?funke", - "@credo-ts/core": "https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/core?funke", - "@credo-ts/indy-vdr": "https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/indy-vdr?funke", - "@credo-ts/openid4vc": "https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/openid4vc?funke", - "@credo-ts/question-answer": "https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/question-answer?funke", - "@credo-ts/react-native": "https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/react-native?funke", + "@credo-ts/anoncreds": "0.5.13-alpha-20241107100446", + "@credo-ts/askar": "0.5.13-alpha-20241107100446", + "@credo-ts/cheqd": "0.5.13-alpha-20241107100446", + "@credo-ts/core": "0.5.13-alpha-20241107100446", + "@credo-ts/indy-vdr": "0.5.13-alpha-20241107100446", + "@credo-ts/openid4vc": "0.5.13-alpha-20241107100446", + "@credo-ts/question-answer": "0.5.13-alpha-20241107100446", + "@credo-ts/react-native": "0.5.13-alpha-20241107100446", "@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.5", "@animo-id/expo-mdoc-data-transfer": "0.0.3-alpha.6", "@types/react": "~18.2.79", "react-docgen-typescript": "2.2.2", - "@sphereon/did-auth-siop": "https://gitpkg.vercel.app/animo/OID4VC/packages/siop-oid4vp?funke", - "@sphereon/oid4vc-common": "https://gitpkg.vercel.app/animo/OID4VC/packages/common?funke", - "@sphereon/oid4vci-common": "https://gitpkg.vercel.app/animo/OID4VC/packages/oid4vci-common?funke", - "@sphereon/oid4vci-issuer": "https://gitpkg.vercel.app/animo/OID4VC/packages/issuer?funke", - "@sphereon/oid4vci-client": "https://gitpkg.vercel.app/animo/OID4VC/packages/client?funke", - "@sphereon/jarm": "https://gitpkg.vercel.app/animo/OID4VC/packages/jarm?funke", "@protokoll/mdoc-client": "0.2.36", "react": "18.3.1", "react-natve": "~0.74.5" }, "patchedDependencies": { "@hyperledger/indy-vdr-react-native@0.2.2": "patches/@hyperledger__indy-vdr-react-native@0.2.2.patch", - "@protokoll/mdoc-client": "patches/@protokoll__mdoc-client.patch" + "@protokoll/mdoc-client@0.2.36": "patches/@protokoll__mdoc-client@0.2.36.patch" } } } diff --git a/packages/agent/src/invitation/handler.ts b/packages/agent/src/invitation/handler.ts index a9ea2c7e..432b6674 100644 --- a/packages/agent/src/invitation/handler.ts +++ b/packages/agent/src/invitation/handler.ts @@ -3,11 +3,9 @@ import type { CredentialStateChangedEvent, DifPexCredentialsForRequest, JwkDidCreateOptions, - Key, KeyDidCreateOptions, OutOfBandInvitation, OutOfBandRecord, - P256Jwk, ProofStateChangedEvent, W3cJsonLdVerifiableCredential, W3cJwtVerifiableCredential, @@ -22,7 +20,7 @@ import type { OpenId4VciTokenRequestOptions, } from '@credo-ts/openid4vc' import { Linking } from 'react-native' -import type { EasyPIDAppAgent, EitherAgent, FullAppAgent } from '../agent' +import type { EitherAgent, FullAppAgent } from '../agent' import { V1OfferCredentialMessage, V1RequestPresentationMessage } from '@credo-ts/anoncreds' import { @@ -33,7 +31,6 @@ import { JwaSignatureAlgorithm, Jwt, KeyBackend, - KeyType, Mdoc, MdocRecord, MdocRepository, @@ -42,7 +39,6 @@ import { ProofState, SdJwtVcRecord, SdJwtVcRepository, - TypedArrayEncoder, V2OfferCredentialMessage, V2RequestPresentationMessage, W3cCredentialRecord, @@ -56,14 +52,9 @@ import { OpenId4VciCredentialFormatProfile } from '@credo-ts/openid4vc' import { getHostNameFromUrl } from '@package/utils' import { filter, first, firstValueFrom, merge, timeout } from 'rxjs' -import { deviceKeyPair } from '@easypid/storage/pidPin' import q from 'query-string' import type { CredentialForDisplayId } from '../hooks' -import { - type OpenId4VcCredentialMetadata, - extractOpenId4VcCredentialMetadata, - setOpenId4VcCredentialMetadata, -} from '../openid4vc/metadata' +import { extractOpenId4VcCredentialMetadata, setOpenId4VcCredentialMetadata } from '../openid4vc/metadata' import { BiometricAuthenticationError } from './error' import { fetchInvitationDataUrl } from './fetchInvitation' @@ -136,53 +127,14 @@ export async function resolveOpenId4VciOffer({ } } -export async function popCallbackForBPrime(jwt: { - header: Record - payload: Record -}) { - const header = { - ...jwt.header, - alg: 'ES256', - } - - const payload = jwt.payload - - const toBeSigned = `${TypedArrayEncoder.toBase64URL( - TypedArrayEncoder.fromString(JSON.stringify(header)) - )}.${TypedArrayEncoder.toBase64URL(TypedArrayEncoder.fromString(JSON.stringify(payload)))}` - const signature = await deviceKeyPair.sign(new Uint8Array(TypedArrayEncoder.fromString(toBeSigned))) - const jws = `${toBeSigned}.${TypedArrayEncoder.toBase64URL(signature)}` - return jws -} - -export function getCreateJwtCallbackForBPrime() { - return async (_jwtIssuer: unknown, jwt: { header: Record; payload: Record }) => { - const header = { - ...jwt.header, - alg: 'ES256', - } - - const payload = jwt.payload - - const toBeSigned = `${TypedArrayEncoder.toBase64URL( - TypedArrayEncoder.fromString(JSON.stringify(header)) - )}.${TypedArrayEncoder.toBase64URL(TypedArrayEncoder.fromString(JSON.stringify(payload)))}` - const signature = await deviceKeyPair.sign(new Uint8Array(TypedArrayEncoder.fromString(toBeSigned))) - const jws = `${toBeSigned}.${TypedArrayEncoder.toBase64URL(signature)}` - return jws - } -} - export async function acquireAccessToken({ resolvedCredentialOffer, agent, resolvedAuthorizationRequest, - dPopKeyJwk, }: { agent: EitherAgent resolvedAuthorizationRequest?: OpenId4VciResolvedAuthorizationRequestWithCode resolvedCredentialOffer: OpenId4VciResolvedCredentialOffer - dPopKeyJwk?: P256Jwk }) { let tokenOptions: OpenId4VciTokenRequestOptions = { resolvedCredentialOffer, @@ -193,89 +145,12 @@ export async function acquireAccessToken({ resolvedAuthorizationRequest, resolvedCredentialOffer, code: resolvedAuthorizationRequest.code, - // Added in patch but not in types - // @ts-ignore - dPopKeyJwk, - getCreateJwtCallback: getCreateJwtCallbackForBPrime, } } return await agent.modules.openId4VcHolder.requestToken(tokenOptions) } -export const receiveCredentialFromOpenId4VciOfferAuthenticatedChannel = async ({ - agent, - resolvedCredentialOffer, - credentialConfigurationIdToRequest, - accessToken, - clientId, - pidSchemes, - deviceKey, - customHeaders, -}: { - agent: EasyPIDAppAgent - resolvedCredentialOffer: OpenId4VciResolvedCredentialOffer - credentialConfigurationIdToRequest?: string - clientId?: string - pidSchemes?: { sdJwtVcVcts: Array; msoMdocDoctypes: Array } - deviceKey: Key - customHeaders?: Record - - // TODO: cNonce should maybe be provided separately (multiple calls can have different c_nonce values) - accessToken: OpenId4VciRequestTokenResponse -}): Promise<{ credential: string; openId4VcMetadata: OpenId4VcCredentialMetadata }> => { - // By default request the first offered credential - // TODO: extract the first supported offered credential - const offeredCredentialToRequest = credentialConfigurationIdToRequest - ? resolvedCredentialOffer.offeredCredentials.find((offered) => offered.id === credentialConfigurationIdToRequest) - : resolvedCredentialOffer.offeredCredentials[0] - if (!offeredCredentialToRequest) { - throw new Error( - `Parameter 'credentialConfigurationIdToRequest' with value ${credentialConfigurationIdToRequest} is not a credential_configuration_id in the credential offer.` - ) - } - - // FIXME: return credential_supported entry for credential so it's easy to store metadata - const credentials = (await agent.modules.openId4VcHolder.requestCredentials({ - resolvedCredentialOffer, - ...accessToken, - // Added in patch but not in types - // @ts-ignore - popCallback: popCallbackForBPrime, - getCreateJwtCallback: getCreateJwtCallbackForBPrime, - customBody: { format: 'jwt' }, - clientId, - credentialsToRequest: [offeredCredentialToRequest.id], - verifyCredentialStatus: false, - allowedProofOfPossessionSignatureAlgorithms: [JwaSignatureAlgorithm.EdDSA, JwaSignatureAlgorithm.ES256], - credentialBindingResolver: async ({ keyType, supportsJwk }) => { - if (!supportsJwk) { - throw Error('Issuer does not support JWK') - } - - if (keyType !== KeyType.P256) { - throw new Error(`invalid key type used '${keyType}' and only ${KeyType.P256} is allowed.`) - } - return { - method: 'jwk', - jwk: getJwkFromKey(deviceKey), - } - }, - })) as unknown as Array - - const credential = credentials[0] - // FIXME: not sure if the index of credentials will match? - const openId4VcMetadata = extractOpenId4VcCredentialMetadata(offeredCredentialToRequest, { - id: resolvedCredentialOffer.metadata.issuer, - display: resolvedCredentialOffer.metadata.credentialIssuerMetadata.display, - }) - - return { - credential, - openId4VcMetadata, - } -} - export const receiveCredentialFromOpenId4VciOffer = async ({ agent, resolvedCredentialOffer, diff --git a/packages/agent/src/invitation/index.ts b/packages/agent/src/invitation/index.ts index 26849ec4..7519f58f 100644 --- a/packages/agent/src/invitation/index.ts +++ b/packages/agent/src/invitation/index.ts @@ -14,7 +14,6 @@ export { export { receiveOutOfBandInvitation, receiveCredentialFromOpenId4VciOffer, - receiveCredentialFromOpenId4VciOfferAuthenticatedChannel, acquireAccessToken, resolveOpenId4VciOffer, storeCredential, diff --git a/packages/app/src/features/notifications/OpenIdCredentialNotificationScreen.tsx b/packages/app/src/features/notifications/OpenIdCredentialNotificationScreen.tsx index 478a31cb..19fa6f96 100644 --- a/packages/app/src/features/notifications/OpenIdCredentialNotificationScreen.tsx +++ b/packages/app/src/features/notifications/OpenIdCredentialNotificationScreen.tsx @@ -46,9 +46,6 @@ export function OpenIdCredentialNotificationScreen() { accessToken: tokenResponse, }) - if (typeof credentialRecord === 'string') { - throw new Error('b prime not supported') - } setCredentialRecord(credentialRecord) } catch (e: unknown) { agent.config.logger.error(`Couldn't receive credential from OpenID4VCI offer`, { diff --git a/patches/@protokoll__mdoc-client.patch b/patches/@protokoll__mdoc-client@0.2.36.patch similarity index 82% rename from patches/@protokoll__mdoc-client.patch rename to patches/@protokoll__mdoc-client@0.2.36.patch index 4dcc6e51..bcfcbde0 100644 --- a/patches/@protokoll__mdoc-client.patch +++ b/patches/@protokoll__mdoc-client@0.2.36.patch @@ -1,20 +1,20 @@ diff --git a/dist/src/mdoc/model/device-response.js b/dist/src/mdoc/model/device-response.js -index 690940a79a8ea60bea82aac530825374577d309e..a74e93d6f8b49338e42b0e249978f3ece2e42b05 100644 +index 690940a79a8ea60bea82aac530825374577d309e..8c9ff5ed182fc886bb25f83da4bdc5522b9b0a20 100644 --- a/dist/src/mdoc/model/device-response.js +++ b/dist/src/mdoc/model/device-response.js @@ -264,6 +264,7 @@ class DeviceResponse { jwk: this.devicePrivateKey, }); sign1.signature = signature; -+ sign1.payload = null ++ sign1.payload = null; return { deviceSignature: sign1 }; } } diff --git a/dist/src/mdoc/model/device-signed-document.js b/dist/src/mdoc/model/device-signed-document.js -index b96a6bf841292c046047ccdd9b256a5cbf8a8562..852913f10ee0c60ce7577d488e1e8a45beb38455 100644 +index b96a6bf841292c046047ccdd9b256a5cbf8a8562..0f8403d53aacd38723f85bed8c6e51d701b18830 100644 --- a/dist/src/mdoc/model/device-signed-document.js +++ b/dist/src/mdoc/model/device-signed-document.js -@@ -19,24 +19,23 @@ class DeviceSignedDocument extends issuer_signed_document_js_1.IssuerSignedDocum +@@ -19,13 +19,6 @@ class DeviceSignedDocument extends issuer_signed_document_js_1.IssuerSignedDocum const doc = super.prepare(); const deviceSignature = this.deviceSigned.deviceAuth.deviceSignature?.getContentForEncoding(); const deviceMac = this.deviceSigned.deviceAuth.deviceMac?.getContentForEncoding(); @@ -25,10 +25,10 @@ index b96a6bf841292c046047ccdd9b256a5cbf8a8562..852913f10ee0c60ce7577d488e1e8a45 - if (deviceSignature) { - deviceSignature[2] = undefined; - } -- // + // doc.set('deviceSigned', { ...this.deviceSigned, - nameSpaces: data_item_js_1.DataItem.fromData(this.deviceSigned.nameSpaces), +@@ -33,10 +26,17 @@ class DeviceSignedDocument extends issuer_signed_document_js_1.IssuerSignedDocum // TODO: ERRORS MISSING deviceAuth: { ...this.deviceSigned.deviceAuth, @@ -48,7 +48,7 @@ index b96a6bf841292c046047ccdd9b256a5cbf8a8562..852913f10ee0c60ce7577d488e1e8a45 } /** diff --git a/dist/src/mdoc/model/pex-limit-disclosure.js b/dist/src/mdoc/model/pex-limit-disclosure.js -index 2be88974a9e98b6699d9e8e76259f6d4f123f8dd..acce89c4bb6cf3bcad2e880d136645d4df51408c 100644 +index 2be88974a9e98b6699d9e8e76259f6d4f123f8dd..ef8ab814973e1c1c0fc52d9dca3be80bc309c3c6 100644 --- a/dist/src/mdoc/model/pex-limit-disclosure.js +++ b/dist/src/mdoc/model/pex-limit-disclosure.js @@ -6,7 +6,6 @@ const limitDisclosureToDeviceRequestNameSpaces = (mdoc, deviceRequestNameSpaces) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1ca2942f..5885d5e3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,26 +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': https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/anoncreds?funke - '@credo-ts/askar': https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/askar?funke - '@credo-ts/cheqd': https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/cheqd?funke - '@credo-ts/core': https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/core?funke - '@credo-ts/indy-vdr': https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/indy-vdr?funke - '@credo-ts/openid4vc': https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/openid4vc?funke - '@credo-ts/question-answer': https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/question-answer?funke - '@credo-ts/react-native': https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/react-native?funke + '@credo-ts/anoncreds': 0.5.13-alpha-20241107100446 + '@credo-ts/askar': 0.5.13-alpha-20241107100446 + '@credo-ts/cheqd': 0.5.13-alpha-20241107100446 + '@credo-ts/core': 0.5.13-alpha-20241107100446 + '@credo-ts/indy-vdr': 0.5.13-alpha-20241107100446 + '@credo-ts/openid4vc': 0.5.13-alpha-20241107100446 + '@credo-ts/question-answer': 0.5.13-alpha-20241107100446 + '@credo-ts/react-native': 0.5.13-alpha-20241107100446 '@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.5 '@animo-id/expo-mdoc-data-transfer': 0.0.3-alpha.6 '@types/react': ~18.2.79 react-docgen-typescript: 2.2.2 - '@sphereon/did-auth-siop': https://gitpkg.vercel.app/animo/OID4VC/packages/siop-oid4vp?funke - '@sphereon/oid4vc-common': https://gitpkg.vercel.app/animo/OID4VC/packages/common?funke - '@sphereon/oid4vci-common': https://gitpkg.vercel.app/animo/OID4VC/packages/oid4vci-common?funke - '@sphereon/oid4vci-issuer': https://gitpkg.vercel.app/animo/OID4VC/packages/issuer?funke - '@sphereon/oid4vci-client': https://gitpkg.vercel.app/animo/OID4VC/packages/client?funke - '@sphereon/jarm': https://gitpkg.vercel.app/animo/OID4VC/packages/jarm?funke '@protokoll/mdoc-client': 0.2.36 react: 18.3.1 react-natve: ~0.74.5 @@ -39,9 +33,9 @@ patchedDependencies: '@hyperledger/indy-vdr-react-native@0.2.2': hash: jtxhiuxe2e3i7qwlurpufqwh5a path: patches/@hyperledger__indy-vdr-react-native@0.2.2.patch - '@protokoll/mdoc-client': - hash: snxiw6ugrvjo6kqm54rtm6qs7m - path: patches/@protokoll__mdoc-client.patch + '@protokoll/mdoc-client@0.2.36': + hash: hjh76hcm7u7iov3yy6qyowzflu + path: patches/@protokoll__mdoc-client@0.2.36.patch importers: @@ -69,8 +63,8 @@ importers: specifier: 0.1.0-alpha.5 version: 0.1.0-alpha.5(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: https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/core?funke - version: https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/core?funke(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))(typescript@5.3.3)(web-streams-polyfill@3.3.3) + specifier: 0.5.13-alpha-20241107100446 + version: 0.5.13-alpha-20241107100446(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))(typescript@5.3.3)(web-streams-polyfill@3.3.3) '@expo-google-fonts/open-sans': specifier: ^0.2.3 version: 0.2.3 @@ -103,7 +97,7 @@ importers: version: link:../../packages/utils '@protokoll/mdoc-client': specifier: 0.2.36 - version: 0.2.36(patch_hash=snxiw6ugrvjo6kqm54rtm6qs7m)(typescript@5.3.3) + version: 0.2.36(patch_hash=hjh76hcm7u7iov3yy6qyowzflu)(typescript@5.3.3) '@react-native-community/blur': specifier: ^4.3.2 version: 4.4.1(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) @@ -531,32 +525,32 @@ importers: packages/agent: dependencies: '@credo-ts/anoncreds': - specifier: https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/anoncreds?funke - version: https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/anoncreds?funke(@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))(typescript@5.3.3)(web-streams-polyfill@3.3.3) + specifier: 0.5.13-alpha-20241107100446 + version: 0.5.13-alpha-20241107100446(@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))(typescript@5.3.3)(web-streams-polyfill@3.3.3) '@credo-ts/askar': - specifier: https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/askar?funke - version: https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/askar?funke(@animo-id/expo-secure-environment@0.1.0-alpha.5(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))(typescript@5.3.3)(web-streams-polyfill@3.3.3) + specifier: 0.5.13-alpha-20241107100446 + version: 0.5.13-alpha-20241107100446(@animo-id/expo-secure-environment@0.1.0-alpha.5(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))(typescript@5.3.3)(web-streams-polyfill@3.3.3) '@credo-ts/cheqd': - specifier: https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/cheqd?funke - version: https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/cheqd?funke(@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))(typescript@5.3.3)(web-streams-polyfill@3.3.3) + specifier: 0.5.13-alpha-20241107100446 + version: 0.5.13-alpha-20241107100446(@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))(typescript@5.3.3)(web-streams-polyfill@3.3.3) '@credo-ts/core': - specifier: https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/core?funke - version: https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/core?funke(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.5.13-alpha-20241107100446 + version: 0.5.13-alpha-20241107100446(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/indy-vdr': - specifier: https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/indy-vdr?funke - version: https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/indy-vdr?funke(@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))(typescript@5.3.3)(web-streams-polyfill@3.3.3) + specifier: 0.5.13-alpha-20241107100446 + version: 0.5.13-alpha-20241107100446(@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))(typescript@5.3.3)(web-streams-polyfill@3.3.3) '@credo-ts/openid4vc': - specifier: https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/openid4vc?funke - version: https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/openid4vc?funke(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.5.13-alpha-20241107100446 + version: 0.5.13-alpha-20241107100446(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: https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/question-answer?funke - version: https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/question-answer?funke(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.5.13-alpha-20241107100446 + version: 0.5.13-alpha-20241107100446(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/react-hooks': specifier: 0.6.1 - version: 0.6.1(@credo-ts/core@https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/core?funke(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@https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/question-answer?funke(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))(react@18.3.1) + version: 0.6.1(@credo-ts/core@0.5.13-alpha-20241107100446(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@0.5.13-alpha-20241107100446(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))(react@18.3.1) '@credo-ts/react-native': - specifier: https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/react-native?funke - version: https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/react-native?funke(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))(typescript@5.3.3)(web-streams-polyfill@3.3.3) + specifier: 0.5.13-alpha-20241107100446 + version: 0.5.13-alpha-20241107100446(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))(typescript@5.3.3)(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) @@ -574,7 +568,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@https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/anoncreds?funke(@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))(typescript@5.3.3)(web-streams-polyfill@3.3.3))(@credo-ts/core@https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/core?funke(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))(@hyperledger/anoncreds-shared@0.2.4) + version: 0.0.1-alpha.13(@credo-ts/anoncreds@0.5.13-alpha-20241107100446(@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))(typescript@5.3.3)(web-streams-polyfill@3.3.3))(@credo-ts/core@0.5.13-alpha-20241107100446(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))(@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)) @@ -781,7 +775,7 @@ packages: peerDependencies: expo: '*' react: 18.3.1 - react-native: '*' + react-native: 0.74.5 '@astronautlabs/jsonpath@1.1.2': resolution: {integrity: sha512-FqL/muoreH7iltYC1EB5Tvox5E8NSOOPGkgns4G+qxRKl6k5dxEVljUjB5NcKESzkqwnUqWjSZkL61XGYOuV+A==} @@ -1671,15 +1665,13 @@ packages: '@cosmjs/utils@0.30.1': resolution: {integrity: sha512-KvvX58MGMWh7xA+N+deCfunkA/ZNDvFLw4YbOmX3f/XBIkqrVY7qlotfy2aNb1kgp6h4B6Yc8YawJPDTfvWX7g==} - '@credo-ts/anoncreds@https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/anoncreds?funke': - resolution: {tarball: https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/anoncreds?funke} - version: 0.5.12 + '@credo-ts/anoncreds@0.5.13-alpha-20241107100446': + resolution: {integrity: sha512-wsVNp2PkrZ/SnUVWr6xizjKou2xe5DQFxLrgVEd+DiNtnP6gYuS/qNCXouBHrhSL5RJDILaZCPyjzklOPRvQdw==} peerDependencies: '@hyperledger/anoncreds-shared': ^0.2.2 - '@credo-ts/askar@https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/askar?funke': - resolution: {tarball: https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/askar?funke} - version: 0.5.12 + '@credo-ts/askar@0.5.13-alpha-20241107100446': + resolution: {integrity: sha512-GFDh/0jgK8daajTDIO6PJFc1FqOGQGBbS/itJanH6EI2dp9fuGIXk06Cr2zUgm1laa4lIB7XNwoB+y6wNOPrnQ==} peerDependencies: '@animo-id/expo-secure-environment': 0.1.0-alpha.5 '@hyperledger/aries-askar-shared': ^0.2.3 @@ -1687,39 +1679,32 @@ packages: '@animo-id/expo-secure-environment': optional: true - '@credo-ts/cheqd@https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/cheqd?funke': - resolution: {tarball: https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/cheqd?funke} - version: 0.5.12 + '@credo-ts/cheqd@0.5.13-alpha-20241107100446': + resolution: {integrity: sha512-snRQ25jST5hYFODkus4csYDZ/4moGSvupFeytNQzBLiGVG3iidkOa1un4Fw7n7TwBbNMH8SQbREYi7pHJtxtIA==} - '@credo-ts/core@https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/core?funke': - resolution: {tarball: https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/core?funke} - version: 0.5.12 + '@credo-ts/core@0.5.13-alpha-20241107100446': + resolution: {integrity: sha512-NdR/1QZPgFtnRUhbn8EALSHu3K2zO4TZglrFb6cbuvRdm4fXxHMcGod3gbt8LmXdyPIEFGs6T6CTWfyrV/QHKg==} - '@credo-ts/indy-vdr@https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/indy-vdr?funke': - resolution: {tarball: https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/indy-vdr?funke} - version: 0.5.12 + '@credo-ts/indy-vdr@0.5.13-alpha-20241107100446': + resolution: {integrity: sha512-4k++wPUPuYAp+oRp53azlBCfwtWlhUoJAgbsPV+Go5WtfW+ALOP3qf1HbTg8IkLSDOiPgZTwfMCWgucHRROYvw==} peerDependencies: '@hyperledger/indy-vdr-shared': ^0.2.2 - '@credo-ts/openid4vc@https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/openid4vc?funke': - resolution: {tarball: https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/openid4vc?funke} - version: 0.5.12 + '@credo-ts/openid4vc@0.5.13-alpha-20241107100446': + resolution: {integrity: sha512-XH9lY6mJXm0AFX7FMLFRpmqh4L688A6RDOEjpPhs6KvCOkRCTab7Oa8ZPwN9VQJMdtrUnhPtnL4MV8fm7j+ogA==} - '@credo-ts/question-answer@https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/question-answer?funke': - resolution: {tarball: https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/question-answer?funke} - version: 0.5.12 + '@credo-ts/question-answer@0.5.13-alpha-20241107100446': + resolution: {integrity: sha512-HqdBDmnNDnpCxilBLLqz8Ev1qtW3td5ki9+jwSzRErkKGFUgg+4xkWwSITwYtJe1sgWIThgAD80JLt5WM3b4Ow==} '@credo-ts/react-hooks@0.6.1': resolution: {integrity: sha512-lZt1N5oKzYfh9DMUBauX9Q2irJPxbztfK9zkYU93mhSV7jF5up0X/TdWxj85l9Guu7iL84JDQJY11CpIHquPOQ==} - version: 0.6.1 peerDependencies: - '@credo-ts/core': https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/core?funke - '@credo-ts/question-answer': https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/question-answer?funke + '@credo-ts/core': 0.5.13-alpha-20241107100446 + '@credo-ts/question-answer': 0.5.13-alpha-20241107100446 react: 18.3.1 - '@credo-ts/react-native@https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/react-native?funke': - resolution: {tarball: https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/react-native?funke} - version: 0.5.12 + '@credo-ts/react-native@0.5.13-alpha-20241107100446': + resolution: {integrity: sha512-phIk3bYFrB75ALxWfidrUvI7CclJwQXNXuSt1k0Ob1uTE8FTSyTwx/w92bHKAsClKUvCcQVp8iJhSM6zjXGzHA==} peerDependencies: react-native: '>=0.71.4' react-native-fs: ^2.20.0 @@ -2352,7 +2337,7 @@ packages: '@expo/metro-runtime@3.2.3': resolution: {integrity: sha512-v5ji+fAGi7B9YavrxvekuF8gXEV/5fz0+PhaED5AaFDnbGB4IJIbpaiqK9nqZV1axjGZNQSw6Q8TsnFetCR3bQ==} peerDependencies: - react-native: ~0.75.0 + react-native: '*' '@expo/osascript@2.1.3': resolution: {integrity: sha512-aOEkhPzDsaAfolSswObGiYW0Pf0ROfR9J2NBRLQACdQ6uJlyAMiPF45DVEVknAU9juKh0y8ZyvC9LXqLEJYohA==} @@ -3230,7 +3215,7 @@ packages: '@react-native-community/netinfo@11.3.1': resolution: {integrity: sha512-UBnJxyV0b7i9Moa97Av+HKho1ByzX0DtbJXzUQS5E3xhQs6P2D/Os0iw3ouy7joY1TVd6uIhplPbr7l1SJNaNQ==} peerDependencies: - react-native: '>=0.59' + react-native: 0.74.5 '@react-native-community/slider@4.5.5': resolution: {integrity: sha512-x2N415pg4ZxIltArOKczPwn7JEYh+1OxQ4+hTnafomnMsqs65HZuEWcX+Ch8c5r8V83DiunuQUf5hWGWlw8hQQ==} @@ -3475,7 +3460,7 @@ packages: peerDependencies: '@react-navigation/native': ^6.0.0 react: 18.3.1 - react-native: ~0.75.0 + react-native: 0.74.5 react-native-safe-area-context: '>= 3.0.0' '@react-navigation/native-stack@6.9.26': @@ -3491,7 +3476,7 @@ packages: resolution: {integrity: sha512-mIT9MiL/vMm4eirLcmw2h6h/Nm5FICtnYSdohq4vTLA2FF/6PNhByM7s8ffqoVfE5L0uAa6Xda1B7oddolUiGg==} peerDependencies: react: 18.3.1 - react-native: ~0.75.0 + react-native: 0.74.5 '@react-navigation/routers@6.1.9': resolution: {integrity: sha512-lTM8gSFHSfkJvQkxacGM6VJtBt61ip2XO54aNfswD+KMw6eeZ4oehl7m0me3CR9hnDE4+60iAZR8sAhvCiI3NA==} @@ -3557,10 +3542,6 @@ packages: resolution: {integrity: sha512-o/Mg/Zg21poFsPXuxtPD9sdXq2b/0L+rb9gxU2k1rp1aT+DWmqD0k8v0Ttr2tlMc8l1xXQNA8FLXbL1AdLRmbQ==} engines: {node: '>=18'} - '@sd-jwt/present@0.6.1': - resolution: {integrity: sha512-QRD3TUDLj4PqQNZ70bBxh8FLLrOE9mY8V9qiZrJSsaDOLFs2p1CtZG+v9ig62fxFYJZMf4bWKwYjz+qqGAtxCg==} - engines: {node: '>=16'} - '@sd-jwt/present@0.7.2': resolution: {integrity: sha512-mQV85u2+mLLy2VZ9Wx2zpaB6yTDnbhCfWkP7eeCrzJQHBKAAHko8GrylEFmLKewFIcajS/r4lT/zHOsCkp5pZw==} engines: {node: '>=18'} @@ -3610,40 +3591,34 @@ packages: resolution: {integrity: sha512-kQpk267uxB19X3X2T1mvNMjyvIEonpNSHrMlK5ZaBU6aZxw7wPbpgKJOjHN3+/GPVpXgAV9soVT2oyHpLkLtyw==} engines: {node: '>= 8'} - '@sphereon/did-auth-siop@https://gitpkg.vercel.app/animo/OID4VC/packages/siop-oid4vp?funke': - resolution: {tarball: https://gitpkg.vercel.app/animo/OID4VC/packages/siop-oid4vp?funke} - version: 0.16.0 + '@sphereon/did-auth-siop@0.16.1-fix.173': + resolution: {integrity: sha512-BurhxcEfd91y2o2zy0VAZ9STHRuWRNx/FwhR0jRSG8D7gJPspqiR2cJtdvAvLrKNaznpQSANQHniCgCiDRtjfA==} engines: {node: '>=18'} '@sphereon/did-uni-client@0.6.3': resolution: {integrity: sha512-g7LD7ofbE36slHN7Bhr5dwUrj6t0BuZeXBYJMaVY/pOeL1vJxW1cZHbZqu0NSfOmzyBg4nsYVlgTjyi/Aua2ew==} - '@sphereon/jarm@https://gitpkg.vercel.app/animo/OID4VC/packages/jarm?funke': - resolution: {tarball: https://gitpkg.vercel.app/animo/OID4VC/packages/jarm?funke} - version: 0.16.0 + '@sphereon/jarm@0.16.1-fix.173': + resolution: {integrity: sha512-VYNuNLV+x7hKKcynC8yOJymkXPrtBRQA/Gqj50Wfhl6kx6IoRsx39s/i6xGGYPwyrNTaVGFssKzg0IDcQfxToA==} engines: {node: '>=18'} '@sphereon/kmp-mdl-mdoc@0.2.0-SNAPSHOT.22': resolution: {integrity: sha512-uAZZExVy+ug9JLircejWa5eLtAZ7bnBP6xb7DO2+86LRsHNLh2k2jMWJYxp+iWtGHTsh6RYsZl14ScQLvjiQ/A==} - '@sphereon/oid4vc-common@https://gitpkg.vercel.app/animo/OID4VC/packages/common?funke': - resolution: {tarball: https://gitpkg.vercel.app/animo/OID4VC/packages/common?funke} - version: 0.16.0 + '@sphereon/oid4vc-common@0.16.1-fix.173': + resolution: {integrity: sha512-+AAUvEEFs0vzz1mrgjSgvDkcBtr18d2XEVgJex7QlAqxCKVGfjzZlqL2Q2vOLKYVaXsazhD5LnYiY6B5WMTC3Q==} engines: {node: '>=18'} - '@sphereon/oid4vci-client@https://gitpkg.vercel.app/animo/OID4VC/packages/client?funke': - resolution: {tarball: https://gitpkg.vercel.app/animo/OID4VC/packages/client?funke} - version: 0.16.0 + '@sphereon/oid4vci-client@0.16.1-fix.173': + resolution: {integrity: sha512-t7i+iZwDHTQKeTq+u9NufXoE5Qsrt9bvspSD6uWYjwidQBAtD4LZHuGyHbygOyVAIX+LUMmZA3A2/ciL29Ra9w==} engines: {node: '>=18'} - '@sphereon/oid4vci-common@https://gitpkg.vercel.app/animo/OID4VC/packages/oid4vci-common?funke': - resolution: {tarball: https://gitpkg.vercel.app/animo/OID4VC/packages/oid4vci-common?funke} - version: 0.16.0 + '@sphereon/oid4vci-common@0.16.1-fix.173': + resolution: {integrity: sha512-nSjOoR1SxF5+S10qjHHLG21bWx8MVbDjERag1zWb7ADlZDO8GXgPqzzEvm1BodW7yci5ugiKOyjIdbPMpg9aFQ==} engines: {node: '>=18'} - '@sphereon/oid4vci-issuer@https://gitpkg.vercel.app/animo/OID4VC/packages/issuer?funke': - resolution: {tarball: https://gitpkg.vercel.app/animo/OID4VC/packages/issuer?funke} - version: 0.16.0 + '@sphereon/oid4vci-issuer@0.16.1-fix.173': + resolution: {integrity: sha512-pP1yH5O2Wplypb/lRHU3hKVzj5cbH4XTdC9CqvWYeWpfvrXfEGtI0amoaNC3NyWjR3FO904lwuSpxh28Xc+MLw==} engines: {node: '>=18'} peerDependencies: awesome-qr: ^2.1.5-rc.0 @@ -3654,47 +3629,29 @@ packages: '@sphereon/pex-models@2.3.1': resolution: {integrity: sha512-SByU4cJ0XYA6VZQ/L6lsSiRcFtBPHbFioCeQ4GP7/W/jQ+PSBD7uK2oTnKQ9/0iEiMK/6JYqhKgLs4a9UX3UTQ==} - '@sphereon/pex@5.0.0-unstable.18': - resolution: {integrity: sha512-DOKfmfa549RbX8Bqe4yOE2rjZbCQgoRcHO+i01k+gxubgulPPQvY8k0pmFkMFMgVI5fXCjkI3b3PgQ5u/vpGGw==} + '@sphereon/pex@5.0.0-unstable.24': + resolution: {integrity: sha512-CZc+kr8cJqPsFSpg4kHyamr5oB5xLVP2E5eJ0pbetOfOE2uSxqk0/A8zGazcPhU1zZILrO51hD4vW/hJRgtKJQ==} engines: {node: '>=18'} - '@sphereon/pex@5.0.0-unstable.2': - resolution: {integrity: sha512-mA6lY/OBKKzsh4Jf4btm9Tj4ymVsX6xuVATn85LurD4bt3fhZwNJMkxhFy4tT/QyAtp05E4aaEq0wTVvOjVa7w==} + '@sphereon/pex@5.0.0-unstable.25': + resolution: {integrity: sha512-EUWfGa6t20PPkYf+zbfWXhc1sSWiFNywbRah8R6grJPU738pfwWpZPunSEY3x0CoxAVaSVXn91wZ/sxmgPCFkA==} engines: {node: '>=18'} - '@sphereon/ssi-sdk-ext.did-utils@0.24.1-unstable.112': - resolution: {integrity: sha512-nc0jFPOWg0H20S8m83aQUpNym0Wx0rJCGkgpH6GdK8gBtgza8Y9DvAap1AYZug18WbqPcF6rBjvtIJqAKsSvlQ==} - '@sphereon/ssi-sdk-ext.did-utils@0.24.1-unstable.130': resolution: {integrity: sha512-I+0VjitRjisABWm8RtTPQG57tFwfUS13Wud30OvBoADRxnaA0guUrkS82AYtV6YD0TBHdrd0D6a0RCJwK9SvDg==} - '@sphereon/ssi-sdk-ext.identifier-resolution@0.24.1-unstable.112': - resolution: {integrity: sha512-VBkJjHokFNsQ0wsHUbyCysMuShTOEuK6yrvyW64uOFcB2hzq1J/wi9CewI+YRHv7mnejBlu46uYNycvOKKRcsQ==} - '@sphereon/ssi-sdk-ext.identifier-resolution@0.24.1-unstable.130': resolution: {integrity: sha512-9mY+qgXmbZCC8aic99R7B3vKBHBakDiC6Sktgd7Q9AknR8cCmvdrmTgnOETrLng9L43uNOJnNTMG/4T6LqmtsA==} - '@sphereon/ssi-sdk-ext.jwt-service@0.24.1-unstable.112': - resolution: {integrity: sha512-OrBaSg5wLSehkJ4MyuyDWKD4CRIBERnJqRT0o/y5DbaCF3k02+/lN/rWP+4qwk2w192fIEAExG4L2GwZM/5PLQ==} - '@sphereon/ssi-sdk-ext.jwt-service@0.24.1-unstable.130': resolution: {integrity: sha512-MHLGRmJODEYJyFoXKwlKMYzf48vS5JcUkGk0W4sqmrY1wwcw+ro3l8adIprG37mNuknXBs9Mv0x/tvibE9wwCQ==} - '@sphereon/ssi-sdk-ext.key-manager@0.24.1-unstable.112': - resolution: {integrity: sha512-XdXV4qj+BYTZWyGHduWQxl0mxCYt5CF0Q93p4Thbm2/hjfaAC6aJi2WAXFGTIri95QVbKW1Uscob0CjNCVkWdg==} - '@sphereon/ssi-sdk-ext.key-manager@0.24.1-unstable.130': resolution: {integrity: sha512-O/6NlKmlYRnEyP/mAI2Diu0qptMSqZfVwqog8KAOG/G8JUmktfSQmclBW8RoJ6AD9uY65BGzNk1oAVuuMv4Dog==} - '@sphereon/ssi-sdk-ext.key-utils@0.24.1-unstable.112': - resolution: {integrity: sha512-er6TwGUWxlao2lSP97r1DTFlUXcPSMsIToULOWQJp6wKbvCuvV6pN5luS0qKB/W0/TOUE5kXzFwNx086BPnPRA==} - '@sphereon/ssi-sdk-ext.key-utils@0.24.1-unstable.130': resolution: {integrity: sha512-DCyXW18g1OAuZ+aFHzQGrbZSx793DX94LSFnrWlOTMnYeILmrizuFksUlWSb3lTqQGAqWBC48NoR3I1H6lSMEQ==} - '@sphereon/ssi-sdk-ext.x509-utils@0.24.1-unstable.112': - resolution: {integrity: sha512-bbx2jFoqWhW/xYABVwg3HiUo15yztPt3s+9bJtdB8n4PCjin4Nq3+vFvaHsmu70yAGkbWfsBcBVW6Y3oFtvpAA==} - '@sphereon/ssi-sdk-ext.x509-utils@0.24.1-unstable.130': resolution: {integrity: sha512-JDX8i0WrwONaOivZXB+OxJQGkln7vuSLS61tOYl7M1RyPGixdBYuEuACsdvWf6egYOpaWmhmXZzaAOj18eDddw==} @@ -3704,20 +3661,17 @@ packages: '@sphereon/ssi-sdk.core@0.29.1-unstable.161': resolution: {integrity: sha512-3E/KsjTywT9BzP5bMi41JVTu9nTiu2ekwNSPobF9tAJnHJv+LkjCJ59xA8jtbq/Xe4iq3xRMU17yBvpZXN2W4A==} - '@sphereon/ssi-types@0.29.1-unstable.121': - resolution: {integrity: sha512-g5qt2cRa/9t3WrBWMneGOrwjyU2Mqdh4LlKeO6japli5bgl5D6lim91F++m1iIIhOYP4dqPpk5PLjy9XQlLyEw==} - '@sphereon/ssi-types@0.29.1-unstable.161': resolution: {integrity: sha512-ifMADjk6k0f97/isK/4Qw/PX6n4k+qS5k6mmmH47MTD3KMDddVghoXycsvNw7wObJdLUalHBX630ghr+u21oMg==} '@sphereon/ssi-types@0.30.1': resolution: {integrity: sha512-vbYaxQXb71sOPwDj7TRDlUGfIHKVVs8PiHfImPBgSBshrD7VpEHOrB+EwwavMm5MAQvWK/yblGmzk7FHds7SHA==} - '@sphereon/ssi-types@0.9.0': - resolution: {integrity: sha512-umCr/syNcmvMMbQ+i/r/mwjI1Qw2aFPp9AwBTvTo1ailAVaaJjJGPkkVz1K9/2NZATNdDiQ3A8yGzdVJoKh9pA==} + '@sphereon/ssi-types@0.30.2-next.129': + resolution: {integrity: sha512-F1TDy9S5ajDJDp21cINXseGSux9kGA+x0KScAS+5+B/RdMGRp7bLOM+3YpQw1QGPqKxVc7JAd2gAn7AI0pAkZA==} - '@sphereon/wellknown-dids-client@0.1.3': - resolution: {integrity: sha512-TAT24L3RoXD8ocrkTcsz7HuJmgjNjdoV6IXP1p3DdaI/GqkynytXE3J1+F7vUFMRYwY5nW2RaXSgDQhrFJemaA==} + '@sphereon/ssi-types@0.30.2-next.135': + resolution: {integrity: sha512-YLQfFMPUlOJUxHbOS9v01nG3cgLwTk3d95/rTnOmEQx9kXgXjoXdvt7D0uGcMRL3RHeQ9biT/jWY//mDvCirVQ==} '@sqltools/formatter@1.2.5': resolution: {integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==} @@ -3815,7 +3769,7 @@ packages: resolution: {integrity: sha512-vMIWVK+bVAwmHl9d3V/m5RkgisrB1kntgVwUngipMz9I0QqdMxtV/ctLrE7F7yPrS7742q5vAUfouBi+mL3Xaw==} peerDependencies: react: 18.3.1 - react-native: 0.74.5 + react-native: '*' '@storybook/addon-ondevice-backgrounds@7.6.20': resolution: {integrity: sha512-FxwwEKT+kkFCaxRudCHvMhV7b5nINi7GsJcbct1JBbNh9BEP03GRKvJQwpPuZjLjLkIqOECVIWlaCPVjrLAs+g==} @@ -5405,7 +5359,7 @@ packages: peerDependencies: expo: '*' react: 18.3.1 - react-native: 0.74.5 + react-native: '*' bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} @@ -5762,10 +5716,9 @@ packages: credo-ts-didweb-anoncreds@0.0.1-alpha.13: resolution: {integrity: sha512-0x8lipY82+ALdTu+gVRe6RKvoJRvn2/Bhj/klk8PhmvWAAQXVMvzVOmUrw0BLTQ+19+koY1yufltglWXxRMxqA==} - version: 0.0.1-alpha.13 peerDependencies: - '@credo-ts/anoncreds': https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/anoncreds?funke - '@credo-ts/core': https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/core?funke + '@credo-ts/anoncreds': 0.5.13-alpha-20241107100446 + '@credo-ts/core': 0.5.13-alpha-20241107100446 '@hyperledger/anoncreds-shared': ^0.2.1 cross-env@7.0.3: @@ -8981,7 +8934,7 @@ packages: react-native-get-random-values@1.11.0: resolution: {integrity: sha512-4BTbDbRmS7iPdhYLRcz3PGFIpFJBwNZg9g42iwa2P6FOv9vZj/xJc678RZXnLNZzd0qd7Q3CCF6Yd+CU2eoXKQ==} peerDependencies: - react-native: 0.74.5 + react-native: '>=0.56' react-native-helmet-async@2.0.4: resolution: {integrity: sha512-m3CkXWss6B1dd6mCMleLpzDCJJGGaHOLQsUzZv8kAASJmMfmVT4d2fx375iXKTRWT25ThBfae3dECuX5cq/8hg==} @@ -9022,7 +8975,7 @@ packages: resolution: {integrity: sha512-7Bx23ZdFNJJdVXyW9BJmFWdI5kccjnpotzmL3exkV0irUKTmj51jesxpn5sqtgVdYFE4IUVoGzdS+8qg6Ua9BA==} peerDependencies: react: 18.3.1 - react-native: '0.76' + react-native: '>=0.63.4' react-native-svg: '>=13.2.0' react-native-reanimated@3.10.1: @@ -9633,10 +9586,6 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} - string.prototype.matchall@4.0.11: - resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} - engines: {node: '>= 0.4'} - string.prototype.trim@1.2.9: resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} engines: {node: '>= 0.4'} @@ -11797,10 +11746,10 @@ snapshots: '@cosmjs/utils@0.30.1': {} - '@credo-ts/anoncreds@https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/anoncreds?funke(@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))(typescript@5.3.3)(web-streams-polyfill@3.3.3)': + '@credo-ts/anoncreds@0.5.13-alpha-20241107100446(@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))(typescript@5.3.3)(web-streams-polyfill@3.3.3)': dependencies: '@astronautlabs/jsonpath': 1.1.2 - '@credo-ts/core': https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/core?funke(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/core': 0.5.13-alpha-20241107100446(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) '@hyperledger/anoncreds-shared': 0.2.4 '@sphereon/pex-models': 2.3.1 big-integer: 1.6.52 @@ -11809,34 +11758,17 @@ snapshots: class-validator: 0.14.1 reflect-metadata: 0.1.14 transitivePeerDependencies: - - '@google-cloud/spanner' - - '@sap/hana-client' - - better-sqlite3 - domexception - encoding - expo - - hdb-pool - - ioredis - - mongodb - - mssql - - mysql2 - - oracledb - - pg - - pg-native - - pg-query-stream - react-native - - redis - - sql.js - - sqlite3 - supports-color - - ts-node - - typeorm-aurora-data-api-driver - typescript - web-streams-polyfill - '@credo-ts/askar@https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/askar?funke(@animo-id/expo-secure-environment@0.1.0-alpha.5(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))(typescript@5.3.3)(web-streams-polyfill@3.3.3)': + '@credo-ts/askar@0.5.13-alpha-20241107100446(@animo-id/expo-secure-environment@0.1.0-alpha.5(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))(typescript@5.3.3)(web-streams-polyfill@3.3.3)': dependencies: - '@credo-ts/core': https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/core?funke(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/core': 0.5.13-alpha-20241107100446(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) '@hyperledger/aries-askar-shared': 0.2.3 bn.js: 5.2.1 class-transformer: 0.5.1 @@ -11846,76 +11778,42 @@ snapshots: optionalDependencies: '@animo-id/expo-secure-environment': 0.1.0-alpha.5(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: - - '@google-cloud/spanner' - - '@sap/hana-client' - - better-sqlite3 - domexception - encoding - expo - - hdb-pool - - ioredis - - mongodb - - mssql - - mysql2 - - oracledb - - pg - - pg-native - - pg-query-stream - react-native - - redis - - sql.js - - sqlite3 - supports-color - - ts-node - - typeorm-aurora-data-api-driver - typescript - web-streams-polyfill - '@credo-ts/cheqd@https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/cheqd?funke(@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))(typescript@5.3.3)(web-streams-polyfill@3.3.3)': + '@credo-ts/cheqd@0.5.13-alpha-20241107100446(@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))(typescript@5.3.3)(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': https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/anoncreds?funke(@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))(typescript@5.3.3)(web-streams-polyfill@3.3.3) - '@credo-ts/core': https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/core?funke(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/anoncreds': 0.5.13-alpha-20241107100446(@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))(typescript@5.3.3)(web-streams-polyfill@3.3.3) + '@credo-ts/core': 0.5.13-alpha-20241107100446(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) '@stablelib/ed25519': 1.0.3 class-transformer: 0.5.1 class-validator: 0.14.1 rxjs: 7.8.1 tsyringe: 4.8.0 transitivePeerDependencies: - - '@google-cloud/spanner' - '@hyperledger/anoncreds-shared' - - '@sap/hana-client' - - better-sqlite3 - bufferutil - debug - domexception - encoding - expo - - hdb-pool - - ioredis - - mongodb - - mssql - - mysql2 - - oracledb - - pg - - pg-native - - pg-query-stream - react-native - - redis - - sql.js - - sqlite3 - supports-color - - ts-node - - typeorm-aurora-data-api-driver - typescript - utf-8-validate - web-streams-polyfill - '@credo-ts/core@https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/core?funke(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/core@0.5.13-alpha-20241107100446(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: '@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) '@digitalcredentials/jsonld-signatures': 9.4.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) @@ -11927,16 +11825,16 @@ snapshots: '@peculiar/asn1-schema': 2.3.13 '@peculiar/asn1-x509': 2.3.13 '@peculiar/x509': 1.12.3 - '@protokoll/mdoc-client': 0.2.36(patch_hash=snxiw6ugrvjo6kqm54rtm6qs7m)(typescript@5.3.3) + '@protokoll/mdoc-client': 0.2.36(patch_hash=hjh76hcm7u7iov3yy6qyowzflu)(typescript@5.3.3) '@sd-jwt/core': 0.7.2 '@sd-jwt/decode': 0.7.2 '@sd-jwt/jwt-status-list': 0.7.2 '@sd-jwt/sd-jwt-vc': 0.7.2 '@sd-jwt/types': 0.7.2 '@sd-jwt/utils': 0.7.2 - '@sphereon/pex': 5.0.0-unstable.2 + '@sphereon/pex': 5.0.0-unstable.25 '@sphereon/pex-models': 2.3.1 - '@sphereon/ssi-types': 0.30.1 + '@sphereon/ssi-types': 0.30.2-next.135 '@stablelib/ed25519': 1.0.3 '@types/ws': 8.5.12 abort-controller: 3.0.0 @@ -11960,32 +11858,15 @@ snapshots: web-did-resolver: 2.0.27 webcrypto-core: 1.8.1 transitivePeerDependencies: - - '@google-cloud/spanner' - - '@sap/hana-client' - - better-sqlite3 - domexception - encoding - expo - - hdb-pool - - ioredis - - mongodb - - mssql - - mysql2 - - oracledb - - pg - - pg-native - - pg-query-stream - react-native - - redis - - sql.js - - sqlite3 - supports-color - - ts-node - - typeorm-aurora-data-api-driver - typescript - web-streams-polyfill - '@credo-ts/core@https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/core?funke(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))(typescript@5.3.3)(web-streams-polyfill@3.3.3)': + '@credo-ts/core@0.5.13-alpha-20241107100446(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))(typescript@5.3.3)(web-streams-polyfill@3.3.3)': dependencies: '@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) '@digitalcredentials/jsonld-signatures': 9.4.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) @@ -11997,16 +11878,16 @@ snapshots: '@peculiar/asn1-schema': 2.3.13 '@peculiar/asn1-x509': 2.3.13 '@peculiar/x509': 1.12.3 - '@protokoll/mdoc-client': 0.2.36(patch_hash=snxiw6ugrvjo6kqm54rtm6qs7m)(typescript@5.3.3) + '@protokoll/mdoc-client': 0.2.36(patch_hash=hjh76hcm7u7iov3yy6qyowzflu)(typescript@5.3.3) '@sd-jwt/core': 0.7.2 '@sd-jwt/decode': 0.7.2 '@sd-jwt/jwt-status-list': 0.7.2 '@sd-jwt/sd-jwt-vc': 0.7.2 '@sd-jwt/types': 0.7.2 '@sd-jwt/utils': 0.7.2 - '@sphereon/pex': 5.0.0-unstable.2 + '@sphereon/pex': 5.0.0-unstable.25 '@sphereon/pex-models': 2.3.1 - '@sphereon/ssi-types': 0.30.1 + '@sphereon/ssi-types': 0.30.2-next.135 '@stablelib/ed25519': 1.0.3 '@types/ws': 8.5.12 abort-controller: 3.0.0 @@ -12030,72 +11911,38 @@ snapshots: web-did-resolver: 2.0.27 webcrypto-core: 1.8.1 transitivePeerDependencies: - - '@google-cloud/spanner' - - '@sap/hana-client' - - better-sqlite3 - domexception - encoding - expo - - hdb-pool - - ioredis - - mongodb - - mssql - - mysql2 - - oracledb - - pg - - pg-native - - pg-query-stream - react-native - - redis - - sql.js - - sqlite3 - supports-color - - ts-node - - typeorm-aurora-data-api-driver - typescript - web-streams-polyfill - '@credo-ts/indy-vdr@https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/indy-vdr?funke(@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))(typescript@5.3.3)(web-streams-polyfill@3.3.3)': + '@credo-ts/indy-vdr@0.5.13-alpha-20241107100446(@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))(typescript@5.3.3)(web-streams-polyfill@3.3.3)': dependencies: - '@credo-ts/anoncreds': https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/anoncreds?funke(@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))(typescript@5.3.3)(web-streams-polyfill@3.3.3) - '@credo-ts/core': https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/core?funke(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/anoncreds': 0.5.13-alpha-20241107100446(@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))(typescript@5.3.3)(web-streams-polyfill@3.3.3) + '@credo-ts/core': 0.5.13-alpha-20241107100446(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) '@hyperledger/indy-vdr-shared': 0.2.2 transitivePeerDependencies: - - '@google-cloud/spanner' - '@hyperledger/anoncreds-shared' - - '@sap/hana-client' - - better-sqlite3 - domexception - encoding - expo - - hdb-pool - - ioredis - - mongodb - - mssql - - mysql2 - - oracledb - - pg - - pg-native - - pg-query-stream - react-native - - redis - - sql.js - - sqlite3 - supports-color - - ts-node - - typeorm-aurora-data-api-driver - typescript - web-streams-polyfill - '@credo-ts/openid4vc@https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/openid4vc?funke(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.5.13-alpha-20241107100446(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: - '@credo-ts/core': https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/core?funke(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) - '@sphereon/did-auth-siop': https://gitpkg.vercel.app/animo/OID4VC/packages/siop-oid4vp?funke(typescript@5.3.3) - '@sphereon/oid4vc-common': https://gitpkg.vercel.app/animo/OID4VC/packages/common?funke - '@sphereon/oid4vci-client': https://gitpkg.vercel.app/animo/OID4VC/packages/client?funke - '@sphereon/oid4vci-common': https://gitpkg.vercel.app/animo/OID4VC/packages/oid4vci-common?funke - '@sphereon/oid4vci-issuer': https://gitpkg.vercel.app/animo/OID4VC/packages/issuer?funke - '@sphereon/ssi-types': 0.30.1 + '@credo-ts/core': 0.5.13-alpha-20241107100446(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) + '@sphereon/did-auth-siop': 0.16.1-fix.173(typescript@5.3.3) + '@sphereon/oid4vc-common': 0.16.1-fix.173 + '@sphereon/oid4vci-client': 0.16.1-fix.173 + '@sphereon/oid4vci-common': 0.16.1-fix.173 + '@sphereon/oid4vci-issuer': 0.16.1-fix.173 + '@sphereon/ssi-types': 0.30.2-next.135 class-transformer: 0.5.1 rxjs: 7.8.1 transitivePeerDependencies: @@ -12125,75 +11972,41 @@ snapshots: - typescript - web-streams-polyfill - '@credo-ts/question-answer@https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/question-answer?funke(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@0.5.13-alpha-20241107100446(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: - '@credo-ts/core': https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/core?funke(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/core': 0.5.13-alpha-20241107100446(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) class-transformer: 0.5.1 class-validator: 0.14.1 rxjs: 7.8.1 transitivePeerDependencies: - - '@google-cloud/spanner' - - '@sap/hana-client' - - better-sqlite3 - domexception - encoding - expo - - hdb-pool - - ioredis - - mongodb - - mssql - - mysql2 - - oracledb - - pg - - pg-native - - pg-query-stream - react-native - - redis - - sql.js - - sqlite3 - supports-color - - ts-node - - typeorm-aurora-data-api-driver - typescript - web-streams-polyfill - '@credo-ts/react-hooks@0.6.1(@credo-ts/core@https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/core?funke(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@https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/question-answer?funke(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))(react@18.3.1)': + '@credo-ts/react-hooks@0.6.1(@credo-ts/core@0.5.13-alpha-20241107100446(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@0.5.13-alpha-20241107100446(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))(react@18.3.1)': dependencies: - '@credo-ts/core': https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/core?funke(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': https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/question-answer?funke(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/core': 0.5.13-alpha-20241107100446(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': 0.5.13-alpha-20241107100446(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) react: 18.3.1 rxjs: 7.8.1 - '@credo-ts/react-native@https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/react-native?funke(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))(typescript@5.3.3)(web-streams-polyfill@3.3.3)': + '@credo-ts/react-native@0.5.13-alpha-20241107100446(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))(typescript@5.3.3)(web-streams-polyfill@3.3.3)': dependencies: '@azure/core-asynciterator-polyfill': 1.0.2 - '@credo-ts/core': https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/core?funke(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/core': 0.5.13-alpha-20241107100446(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) 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)) 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)) transitivePeerDependencies: - - '@google-cloud/spanner' - - '@sap/hana-client' - - better-sqlite3 - domexception - encoding - expo - - hdb-pool - - ioredis - - mongodb - - mssql - - mysql2 - - oracledb - - pg - - pg-native - - pg-query-stream - - redis - - sql.js - - sqlite3 - supports-color - - ts-node - - typeorm-aurora-data-api-driver - typescript - web-streams-polyfill @@ -13828,7 +13641,7 @@ snapshots: transitivePeerDependencies: - typescript - '@protokoll/mdoc-client@0.2.36(patch_hash=snxiw6ugrvjo6kqm54rtm6qs7m)(typescript@5.3.3)': + '@protokoll/mdoc-client@0.2.36(patch_hash=hjh76hcm7u7iov3yy6qyowzflu)(typescript@5.3.3)': dependencies: '@protokoll/core': 0.2.36(typescript@5.3.3) compare-versions: 6.1.1 @@ -15250,12 +15063,6 @@ snapshots: base64url: 3.0.1 pako: 2.1.0 - '@sd-jwt/present@0.6.1': - dependencies: - '@sd-jwt/decode': 0.6.1 - '@sd-jwt/types': 0.6.1 - '@sd-jwt/utils': 0.6.1 - '@sd-jwt/present@0.7.2': dependencies: '@sd-jwt/decode': 0.7.2 @@ -15307,17 +15114,14 @@ snapshots: '@sovpro/delimited-stream@1.1.0': {} - '@sphereon/did-auth-siop@https://gitpkg.vercel.app/animo/OID4VC/packages/siop-oid4vp?funke(typescript@5.3.3)': + '@sphereon/did-auth-siop@0.16.1-fix.173(typescript@5.3.3)': dependencies: '@astronautlabs/jsonpath': 1.1.2 - '@sphereon/did-uni-client': 0.6.3 - '@sphereon/jarm': https://gitpkg.vercel.app/animo/OID4VC/packages/jarm?funke(typescript@5.3.3) - '@sphereon/kmp-mdl-mdoc': 0.2.0-SNAPSHOT.22 - '@sphereon/oid4vc-common': https://gitpkg.vercel.app/animo/OID4VC/packages/common?funke - '@sphereon/pex': 5.0.0-unstable.18 + '@sphereon/jarm': 0.16.1-fix.173(typescript@5.3.3) + '@sphereon/oid4vc-common': 0.16.1-fix.173 + '@sphereon/pex': 5.0.0-unstable.24 '@sphereon/pex-models': 2.3.1 - '@sphereon/ssi-types': 0.30.1 - '@sphereon/wellknown-dids-client': 0.1.3 + '@sphereon/ssi-types': 0.30.2-next.129 cross-fetch: 4.0.0 debug: 4.3.7 events: 3.3.0 @@ -15355,9 +15159,9 @@ snapshots: transitivePeerDependencies: - encoding - '@sphereon/jarm@https://gitpkg.vercel.app/animo/OID4VC/packages/jarm?funke(typescript@5.3.3)': + '@sphereon/jarm@0.16.1-fix.173(typescript@5.3.3)': dependencies: - '@sphereon/oid4vc-common': https://gitpkg.vercel.app/animo/OID4VC/packages/common?funke + '@sphereon/oid4vc-common': 0.16.1-fix.173 valibot: 0.42.1(typescript@5.3.3) transitivePeerDependencies: - '@google-cloud/spanner' @@ -15387,7 +15191,7 @@ snapshots: '@js-joda/timezone': 2.3.0(@js-joda/core@5.6.3) format-util: 1.0.5 - '@sphereon/oid4vc-common@https://gitpkg.vercel.app/animo/OID4VC/packages/common?funke': + '@sphereon/oid4vc-common@0.16.1-fix.173': dependencies: '@sphereon/ssi-types': 0.30.1 jwt-decode: 4.0.0 @@ -15415,10 +15219,10 @@ snapshots: - ts-node - typeorm-aurora-data-api-driver - '@sphereon/oid4vci-client@https://gitpkg.vercel.app/animo/OID4VC/packages/client?funke': + '@sphereon/oid4vci-client@0.16.1-fix.173': dependencies: - '@sphereon/oid4vc-common': https://gitpkg.vercel.app/animo/OID4VC/packages/common?funke - '@sphereon/oid4vci-common': https://gitpkg.vercel.app/animo/OID4VC/packages/oid4vci-common?funke + '@sphereon/oid4vc-common': 0.16.1-fix.173 + '@sphereon/oid4vci-common': 0.16.1-fix.173 '@sphereon/ssi-types': 0.30.1 cross-fetch: 3.1.8 debug: 4.3.7 @@ -15443,9 +15247,9 @@ snapshots: - ts-node - typeorm-aurora-data-api-driver - '@sphereon/oid4vci-common@https://gitpkg.vercel.app/animo/OID4VC/packages/oid4vci-common?funke': + '@sphereon/oid4vci-common@0.16.1-fix.173': dependencies: - '@sphereon/oid4vc-common': https://gitpkg.vercel.app/animo/OID4VC/packages/common?funke + '@sphereon/oid4vc-common': 0.16.1-fix.173 '@sphereon/ssi-types': 0.30.1 cross-fetch: 3.1.8 debug: 4.3.7 @@ -15473,10 +15277,10 @@ snapshots: - ts-node - typeorm-aurora-data-api-driver - '@sphereon/oid4vci-issuer@https://gitpkg.vercel.app/animo/OID4VC/packages/issuer?funke': + '@sphereon/oid4vci-issuer@0.16.1-fix.173': dependencies: - '@sphereon/oid4vc-common': https://gitpkg.vercel.app/animo/OID4VC/packages/common?funke - '@sphereon/oid4vci-common': https://gitpkg.vercel.app/animo/OID4VC/packages/oid4vci-common?funke + '@sphereon/oid4vc-common': 0.16.1-fix.173 + '@sphereon/oid4vci-common': 0.16.1-fix.173 '@sphereon/ssi-types': 0.30.1 uuid: 9.0.1 transitivePeerDependencies: @@ -15502,112 +15306,37 @@ snapshots: '@sphereon/pex-models@2.3.1': {} - '@sphereon/pex@5.0.0-unstable.18': + '@sphereon/pex@5.0.0-unstable.24': dependencies: '@astronautlabs/jsonpath': 1.1.2 '@sd-jwt/decode': 0.7.2 '@sd-jwt/present': 0.7.2 '@sd-jwt/types': 0.7.2 '@sphereon/pex-models': 2.3.1 - '@sphereon/ssi-types': 0.30.1 + '@sphereon/ssi-types': 0.30.2-next.129 ajv: 8.17.1 ajv-formats: 2.1.1(ajv@8.17.1) jwt-decode: 3.1.2 nanoid: 3.3.7 uint8arrays: 3.1.1 transitivePeerDependencies: - - '@google-cloud/spanner' - - '@sap/hana-client' - - better-sqlite3 - - encoding - - hdb-pool - - ioredis - - mongodb - - mssql - - mysql2 - - oracledb - - pg - - pg-native - - pg-query-stream - - redis - - sql.js - - sqlite3 - supports-color - - ts-node - - typeorm-aurora-data-api-driver - '@sphereon/pex@5.0.0-unstable.2': + '@sphereon/pex@5.0.0-unstable.25': dependencies: '@astronautlabs/jsonpath': 1.1.2 - '@sd-jwt/decode': 0.6.1 - '@sd-jwt/present': 0.6.1 - '@sd-jwt/types': 0.6.1 + '@sd-jwt/decode': 0.7.2 + '@sd-jwt/present': 0.7.2 + '@sd-jwt/types': 0.7.2 '@sphereon/pex-models': 2.3.1 - '@sphereon/ssi-types': 0.29.1-unstable.121 + '@sphereon/ssi-types': 0.30.2-next.135 ajv: 8.17.1 ajv-formats: 2.1.1(ajv@8.17.1) jwt-decode: 3.1.2 nanoid: 3.3.7 - string.prototype.matchall: 4.0.11 - uint8arrays: 3.1.1 - transitivePeerDependencies: - - '@google-cloud/spanner' - - '@sap/hana-client' - - better-sqlite3 - - encoding - - hdb-pool - - ioredis - - mongodb - - mssql - - mysql2 - - oracledb - - pg - - pg-native - - pg-query-stream - - redis - - sql.js - - sqlite3 - - supports-color - - ts-node - - typeorm-aurora-data-api-driver - - '@sphereon/ssi-sdk-ext.did-utils@0.24.1-unstable.112': - dependencies: - '@ethersproject/networks': 5.7.1 - '@ethersproject/transactions': 5.7.0 - '@sphereon/did-uni-client': 0.6.3 - '@sphereon/ssi-sdk-ext.key-utils': 0.24.1-unstable.112 - '@sphereon/ssi-sdk-ext.x509-utils': 0.24.1-unstable.112 - '@sphereon/ssi-sdk.agent-config': 0.29.1-unstable.161 - '@sphereon/ssi-sdk.core': 0.29.1-unstable.161 - '@sphereon/ssi-types': 0.29.1-unstable.161 - '@stablelib/ed25519': 1.0.3 - '@veramo/core': 4.2.0 - '@veramo/utils': 4.2.0 - did-jwt: 6.11.6 - did-resolver: 4.1.0 - elliptic: 6.6.0 uint8arrays: 3.1.1 transitivePeerDependencies: - - '@google-cloud/spanner' - - '@sap/hana-client' - - better-sqlite3 - - encoding - - hdb-pool - - ioredis - - mongodb - - mssql - - mysql2 - - oracledb - - pg - - pg-native - - pg-query-stream - - redis - - sql.js - - sqlite3 - supports-color - - ts-node - - typeorm-aurora-data-api-driver '@sphereon/ssi-sdk-ext.did-utils@0.24.1-unstable.130': dependencies: @@ -15647,39 +15376,6 @@ snapshots: - ts-node - typeorm-aurora-data-api-driver - '@sphereon/ssi-sdk-ext.identifier-resolution@0.24.1-unstable.112': - dependencies: - '@sphereon/ssi-sdk-ext.did-utils': 0.24.1-unstable.112 - '@sphereon/ssi-sdk-ext.key-utils': 0.24.1-unstable.112 - '@sphereon/ssi-sdk-ext.x509-utils': 0.24.1-unstable.112 - '@sphereon/ssi-sdk.agent-config': 0.29.1-unstable.161 - '@sphereon/ssi-types': 0.29.1-unstable.161 - '@veramo/core': 4.2.0 - '@veramo/utils': 4.2.0 - debug: 4.3.7 - pkijs: 3.2.4 - uint8arrays: 3.1.1 - transitivePeerDependencies: - - '@google-cloud/spanner' - - '@sap/hana-client' - - better-sqlite3 - - encoding - - hdb-pool - - ioredis - - mongodb - - mssql - - mysql2 - - oracledb - - pg - - pg-native - - pg-query-stream - - redis - - sql.js - - sqlite3 - - supports-color - - ts-node - - typeorm-aurora-data-api-driver - '@sphereon/ssi-sdk-ext.identifier-resolution@0.24.1-unstable.130': dependencies: '@sphereon/ssi-sdk-ext.did-utils': 0.24.1-unstable.130 @@ -15713,41 +15409,6 @@ snapshots: - ts-node - typeorm-aurora-data-api-driver - '@sphereon/ssi-sdk-ext.jwt-service@0.24.1-unstable.112': - dependencies: - '@sphereon/ssi-sdk-ext.did-utils': 0.24.1-unstable.112 - '@sphereon/ssi-sdk-ext.identifier-resolution': 0.24.1-unstable.112 - '@sphereon/ssi-sdk-ext.key-manager': 0.24.1-unstable.112 - '@sphereon/ssi-sdk-ext.key-utils': 0.24.1-unstable.112 - '@sphereon/ssi-sdk-ext.x509-utils': 0.24.1-unstable.112 - '@sphereon/ssi-sdk.agent-config': 0.29.1-unstable.161 - '@sphereon/ssi-types': 0.29.1-unstable.161 - '@veramo/core': 4.2.0 - '@veramo/utils': 4.2.0 - debug: 4.3.7 - jwt-decode: 4.0.0 - uint8arrays: 3.1.1 - transitivePeerDependencies: - - '@google-cloud/spanner' - - '@sap/hana-client' - - better-sqlite3 - - encoding - - hdb-pool - - ioredis - - mongodb - - mssql - - mysql2 - - oracledb - - pg - - pg-native - - pg-query-stream - - redis - - sql.js - - sqlite3 - - supports-color - - ts-node - - typeorm-aurora-data-api-driver - '@sphereon/ssi-sdk-ext.jwt-service@0.24.1-unstable.130': dependencies: '@sphereon/ssi-sdk-ext.did-utils': 0.24.1-unstable.130 @@ -15783,14 +15444,6 @@ snapshots: - ts-node - typeorm-aurora-data-api-driver - '@sphereon/ssi-sdk-ext.key-manager@0.24.1-unstable.112': - dependencies: - '@veramo/core': 4.2.0 - '@veramo/key-manager': 4.2.0 - uint8arrays: 3.1.1 - transitivePeerDependencies: - - supports-color - '@sphereon/ssi-sdk-ext.key-manager@0.24.1-unstable.130': dependencies: '@veramo/core': 4.2.0 @@ -15799,28 +15452,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@sphereon/ssi-sdk-ext.key-utils@0.24.1-unstable.112': - dependencies: - '@ethersproject/random': 5.7.0 - '@sphereon/ssi-sdk-ext.x509-utils': 0.24.1-unstable.112 - '@sphereon/ssi-types': 0.29.1-unstable.161 - '@stablelib/ed25519': 1.0.3 - '@stablelib/sha256': 1.0.1 - '@stablelib/sha512': 1.0.1 - '@trust/keyto': 1.0.1 - '@veramo/core': 4.2.0 - base64url: 3.0.1 - debug: 4.3.7 - did-resolver: 4.1.0 - elliptic: 6.6.0 - lodash.isplainobject: 4.0.6 - multiformats: 9.9.0 - uint8arrays: 3.1.1 - varint: 6.0.0 - web-encoding: 1.1.5 - transitivePeerDependencies: - - supports-color - '@sphereon/ssi-sdk-ext.key-utils@0.24.1-unstable.130': dependencies: '@ethersproject/random': 5.7.0 @@ -15843,16 +15474,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@sphereon/ssi-sdk-ext.x509-utils@0.24.1-unstable.112': - dependencies: - '@trust/keyto': 1.0.1 - debug: 4.3.7 - js-x509-utils: 1.0.7 - pkijs: 3.2.4 - uint8arrays: 3.1.1 - transitivePeerDependencies: - - supports-color - '@sphereon/ssi-sdk-ext.x509-utils@0.24.1-unstable.130': dependencies: '@trust/keyto': 1.0.1 @@ -15903,35 +15524,6 @@ snapshots: - encoding - supports-color - '@sphereon/ssi-types@0.29.1-unstable.121': - dependencies: - '@sd-jwt/decode': 0.6.1 - '@sphereon/kmp-mdl-mdoc': 0.2.0-SNAPSHOT.22 - '@sphereon/ssi-sdk-ext.jwt-service': 0.24.1-unstable.112 - debug: 4.3.7 - events: 3.3.0 - jwt-decode: 3.1.2 - transitivePeerDependencies: - - '@google-cloud/spanner' - - '@sap/hana-client' - - better-sqlite3 - - encoding - - hdb-pool - - ioredis - - mongodb - - mssql - - mysql2 - - oracledb - - pg - - pg-native - - pg-query-stream - - redis - - sql.js - - sqlite3 - - supports-color - - ts-node - - typeorm-aurora-data-api-driver - '@sphereon/ssi-types@0.29.1-unstable.161': dependencies: '@sd-jwt/decode': 0.6.1 @@ -15970,17 +15562,25 @@ snapshots: - ts-node - typeorm-aurora-data-api-driver - '@sphereon/ssi-types@0.9.0': + '@sphereon/ssi-types@0.30.2-next.129': dependencies: + '@sd-jwt/decode': 0.7.2 + '@sphereon/kmp-mdl-mdoc': 0.2.0-SNAPSHOT.22 + debug: 4.3.7 + events: 3.3.0 jwt-decode: 3.1.2 + transitivePeerDependencies: + - supports-color - '@sphereon/wellknown-dids-client@0.1.3': + '@sphereon/ssi-types@0.30.2-next.135': dependencies: - '@sphereon/ssi-types': 0.9.0 - cross-fetch: 3.1.8 + '@sd-jwt/decode': 0.7.2 + '@sphereon/kmp-mdl-mdoc': 0.2.0-SNAPSHOT.22 + debug: 4.3.7 + events: 3.3.0 jwt-decode: 3.1.2 transitivePeerDependencies: - - encoding + - supports-color '@sqltools/formatter@1.2.5': {} @@ -18028,7 +17628,7 @@ snapshots: '@types/node-fetch@2.6.11': dependencies: - '@types/node': 18.19.63 + '@types/node': 22.8.6 form-data: 4.0.1 '@types/node-forge@1.3.11': @@ -19224,10 +18824,10 @@ snapshots: credentials-context@2.0.0: {} - credo-ts-didweb-anoncreds@0.0.1-alpha.13(@credo-ts/anoncreds@https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/anoncreds?funke(@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))(typescript@5.3.3)(web-streams-polyfill@3.3.3))(@credo-ts/core@https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/core?funke(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))(@hyperledger/anoncreds-shared@0.2.4): + credo-ts-didweb-anoncreds@0.0.1-alpha.13(@credo-ts/anoncreds@0.5.13-alpha-20241107100446(@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))(typescript@5.3.3)(web-streams-polyfill@3.3.3))(@credo-ts/core@0.5.13-alpha-20241107100446(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))(@hyperledger/anoncreds-shared@0.2.4): dependencies: - '@credo-ts/anoncreds': https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/anoncreds?funke(@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))(typescript@5.3.3)(web-streams-polyfill@3.3.3) - '@credo-ts/core': https://gitpkg.vercel.app/animo/aries-framework-javascript/packages/core?funke(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/anoncreds': 0.5.13-alpha-20241107100446(@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))(typescript@5.3.3)(web-streams-polyfill@3.3.3) + '@credo-ts/core': 0.5.13-alpha-20241107100446(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) '@hyperledger/anoncreds-shared': 0.2.4 canonicalize: 1.0.8 query-string: 7.1.3 @@ -21443,7 +21043,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 18.19.63 + '@types/node': 22.8.6 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -24134,21 +23734,6 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.0 - string.prototype.matchall@4.0.11: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-symbols: 1.0.3 - internal-slot: 1.0.7 - regexp.prototype.flags: 1.5.3 - set-function-name: 2.0.2 - side-channel: 1.0.6 - string.prototype.trim@1.2.9: dependencies: call-bind: 1.0.7