Module: Smaak
- Defined in:
- lib/smaak.rb,
lib/smaak/utils.rb,
lib/smaak/client.rb,
lib/smaak/crypto.rb,
lib/smaak/server.rb,
lib/smaak/version.rb,
lib/smaak/associate.rb,
lib/smaak/cavage_04.rb,
lib/smaak/auth_message.rb,
lib/smaak/smaak_service.rb,
lib/smaak/adaptors/rack_adaptor.rb,
lib/smaak/adaptors/net_http_adaptor.rb
Defined Under Namespace
Classes: Associate, AuthMessage, Cavage04, Client, Crypto, NetHttpAdaptor, RackAdaptor, Server, SmaakService, Utils
Constant Summary
collapse
- DEFAULT_TOKEN_LIFE =
2
- VERSION =
"0.2.2"
- @@adaptors =
{ Net::HTTPRequest => NetHttpAdaptor, Rack::Request => RackAdaptor}
Class Method Summary
collapse
Class Method Details
.adaptors ⇒ Object
25
26
27
|
# File 'lib/smaak.rb', line 25
def self.adaptors
@@adaptors
end
|
.add_request_adaptor(request_clazz, adaptor_clazz) ⇒ Object
29
30
31
|
# File 'lib/smaak.rb', line 29
def self.add_request_adaptor(request_clazz, adaptor_clazz)
@@adaptors[request_clazz] = adaptor_clazz
end
|
.create_adaptor(request) ⇒ Object
33
34
35
36
37
38
|
# File 'lib/smaak.rb', line 33
def self.create_adaptor(request)
@@adaptors.each do |r, a|
return a.new(request) if request.is_a? r
end
raise ArgumentError.new("Unknown request class #{request.class}. Add an adaptor using Smaak.add_request_adaptor.")
end
|
15
16
17
18
19
20
21
22
23
|
# File 'lib/smaak.rb', line 15
def self.
[ "x-smaak-recipient",
"x-smaak-identifier",
"x-smaak-route-info",
"x-smaak-psk",
"x-smaak-expires",
"x-smaak-nonce",
"x-smaak-encrypt" ]
end
|
.select_specification(adaptor, specification) ⇒ Object
40
41
42
43
44
|
# File 'lib/smaak.rb', line 40
def self.select_specification(adaptor, specification)
raise ArgumentError.new("Adaptor must be provided") if adaptor.nil?
return Cavage04.new(adaptor) if specification == Smaak::Cavage04::SPECIFICATION
raise ArgumentError.new("Unknown specification")
end
|
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
# File 'lib/smaak.rb', line 56
def self.(adaptor, pubkey)
raise ArgumentError.new("Key is required") if pubkey.nil?
, signature = Smaak.get_signature_data_from_request(adaptor)
if signature.nil?
puts "[smaak error]: could not extract signature"
return false
end
if .nil?
puts "[smaak error]: could not extract signature headers"
return false
end
verified = Smaak::Crypto.verify_signature(signature, Smaak::Crypto.encode64(), pubkey)
puts "[smaak error]: verification of headers and signature using pubkey failed" unless verified
verified
end
|