Class: HTTP::Security::Headers::PublicKeyPins
- Inherits:
-
Object
- Object
- HTTP::Security::Headers::PublicKeyPins
- Defined in:
- lib/http/security/headers/public_key_pins.rb
Direct Known Subclasses
Instance Attribute Summary collapse
- #max_age ⇒ Integer readonly
- #pin ⇒ Hash{Symbol,String => Array<String>} readonly
- #report_uri ⇒ URI::HTTP readonly
Instance Method Summary collapse
- #include_sub_domains? ⇒ Boolean
-
#initialize(options = {}) ⇒ PublicKeyPins
constructor
A new instance of PublicKeyPins.
- #strict? ⇒ Boolean
- #to_s ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ PublicKeyPins
Returns a new instance of PublicKeyPins.
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/http/security/headers/public_key_pins.rb', line 15 def initialize(={}) @pin = {} .each do |key,value| if (key.kind_of?(Symbol) && key =~ /^pin_/) @pin[key[4..-1].to_sym] = Array(value) elsif (key.kind_of?(String) && key.start_with?('pin-')) @pin[key[4..-1]] = Array(value) end end @max_age = [:max_age] @include_sub_domains = [:includesubdomains] @report_uri = [:report_uri] @strict = [:strict] end |
Instance Attribute Details
#max_age ⇒ Integer (readonly)
10 11 12 |
# File 'lib/http/security/headers/public_key_pins.rb', line 10 def max_age @max_age end |
#pin ⇒ Hash{Symbol,String => Array<String>} (readonly)
7 8 9 |
# File 'lib/http/security/headers/public_key_pins.rb', line 7 def pin @pin end |
#report_uri ⇒ URI::HTTP (readonly)
13 14 15 |
# File 'lib/http/security/headers/public_key_pins.rb', line 13 def report_uri @report_uri end |
Instance Method Details
#include_sub_domains? ⇒ Boolean
32 33 34 |
# File 'lib/http/security/headers/public_key_pins.rb', line 32 def include_sub_domains? !!@include_sub_domains end |
#strict? ⇒ Boolean
36 37 38 |
# File 'lib/http/security/headers/public_key_pins.rb', line 36 def strict? !!@strict end |
#to_s ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/http/security/headers/public_key_pins.rb', line 40 def to_s directives = [] @pin.each do |algorithm,fingerprints| Array(fingerprints).each do |fingerprint| directives << "pin-#{algorithm}=#{fingerprint.dump}" end end directives << "max-age=#{@max_age}" if @max_age directives << "includeSubdomains" if @include_sub_domains directives << "report-uri=\"#{@report_uri}\"" if @report_uri directives << "strict" if @strict return directives.join('; ') end |