mirror of https://github.com/oxen-io/session-ios
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
21 lines
866 B
Swift
21 lines
866 B
Swift
// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
|
|
|
|
import Foundation
|
|
import Curve25519Kit
|
|
|
|
/// The `BlindedECKeyPair` is essentially the same as the `ECKeyPair` except it allows us to more easily distinguish between the two,
|
|
/// additionally when generating the `hexEncodedPublicKey` value it will apply the correct prefix
|
|
public class BlindedECKeyPair: ECKeyPair {}
|
|
|
|
public enum IdPrefix: String, CaseIterable {
|
|
case standard = "05" // Used for identified users, open groups, etc.
|
|
case blinded = "15" // Used for participants in open groups
|
|
|
|
public init?(with sessionId: String) {
|
|
guard ECKeyPair.isValidHexEncodedPublicKey(candidate: sessionId) else { return nil }
|
|
guard let targetPrefix: IdPrefix = IdPrefix(rawValue: String(sessionId.prefix(2))) else { return nil }
|
|
|
|
self = targetPrefix
|
|
}
|
|
}
|