Injimob 3153 mdoc vc sharing (#1926)

* [INJIMOB-3153]: add support for online sharing of mdoc VC

Signed-off-by: Alka Prasad <prasadalka1998@gmail.com>

* [INJIMOB-3153]: avoid stringifying the mdoc VC before sending to ovp library

Signed-off-by: Alka Prasad <prasadalka1998@gmail.com>

* [INJIMOB-3153]: send mdoc signature in device authentication class instead of map

Signed-off-by: Alka Prasad <prasadalka1998@gmail.com>

* [INJIMOB-3153]: update the openid4vp java bridge to accomodate the library structure changes

Signed-off-by: Alka Prasad <prasadalka1998@gmail.com>

* [INJIMOB-3153]: handle error display for duplicate mdoc sharing

Signed-off-by: Alka Prasad <prasadalka1998@gmail.com>

* [INJIMOB-3153]: rename authenticationContainer to VpTokenSigningResult

Signed-off-by: Alka Prasad <prasadalka1998@gmail.com>

* [INJIMOB-3015] support for mdoc in ios native maodule

Signed-off-by: KiruthikaJeyashankar <kiruthikavjshankar@gmail.com>

* [INJIMOB-3015] update wallet metadata initial config

Signed-off-by: KiruthikaJeyashankar <kiruthikavjshankar@gmail.com>

* [INJIMOB-3015] update wallet_metadat key for mdoc

Signed-off-by: KiruthikaJeyashankar <kiruthikavjshankar@gmail.com>

* [INJIMOB-3015] update share vp api call label as per lib

Signed-off-by: KiruthikaJeyashankar <kiruthikavjshankar@gmail.com>

* [INJIMOB-3015] update share vp api call label as per lib

Signed-off-by: KiruthikaJeyashankar <kiruthikavjshankar@gmail.com>

* [INJIMOB-3153]: rename Vp to VP for consistency

Signed-off-by: Alka Prasad <prasadalka1998@gmail.com>

* [INJIMOB-3153]: correct the ovp version

Signed-off-by: Alka Prasad <prasadalka1998@gmail.com>

* [INJIMOB-3153]: remove mavenLocal from code

Signed-off-by: Alka Prasad <prasadalka1998@gmail.com>

* [INJIMOB-3015] rename deviceAuthenticationBytesSigned to docTypeToDeviceAuthentication in MdocVPTokenSigningResult

Signed-off-by: KiruthikaJeyashankar <kiruthikavjshankar@gmail.com>

* [INJIMOB-3015] update pixelpass and openid4vp sswift libraries

Signed-off-by: KiruthikaJeyashankar <kiruthikavjshankar@gmail.com>

---------

Signed-off-by: Alka Prasad <prasadalka1998@gmail.com>
Signed-off-by: KiruthikaJeyashankar <kiruthikavjshankar@gmail.com>
Co-authored-by: KiruthikaJeyashankar <kiruthikavjshankar@gmail.com>
This commit is contained in:
Alka Prasad
2025-05-12 10:57:03 +05:30
committed by GitHub
parent 1105151b9c
commit d413ecdf34
22 changed files with 578 additions and 259 deletions

View File

@@ -834,7 +834,7 @@
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/mosip/pixelpass-ios-swift";
requirement = {
branch = "release-0.6.x";
branch = develop;
kind = branch;
};
};

View File

@@ -52,7 +52,7 @@
"location" : "https://github.com/mosip/inji-openid4vp-ios-swift",
"state" : {
"branch" : "develop",
"revision" : "db16a9bf63b69942942a3e49bf7d40eaeba186bf"
"revision" : "820875cccb546d8c5aa666fcad9f910609091f44"
}
},
{
@@ -78,8 +78,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/mosip/pixelpass-ios-swift",
"state" : {
"branch" : "release-0.6.x",
"revision" : "15249dc4eecb7c2b6e6074193d3928b3402c9d20"
"branch" : "develop",
"revision" : "17361f74c582a0b92744dc386439b0f0b68c58fc"
}
},
{

View File

@@ -70,6 +70,8 @@ class RNOpenId4VpModule: NSObject, RCTBridgeModule {
switch FormatType(rawValue: credentialFormat) {
case .ldp_vc:
result[.ldp_vc] = credentialsArray
case .mso_mdoc:
result[.mso_mdoc] = credentialsArray
default:
reject("OPENID4VP", "Credential format is not supported for OVP", nil)
}
@@ -98,16 +100,16 @@ class RNOpenId4VpModule: NSObject, RCTBridgeModule {
}
@objc
func shareVerifiablePresentation(_ vpResponsesMetadata: [String: Any], resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
func shareVerifiablePresentation(_ vpTokenSigningResults: [String: Any], resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
Task {
do {
var formattedVPResponsesMetadata: [FormatType: VPResponseMetadata] = [:]
var formattedVPTokenSigningResults: [FormatType: VPTokenSigningResult] = [:]
for (credentialFormat, vpResponseMetadata) in vpResponsesMetadata {
for (credentialFormat, vpTokenSigningResult) in vpTokenSigningResults {
switch credentialFormat {
case FormatType.ldp_vc.rawValue:
guard let vpResponse = vpResponseMetadata as? [String:Any] else {
reject("OPENID4VP", "Invalid vp response meta format", nil)
guard let vpResponse = vpTokenSigningResult as? [String:Any] else {
reject("OPENID4VP", "Invalid VP token signing result format", nil)
return
}
guard let jws = vpResponse["jws"] as! String?,
@@ -115,17 +117,35 @@ class RNOpenId4VpModule: NSObject, RCTBridgeModule {
let publicKey = vpResponse["publicKey"] as! String?,
let domain = vpResponse["domain"] as! String?
else {
reject("OPENID4VP", "Invalid vp response metadata", nil)
reject("OPENID4VP", "Invalid VP token signing result", nil)
return
}
formattedVPResponsesMetadata[FormatType.ldp_vc] = LdpVPResponseMetadata(jws: jws, signatureAlgorithm: signatureAlgorithm, publicKey: publicKey, domain: domain)
formattedVPTokenSigningResults[FormatType.ldp_vc] = LdpVPTokenSigningResult(jws: jws, signatureAlgorithm: signatureAlgorithm, publicKey: publicKey, domain: domain)
case FormatType.mso_mdoc.rawValue:
var docTypeToDeviceAuthentication : [String: DeviceAuthentication] = [:]
guard let vpResponse = vpTokenSigningResult as? [String:[String: String]] else {
reject("OPENID4VP", "Invalid VP token signing result format", nil)
return
}
for (docType, deviceAuthentication) in vpResponse {
guard let signature = deviceAuthentication["signature"],
let algorithm = deviceAuthentication["mdocAuthenticationAlgorithm"] else {
reject("OPENID4VP", "Invalid VP token signing result provided for mdoc format", nil)
return
}
docTypeToDeviceAuthentication[docType] = DeviceAuthentication(signature: signature, algorithm: algorithm)
}
formattedVPTokenSigningResults[.mso_mdoc] = MdocVPTokenSigningResult(docTypeToDeviceAuthentication: docTypeToDeviceAuthentication)
default:
reject("OPENID4VP", "Invalid vp response meta format", nil)
reject("OPENID4VP", "Invalid VP response meta format", nil)
}
}
let response = try await openID4VP?.shareVerifiablePresentation(vpResponsesMetadata: formattedVPResponsesMetadata)
let response = try await openID4VP?.shareVerifiablePresentation(vpTokenSigningResults: formattedVPTokenSigningResults)
resolve(response)
} catch {