-
-
Notifications
You must be signed in to change notification settings - Fork 69
Open
Description
Is your feature request related to a problem? Please describe.
Could you kindly help support OpenSSH key for ECDSA algorithms?
Describe alternatives you've considered
Currently, I can only use the OpenSSH key for the Ed25519 algorithm.
Additional context
Below is the code I am trying to implement:
let sshKeyContent = try String(contentsOf: sshFileUrl)
print("ssh key content: \(sshKeyContent)")
let sshKeyType = try SSHKeyDetection.detectPrivateKeyType(from: sshKeyContent)
print("sshKeyType = \(sshKeyType)")
switch sshKeyType {
case .rsa:
print("RSA key detected")
let privateKey = try Insecure.RSA.PrivateKey(sshRsa: sshKeyContent)
sshAuthenticationMethod = .rsa(username: username, privateKey: privateKey)
case .ed25519:
print("Ed25519 key detected")
let privateKey = try Curve25519.Signing.PrivateKey(sshEd25519: sshKeyContent)
sshAuthenticationMethod = .ed25519(username: username, privateKey: privateKey)
case .ecdsaP256:
print("ecdsaP256 key detected")
let privateKey = try P256.Signing.PrivateKey(pemRepresentation: sshKeyContent) // Does it support OpenSSH key?
sshAuthenticationMethod = .p256(username: username, privateKey: privateKey)
case .ecdsaP384:
print("ecdsaP384 key detected")
let privateKey = try P384.Signing.PrivateKey(pemRepresentation: sshKeyContent) // Does it support OpenSSH key?
sshAuthenticationMethod = .p384(username: username, privateKey: privateKey)
case .ecdsaP521:
print("ecdsaP521 key detected")
let privateKey = try P521.Signing.PrivateKey(pemRepresentation: sshKeyContent) // Does it support OpenSSH key?
sshAuthenticationMethod = .p521(username: username, privateKey: privateKey)
default:
print("unsupported key type = \(sshKeyType)")
}Metadata
Metadata
Assignees
Labels
No labels