module HrrRbSsh::Authentication::Method::Publickey::Algorithm::Functionable
Public Class Methods
new(logger: nil)
click to toggle source
# File lib/hrr_rb_ssh/authentication/method/publickey/algorithm/functionable.rb, line 15 def initialize logger: nil self.logger = logger end
Public Instance Methods
generate_public_key_blob(secret_key)
click to toggle source
# File lib/hrr_rb_ssh/authentication/method/publickey/algorithm/functionable.rb, line 50 def generate_public_key_blob secret_key publickey = HrrRbSsh::Algorithm::Publickey[self.class::NAME].new secret_key, logger: logger publickey.to_public_key_blob end
generate_signature(session_id, username, service_name, method_name, secret_key)
click to toggle source
# File lib/hrr_rb_ssh/authentication/method/publickey/algorithm/functionable.rb, line 55 def generate_signature session_id, username, service_name, method_name, secret_key publickey = HrrRbSsh::Algorithm::Publickey[self.class::NAME].new secret_key, logger: logger publickey_blob = publickey.to_public_key_blob signature_blob_h = { :'session identifier' => session_id, :'message number' => Message::SSH_MSG_USERAUTH_REQUEST::VALUE, :'user name' => username, :'service name' => service_name, :'method name' => method_name, :'with signature' => true, :'public key algorithm name' => self.class::NAME, :'public key blob' => publickey_blob } signature_blob = SignatureBlob.new(logger: logger).encode signature_blob_h publickey.sign signature_blob end
verify_public_key(public_key_algorithm_name, public_key, public_key_blob)
click to toggle source
# File lib/hrr_rb_ssh/authentication/method/publickey/algorithm/functionable.rb, line 19 def verify_public_key public_key_algorithm_name, public_key, public_key_blob begin publickey = HrrRbSsh::Algorithm::Publickey[self.class::NAME].new public_key, logger: logger public_key_algorithm_name == self.class::NAME && public_key_blob == publickey.to_public_key_blob rescue => e log_error { [e.backtrace[0], ": ", e.message, " (", e.class.to_s, ")\n\t", e.backtrace[1..-1].join("\n\t")].join } false end end
verify_signature(session_id, message)
click to toggle source
# File lib/hrr_rb_ssh/authentication/method/publickey/algorithm/functionable.rb, line 29 def verify_signature session_id, message begin signature_blob_h = { :'session identifier' => session_id, :'message number' => message[:'message number'], :'user name' => message[:'user name'], :'service name' => message[:'service name'], :'method name' => message[:'method name'], :'with signature' => message[:'with signature'], :'public key algorithm name' => message[:'public key algorithm name'], :'public key blob' => message[:'public key blob'], } signature_blob = SignatureBlob.new(logger: logger).encode signature_blob_h publickey = HrrRbSsh::Algorithm::Publickey[self.class::NAME].new message[:'public key blob'], logger: logger publickey.verify message[:'signature'], signature_blob rescue => e log_error { [e.backtrace[0], ": ", e.message, " (", e.class.to_s, ")\n\t", e.backtrace[1..-1].join("\n\t")].join } false end end