Kit: implement Codable
Signed-off-by: Andrej Mihajlov <and@mullvad.net>
This commit is contained in:
@@ -8,7 +8,7 @@ import WireGuardKitC
|
||||
#endif
|
||||
|
||||
/// Umbrella protocol for all kinds of keys.
|
||||
public protocol WireGuardKey: RawRepresentable, Hashable where RawValue == Data {}
|
||||
public protocol WireGuardKey: RawRepresentable, Hashable, Codable where RawValue == Data {}
|
||||
|
||||
/// Class describing a private key used by WireGuard.
|
||||
public final class PrivateKey: WireGuardKey {
|
||||
@@ -125,6 +125,28 @@ extension WireGuardKey {
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Codable
|
||||
|
||||
public init(from decoder: Decoder) throws {
|
||||
let container = try decoder.singleValueContainer()
|
||||
let data = try container.decode(Data.self)
|
||||
|
||||
if let instance = Self.init(rawValue: data) {
|
||||
self = instance
|
||||
} else {
|
||||
throw DecodingError.dataCorruptedError(
|
||||
in: container,
|
||||
debugDescription: "Corrupt key data."
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
public func encode(to encoder: Encoder) throws {
|
||||
var container = encoder.singleValueContainer()
|
||||
|
||||
try container.encode(rawValue)
|
||||
}
|
||||
|
||||
// MARK: - Equatable
|
||||
|
||||
public static func == (lhs: Self, rhs: Self) -> Bool {
|
||||
|
||||
Reference in New Issue
Block a user