- 
          
- 
                Notifications
    You must be signed in to change notification settings 
- Fork 60
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