Class: NimbusSecure
- Inherits:
-
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
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.account="xxx"
config.endpoint=opts[:endpoint].to_s if opts[:endpoint]
config.account=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
#account ⇒ Object
10
11
12
13
14
15
|
# File 'lib/nimbussecure/accounts.rb', line 10
def account
return @account if @account
res=request_get "/account"
raise ServerError,"Invalid Account" unless res and res["account"]
@account=Account.new res["account"]["name"],res["account"]["num_crypt_keys"],res["account"]["num_stored_keys"]
end
|
#clear_crypt_key_cache ⇒ Object
67
68
69
|
# File 'lib/nimbussecure/crypt_key.rb', line 67
def clear_crypt_key_cache
@cached_crypt_keys=nil
end
|
#config ⇒ Object
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_keys ⇒ Object
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_cache ⇒ Object
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
11
12
13
|
# File 'lib/nimbussecure/results.rb', line 11
def failed?
last_status!="success"
end
|
#last_error_details ⇒ Object
17
18
19
|
# File 'lib/nimbussecure/results.rb', line 17
def last_error_details
@last_error_details
end
|
#last_error_message ⇒ Object
14
15
16
|
# File 'lib/nimbussecure/results.rb', line 14
def last_error_message
@last_error_message
end
|
#last_result ⇒ Object
2
3
4
|
# File 'lib/nimbussecure/results.rb', line 2
def last_result
@last_result
end
|
#last_status ⇒ Object
5
6
7
|
# File 'lib/nimbussecure/results.rb', line 5
def last_status
@last_status
end
|
#lookup(ident) ⇒ Object
28
29
30
31
32
33
34
35
36
37
|
# File 'lib/nimbussecure/stored_key.rb', line 28
def lookup ident
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_keys ⇒ Object
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
8
9
10
|
# File 'lib/nimbussecure/results.rb', line 8
def success?
last_status=="success"
end
|