Module: SSHData::PublicKey
- Defined in:
- lib/ssh_data/public_key.rb,
lib/ssh_data/public_key/dsa.rb,
lib/ssh_data/public_key/rsa.rb,
lib/ssh_data/public_key/base.rb,
lib/ssh_data/public_key/ecdsa.rb,
lib/ssh_data/public_key/ed25519.rb,
lib/ssh_data/public_key/skecdsa.rb,
lib/ssh_data/public_key/sked25519.rb,
lib/ssh_data/public_key/security_key.rb
Defined Under Namespace
Modules: SecurityKey Classes: Base, DSA, ECDSA, ED25519, RSA, SKECDSA, SKED25519
Constant Summary collapse
- ALGO_RSA =
Public key algorithm identifiers
"ssh-rsa"
- ALGO_DSA =
"ssh-dss"
- ALGO_ECDSA256 =
"ecdsa-sha2-nistp256"
- ALGO_ECDSA384 =
"ecdsa-sha2-nistp384"
- ALGO_ECDSA521 =
"ecdsa-sha2-nistp521"
- ALGO_ED25519 =
"ssh-ed25519"
- ALGO_SKED25519 =
"[email protected]"
- ALGO_SKECDSA256 =
"[email protected]"
- ALGO_RSA_SHA2_256 =
RSA SHA2 signature algorithms used with ALGO_RSA keys. tools.ietf.org/html/draft-rsa-dsa-sha2-256-02
"rsa-sha2-256"
- ALGO_RSA_SHA2_512 =
"rsa-sha2-512"
- ALGOS =
[ ALGO_RSA, ALGO_DSA, ALGO_ECDSA256, ALGO_ECDSA384, ALGO_ECDSA521, ALGO_ED25519, ALGO_SKECDSA256, ALGO_SKED25519 ]
Class Method Summary collapse
- .from_data(data) ⇒ Object
-
.parse_openssh(key) ⇒ Object
Parse an OpenSSH public key in authorized_keys format (see sshd(8) manual page).
-
.parse_rfc4253(raw) ⇒ Object
Parse an RFC 4253 binary SSH public key.
Class Method Details
.from_data(data) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# 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) ⇒ Object
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.
30 31 32 33 34 35 36 37 38 39 |
# 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) ⇒ Object
Parse an RFC 4253 binary SSH public key.
key - A RFC 4253 binary public key String.
Returns a PublicKey::Base subclass instance.
49 50 51 52 53 54 55 56 57 |
# 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 |