[INJIMOB-3550] | [INJIMOB-3551] Handle Verifier's Response for response_uri (#2089)

* [INJIMOB-3550] refactor: replace deprecated method sendErrorToVerifier

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

* [INJIMOB-3550] refactor: log error details on auth failure - OVP

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

* [INJIMOB-3551] refactor: change sendErrorToVerifier to sendErrorResponseToVerifier

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

* [INJIMOB-3550] chore: update ovp kotlin lib version to 0.6.0-snapshot

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

* [INJIMOB-3551] add: send userInfo from native module for ovp error

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

* [INJIMOB-3551] chore: update ovp swift lib version

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

---------

Signed-off-by: KiruthikaJeyashankar <kiruthikavjshankar@gmail.com>
This commit is contained in:
KiruthikaJeyashankar
2025-10-08 13:11:57 +05:30
committed by GitHub
parent 995f9c23b0
commit 066833d3c7
12 changed files with 205 additions and 142 deletions

View File

@@ -873,7 +873,7 @@
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/mosip/inji-openid4vp-ios-swift.git";
requirement = {
branch = "release-0.5.x";
branch = develop;
kind = branch;
};
};

View File

@@ -78,8 +78,8 @@
"kind" : "remoteSourceControl",
"location" : "https://github.com/mosip/inji-openid4vp-ios-swift.git",
"state" : {
"branch" : "release-0.5.x",
"revision" : "b3ce7ef9f70229d76e01af89dcf92e7d9d677254"
"branch" : "develop",
"revision" : "9a2551d1a936c53e80e4ade6122543d606a99504"
}
},
{

View File

@@ -169,26 +169,30 @@ class RNOpenId4VpModule: NSObject, RCTBridgeModule {
}
}
@objc
func sendErrorToVerifier(_ error: String, _ errorCode: String,
resolver resolve: @escaping RCTPromiseResolveBlock,
rejecter reject: @escaping RCTPromiseRejectBlock) {
@objc
func sendErrorToVerifier(_ error: String, _ errorCode: String,
resolver resolve: @escaping RCTPromiseResolveBlock,
rejecter reject: @escaping RCTPromiseRejectBlock) {
Task {
let exception: OpenID4VPException = {
switch errorCode {
case OpenID4VPErrorCodes.accessDenied:
return AccessDenied(message: error, className: Self.moduleName())
case OpenID4VPErrorCodes.invalidTransactionData:
return InvalidTransactionData(message: error, className: Self.moduleName())
default:
return GenericFailure(message: error, className: Self.moduleName())
}
}()
await openID4VP?.sendErrorToVerifier(error: exception)
resolve(true)
let exception: OpenID4VPException = {
switch errorCode {
case OpenID4VPErrorCodes.accessDenied:
return AccessDenied(message: error, className: Self.moduleName())
case OpenID4VPErrorCodes.invalidTransactionData:
return InvalidTransactionData(message: error, className: Self.moduleName())
default:
return GenericFailure(message: error, className: Self.moduleName())
}
}()
do {
let verifierResponse = try await openID4VP?.sendErrorResponseToVerifier(error: exception)
resolve(verifierResponse)
} catch {
rejectWithOpenID4VPError(error, reject: reject)
}
}
}
}
private func parseVerifiers(_ verifiers: [[String: Any]]) throws -> [Verifier] {
return try verifiers.map { verifierDict in
@@ -223,12 +227,22 @@ func sendErrorToVerifier(_ error: String, _ errorCode: String,
}
func rejectWithOpenID4VPError(_ error: Error, reject: RCTPromiseRejectBlock) {
if let openidError = error as? OpenID4VPException {
reject(openidError.errorCode, openidError.message, openidError)
} else {
if let openidError = error as? OpenID4VPException {
let errorMap: [String: Any] = [
"errorCode": openidError.errorCode,
"message": openidError.message,
"response": openidError.response ?? ""
]
let nsError = NSError(
domain: "OPENID4VP",
code: 0,
userInfo: errorMap
)
reject(openidError.errorCode, openidError.message, nsError)
} else {
let nsError = NSError(domain: error.localizedDescription, code: 0)
reject("ERR_UNKNOWN", nsError.localizedDescription, nsError)
}
}
}