Class: Authograph::Signer

Inherits:
Object
  • Object
show all
Defined in:
lib/authograph/signer.rb

Constant Summary collapse

DEFAULT_SIGN_HEADER =
'X-Signature'
DEFAULT_DATE_HEADER =
'X-Date'

Instance Method Summary collapse

Constructor Details

#initialize(digest: 'sha384', header: DEFAULT_SIGN_HEADER, sign_headers: [], sign_date: true, date_header: DEFAULT_DATE_HEADER, date_max_skew: 600) ⇒ Signer

Returns a new instance of Signer.



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/authograph/signer.rb', line 6

def initialize(
  digest: 'sha384',
  header: DEFAULT_SIGN_HEADER,
  sign_headers: [],
  sign_date: true,
  date_header: DEFAULT_DATE_HEADER,
  date_max_skew: 600
)
  @digest = digest
  @header = header
  @sign_headers = sign_headers

  @sign_date = sign_date
  @date_header = date_header
  @date_max_skew = date_max_skew
  @sign_headers << date_header if sign_date # ensure date header is signed too
end

Instance Method Details

#authentic?(_request, _key_secret) ⇒ Boolean

Returns:

  • (Boolean)


32
33
34
35
36
37
38
# File 'lib/authograph/signer.rb', line 32

def authentic?(_request, _key_secret)
  _request = adapt _request

  return false if !signatures_match? _request, _key_secret
  return false if @sign_date && !request_within_time_window?(_request)
  true
end

#sign(_request, _key_secret) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/authograph/signer.rb', line 24

def sign(_request, _key_secret)
  _request = adapt _request

  set_request_date(_request) if @sign_date
  # TODO: set_hashed_content to discard invalid signatures before checking content?
  set_request_authorization(_request, _key_secret)
end