def register_services( container )
version_check
container.namespace_define :ossl do |b|
b.hmac_algorithm_sources { Array.new }
b.require 'net/ssh/transport/ossl/hmac/services', "#{self}::HMAC"
b.cipher_names do
Hash[ "3des-cbc" => "des-ede3-cbc",
"blowfish-cbc" => "bf-cbc",
"aes256-cbc" => "aes-256-cbc",
"aes192-cbc" => "aes-192-cbc",
"aes128-cbc" => "aes-128-cbc",
"idea-cbc" => "idea-cbc",
"none" => "none" ]
end
b.key_names do
Hash[ "dh" => OpenSSL::PKey::DH,
"rsa" => OpenSSL::PKey::RSA,
"dsa" => OpenSSL::PKey::DSA ]
end
b.digest_names do
Hash[ "sha1" => OpenSSL::Digest::SHA1,
"md5" => OpenSSL::Digest::MD5 ]
end
b.cipher_factory( :model => :singleton_deferred ) do |c,p|
require 'net/ssh/transport/ossl/cipher-factory'
svc = CipherFactory.new( c.cipher_names )
svc.identity_cipher = c.identity_cipher
svc
end
b.hmac_factory( :model => :singleton_deferred ) do |c,p|
require 'net/ssh/transport/ossl/hmac-factory'
HMACFactory.new( c.hmac_algorithm_sources )
end
b.buffer_factory do
require 'net/ssh/transport/ossl/buffer-factory'
BufferFactory.new
end
b.key_factory( :model => :singleton_deferred ) do |c,p|
require 'net/ssh/transport/ossl/key-factory'
svc = KeyFactory.new( c.key_names )
svc.buffers = c.buffer_factory
svc.prompter = c.prompter if c.knows_key?( :prompter )
svc
end
b.bn_factory { OpenSSL::BN }
b.digest_factory do |c,p|
require 'net/ssh/transport/ossl/digest-factory'
DigestFactory.new( c.digest_names )
end
end
container.define do |b|
b.cipher_factories[:ossl] = b.ossl.cipher_factory
b.hmac_factories[:ossl] = b.ossl.hmac_factory
b.key_factories[:ossl] = b.ossl.key_factory
b.buffer_factories[:ossl] = b.ossl.buffer_factory
b.bn_factories[:ossl] = b.ossl.bn_factory
b.digest_factories[:ossl] = b.ossl.digest_factory
end
end