@procivis/react-native-one-core 1.56306.0 → 1.60807.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -162,7 +162,7 @@ Support for the recently published [FIPS-204][fips] is planned for the near futu
162
162
  - [OID4VP over BLE][ble]; optimized version of Draft 00
163
163
  - OID4VP over MQTT; proprietary adaptation of "OID4VP over BLE" via MQTT channel
164
164
  - ISO/IEC 18013
165
- - [18013-5][iso5]: QR code engagement and offline device retrieval over BLE
165
+ - [18013-5][iso5]: Device engagement using either NFC or QR Code, data retrieval using BLE
166
166
  - [18013-7][iso7]: Online data retrieval via OID4VP
167
167
 
168
168
  ### Key storage
@@ -70,9 +70,10 @@ dependencies {
70
70
  implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1")
71
71
  implementation 'com.facebook.react:react-native:+'
72
72
 
73
- releaseImplementation(name: 'onecore-release', ext: 'aar')
74
- debugImplementation(name: 'onecore-debug', ext: 'aar')
75
- implementation 'net.java.dev.jna:jna:5.13.0@aar'
73
+ releaseApi(name: 'onecore-release', ext: 'aar')
74
+ debugApi(name: 'onecore-debug', ext: 'aar')
75
+ implementation 'net.java.dev.jna:jna:5.17.0@aar'
76
+ implementation 'org.greenrobot:eventbus:3.3.1'
76
77
  implementation("org.jetbrains.kotlin:kotlin-reflect:${safeExtGet('kotlinVersion', '1.9.0')}")
77
78
 
78
79
  implementation(name: 'core-reactnative-compatible-2025.0305.1', ext: 'aar')
@@ -70,9 +70,10 @@ dependencies {
70
70
  implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1")
71
71
  implementation 'com.facebook.react:react-native:+'
72
72
 
73
- releaseImplementation(name: 'onecore-release', ext: 'aar')
74
- debugImplementation(name: 'onecore-debug', ext: 'aar')
75
- implementation 'net.java.dev.jna:jna:5.13.0@aar'
73
+ releaseApi(name: 'onecore-release', ext: 'aar')
74
+ debugApi(name: 'onecore-debug', ext: 'aar')
75
+ implementation 'net.java.dev.jna:jna:5.17.0@aar'
76
+ implementation 'org.greenrobot:eventbus:3.3.1'
76
77
  implementation("org.jetbrains.kotlin:kotlin-reflect:${safeExtGet('kotlinVersion', '1.9.0')}")
77
78
  }
78
79
 
@@ -1,5 +1,7 @@
1
1
  package ch.procivis.one.core
2
2
 
3
+ import ch.procivis.one.core.nfc.HCE as NfcHCE
4
+ import ch.procivis.one.core.nfc.Scanner as NfcScanner
3
5
  import ch.procivis.one.core.Deserialize.construct
4
6
  import ch.procivis.one.core.DeserializeSpecific.enumList
5
7
  import ch.procivis.one.core.Serialize.convertToRN
@@ -46,16 +48,21 @@ class ProcivisOneCoreModule(reactContext: ReactApplicationContext) :
46
48
  @ReactMethod
47
49
  fun initialize(configJson: String, promise: Promise) {
48
50
  syncCall(promise) {
49
- val dataDirPath = this.reactApplicationContext.filesDir.absolutePath
50
- ubiqu = ubiqu ?: UbiquKeyStorage(this.reactApplicationContext)
51
+ val context = this.reactApplicationContext
52
+ val dataDirPath = context.filesDir.absolutePath
53
+ ubiqu = ubiqu ?: UbiquKeyStorage(context)
51
54
  oneCore =
52
55
  initializeCore(
53
- configJson = configJson,
54
56
  dataDirPath = dataDirPath,
55
- nativeSecureElement = AndroidKeyStoreKeyStorage(this.reactApplicationContext),
56
- remoteSecureElement = ubiqu,
57
- bleCentral = AndroidBLECentral(this.reactApplicationContext),
58
- blePeripheral = AndroidBLEPeripheral(this.reactApplicationContext)
57
+ params = InitParamsDto(
58
+ configJson = configJson,
59
+ nativeSecureElement = AndroidKeyStoreKeyStorage(context),
60
+ remoteSecureElement = ubiqu,
61
+ bleCentral = AndroidBLECentral(context),
62
+ blePeripheral = AndroidBLEPeripheral(context),
63
+ nfcHce = NfcHCE(context),
64
+ nfcScanner = NfcScanner(context) { context.currentActivity }
65
+ )
59
66
  )
60
67
  return@syncCall null
61
68
  }
@@ -178,14 +185,11 @@ class ProcivisOneCoreModule(reactContext: ReactApplicationContext) :
178
185
 
179
186
  @ReactMethod
180
187
  fun handleInvitation(
181
- url: String,
182
- organisationId: String,
183
- transport: ReadableArray?,
188
+ request: ReadableMap,
184
189
  promise: Promise
185
190
  ) {
186
191
  asyncCall(promise, scope) {
187
- val transportList = transport?.let { DeserializeSpecific.ids(it) }
188
- val invitationResult = getCore().handleInvitation(url, organisationId, transportList)
192
+ val invitationResult = getCore().handleInvitation(construct(request))
189
193
  return@asyncCall convertToRN(invitationResult)
190
194
  }
191
195
  }
@@ -256,12 +260,32 @@ class ProcivisOneCoreModule(reactContext: ReactApplicationContext) :
256
260
  ) {
257
261
  asyncCall(promise, scope) {
258
262
  val submitCredentials =
259
- mutableMapOf<String, PresentationSubmitCredentialRequestBindingDto>()
263
+ mutableMapOf<String, List<PresentationSubmitCredentialRequestBindingDto>>()
260
264
  for (entry in credentials.entryIterator) {
261
- val credential = entry.value as ReadableMap
262
- submitCredentials[entry.key] = construct(credential)
265
+ val credentialList = when (val credentialValue = entry.value) {
266
+ is ReadableMap -> {
267
+ // Single credential object - convert to list
268
+ listOf(construct<PresentationSubmitCredentialRequestBindingDto>(credentialValue))
269
+ }
270
+ is ReadableArray -> {
271
+ // Array of credentials - convert each one
272
+ (0 until credentialValue.size()).map { index ->
273
+ construct<PresentationSubmitCredentialRequestBindingDto>(credentialValue.getMap(index)!!)
274
+ }
275
+ }
276
+ else -> {
277
+ throw IllegalArgumentException("Credential value must be either a Map or Array")
278
+ }
279
+ }
280
+ submitCredentials[entry.key] = credentialList
263
281
  }
264
- getCore().holderSubmitProof(interactionId, submitCredentials, didId, identifierId, keyId)
282
+ getCore().holderSubmitProof(
283
+ interactionId,
284
+ submitCredentials,
285
+ didId,
286
+ identifierId,
287
+ keyId
288
+ )
265
289
  return@asyncCall null
266
290
  }
267
291
  }
@@ -361,9 +385,10 @@ class ProcivisOneCoreModule(reactContext: ReactApplicationContext) :
361
385
  }
362
386
 
363
387
  @ReactMethod
364
- fun proposeProof(exchange: String, organisationId: String, promise: Promise) {
388
+ fun proposeProof(exchange: String, organisationId: String, engagement: ReadableArray, promise: Promise) {
365
389
  asyncCall(promise, scope) {
366
- val result = getCore().proposeProof(exchange, organisationId)
390
+ val engagement = DeserializeSpecific.ids(engagement)
391
+ val result = getCore().proposeProof(exchange, organisationId, engagement)
367
392
  return@asyncCall convertToRN(result)
368
393
  }
369
394
  }
@@ -588,6 +613,45 @@ class ProcivisOneCoreModule(reactContext: ReactApplicationContext) :
588
613
  }
589
614
  }
590
615
 
616
+ @ReactMethod
617
+ fun holderRegisterWalletUnit(request: ReadableMap, promise: Promise) {
618
+ asyncCall(promise, scope) {
619
+ val result = getCore().holderRegisterWalletUnit(construct(request))
620
+ return@asyncCall convertToRN(result)
621
+ }
622
+ }
623
+
624
+ @ReactMethod
625
+ fun holderRefreshWalletUnit(request: ReadableMap, promise: Promise) {
626
+ asyncCall(promise, scope) {
627
+ getCore().holderRefreshWalletUnit(construct(request))
628
+ return@asyncCall null
629
+ }
630
+ }
631
+
632
+ @ReactMethod
633
+ fun holderGetWalletUnitAttestation(organisationId: String, promise: Promise) {
634
+ asyncCall(promise, scope) {
635
+ val result = getCore().holderGetWalletUnitAttestation(organisationId)
636
+ return@asyncCall convertToRN(result)
637
+ }
638
+ }
639
+
640
+ @ReactMethod
641
+ fun nfcReadIsoMdlEngagement(request: ReadableMap, promise: Promise) {
642
+ asyncCall(promise, scope) {
643
+ return@asyncCall getCore().nfcReadIsoMdlEngagement(construct(request))
644
+ }
645
+ }
646
+
647
+ @ReactMethod
648
+ fun nfcStopIsoMdlEngagement(promise: Promise) {
649
+ asyncCall(promise, scope) {
650
+ getCore().nfcStopIsoMdlEngagement()
651
+ return@asyncCall null
652
+ }
653
+ }
654
+
591
655
  @ReactMethod
592
656
  fun uninitialize(deleteData: Boolean, promise: Promise) {
593
657
  asyncCall(promise, scope) {
@@ -43,6 +43,13 @@ object SerializeSpecific {
43
43
 
44
44
  is HistoryMetadataBinding.ErrorMetadata ->
45
45
  return convertToRN(metadata.value) as ReadableMap
46
+
47
+ is HistoryMetadataBinding.WalletUnitJwt -> {
48
+ val result = Arguments.createMap()
49
+ result.putString("jwt", metadata.v1)
50
+ return result
51
+ }
52
+
46
53
  }
47
54
  }
48
55
 
@@ -110,6 +110,18 @@ class UbiquKeyStorage(private val context: ReactApplicationContext) : NativeKeyS
110
110
  }
111
111
  }
112
112
 
113
+ override suspend fun generateAttestation(keyReference: ByteArray, nonce: String?): List<String> {
114
+ throw NativeKeyStorageException.Unsupported()
115
+ }
116
+
117
+ override suspend fun signWithAttestationKey(keyReference: ByteArray, message: ByteArray): ByteArray {
118
+ throw NativeKeyStorageException.Unsupported()
119
+ }
120
+
121
+ override suspend fun generateAttestationKey(keyAlias: String, nonce: String?): GeneratedKeyBindingDto {
122
+ throw NativeKeyStorageException.Unsupported()
123
+ }
124
+
113
125
  // ==== public interface
114
126
  suspend fun changePin(): String? {
115
127
  return exceptionWrapper {
@@ -20,6 +20,18 @@ class UbiquKeyStorage(private val context: ReactApplicationContext) : NativeKeyS
20
20
  throw NativeKeyStorageException.Unsupported()
21
21
  }
22
22
 
23
+ override suspend fun generateAttestation(keyReference: ByteArray, nonce: String?): List<String> {
24
+ throw NativeKeyStorageException.Unsupported()
25
+ }
26
+
27
+ override suspend fun generateAttestationKey(keyAlias: String, nonce: String?): GeneratedKeyBindingDto {
28
+ throw NativeKeyStorageException.Unsupported()
29
+ }
30
+
31
+ override suspend fun signWithAttestationKey(keyReference: ByteArray, message: ByteArray): ByteArray {
32
+ throw NativeKeyStorageException.Unsupported()
33
+ }
34
+
23
35
  // ==== public interface
24
36
  fun changePin(): String? {
25
37
  throw NativeKeyStorageException.Unsupported()
package/core-sdk.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "android": {
3
3
  "debug": {
4
- "url": "https://onetfstatestorage.blob.core.windows.net/core-sdk/android/56306/onecore-debug.aar",
5
- "sha1": "fa86f918237f414fa8a2581bcd0ef33b386acac4"
4
+ "url": "https://onesdk.blob.core.windows.net/core-sdk/60807/android/onecore-debug.aar",
5
+ "sha1": "164dfcb986d8f86596e69ceed8a470562d3b0b6f"
6
6
  },
7
7
  "release": {
8
- "url": "https://onetfstatestorage.blob.core.windows.net/core-sdk/android/56306/onecore-release.aar",
9
- "sha1": "59a02d824a074e83ddb44ab7b5f29778f0a07fa1"
8
+ "url": "https://onesdk.blob.core.windows.net/core-sdk/60807/android/onecore-release.aar",
9
+ "sha1": "da72ce7724c932b14b19df2911ec7c2586c31130"
10
10
  }
11
11
  },
12
12
  "ios": {
13
- "url": "https://onetfstatestorage.blob.core.windows.net/core-sdk/ios/56306/deploy.zip",
14
- "sha1": "aeb5640771f1cba05bf457f5a60ecb48a5670819"
13
+ "url": "https://onesdk.blob.core.windows.net/core-sdk/60807/ios/deploy.zip",
14
+ "sha1": "7b5d19a6621d7e3eb0fcc492e70681001d5f3483"
15
15
  }
16
16
  }
@@ -144,5 +144,7 @@ export interface Config {
144
144
  keyStorage: ConfigEntities<KeyStorageCapabilities>;
145
145
  trustManagement: ConfigEntities<TrustCapabilities>;
146
146
  cacheEntities: ConfigEntities;
147
+ task: ConfigEntities;
148
+ credentialIssuer: ConfigEntities<undefined, {}>;
147
149
  }
148
150
  export {};
@@ -1,6 +1,6 @@
1
1
  import { BackupCreate, ImportBackupMetadata, UnexportableEntities } from "./backup";
2
2
  import { Config } from "./config";
3
- import { ContinueIssuanceResponse, CredentialDetail, CredentialListItem, CredentialListQuery, CredentialRevocationCheckResponse, InitiateIssuanceRequest, InitiateIssuanceResponse, InvitationResultCredentialIssuance } from "./credential";
3
+ import { AuthorizationCodeFlow, ContinueIssuanceResponse, CredentialDetail, CredentialListItem, CredentialListQuery, CredentialRevocationCheckResponse, InitiateIssuanceRequest, InitiateIssuanceResponse, InvitationResultCredentialIssuance } from "./credential";
4
4
  import { CredentialSchema, CredentialSchemaDetail, CredentialSchemaListQuery, ImportCredentialSchemaRequest, ShareCredentialSchemaResponse } from "./credentialSchema";
5
5
  import { DidListItem, DidListQuery, DidRequest } from "./did";
6
6
  import { HistoryListItem, HistoryListQuery } from "./history";
@@ -12,6 +12,8 @@ import { CreateRemoteTrustEntityRequest, CreateTrustAnchorRequest, CreateTrustEn
12
12
  import { CacheType } from "./cache";
13
13
  import { CreateOrganisationRequest, UpsertOrganisationRequest } from "./organisation";
14
14
  import { CreateIdentifierRequest, IdentifierDetail, IdentifierListItem, IdentifierListQuery } from "./identifier";
15
+ import { HolderAttestationWalletUnitResponse, HolderRefreshWalletUnitRequest, HolderRegisterWalletUnitRequest, HolderRegisterWalletUnitResponse } from "./walletUnit";
16
+ import { NfcScanRequest } from "./nfc";
15
17
  export * from "./backup";
16
18
  export * from "./cache";
17
19
  export * from "./config";
@@ -21,11 +23,13 @@ export * from "./did";
21
23
  export * from "./identifier";
22
24
  export * from "./history";
23
25
  export * from "./key";
26
+ export * from "./nfc";
24
27
  export * from "./list";
25
28
  export * from "./organisation";
26
29
  export * from "./proof";
27
30
  export * from "./proofSchema";
28
31
  export * from "./trust";
32
+ export * from "./walletUnit";
29
33
  export interface Version {
30
34
  target: string;
31
35
  buildTime: string;
@@ -35,7 +39,22 @@ export interface Version {
35
39
  rustVersion: string;
36
40
  pipelineId: string;
37
41
  }
38
- export type InvitationResult = InvitationResultCredentialIssuance | InvitationResultProofRequest;
42
+ export type InvitationResult = InvitationResultCredentialIssuance | InvitationResultProofRequest | AuthorizationCodeFlow;
43
+ export interface HandleInvitationRequest {
44
+ /** Typically encoded as a QR code or deep link by the issuer or
45
+ * verifier. For example:
46
+ * "https://example.com/credential-offer" */
47
+ url: string;
48
+ organisationId: string;
49
+ /** For configurations with multiple transport protocols enabled
50
+ * you can specify which one to use for this interaction. */
51
+ transport?: string[];
52
+ /** For issuer-initiated Authorization Code Flows, provide the
53
+ * authorization server with the URI it should return the user
54
+ * to once authorization is complete. For example:
55
+ * "myapp://example". */
56
+ redirectUri?: string;
57
+ }
39
58
  export interface ResolveJsonLdContextResponse {
40
59
  context: string;
41
60
  }
@@ -51,14 +70,27 @@ export interface ONECore {
51
70
  getIdentifiers(query: IdentifierListQuery): Promise<ItemList<IdentifierListItem>>;
52
71
  getIdentifier(identifierId: IdentifierListItem["id"]): Promise<IdentifierDetail>;
53
72
  deleteIdentifier(identifierId: IdentifierListItem["id"]): Promise<void>;
54
- handleInvitation(url: string, organisationId: string, transport: string[] | undefined): Promise<InvitationResult>;
73
+ /**
74
+ * For a wallet, handles the interaction once the wallet connects to a share
75
+ * endpoint URL (for example, scans the QR code of an offered credential or
76
+ * request for proof).
77
+ */
78
+ handleInvitation(request: HandleInvitationRequest): Promise<InvitationResult>;
55
79
  holderAcceptCredential(interactionId: InvitationResultCredentialIssuance["interactionId"], didId: DidListItem["id"] | undefined, identifierId: IdentifierListItem["id"] | undefined, keyId: string | undefined, txCode: string | undefined): Promise<void>;
56
80
  holderRejectCredential(interactionId: InvitationResultCredentialIssuance["interactionId"]): Promise<void>;
81
+ /** For wallets, starts the OID4VCI Authorization Code Flow. */
57
82
  initiateIssuance(request: InitiateIssuanceRequest): Promise<InitiateIssuanceResponse>;
58
- continueIssuance(url: string): Promise<ContinueIssuanceResponse>;
83
+ /** For wallet-initiated flows, continues the OpenID4VCI issuance process
84
+ * after completing authorization.
85
+ */
86
+ continueIssuance(
87
+ /** Starts with the `redirectUri` and is used to continue the Authorization
88
+ * Code Flow issuance process. For example:
89
+ * "myapp://example/credential-offer?code=xxx&clientId=myWallet&..." */
90
+ url: string): Promise<ContinueIssuanceResponse>;
59
91
  getPresentationDefinition(proofId: ProofDetail["id"]): Promise<PresentationDefinition>;
60
92
  holderRejectProof(interactionId: InvitationResultProofRequest["interactionId"]): Promise<void>;
61
- holderSubmitProof(interactionId: InvitationResultProofRequest["interactionId"], credentials: Record<PresentationDefinitionRequestedCredential["id"], PresentationSubmitCredentialRequest>, didId: DidListItem["id"] | undefined, identifierId: IdentifierListItem["id"] | undefined, keyId: string | undefined): Promise<void>;
93
+ holderSubmitProof(interactionId: InvitationResultProofRequest["interactionId"], credentials: Record<PresentationDefinitionRequestedCredential["id"], PresentationSubmitCredentialRequest | PresentationSubmitCredentialRequest[]>, didId: DidListItem["id"] | undefined, identifierId: IdentifierListItem["id"] | undefined, keyId: string | undefined): Promise<void>;
62
94
  getCredentials(query: CredentialListQuery): Promise<ItemList<CredentialListItem>>;
63
95
  runTask(task: string): Promise<string>;
64
96
  deleteProofClaims(proofId: ProofDetail["id"]): Promise<void>;
@@ -68,6 +100,7 @@ export interface ONECore {
68
100
  getCredentialSchema(credentialSchemaId: CredentialSchema["id"]): Promise<CredentialSchemaDetail>;
69
101
  getCredentialSchemas(query: CredentialSchemaListQuery): Promise<ItemList<CredentialSchema>>;
70
102
  deleteCredentialSchema(credentialSchemaId: CredentialSchema["id"]): Promise<void>;
103
+ /** For verifiers, creates a proof request. */
71
104
  createProof(request: CreateProofRequest): Promise<ProofDetail["id"]>;
72
105
  shareProof(proofId: ProofDetail["id"], request: ShareProofRequest): Promise<ShareProofResponse>;
73
106
  shareProofSchema(proofSchemaId: ProofSchema["id"]): Promise<ShareProofSchemaResponse>;
@@ -75,7 +108,11 @@ export interface ONECore {
75
108
  getProof(proofId: ProofDetail["id"]): Promise<ProofDetail>;
76
109
  getProofs(query: ProofListQuery): Promise<ItemList<ProofListItem>>;
77
110
  deleteProof(proofId: ProofDetail["id"]): Promise<void>;
78
- proposeProof(exchange: string, organisationId: string): Promise<ProposeProofResponse>;
111
+ /** For wallets, initiates device engagement for offline flows.
112
+ * Reference the `verificationEngagement` entry of your configuration
113
+ * for your options for `engagement`.
114
+ */
115
+ proposeProof(exchange: string, organisationId: string, engagement: string[]): Promise<ProposeProofResponse>;
79
116
  createProofSchema(request: CreateProofSchemaRequest): Promise<ProofSchema["id"]>;
80
117
  getProofSchemas(query: ProofSchemaListQuery): Promise<ItemList<ProofSchemaListItem>>;
81
118
  getProofSchema(proofSchemaId: ProofSchema["id"]): Promise<ProofSchema>;
@@ -121,6 +158,20 @@ export interface ONECore {
121
158
  */
122
159
  rollbackImport(): Promise<void>;
123
160
  resolveJsonldContext(url: string): Promise<ResolveJsonLdContextResponse>;
161
+ holderRegisterWalletUnit(request: HolderRegisterWalletUnitRequest): Promise<HolderRegisterWalletUnitResponse>;
162
+ holderRefreshWalletUnit(request: HolderRefreshWalletUnitRequest): Promise<void>;
163
+ holderGetWalletUnitAttestation(organisationId: string): Promise<HolderAttestationWalletUnitResponse>;
164
+ /**
165
+ * Start scanning for ISO 18013-5 NFC engagement
166
+ *
167
+ * @param {NfcScanRequest} request system overlay messages to be displayed (iOS only)
168
+ * @returns {string} encoded NFC engagement to be used for {@link CreateProofRequest.isoMdlEngagement}
169
+ */
170
+ nfcReadIsoMdlEngagement(request: NfcScanRequest): Promise<string>;
171
+ /**
172
+ * Explicitly stop scan started via {@link nfcReadIsoMdlEngagement}
173
+ */
174
+ nfcStopIsoMdlEngagement(): Promise<void>;
124
175
  /**
125
176
  * Uninitialize the core instance
126
177
  *
@@ -130,4 +181,4 @@ export interface ONECore {
130
181
  */
131
182
  uninitialize(deleteData: boolean): Promise<void>;
132
183
  }
133
- export declare const interfaceMethodNames: readonly ["getVersion", "getConfig", "createOrganisation", "upsertOrganisation", "generateKey", "createDid", "getDids", "createIdentifier", "getIdentifier", "getIdentifiers", "deleteIdentifier", "handleInvitation", "holderAcceptCredential", "holderRejectCredential", "initiateIssuance", "continueIssuance", "getPresentationDefinition", "holderRejectProof", "holderSubmitProof", "getCredentials", "runTask", "deleteProofClaims", "getCredential", "deleteCredential", "importCredentialSchema", "getCredentialSchema", "getCredentialSchemas", "deleteCredentialSchema", "createProof", "shareProof", "shareProofSchema", "shareCredentialSchema", "getProof", "getProofs", "deleteProof", "proposeProof", "createProofSchema", "getProofSchemas", "getProofSchema", "deleteProofSchema", "importProofSchema", "checkRevocation", "createTrustAnchor", "deleteTrustAnchor", "getTrustAnchor", "getTrustAnchors", "createTrustEntity", "getTrustEntity", "getTrustEntities", "getTrustEntityByDid", "resolveTrustEntityByIdentifier", "createRemoteTrustEntity", "getRemoteTrustEntity", "updateRemoteTrustEntity", "getHistory", "getHistoryEntry", "createBackup", "backupInfo", "deleteCache", "unpackBackup", "finalizeImport", "rollbackImport", "resolveJsonldContext", "uninitialize"];
184
+ export declare const interfaceMethodNames: readonly ["getVersion", "getConfig", "createOrganisation", "upsertOrganisation", "generateKey", "createDid", "getDids", "createIdentifier", "getIdentifier", "getIdentifiers", "deleteIdentifier", "handleInvitation", "holderAcceptCredential", "holderRejectCredential", "initiateIssuance", "continueIssuance", "getPresentationDefinition", "holderRejectProof", "holderSubmitProof", "getCredentials", "runTask", "deleteProofClaims", "getCredential", "deleteCredential", "importCredentialSchema", "getCredentialSchema", "getCredentialSchemas", "deleteCredentialSchema", "createProof", "shareProof", "shareProofSchema", "shareCredentialSchema", "getProof", "getProofs", "deleteProof", "proposeProof", "createProofSchema", "getProofSchemas", "getProofSchema", "deleteProofSchema", "importProofSchema", "checkRevocation", "createTrustAnchor", "deleteTrustAnchor", "getTrustAnchor", "getTrustAnchors", "createTrustEntity", "getTrustEntity", "getTrustEntities", "getTrustEntityByDid", "resolveTrustEntityByIdentifier", "createRemoteTrustEntity", "getRemoteTrustEntity", "updateRemoteTrustEntity", "getHistory", "getHistoryEntry", "createBackup", "backupInfo", "deleteCache", "unpackBackup", "finalizeImport", "rollbackImport", "resolveJsonldContext", "holderRegisterWalletUnit", "holderRefreshWalletUnit", "holderGetWalletUnitAttestation", "nfcReadIsoMdlEngagement", "nfcStopIsoMdlEngagement", "uninitialize"];
package/dist/src/core.js CHANGED
@@ -7,11 +7,13 @@ export * from "./did";
7
7
  export * from "./identifier";
8
8
  export * from "./history";
9
9
  export * from "./key";
10
+ export * from "./nfc";
10
11
  export * from "./list";
11
12
  export * from "./organisation";
12
13
  export * from "./proof";
13
14
  export * from "./proofSchema";
14
15
  export * from "./trust";
16
+ export * from "./walletUnit";
15
17
  // New Architecture bridgeless issue workaround: see https://github.com/facebook/react-native/issues/43221
16
18
  export const interfaceMethodNames = [
17
19
  "getVersion",
@@ -77,6 +79,11 @@ export const interfaceMethodNames = [
77
79
  "finalizeImport",
78
80
  "rollbackImport",
79
81
  "resolveJsonldContext",
82
+ "holderRegisterWalletUnit",
83
+ "holderRefreshWalletUnit",
84
+ "holderGetWalletUnitAttestation",
85
+ "nfcReadIsoMdlEngagement",
86
+ "nfcStopIsoMdlEngagement",
80
87
  "uninitialize",
81
88
  ];
82
89
  // Typescript automatic assertions to keep ONECore and interfaceMethodNames in sync
@@ -99,6 +99,7 @@ export type CredentialListQuery = ListQuery & {
99
99
  ids?: Array<CredentialListItem["id"]>;
100
100
  status?: CredentialStateEnum[];
101
101
  profile?: string;
102
+ credentialSchemaIds?: Array<CredentialSchema["id"]>;
102
103
  include?: CredentialListIncludeEntityType[];
103
104
  /** accepts the RFC3339 format, e.g. use the {@link Date.toISOString} */
104
105
  createdDateAfter?: string;
@@ -132,9 +133,17 @@ export interface CredentialRevocationCheckResponse {
132
133
  reason?: string;
133
134
  }
134
135
  export interface InvitationResultCredentialIssuance {
136
+ /** For reference. */
135
137
  interactionId: string;
138
+ /** Offered credential. */
136
139
  credentialIds: Array<CredentialListItem["id"]>;
140
+ /** Metadata for entering a transaction code.
141
+ * If a pre-authorized code is issued with a transaction code object, the wallet
142
+ * user must input a transaction code to receive the offered credential. This code
143
+ * is typically sent through a separate channel such as SMS or email.
144
+ */
137
145
  txCode?: OpenID4VCITxCode;
146
+ /** Metadata for selecting an appropriate key. */
138
147
  credentialConfigurationsSupported: Record<CredentialListItem["id"], CredentialConfigurationSupported>;
139
148
  }
140
149
  export interface OpenID4VCITxCode {
@@ -146,9 +155,11 @@ export declare enum OpenID4VCITxCodeInputMode {
146
155
  NUMERIC = "NUMERIC",
147
156
  TEXT = "TEXT"
148
157
  }
158
+ /** OID4VCI authorization request parameters. Use either `scope` or `authorizationDetails`. */
149
159
  export interface InitiateIssuanceRequest {
150
160
  organisationId: string;
151
161
  protocol: string;
162
+ /** Issuer URL */
152
163
  issuer: string;
153
164
  clientId: string;
154
165
  redirectUri?: string;
@@ -163,8 +174,11 @@ export interface InitiateIssuanceResponse {
163
174
  url: string;
164
175
  }
165
176
  export interface ContinueIssuanceResponse {
177
+ /** For reference. */
166
178
  interactionId: string;
179
+ /** Offered credentials. */
167
180
  credentialIds: Array<CredentialListItem["id"]>;
181
+ /** Metadata for selecting an appropriate key. */
168
182
  credentialConfigurationsSupported: Record<CredentialListItem["id"], CredentialConfigurationSupported>;
169
183
  }
170
184
  export interface CredentialConfigurationSupported {
@@ -173,3 +187,10 @@ export interface CredentialConfigurationSupported {
173
187
  export interface OpenID4VCIProofTypeSupported {
174
188
  proofSigningAlgValuesSupported: string[];
175
189
  }
190
+ export interface AuthorizationCodeFlow {
191
+ /** For reference. */
192
+ interactionId: string;
193
+ /** For issuer-initiated Authorization Code Flows, use this URL to start
194
+ * the authorization process with the authorization server. */
195
+ authorizationCodeFlowUrl: string;
196
+ }
@@ -38,7 +38,9 @@ export declare enum HistoryEntityTypeEnum {
38
38
  ORGANISATION = "ORGANISATION",
39
39
  BACKUP = "BACKUP",
40
40
  TRUST_ANCHOR = "TRUST_ANCHOR",
41
- TRUST_ENTITY = "TRUST_ENTITY"
41
+ TRUST_ENTITY = "TRUST_ENTITY",
42
+ WALLET_UNIT = "WALLET_UNIT",
43
+ WALLET_UNIT_ATTESTATION = "WALLET_UNIT_ATTESTATION"
42
44
  }
43
45
  export declare enum HistorySearchTypeEnum {
44
46
  CLAIM_NAME = "CLAIM_NAME",
@@ -72,7 +74,10 @@ export interface HistoryErrorMetadata {
72
74
  errorCode: string;
73
75
  message: string;
74
76
  }
75
- export type HistoryMetadata = UnexportableEntities | HistoryErrorMetadata;
77
+ export interface WalletUnitJWT {
78
+ jwt: string;
79
+ }
80
+ export type HistoryMetadata = UnexportableEntities | HistoryErrorMetadata | WalletUnitJWT;
76
81
  export interface HistoryListItem {
77
82
  id: string;
78
83
  createdDate: string;
@@ -39,6 +39,8 @@ export var HistoryEntityTypeEnum;
39
39
  HistoryEntityTypeEnum["BACKUP"] = "BACKUP";
40
40
  HistoryEntityTypeEnum["TRUST_ANCHOR"] = "TRUST_ANCHOR";
41
41
  HistoryEntityTypeEnum["TRUST_ENTITY"] = "TRUST_ENTITY";
42
+ HistoryEntityTypeEnum["WALLET_UNIT"] = "WALLET_UNIT";
43
+ HistoryEntityTypeEnum["WALLET_UNIT_ATTESTATION"] = "WALLET_UNIT_ATTESTATION";
42
44
  })(HistoryEntityTypeEnum || (HistoryEntityTypeEnum = {}));
43
45
  export var HistorySearchTypeEnum;
44
46
  (function (HistorySearchTypeEnum) {
@@ -0,0 +1,5 @@
1
+ export interface NfcScanRequest {
2
+ inProgressMessage?: string;
3
+ failureMessage?: string;
4
+ successMessage?: string;
5
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,4 +1,4 @@
1
- import { CredentialDetail, CredentialListItem } from "./credential";
1
+ import { Claim, CredentialDetail, CredentialListItem } from "./credential";
2
2
  import { CredentialSchema } from "./credentialSchema";
3
3
  import { ListQuery, SortDirection } from "./list";
4
4
  import { ProofInputClaimSchema, ProofSchemaListItem } from "./proofSchema";
@@ -45,6 +45,7 @@ export interface ProofDetail {
45
45
  completedDate?: string;
46
46
  claimsRemovedAt?: string;
47
47
  profile?: string;
48
+ engagement?: string;
48
49
  }
49
50
  export interface ProofListItem {
50
51
  id: string;
@@ -60,7 +61,14 @@ export interface ProofListItem {
60
61
  schema?: ProofSchemaListItem;
61
62
  retainUntilDate?: string;
62
63
  profile?: string;
63
- }
64
+ engagement?: string;
65
+ }
66
+ /** If protocol is `ISO_MDL`, specify the device engagement
67
+ * type by referencing an entry from `verificationEngagement`
68
+ * of your configurationi. `isoMdlEngagement` accepts either
69
+ * QR code content (for QR device engagement) or NFC engagement
70
+ * parameters from {@link nfcReadIsoMdlEngagement}.
71
+ */
64
72
  export interface CreateProofRequest {
65
73
  proofSchemaId: ProofSchemaListItem["id"];
66
74
  verifierDidId?: DidListItem["id"];
@@ -72,6 +80,7 @@ export interface CreateProofRequest {
72
80
  isoMdlEngagement?: string;
73
81
  transport?: string[];
74
82
  profile?: string;
83
+ engagement?: string;
75
84
  }
76
85
  export interface ScanToVerifyRequest {
77
86
  credential: string;
@@ -109,6 +118,7 @@ export declare enum PresentationDefinitionRuleTypeEnum {
109
118
  export interface PresentationDefinitionRequestedCredential {
110
119
  id: string;
111
120
  name?: string;
121
+ multiple?: boolean;
112
122
  purpose?: string;
113
123
  fields: PresentationDefinitionField[];
114
124
  applicableCredentials: Array<CredentialListItem["id"]>;
@@ -120,7 +130,7 @@ export interface PresentationDefinitionField {
120
130
  name?: string;
121
131
  purpose?: string;
122
132
  required: boolean;
123
- keyMap: Record<string, string>;
133
+ keyMap: Record<CredentialListItem["id"], Claim["key"]>;
124
134
  }
125
135
  export interface PresentationSubmitCredentialRequest {
126
136
  credentialId: CredentialListItem["id"];
@@ -165,7 +175,7 @@ export interface ProofListQuery extends ListQuery {
165
175
  export interface ProposeProofResponse {
166
176
  proofId: string;
167
177
  interactionId: string;
168
- url: string;
178
+ url?: string;
169
179
  }
170
180
  export interface InvitationResultProofRequest {
171
181
  interactionId: string;
@@ -0,0 +1,41 @@
1
+ import { KeyListItem } from "./key";
2
+ export declare enum WalletProviderTypeEnum {
3
+ PROCIVIS_ONE = "PROCIVIS_ONE"
4
+ }
5
+ export declare enum WalletUnitStatusEnum {
6
+ PENDING = "PENDING",
7
+ ACTIVE = "ACTIVE",
8
+ REVOKED = "REVOKED",
9
+ ERROR = "ERROR"
10
+ }
11
+ export interface WalletProvider {
12
+ url: string;
13
+ type: WalletProviderTypeEnum;
14
+ name: string;
15
+ appIntegrityCheckRequired: boolean;
16
+ }
17
+ export interface HolderRegisterWalletUnitRequest {
18
+ organisationId: string;
19
+ walletProvider: WalletProvider;
20
+ keyType: KeyListItem["keyType"];
21
+ }
22
+ export interface HolderRegisterWalletUnitResponse {
23
+ id: string;
24
+ keyId: KeyListItem["id"];
25
+ }
26
+ export interface HolderRefreshWalletUnitRequest {
27
+ organisationId: string;
28
+ appIntegrityCheckRequired: boolean;
29
+ }
30
+ export interface HolderAttestationWalletUnitResponse {
31
+ id: string;
32
+ createdDate: string;
33
+ lastModified: string;
34
+ expirationDate: string;
35
+ status: WalletUnitStatusEnum;
36
+ attestation: string;
37
+ walletUnitId: string;
38
+ walletProviderUrl: string;
39
+ walletProviderType: WalletProviderTypeEnum;
40
+ walletProviderName: string;
41
+ }
@@ -0,0 +1,11 @@
1
+ export var WalletProviderTypeEnum;
2
+ (function (WalletProviderTypeEnum) {
3
+ WalletProviderTypeEnum["PROCIVIS_ONE"] = "PROCIVIS_ONE";
4
+ })(WalletProviderTypeEnum || (WalletProviderTypeEnum = {}));
5
+ export var WalletUnitStatusEnum;
6
+ (function (WalletUnitStatusEnum) {
7
+ WalletUnitStatusEnum["PENDING"] = "PENDING";
8
+ WalletUnitStatusEnum["ACTIVE"] = "ACTIVE";
9
+ WalletUnitStatusEnum["REVOKED"] = "REVOKED";
10
+ WalletUnitStatusEnum["ERROR"] = "ERROR";
11
+ })(WalletUnitStatusEnum || (WalletUnitStatusEnum = {}));
@@ -63,9 +63,7 @@ RCT_EXTERN_METHOD(deleteIdentifier:(NSString *)identifierId
63
63
  resolver:(RCTPromiseResolveBlock)resolve
64
64
  rejecter:(RCTPromiseRejectBlock)reject)
65
65
 
66
- RCT_EXTERN_METHOD(handleInvitation:(NSString *)url
67
- organisationId:(NSString *)organisationId
68
- transport:(NSArray *)transport
66
+ RCT_EXTERN_METHOD(handleInvitation:(NSDictionary *)request
69
67
  resolver:(RCTPromiseResolveBlock)resolve
70
68
  rejecter:(RCTPromiseRejectBlock)reject)
71
69
 
@@ -192,6 +190,7 @@ RCT_EXTERN_METHOD(deleteProof:(NSString *)proofId
192
190
 
193
191
  RCT_EXTERN_METHOD(proposeProof:(NSString *)exchange
194
192
  organisationId:(NSString *)organisationId
193
+ engagement:(NSArray *)engagement
195
194
  resolver:(RCTPromiseResolveBlock)resolve
196
195
  rejecter:(RCTPromiseRejectBlock)reject)
197
196
 
@@ -279,6 +278,25 @@ RCT_EXTERN_METHOD(resolveJsonldContext:(NSString *)url
279
278
  resolver:(RCTPromiseResolveBlock)resolve
280
279
  rejecter:(RCTPromiseRejectBlock)reject)
281
280
 
281
+ RCT_EXTERN_METHOD(holderRegisterWalletUnit:(NSDictionary *)request
282
+ resolver:(RCTPromiseResolveBlock)resolve
283
+ rejecter:(RCTPromiseRejectBlock)reject)
284
+
285
+ RCT_EXTERN_METHOD(holderRefreshWalletUnit:(NSDictionary *)request
286
+ resolver:(RCTPromiseResolveBlock)resolve
287
+ rejecter:(RCTPromiseRejectBlock)reject)
288
+
289
+ RCT_EXTERN_METHOD(holderGetWalletUnitAttestation:(NSString *)organisationId
290
+ resolver:(RCTPromiseResolveBlock)resolve
291
+ rejecter:(RCTPromiseRejectBlock)reject)
292
+
293
+ RCT_EXTERN_METHOD(nfcReadIsoMdlEngagement:(NSDictionary *)request
294
+ resolver:(RCTPromiseResolveBlock)resolve
295
+ rejecter:(RCTPromiseRejectBlock)reject)
296
+
297
+ RCT_EXTERN_METHOD(nfcStopIsoMdlEngagement:(RCTPromiseResolveBlock)resolve
298
+ rejecter:(RCTPromiseRejectBlock)reject)
299
+
282
300
  RCT_EXTERN_METHOD(uninitialize:(BOOL *)deleteData
283
301
  resolver:(RCTPromiseResolveBlock)resolve
284
302
  rejecter:(RCTPromiseRejectBlock)reject)
@@ -61,12 +61,16 @@ class ProcivisOneCoreModule: RCTEventEmitter {
61
61
  }
62
62
  }
63
63
  self.core = try initializeCore(
64
- configJson: configJson,
65
64
  dataDirPath: dataDirPath,
66
- nativeSecureElement: SecureEnclaveKeyStorage(),
67
- remoteSecureElement: rseKeyStorage,
68
- bleCentral: IOSBLECentral(),
69
- blePeripheral: IOSBLEPeripheral()
65
+ params: InitParamsDto(
66
+ configJson: configJson,
67
+ nativeSecureElement: SecureEnclaveKeyStorage(),
68
+ remoteSecureElement: rseKeyStorage,
69
+ bleCentral: IOSBLECentral(),
70
+ blePeripheral: IOSBLEPeripheral(),
71
+ nfcHce: nil,
72
+ nfcScanner: NFCScanner()
73
+ )
70
74
  )
71
75
 
72
76
  return nil as NSDictionary?
@@ -208,20 +212,14 @@ class ProcivisOneCoreModule: RCTEventEmitter {
208
212
  }
209
213
  }
210
214
 
211
- @objc(handleInvitation:organisationId:transport:resolver:rejecter:)
215
+ @objc(handleInvitation:resolver:rejecter:)
212
216
  func handleInvitation(
213
- url: String,
214
- organisationId: String,
215
- transport: NSArray?,
217
+ request: NSDictionary,
216
218
  resolve: @escaping RCTPromiseResolveBlock,
217
219
  reject: @escaping RCTPromiseRejectBlock
218
220
  ) {
219
221
  asyncCall(resolve, reject) {
220
- let result = try await self.getCore().handleInvitation(
221
- url: url,
222
- organisationId: organisationId,
223
- transport: try deserializeOpt(transport)
224
- )
222
+ let result = try await self.getCore().handleInvitation(request: try deserialize(request))
225
223
  return try serializeAny(result)
226
224
  }
227
225
  }
@@ -585,17 +583,19 @@ class ProcivisOneCoreModule: RCTEventEmitter {
585
583
  }
586
584
  }
587
585
 
588
- @objc(proposeProof:organisationId:resolver:rejecter:)
586
+ @objc(proposeProof:organisationId:engagement:resolver:rejecter:)
589
587
  func proposeProof(
590
588
  exchange: String,
591
589
  organisationId: String,
590
+ engagement: NSArray,
592
591
  resolve: @escaping RCTPromiseResolveBlock,
593
592
  reject: @escaping RCTPromiseRejectBlock
594
593
  ) {
595
594
  asyncCall(resolve, reject) {
596
595
  let result = try await self.getCore().proposeProof(
597
596
  exchange: exchange,
598
- organisationId: organisationId
597
+ organisationId: organisationId,
598
+ engagement: try deserialize(engagement)
599
599
  )
600
600
  return try serializeAny(result)
601
601
  }
@@ -864,6 +864,64 @@ class ProcivisOneCoreModule: RCTEventEmitter {
864
864
  }
865
865
  }
866
866
 
867
+ @objc(holderRegisterWalletUnit:resolver:rejecter:)
868
+ func holderRegisterWalletUnit(
869
+ request: NSDictionary,
870
+ resolve: @escaping RCTPromiseResolveBlock,
871
+ reject: @escaping RCTPromiseRejectBlock
872
+ ) {
873
+ asyncCall(resolve, reject) {
874
+ let result = try await self.getCore().holderRegisterWalletUnit(request: try deserialize(request))
875
+ return try serializeAny(result)
876
+ }
877
+ }
878
+
879
+ @objc(holderRefreshWalletUnit:resolver:rejecter:)
880
+ func holderRefreshWalletUnit(
881
+ request: NSDictionary,
882
+ resolve: @escaping RCTPromiseResolveBlock,
883
+ reject: @escaping RCTPromiseRejectBlock
884
+ ) {
885
+ asyncCall(resolve, reject) {
886
+ try await self.getCore().holderRefreshWalletUnit(request: try deserialize(request))
887
+ return nil as NSDictionary?
888
+ }
889
+ }
890
+
891
+ @objc(holderGetWalletUnitAttestation:resolver:rejecter:)
892
+ func holderGetWalletUnitAttestation(
893
+ organisationId: String,
894
+ resolve: @escaping RCTPromiseResolveBlock,
895
+ reject: @escaping RCTPromiseRejectBlock
896
+ ) {
897
+ asyncCall(resolve, reject) {
898
+ let result = try await self.getCore().holderGetWalletUnitAttestation(organisationId: organisationId)
899
+ return try serializeAny(result)
900
+ }
901
+ }
902
+
903
+ @objc(nfcReadIsoMdlEngagement:resolver:rejecter:)
904
+ func nfcReadIsoMdlEngagement(
905
+ request: NSDictionary,
906
+ resolve: @escaping RCTPromiseResolveBlock,
907
+ reject: @escaping RCTPromiseRejectBlock
908
+ ) {
909
+ asyncCall(resolve, reject) {
910
+ return try await self.getCore().nfcReadIsoMdlEngagement(request: try deserialize(request))
911
+ }
912
+ }
913
+
914
+ @objc(nfcStopIsoMdlEngagement:rejecter:)
915
+ func nfcStopIsoMdlEngagement(
916
+ resolve: @escaping RCTPromiseResolveBlock,
917
+ reject: @escaping RCTPromiseRejectBlock
918
+ ) {
919
+ asyncCall(resolve, reject) {
920
+ try await self.getCore().nfcStopIsoMdlEngagement()
921
+ return nil as NSDictionary?
922
+ }
923
+ }
924
+
867
925
  @objc(uninitialize:resolver:rejecter:)
868
926
  func uninitialize(
869
927
  deleteData: Bool,
@@ -178,7 +178,19 @@ class RSEKeyStorage: NativeKeyStorage {
178
178
 
179
179
  return signatureData
180
180
  }
181
-
181
+
182
+ func generateAttestation(keyReference: Data, nonce: String?) async throws -> [String] {
183
+ throw NativeKeyStorageError.Unsupported
184
+ }
185
+
186
+ func generateAttestationKey(keyAlias: String, nonce: String?) async throws -> ProcivisOneCore.GeneratedKeyBindingDto {
187
+ throw NativeKeyStorageError.Unsupported
188
+ }
189
+
190
+ func signWithAttestationKey(keyReference: Data, message: Data) async throws -> Data {
191
+ throw NativeKeyStorageError.Unsupported
192
+ }
193
+
182
194
  func changePin() async throws {
183
195
  guard let asset = UbqSdk.assets.first else {
184
196
  throw NativeKeyStorageError.SignatureFailure(reason: "Key does not exist")
@@ -18,6 +18,18 @@ class RSEKeyStorage: NativeKeyStorage {
18
18
  func sign(keyReference: Data, message: Data) async throws -> Data {
19
19
  fatalError("sign(keyReference:,message:) has not been implemented")
20
20
  }
21
+
22
+ func generateAttestation(keyReference: Data, nonce: String?) async throws -> [String] {
23
+ fatalError("generateAttestation(keyReference:,nonce:) has not been implemented")
24
+ }
25
+
26
+ func generateAttestationKey(keyAlias: String, nonce: String?) async throws -> ProcivisOneCore.GeneratedKeyBindingDto {
27
+ fatalError("generateAttestationKey(keyAlias:,nonce:) has not been implemented")
28
+ }
29
+
30
+ func signWithAttestationKey(keyReference: Data, message: Data) async throws -> Data {
31
+ fatalError("signWithAttestationKey(keyReference:,message:) has not been implemented")
32
+ }
21
33
 
22
34
  func changePin() async throws {
23
35
  fatalError("changePin() has not been implemented")
@@ -51,6 +51,8 @@ private func serialize(historyMetadata: HistoryMetadataBinding) throws -> Any {
51
51
  return try serializeAny(value);
52
52
  case let .errorMetadata(value):
53
53
  return try serializeAny(value);
54
+ case let .walletUnitJwt(value):
55
+ return ["jwt": value] as NSDictionary;
54
56
  }
55
57
  }
56
58
 
@@ -111,5 +113,11 @@ private func serialize(invitationResponse: HandleInvitationResponseBindingEnum)
111
113
  "interactionId": interactionId,
112
114
  "proofId": proofId
113
115
  ];
116
+
117
+ case let .authorizationCodeFlow(interactionId, authorizationCodeFlowUrl):
118
+ return [
119
+ "interactionId": interactionId,
120
+ "authorizationCodeFlowUrl": authorizationCodeFlowUrl
121
+ ];
114
122
  }
115
123
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@procivis/react-native-one-core",
3
- "version": "1.56306.0",
3
+ "version": "1.60807.0",
4
4
  "author": "Procivis AG (https://procivis.ch)",
5
5
  "license": "Apache-2.0",
6
6
  "description": "ONE core bindings for React Native",