Class: HrrRbSsh::Transport::ServerHostKeyAlgorithm::SshRsa
- Inherits:
-
HrrRbSsh::Transport::ServerHostKeyAlgorithm
- Object
- HrrRbSsh::Transport::ServerHostKeyAlgorithm
- HrrRbSsh::Transport::ServerHostKeyAlgorithm::SshRsa
- Defined in:
- lib/hrr_rb_ssh/transport/server_host_key_algorithm/ssh_rsa.rb
Constant Summary collapse
- NAME =
'ssh-rsa'- SECRET_KEY =
"-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEA71zHt9RvbXmxuOCWPKR65iBHO+a8M7Mfo4vRCs/dorZN7XL1\nlYwjclvo0X1T39BRX+qJ2m4HB+7Vlef9YF7spYKm6czuSCYmJjD5X+PW5QYSGED1\nfFSXwjTdDwJi1OKS4kL0Dd6zcSjlFxfjVLNCyUcix36XgDpoBLBFkDZd5P2ow3J6\nWNanBasXrckjCk4M3kFclvmxl1O56bbV9VZq51ZqLjv/ZhOrE3WIPfrJGdZssODa\nDnI6tM1puwZGVba9VaI8FfnuJcacJ3T9oEoXPY5W+kPZAw6dOARXnJTg+oZk/dBD\nBgej0aMO+1XM7HKz5BiqbhGGSXGas5zoefHbNwIDAQABAoIBAQDP2aQ/2EOuL8eI\n/9TV8goafRr+RB1XU4r8zHOIzPnryhyfPX1OEDPToUXpa8gCiPWwsYxlVbfbRqTH\nmHzoS2V5T5u7WE3t7tqfvVU+1C0OERhzYS0KeraRWLBA0VSbAeiEe5lL1f/CGr3c\nMM0iBsvO1mu4ChBqs80RjTPKx7r/FStpWtqWN4kn+Bhj06qCqhftnudZdYFTHa/G\nia4YWOUH6dSIZKpE7oG53Gm/2ZdK2YiAgMOdrTQkvRzxuIa/RHaETj21hKpetmI7\nTfS26RbU2t1Bf/fdFhtTqoAz+CrZEH7Z407ZO45fdc31zJAFIK2Zf3CDVnKwih3t\nO0bEVSSpAoGBAP/zEWaTivdQtcemMRhFQBySgnStov+dsxnGBnTkWxVIU7VoFgyg\nmgNRlWUxMf12mlfqBVRpx0/ALggHf5KFmbAZ+3qvKSLmfIVM5E9l5NKbZnCWtIqq\n1DN9kHPPOZn3uYvOs9Cpn7S6sa+rVZ82Mg8EZMsPesvFMOjrgNbMQxt7AoGBAO9o\n38VM0+M09sAgOhmqv+Esa2gUGw5n18o/fdmlZdnA+D2ntgr70AD6JUCSYrZgTJRq\nHNMuKrbD6HyaPjVaxYJVCFJIcfV+nViZdE8cHh9WXQ/JP/T6nvNajCC8StvoQg4I\nvAZFTzChoe2yrOsWXezn9QAecQ8L2WHDLImpayR1AoGADoc1jaUCVld2egas8ru7\nj+OhFA5nGitRZz0eULRFl0eruLhXyA+1rkqLOFs6gzCgQi0+cDQw5A38jugeDasX\nti9DXwtiQmDi4I4kx3z5KBs6DVoAlX5s3R9be7dfhaXSGmV5P3bhYdjXDSmkio0A\n+mk9b2lJhxeCVzZG8epWRNECgYB2KzGoVQ+Q6ieRFVcYLCuhnSc2rBXeumrMrSIV\nN4paPOFKrWkxarF0igOxJ5AJrOafqvCnW/ZBV9l9BzUFaNRsTERbON7m6aQIg1Xh\nZmOH3Dz6+b7T0JB8VYks70OT38Qa4TzNa5B21JD0nmizcMrTkHphoKT1ZEfb9VYa\nbMExsQKBgQDoSpo/ZP8+dwR1A/gcu2K5Ie47c3WgKw7qQMarxqzTeS8Xu6/KAn+J\nKa2zIvoHhxlhXFBRhp+FIaFlYRR38gHeNxCoUylpboCUyMkHOsOP43AiKsmbNK20\nvzTNM3SFzgt3bHkdEtDLc64aoBX+dHOot6u71XLZrshnHPtiZ0C/ZA==\n-----END RSA PRIVATE KEY-----\n"- KEY_FORMAT_DEFINITION =
[ ['string', 'ssh-rsa'], ['mpint', 'e'], ['mpint', 'n'], ]
- SIGN_DEFINITION =
[ ['string', 'ssh-rsa'], ['string', 'rsa_signature_blob'], ]
Instance Method Summary collapse
- #decode(definition, payload) ⇒ Object
- #encode(definition, payload) ⇒ Object
-
#initialize ⇒ SshRsa
constructor
A new instance of SshRsa.
- #server_public_host_key ⇒ Object
- #sign(digest, data) ⇒ Object
- #verify(digest, sign, data) ⇒ Object
Methods inherited from HrrRbSsh::Transport::ServerHostKeyAlgorithm
Constructor Details
#initialize ⇒ SshRsa
Returns a new instance of SshRsa.
54 55 56 57 58 |
# File 'lib/hrr_rb_ssh/transport/server_host_key_algorithm/ssh_rsa.rb', line 54 def initialize super @rsa = OpenSSL::PKey::RSA.new SECRET_KEY end |
Instance Method Details
#decode(definition, payload) ⇒ Object
67 68 69 70 71 72 73 74 75 |
# File 'lib/hrr_rb_ssh/transport/server_host_key_algorithm/ssh_rsa.rb', line 67 def decode definition, payload payload_io = StringIO.new payload, 'r' definition.map{ |data_type, field_name| [ field_name, HrrRbSsh::Transport::DataType[data_type].decode( payload_io ) ] }.to_h end |
#encode(definition, payload) ⇒ Object
60 61 62 63 64 65 |
# File 'lib/hrr_rb_ssh/transport/server_host_key_algorithm/ssh_rsa.rb', line 60 def encode definition, payload definition.map{ |data_type, field_name| field_value = if payload[field_name].instance_of? ::Proc then payload[field_name].call else payload[field_name] end HrrRbSsh::Transport::DataType[data_type].encode( field_value ) }.join end |
#server_public_host_key ⇒ Object
77 78 79 80 81 82 83 84 |
# File 'lib/hrr_rb_ssh/transport/server_host_key_algorithm/ssh_rsa.rb', line 77 def server_public_host_key payload = { 'ssh-rsa' => 'ssh-rsa', 'e' => @rsa.e.to_i, 'n' => @rsa.n.to_i, } encode KEY_FORMAT_DEFINITION, payload end |
#sign(digest, data) ⇒ Object
86 87 88 89 90 91 92 |
# File 'lib/hrr_rb_ssh/transport/server_host_key_algorithm/ssh_rsa.rb', line 86 def sign digest, data payload = { 'ssh-rsa' => 'ssh-rsa', 'rsa_signature_blob' => @rsa.sign(digest, data), } encode SIGN_DEFINITION, payload end |
#verify(digest, sign, data) ⇒ Object
94 95 96 97 |
# File 'lib/hrr_rb_ssh/transport/server_host_key_algorithm/ssh_rsa.rb', line 94 def verify digest, sign, data payload = decode SIGN_DEFINITION, sign payload['ssh-rsa'] == 'ssh-rsa' && @rsa.verify(digest, payload['rsa_signature_blob'], data) end |