Class: NimbusSecure

Inherits:
Object
  • Object
show all
Defined in:
lib/nimbussecure/base.rb,
lib/nimbussecure/config.rb,
lib/nimbussecure/errors.rb,
lib/nimbussecure/connect.rb,
lib/nimbussecure/results.rb,
lib/nimbussecure/version.rb,
lib/nimbussecure/accounts.rb,
lib/nimbussecure/crypt_key.rb,
lib/nimbussecure/stored_key.rb,
lib/nimbussecure/attr_accessor.rb

Defined Under Namespace

Classes: Account, AuthenticationMiddleware, Base, Config, CryptKey, InvalidConfig, InvalidConfigFile, InvalidEncryptionKey, MissingOrInvalidConfiguation, ServerError, StoredKey

Constant Summary collapse

VERSION =
"0.5.2"

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) ⇒ NimbusSecure

Possible ways to initialize:

1) Explicit:

ns=NimbusSecure.new account: "ident",apikey: "xyzzy", crypt_keys:{"key1":"value1","key2":"value2"}

2) File:

ns=NimbusSecure.new config_file: "./nsconfig.yml"
nsconfig.yml:
-------------
account: ident
apikey: xxx
crypt_keys:
  key1: value1
  key2: value2

3) YAML string (not file):

ns=NimbusSecure.new config: "account: ident\napikey: xxx\ncrypt_keys:\n  key1: value1\n  key2:value2\n"

4) Default:

ns=NimbusSecure.new
...reads configuration from ~/nimbussecure.yml

Raises:



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/nimbussecure/base.rb', line 22

def initialize opts={}
  raise InvalidConfig unless opts.respond_to?(:size) and opts.respond_to?(:[])
  opts[:config_file]=File.expand_path("~/.nimbussecure.yml") if opts.size==0
  if opts[:config] || opts[:config_file]
    raw_config_str=opts[:config]
    raw_config_str = File.read(File.expand_path(opts[:config_file])) if opts[:config_file]
    raise InvalidConfigFile unless raw_config_str
    opts=YAML.load(raw_config_str)
    raise InvalidConfigFile unless opts
  end
  opts=Hash[opts.map{ |k, v| [k.to_sym, v] }]
  config.="xxx"
  config.endpoint=opts[:endpoint].to_s if opts[:endpoint]
  config.=opts[:account].to_s
  config.apikey=opts[:apikey].to_s
  config.crypt_keys=Hash[opts[:crypt_keys].map{ |k, v| [k.to_sym, v.to_s] }] if opts[:crypt_keys]
  raise InvalidConfig,"Config is missing or incomplete" unless config.valid?
end

Instance Method Details

#accountObject

Raises:



10
11
12
13
14
15
# File 'lib/nimbussecure/accounts.rb', line 10

def 
  return @account if @account
  res=request_get "/account"
  raise ServerError,"Invalid Account" unless res and res["account"]
  @account=.new res["account"]["name"],res["account"]["num_crypt_keys"],res["account"]["num_stored_keys"]
end

#clear_crypt_key_cacheObject



67
68
69
# File 'lib/nimbussecure/crypt_key.rb', line 67

def clear_crypt_key_cache
  @cached_crypt_keys=nil
end

#configObject



16
17
18
# File 'lib/nimbussecure/config.rb', line 16

def config
  @config||=Config.new
end

#crypt_key(ident) ⇒ Object



70
71
72
73
74
75
# File 'lib/nimbussecure/crypt_key.rb', line 70

def crypt_key ident
  crypt_keys_from_cache.each do |ck|
    return ck if ck.ident==ident.to_sym
  end
  return nil
end

#crypt_keysObject

Access Crypt Keys



58
59
60
61
62
# File 'lib/nimbussecure/crypt_key.rb', line 58

def crypt_keys
  res=request_get "/crypt_keys"
  return nil unless res
  @cached_crypt_keys=res["crypt_keys"].map{|key|NimbusSecure::CryptKey.new self,key}
end

#crypt_keys_from_cacheObject



63
64
65
66
# File 'lib/nimbussecure/crypt_key.rb', line 63

def crypt_keys_from_cache
  return @cached_crypt_keys if @cached_crypt_keys
  crypt_keys
end

#failed?Boolean

Returns:

  • (Boolean)


11
12
13
# File 'lib/nimbussecure/results.rb', line 11

def failed?
  last_status!="success"
end

#last_error_detailsObject



17
18
19
# File 'lib/nimbussecure/results.rb', line 17

def last_error_details
  @last_error_details
end

#last_error_messageObject



14
15
16
# File 'lib/nimbussecure/results.rb', line 14

def last_error_message
  @last_error_message
end

#last_resultObject



2
3
4
# File 'lib/nimbussecure/results.rb', line 2

def last_result
  @last_result
end

#last_statusObject



5
6
7
# File 'lib/nimbussecure/results.rb', line 5

def last_status
  @last_status
end

#lookup(ident) ⇒ Object

,crypt_key



28
29
30
31
32
33
34
35
36
37
# File 'lib/nimbussecure/stored_key.rb', line 28

def lookup ident #,crypt_key
  res=request_get "/stored_keys/#{ident}/locate"
  return nil unless res
  return nil unless res["stored_key"]
  stored_key=NimbusSecure::StoredKey.new self,res["stored_key"]
  ck=stored_key.crypt_key
  return nil unless stored_key.encrypted_value
  stored_key.apply_crypt_key ck
  stored_key
end

#lookup_value(ident) ⇒ Object



38
39
40
41
42
# File 'lib/nimbussecure/stored_key.rb', line 38

def lookup_value ident
  sk=lookup ident
  return nil if sk.nil?
  sk.value
end

#stored_keysObject



43
44
45
46
# File 'lib/nimbussecure/stored_key.rb', line 43

def stored_keys
  res=request_get "/stored_keys"
  res["stored_keys"].map{|key|NimbusSecure::StoredKey.new self,key}
end

#success?Boolean

Returns:

  • (Boolean)


8
9
10
# File 'lib/nimbussecure/results.rb', line 8

def success?
  last_status=="success"
end