+
+ static func PeerID(signingPublicKeyData: Data) -> String {
+ let hash = RecoveryKeySet.hashRecoveryedSigningPublicKey(keyData: signingPublicKeyData)
+ let peerID = "RK-" + hash
+
+ return peerID
+ }
+
+ static func spki(publicKeyData: Data) throws -> Data {
+ let key = try _SFECPublicKey(data: publicKeyData, specifier: _SFECKeySpecifier(curve: SFEllipticCurve.nistp384))
+ return key.encodeSubjectPublicKeyInfo()
+ }
+
+ public static func asPeer(recoveryKeys: TPRecoveryKeyPair, viewList: Set<String>) throws -> TrustedPeersHelperPeer {
+ return TrustedPeersHelperPeer(peerID: self.PeerID(signingPublicKeyData: recoveryKeys.signingKeyData),
+ signingSPKI: try self.spki(publicKeyData: recoveryKeys.signingKeyData),
+ encryptionSPKI: try self.spki(publicKeyData: recoveryKeys.encryptionKeyData),
+ viewList: viewList)
+ }