rely on zod to remove os specific restraints
This commit is contained in:
@@ -1,58 +1,32 @@
|
||||
import ExpoModulesCore
|
||||
import JOSESwift
|
||||
|
||||
struct JWK : Record {
|
||||
@Field
|
||||
var alg: String
|
||||
@Field
|
||||
var kty: String
|
||||
@Field
|
||||
var crv: String?
|
||||
@Field
|
||||
var x: String?
|
||||
@Field
|
||||
var y: String?
|
||||
@Field
|
||||
var e: String?
|
||||
@Field
|
||||
var n: String?
|
||||
@Field
|
||||
struct JWK {
|
||||
let kty: String
|
||||
let use: String
|
||||
let crv: String
|
||||
let kid: String
|
||||
let x: String
|
||||
let y: String
|
||||
var d: String?
|
||||
@Field
|
||||
var use: String?
|
||||
@Field
|
||||
var kid: String?
|
||||
let alg: String
|
||||
|
||||
func toField() -> Field<JWK> {
|
||||
return Field(wrappedValue: self)
|
||||
}
|
||||
|
||||
func toPrivateSecKey() throws -> SecKey? {
|
||||
let jsonData = try JSONSerialization.data(withJSONObject: self.toDictionary())
|
||||
guard let jwk = try? JSONDecoder().decode(ECPrivateKey.self, from: jsonData),
|
||||
let key = try? jwk.converted(to: SecKey.self)
|
||||
else {
|
||||
print("Error creating SecKey.")
|
||||
return nil
|
||||
}
|
||||
return key
|
||||
}
|
||||
|
||||
func toPublicSecKey() throws -> SecKey? {
|
||||
let jsonData = try JSONSerialization.data(withJSONObject: self.toDictionary())
|
||||
guard let jwk = try? JSONDecoder().decode(ECPublicKey.self, from: jsonData),
|
||||
let key = try? jwk.converted(to: SecKey.self)
|
||||
else {
|
||||
print("Error creating SecKey.")
|
||||
return nil
|
||||
}
|
||||
return key
|
||||
}
|
||||
}
|
||||
func toJson() -> String {
|
||||
var dict: [String: Any] = [
|
||||
"kty": kty,
|
||||
"use": use,
|
||||
"crv": crv,
|
||||
"kid": kid,
|
||||
"x": x,
|
||||
"y": y,
|
||||
"alg": alg,
|
||||
]
|
||||
|
||||
struct JWKPair : Record {
|
||||
@Field
|
||||
var privateKey: JWK
|
||||
@Field
|
||||
var publicKey: JWK
|
||||
if let d = d {
|
||||
dict["d"] = d
|
||||
}
|
||||
|
||||
let jsonData = try! JSONSerialization.data(withJSONObject: dict, options: [])
|
||||
return String(data: jsonData, encoding: .utf8)!
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user