@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 +1 -1
- package/android/build.gradle +4 -3
- package/android/build.gradle_opensource +4 -3
- package/android/src/main/java/ch/procivis/one/core/ProcivisOneCoreModule.kt +82 -18
- package/android/src/main/java/ch/procivis/one/core/SerializeSpecific.kt +7 -0
- package/android/src/main/java/ch/procivis/one/core/ubiqu/UbiquKeyStorage.kt +12 -0
- package/android/src/main/java/ch/procivis/one/core/ubiqu/UbiquKeyStorage.kt_opensource +12 -0
- package/core-sdk.json +6 -6
- package/dist/src/config.d.ts +2 -0
- package/dist/src/core.d.ts +58 -7
- package/dist/src/core.js +7 -0
- package/dist/src/credential.d.ts +21 -0
- package/dist/src/history.d.ts +7 -2
- package/dist/src/history.js +2 -0
- package/dist/src/nfc.d.ts +5 -0
- package/dist/src/nfc.js +1 -0
- package/dist/src/proof.d.ts +14 -4
- package/dist/src/walletUnit.d.ts +41 -0
- package/dist/src/walletUnit.js +11 -0
- package/ios/ProcivisOneCoreModule.m +21 -3
- package/ios/ProcivisOneCoreModule.swift +74 -16
- package/ios/RSEKeyStorage.swift +13 -1
- package/ios/RSEKeyStorage.swift_opensource +12 -0
- package/ios/Serialize.swift +8 -0
- package/package.json +1 -1
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]:
|
|
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
|
package/android/build.gradle
CHANGED
|
@@ -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
|
-
|
|
74
|
-
|
|
75
|
-
implementation 'net.java.dev.jna:jna:5.
|
|
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
|
-
|
|
74
|
-
|
|
75
|
-
implementation 'net.java.dev.jna:jna:5.
|
|
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
|
|
50
|
-
|
|
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
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
-
|
|
182
|
-
organisationId: String,
|
|
183
|
-
transport: ReadableArray?,
|
|
188
|
+
request: ReadableMap,
|
|
184
189
|
promise: Promise
|
|
185
190
|
) {
|
|
186
191
|
asyncCall(promise, scope) {
|
|
187
|
-
val
|
|
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
|
|
262
|
-
|
|
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(
|
|
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
|
|
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://
|
|
5
|
-
"sha1": "
|
|
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://
|
|
9
|
-
"sha1": "
|
|
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://
|
|
14
|
-
"sha1": "
|
|
13
|
+
"url": "https://onesdk.blob.core.windows.net/core-sdk/60807/ios/deploy.zip",
|
|
14
|
+
"sha1": "7b5d19a6621d7e3eb0fcc492e70681001d5f3483"
|
|
15
15
|
}
|
|
16
16
|
}
|
package/dist/src/config.d.ts
CHANGED
|
@@ -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 {};
|
package/dist/src/core.d.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
package/dist/src/credential.d.ts
CHANGED
|
@@ -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
|
+
}
|
package/dist/src/history.d.ts
CHANGED
|
@@ -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
|
|
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;
|
package/dist/src/history.js
CHANGED
|
@@ -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) {
|
package/dist/src/nfc.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/src/proof.d.ts
CHANGED
|
@@ -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<
|
|
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
|
|
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:(
|
|
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
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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:
|
|
215
|
+
@objc(handleInvitation:resolver:rejecter:)
|
|
212
216
|
func handleInvitation(
|
|
213
|
-
|
|
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,
|
package/ios/RSEKeyStorage.swift
CHANGED
|
@@ -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")
|
package/ios/Serialize.swift
CHANGED
|
@@ -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
|
}
|