Kit: implement Codable
Signed-off-by: Andrej Mihajlov <and@mullvad.net>
This commit is contained in:
@@ -8,7 +8,7 @@ import WireGuardKitC
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/// Umbrella protocol for all kinds of keys.
|
/// 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.
|
/// Class describing a private key used by WireGuard.
|
||||||
public final class PrivateKey: WireGuardKey {
|
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
|
// MARK: - Equatable
|
||||||
|
|
||||||
public static func == (lhs: Self, rhs: Self) -> Bool {
|
public static func == (lhs: Self, rhs: Self) -> Bool {
|
||||||
|
|||||||
Reference in New Issue
Block a user