module SSHData::PublicKey
Constants
- ALGOS
- ALGO_DSA
- ALGO_ECDSA256
- ALGO_ECDSA384
- ALGO_ECDSA521
- ALGO_ED25519
- ALGO_RSA
Public key algorithm identifiers
- ALGO_RSA_SHA2_256
RSA
SHA2 signature algorithms used withALGO_RSA
keys. tools.ietf.org/html/draft-rsa-dsa-sha2-256-02- ALGO_RSA_SHA2_512
- ALGO_SKECDSA256
- ALGO_SKED25519
Public Class Methods
from_data(data)
click to toggle source
# File lib/ssh_data/public_key.rb, line 59 def self.from_data(data) case data[:algo] when ALGO_RSA RSA.new(**data) when ALGO_DSA DSA.new(**data) when ALGO_ECDSA256, ALGO_ECDSA384, ALGO_ECDSA521 ECDSA.new(**data) when ALGO_ED25519 ED25519.new(**data) when ALGO_SKED25519 SKED25519.new(**data) when ALGO_SKECDSA256 SKECDSA.new(**data) else raise DecodeError, "unkown algo: #{data[:algo].inspect}" end end
parse_openssh(key)
click to toggle source
Parse an OpenSSH public key in authorized_keys format (see sshd(8) manual page).
key - An OpenSSH formatted public key, including algo, base64 encoded key
and optional comment.
Returns a PublicKey::Base
subclass instance.
# File lib/ssh_data/public_key.rb, line 30 def self.parse_openssh(key) algo, raw, _ = SSHData.key_parts(key) parsed = parse_rfc4253(raw) if parsed.algo != algo raise DecodeError, "algo mismatch: #{parsed.algo.inspect}!=#{algo.inspect}" end parsed end
parse_rfc4253(raw)
click to toggle source
Parse an RFC 4253 binary SSH public key.
key - A RFC 4253 binary public key String.
Returns a PublicKey::Base
subclass instance.
# File lib/ssh_data/public_key.rb, line 49 def self.parse_rfc4253(raw) data, read = Encoding.decode_public_key(raw) if read != raw.bytesize raise DecodeError, "unexpected trailing data" end from_data(data) end