mirror of
https://github.com/mosip/inji-wallet.git
synced 2026-01-08 05:03:56 -05:00
284 lines
9.6 KiB
Swift
284 lines
9.6 KiB
Swift
import Foundation
|
|
import Security
|
|
import React
|
|
import securekeystore
|
|
|
|
@objc(RNSecureKeystoreModule)
|
|
class RNSecureKeystoreModule: NSObject,RCTBridgeModule {
|
|
static func moduleName() -> String! {
|
|
return "RNSecureKeystoreModule"
|
|
}
|
|
|
|
|
|
private var secureKeystore:SecureKeystoreProtocol
|
|
|
|
override init() {
|
|
self.secureKeystore=SecureKeystoreImpl()
|
|
}
|
|
|
|
@objc
|
|
static func requiresMainQueueSetup() -> Bool {
|
|
return true
|
|
}
|
|
|
|
@objc
|
|
func generateKeyPair(_ type: String, isAuthRequired: Bool, authTimeout: Int, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
let successLambda: (String) -> Void = { success in
|
|
resolve(success)
|
|
}
|
|
|
|
let failureLambda: (String, String) -> Void = { code, message in
|
|
reject(code, message, nil)
|
|
}
|
|
var tag=""
|
|
if(type=="RS256")
|
|
{
|
|
tag="RSA"
|
|
}
|
|
else
|
|
{
|
|
tag="ECR1"
|
|
|
|
}
|
|
|
|
secureKeystore.generateKeyPair(type: tag, tag: tag, isAuthRequired: isAuthRequired, authTimeout: Int32(authTimeout), onSuccess: successLambda, onFailure: failureLambda)
|
|
}
|
|
|
|
@objc
|
|
func deleteKeyPair(_ tag: String, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
let successLambda: (Bool) -> Void = { success in
|
|
resolve(success)
|
|
}
|
|
|
|
let failureLambda: (String, String) -> Void = { code, message in
|
|
reject(code, message, nil)
|
|
}
|
|
|
|
|
|
secureKeystore.deleteKeyPair(tag: tag,onSuccess: successLambda,onFailure: failureLambda)
|
|
}
|
|
|
|
@objc
|
|
func hasAlias(_ tag: String, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
let successLambda: (Bool) -> Void = { success in
|
|
resolve(success)
|
|
}
|
|
|
|
let failureLambda: (String, String) -> Void = { code, message in
|
|
reject(code, message, nil)
|
|
}
|
|
|
|
secureKeystore.hasAlias(tag: tag,onSuccess: successLambda,onFailure: failureLambda)
|
|
}
|
|
|
|
@objc
|
|
func sign(_ signAlgorithm: String, alias: String, data: String, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
let successLambda: (String) -> Void = { success in
|
|
resolve(success)
|
|
}
|
|
|
|
let failureLambda: (String, String) -> Void = { code, message in
|
|
reject(code, message, nil)
|
|
}
|
|
var tag=""
|
|
if(alias=="RS256")
|
|
{
|
|
tag="RSA"
|
|
}
|
|
else
|
|
{
|
|
tag="ECR1"
|
|
|
|
}
|
|
secureKeystore.sign(signAlgorithm: tag,alias: tag,data: data,onSuccess: successLambda,onFailure: failureLambda)
|
|
}
|
|
|
|
@objc
|
|
func storeGenericKey(_ publickKey:String,privateKey:String, account: String, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
let successLambda: (Bool) -> Void = { success in
|
|
resolve(success)
|
|
}
|
|
|
|
let failureLambda: (String, String) -> Void = { code, message in
|
|
reject(code, message, nil)
|
|
}
|
|
|
|
secureKeystore.storeGenericKey(publicKey: publickKey, privateKey: privateKey, account: account, onSuccess: successLambda, onFailure: failureLambda)
|
|
}
|
|
|
|
@objc
|
|
func storeData(_ key:String,value:String,resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
let successLambda: (Bool) -> Void = { success in
|
|
resolve(success)
|
|
}
|
|
|
|
let failureLambda: (String, String) -> Void = { code, message in
|
|
reject(code, message, nil)
|
|
}
|
|
|
|
secureKeystore.storeGenericKey(publicKey: value, privateKey: "", account: key, onSuccess: successLambda, onFailure: failureLambda)
|
|
}
|
|
|
|
@objc
|
|
func retrieveGenericKey(_ account: String, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
let successLambda: (String?,String?) -> Void = { privateKey,publicKey in
|
|
let keyPair=[privateKey,publicKey]
|
|
resolve(keyPair)
|
|
|
|
}
|
|
|
|
let failureLambda: (String, String) -> Void = { code, message in
|
|
reject(code, message, nil)
|
|
}
|
|
|
|
secureKeystore.retrieveGenericKey(account: account,onSuccess: successLambda,onFailure: failureLambda)
|
|
}
|
|
|
|
@objc
|
|
func getData(_ key: String, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock)
|
|
{
|
|
let successLambda: (String?,String?) -> Void = { privateKey,publicKey in
|
|
let keyPair=[privateKey,publicKey]
|
|
resolve(keyPair)
|
|
|
|
}
|
|
|
|
let failureLambda: (String, String) -> Void = { code, message in
|
|
reject(code, message, nil)
|
|
}
|
|
|
|
secureKeystore.retrieveGenericKey(account: key,onSuccess: successLambda,onFailure: failureLambda)
|
|
}
|
|
|
|
@objc
|
|
func hasBiometricsEnabled(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
let success = secureKeystore.hasBiometricsEnabled()
|
|
resolve(success)
|
|
}
|
|
|
|
@objc
|
|
func updatePopup(_ title: String, desc: String) {
|
|
secureKeystore.updatePopup(title: title, desc: desc)
|
|
}
|
|
|
|
@objc
|
|
func generateKey(_ alias: String, authRequired: Bool, authTimeout: Int, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
let successLambda: (Bool) -> Void = { success in
|
|
resolve(success)
|
|
}
|
|
|
|
let failureLambda: (String, String) -> Void = { code, message in
|
|
reject(code, message, nil)
|
|
}
|
|
|
|
secureKeystore.generateKey(alias: alias, authRequired: authRequired, authTimeout: Int32(authTimeout), onSuccess: successLambda, onFailure: failureLambda)
|
|
}
|
|
|
|
@objc
|
|
func encryptData(_ alias: String, data: String, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
let successLambda: (String) -> Void = { encryptedData in
|
|
resolve(encryptedData)
|
|
}
|
|
|
|
let failureLambda: (String, String) -> Void = { code, message in
|
|
reject(code, message, nil)
|
|
}
|
|
|
|
secureKeystore.encryptData(alias: alias, data: data, onSuccess: successLambda, onFailure: failureLambda)
|
|
}
|
|
|
|
@objc
|
|
func decryptData(_ alias: String, data: String, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
let successLambda: (String) -> Void = { decryptedData in
|
|
resolve(decryptedData)
|
|
}
|
|
|
|
let failureLambda: (String, String) -> Void = { code, message in
|
|
reject(code, message, nil)
|
|
}
|
|
|
|
secureKeystore.decryptData(alias: alias, data: data, onSuccess: successLambda, onFailure: failureLambda)
|
|
}
|
|
|
|
@available(iOS 13.0, *)
|
|
@objc
|
|
func generateHmacshaKey(_ alias: String, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
let successLambda: (Bool) -> Void = { success in
|
|
resolve(success)
|
|
}
|
|
|
|
let failureLambda: (String, String) -> Void = { code, message in
|
|
reject(code, message, nil)
|
|
}
|
|
|
|
secureKeystore.generateHmacshaKey(alias: alias, onSuccess: successLambda, onFailure: failureLambda)
|
|
}
|
|
|
|
@available(iOS 13.0, *)
|
|
@objc
|
|
func generateHmacSha(_ alias: String, data: String, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
let successLambda: (String?) -> Void = { hash in
|
|
resolve(hash)
|
|
}
|
|
|
|
let failureLambda: (String, String) -> Void = { code, message in
|
|
reject(code, message, nil)
|
|
}
|
|
|
|
secureKeystore.generateHmacSha(alias: alias, data: data, onSuccess: successLambda, onFailure: failureLambda)
|
|
}
|
|
|
|
@objc
|
|
func clearKeys(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
let successLambda: (Bool) -> Void = { success in
|
|
resolve(success)
|
|
}
|
|
|
|
let failureLambda: (String, String) -> Void = { code, message in
|
|
reject(code, message, nil)
|
|
}
|
|
|
|
secureKeystore.clearKeys(onSuccess: successLambda, onFailure: failureLambda)
|
|
}
|
|
|
|
@objc
|
|
func retrieveKey(_ alias:String, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock){
|
|
let successLambda: (String) -> Void = { success in
|
|
resolve(success)
|
|
}
|
|
|
|
let failureLambda: (String, String) -> Void = { code, message in
|
|
reject(code, message, nil)
|
|
}
|
|
secureKeystore.retrieveKey(tag: alias, onSuccess: successLambda, onFailure: failureLambda)
|
|
}
|
|
|
|
@objc
|
|
func storeValueInCloud(_ key: String, value: String, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
let successLambda: (Bool) -> Void = { success in
|
|
resolve(success)
|
|
}
|
|
|
|
let failureLambda: (String, String) -> Void = { code, message in
|
|
reject(code, message, nil)
|
|
}
|
|
|
|
secureKeystore.storeValueInCloud(key: key, value: value, onSuccess: successLambda, onFailure: failureLambda)
|
|
}
|
|
|
|
@objc
|
|
func retrieveValueFromCloud(_ key: String, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
let successLambda: (String?) -> Void = { value in
|
|
resolve(value)
|
|
}
|
|
|
|
let failureLambda: (String, String) -> Void = { code, message in
|
|
reject(code, message, nil)
|
|
}
|
|
|
|
secureKeystore.retrieveValueFromCloud(key: key, onSuccess: successLambda, onFailure: failureLambda)
|
|
}
|
|
|
|
|
|
}
|