2020-03-07 23:04:36 +00:00
|
|
|
public protocol Secret: Identifiable {
|
2020-03-04 07:14:38 +00:00
|
|
|
|
|
|
|
var name: String { get }
|
|
|
|
var publicKey: Data { get }
|
|
|
|
|
2020-02-19 04:52:00 +00:00
|
|
|
}
|
2020-03-07 23:04:36 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public struct AnySecret: Secret {
|
|
|
|
|
|
|
|
fileprivate let _id: () -> AnyHashable
|
|
|
|
fileprivate let _name: () -> String
|
|
|
|
fileprivate let _publicKey: () -> Data
|
|
|
|
|
|
|
|
public init<T>(_ secret: T) where T: Secret {
|
|
|
|
_id = { secret.id as AnyHashable }
|
|
|
|
_name = { secret.name }
|
|
|
|
_publicKey = { secret.publicKey }
|
|
|
|
}
|
|
|
|
|
|
|
|
public var id: AnyHashable {
|
|
|
|
return _id()
|
|
|
|
}
|
|
|
|
|
|
|
|
public var name: String {
|
|
|
|
return _name()
|
|
|
|
}
|
|
|
|
|
|
|
|
public var publicKey: Data {
|
|
|
|
return _publicKey()
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|