register_services (Net::SSH::Transport::OSSL::HMAC)

    # File lib/net/ssh/transport/ossl/hmac/services.rb, line 25
              def register_services( container )
                container.namespace_define :hmac do |space|

                  # Register each supported HMAC algorithm.
                  %w{sha1 sha1-96 md5 md5-96}.each do |name|
                    space.__send__( name.sub(/-/, "_").intern ) do
                      require "net/ssh/transport/ossl/hmac/#{name}"
                      const_get( name.upcase.sub(/-/, "_").intern ).new
                    end
                  end

                  # The :none service is trivial--simply doing as much of nothing
                  # as possible. This is for consistency in how HMAC's are handled,
                  # since it is possible to not have an HMAC for part of the
                  # communication cycle.
                  space.none do
                    require "net/ssh/transport/ossl/hmac/none"
                    None.new
                  end

                  # Add the implementations to a hash, naming them according to the
                  # SSH2 specification.
                  space.collection do |c,|
                    Hash[ "hmac-sha1"    => c.sha1,
                          "hmac-sha1-96" => c.sha1_96,
                          "hmac-md5"     => c.md5,
                          "hmac-md5-96"  => c.md5_96,
                          "none"         => c.none ]
                  end

                  # Add the collection of algorithms to the list of known HMAC
                  # algorithm sources.
                  if space.knows_key?( :hmac_algorithm_sources )
                    space.hmac_algorithm_sources << space.collection
                  end
                end
              end