secretive/Sources/Secretive/Preview Content/PreviewStore.swift

80 lines
1.9 KiB
Swift
Raw Permalink Normal View History

2020-02-19 04:52:00 +00:00
import Foundation
import SecretKit
enum Preview {}
extension Preview {
struct Secret: SecretKit.Secret {
let id = UUID().uuidString
2020-03-04 07:14:38 +00:00
let name: String
let algorithm = Algorithm.ellipticCurve
let keySize = 256
2020-03-04 07:14:38 +00:00
let publicKey = UUID().uuidString.data(using: .utf8)!
2020-02-19 04:52:00 +00:00
}
}
extension Preview {
class Store: SecretStore, ObservableObject {
2020-03-07 23:42:40 +00:00
let isAvailable = true
2020-03-09 03:03:40 +00:00
let id = UUID()
var name: String { "Preview Store" }
2020-02-19 04:52:00 +00:00
@Published var secrets: [Secret] = []
init(secrets: [Secret]) {
self.secrets.append(contentsOf: secrets)
}
init(numberOfRandomSecrets: Int = 5) {
let new = (0..<numberOfRandomSecrets).map { Secret(name: String(describing: $0)) }
2020-02-19 04:52:00 +00:00
self.secrets.append(contentsOf: new)
}
func sign(data: Data, with secret: Preview.Secret, for provenance: SigningRequestProvenance) throws -> SignedData {
return SignedData(data: data, requiredAuthentication: false)
}
func persistAuthentication(secret: Preview.Secret, forDuration duration: TimeInterval) throws {
2020-03-04 07:14:38 +00:00
}
}
class StoreModifiable: Store, SecretStoreModifiable {
2022-01-03 06:15:18 +00:00
override var name: String { "Modifiable Preview Store" }
func create(name: String, requiresAuthentication: Bool) throws {
}
2020-03-04 07:14:38 +00:00
func delete(secret: Preview.Secret) throws {
}
func update(secret: Preview.Secret, name: String) throws {
}
2022-01-03 06:15:18 +00:00
func reload() throws {
}
}
}
extension Preview {
static func storeList(stores: [Store] = [], modifiableStores: [StoreModifiable] = []) -> SecretStoreList {
let list = SecretStoreList()
for store in stores {
list.add(store: store)
}
for storeModifiable in modifiableStores {
list.add(store: storeModifiable)
}
return list
2020-02-19 04:52:00 +00:00
}
}