mirror of
https://github.com/mosip/inji-wallet.git
synced 2026-01-09 13:38:01 -05:00
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:
@@ -834,7 +834,7 @@
|
||||
isa = XCRemoteSwiftPackageReference;
|
||||
repositoryURL = "https://github.com/mosip/pixelpass-ios-swift";
|
||||
requirement = {
|
||||
branch = "release-0.6.x";
|
||||
branch = develop;
|
||||
kind = branch;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user