Class: PostmanMta::Utils::Signature
- Inherits:
-
Object
- Object
- PostmanMta::Utils::Signature
- Defined in:
- lib/postman_mta/utils/signature.rb
Overview
Usage:
request = Signature.new()
request.valid?('some-signature-hash', 'some-big-secret-key',)
Constant Summary collapse
- SPLITTER =
'|'.freeze
- TTL =
2.minutes
Instance Method Summary collapse
- #alive? ⇒ Boolean
- #alive_timerange ⇒ Object
- #expired? ⇒ Boolean
-
#generate_signature(secret) ⇒ Object
Generate signature token.
-
#initialize(options = {}) ⇒ Signature
constructor
A new instance of Signature.
- #invalid?(*args) ⇒ Boolean
- #valid?(signature, secret) ⇒ Boolean
Constructor Details
#initialize(options = {}) ⇒ Signature
Returns a new instance of Signature.
14 15 16 17 |
# File 'lib/postman_mta/utils/signature.rb', line 14 def initialize( = {}) @options = @timestamp = Time.zone.at(@options[:timestamp].to_i) end |
Instance Method Details
#alive? ⇒ Boolean
32 33 34 |
# File 'lib/postman_mta/utils/signature.rb', line 32 def alive? alive_timerange.cover?(@timestamp) end |
#alive_timerange ⇒ Object
36 37 38 |
# File 'lib/postman_mta/utils/signature.rb', line 36 def alive_timerange @alive_timerange ||= (TTL.ago..Time.zone.now) end |
#expired? ⇒ Boolean
28 29 30 |
# File 'lib/postman_mta/utils/signature.rb', line 28 def expired? !alive? end |
#generate_signature(secret) ⇒ Object
Generate signature token
42 43 44 45 |
# File 'lib/postman_mta/utils/signature.rb', line 42 def generate_signature(secret) hmac = OpenSSL::HMAC.digest(digest, secret, string_to_sign) Base64.encode64(hmac).chomp end |
#invalid?(*args) ⇒ Boolean
24 25 26 |
# File 'lib/postman_mta/utils/signature.rb', line 24 def invalid?(*args) !valid?(*args) end |
#valid?(signature, secret) ⇒ Boolean
19 20 21 22 |
# File 'lib/postman_mta/utils/signature.rb', line 19 def valid?(signature, secret) return false if signature.blank? || secret.blank? || expired? generate_signature(secret) == signature end |