rely on zod to remove os specific restraints

This commit is contained in:
Hailey
2024-04-15 03:52:10 -07:00
parent c499a03661
commit 7ed21e448d
7 changed files with 91 additions and 285 deletions
+25 -51
View File
@@ -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)!
}
}