Module: Pantry::Communication::Security

Defined in:
lib/pantry/communication/security.rb,
lib/pantry/communication/security/null_security.rb,
lib/pantry/communication/security/authentication.rb,
lib/pantry/communication/security/curve_security.rb,
lib/pantry/communication/security/curve_key_store.rb

Defined Under Namespace

Classes: Authentication, CurveKeyStore, CurveSecurity, NullSecurity, UnknownSecurityStrategyError

Constant Summary collapse

AVAILABLE_SECURITY =
{
  nil     => Pantry::Communication::Security::NullSecurity,
  "curve" => Pantry::Communication::Security::CurveSecurity
}

Class Method Summary collapse

Class Method Details

.curve_supported?Boolean

Check if ZeroMQ is built properly to support Curve encryption

Returns:

  • (Boolean)


13
14
15
16
17
18
19
20
# File 'lib/pantry/communication/security.rb', line 13

def self.curve_supported?
  begin
    ZMQ::Util.curve_keypair
    true
  rescue
    false
  end
end

.handler_class(config) ⇒ Object



34
35
36
37
38
39
40
# File 'lib/pantry/communication/security.rb', line 34

def self.handler_class(config)
  if handler = AVAILABLE_SECURITY[config.security]
    handler
  else
    raise UnknownSecurityStrategyError, "Unknown security strategy #{config.security.inspect}"
  end
end

.new_client(config = Pantry.config) ⇒ Object

Build a Client implementation of the security strategy configured in Pantry.config.security



24
25
26
# File 'lib/pantry/communication/security.rb', line 24

def self.new_client(config = Pantry.config)
  handler_class(config).client
end

.new_server(config = Pantry.config) ⇒ Object

Build a Server implementation of the security strategy configured in Pantry.config.security



30
31
32
# File 'lib/pantry/communication/security.rb', line 30

def self.new_server(config = Pantry.config)
  handler_class(config).server
end