Class: Zwiebel::HiddenService::Descriptor
- Inherits:
-
Object
- Object
- Zwiebel::HiddenService::Descriptor
- Defined in:
- lib/zwiebel/hidden_service/descriptor.rb
Constant Summary collapse
- FIELDS =
%w(hs-descriptor descriptor-lifetime descriptor-signing-key-cert revision-counter superencrypted signature).freeze
Instance Attribute Summary collapse
-
#certificate ⇒ Object
Returns the value of attribute certificate.
-
#string ⇒ Object
Returns the value of attribute string.
Instance Method Summary collapse
- #descriptor_lifetime ⇒ Object
- #descriptor_signing_key_cert ⇒ Object
- #hs_descriptor ⇒ Object
-
#initialize(string:) ⇒ Descriptor
constructor
A new instance of Descriptor.
- #parse ⇒ Object
- #revision_counter ⇒ Object
- #signature ⇒ Object
- #subcredential(identity_public_key) ⇒ Object
- #superencrypted ⇒ Object
Constructor Details
#initialize(string:) ⇒ Descriptor
Returns a new instance of Descriptor.
22 23 24 25 26 |
# File 'lib/zwiebel/hidden_service/descriptor.rb', line 22 def initialize(string:) @string = string parse @certificate = Ed25519Certificate.new(descriptor_data: descriptor_signing_key_cert) end |
Instance Attribute Details
#certificate ⇒ Object
Returns the value of attribute certificate.
20 21 22 |
# File 'lib/zwiebel/hidden_service/descriptor.rb', line 20 def certificate @certificate end |
#string ⇒ Object
Returns the value of attribute string.
20 21 22 |
# File 'lib/zwiebel/hidden_service/descriptor.rb', line 20 def string @string end |
Instance Method Details
#descriptor_lifetime ⇒ Object
57 58 59 |
# File 'lib/zwiebel/hidden_service/descriptor.rb', line 57 def descriptor_lifetime @hs_descriptor["descriptor-lifetime"]&.to_i end |
#descriptor_signing_key_cert ⇒ Object
61 62 63 |
# File 'lib/zwiebel/hidden_service/descriptor.rb', line 61 def descriptor_signing_key_cert @hs_descriptor["descriptor-signing-key-cert"] end |
#hs_descriptor ⇒ Object
53 54 55 |
# File 'lib/zwiebel/hidden_service/descriptor.rb', line 53 def hs_descriptor @hs_descriptor["hs-descriptor"]&.to_i end |
#parse ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/zwiebel/hidden_service/descriptor.rb', line 28 def parse @hs_descriptor = {} descriptor_current_field = nil string.each_line do |line| line_field = line.split(" ")[0] if FIELDS.include?(line_field) descriptor_current_field = line_field if @hs_descriptor[descriptor_current_field].nil? && !line.split(" ")[1..-1].nil? @hs_descriptor[descriptor_current_field] = line.split(" ")[1..-1].join(" ") else @hs_descriptor[descriptor_current_field] = "" end else hs_descriptor_value = @hs_descriptor[descriptor_current_field] if hs_descriptor_value.nil? @hs_descriptor[descriptor_current_field] = line else @hs_descriptor[descriptor_current_field] = hs_descriptor_value + line end end end end |
#revision_counter ⇒ Object
65 66 67 |
# File 'lib/zwiebel/hidden_service/descriptor.rb', line 65 def revision_counter @hs_descriptor["revision-counter"]&.to_i end |
#signature ⇒ Object
73 74 75 |
# File 'lib/zwiebel/hidden_service/descriptor.rb', line 73 def signature @hs_descriptor["signature"] end |
#subcredential(identity_public_key) ⇒ Object
77 78 79 80 |
# File 'lib/zwiebel/hidden_service/descriptor.rb', line 77 def subcredential(identity_public_key) credential = OpenSSL::Digest.digest("SHA3-256", "credential" + identity_public_key) OpenSSL::Digest.digest("SHA3-256", "subcredential" + credential + certificate.signing_key) end |
#superencrypted ⇒ Object
69 70 71 |
# File 'lib/zwiebel/hidden_service/descriptor.rb', line 69 def superencrypted @hs_descriptor["superencrypted"] end |