Class: CertificateTransparency::MerkleTreeLeaf
- Inherits:
-
Object
- Object
- CertificateTransparency::MerkleTreeLeaf
- Defined in:
- lib/certificate-transparency/merkle_tree_leaf.rb
Overview
An RFC6962 MerkleTreeLeaf structure
Use MerkleTreeLeaf.from_blob if you have an encoded MTL you wish to decode, or
else create a new instance, pass in a TimestampedEntry object via
#timestamped_entry=, and then call #to_blob to get the encoded MTL.
Instance Attribute Summary collapse
-
#timestamped_entry ⇒ Object
Returns the value of attribute timestamped_entry.
Class Method Summary collapse
-
.from_blob(blob) ⇒ CertificateTransparency::MerkleTreeLeaf
Return a new MerkleTreeLeaf instance, from a binary blob of data.
Instance Method Summary collapse
-
#initialize ⇒ MerkleTreeLeaf
constructor
Instantiate a new MerkleTreeLeaf.
-
#leaf_type ⇒ Object
Return a symbol indicating the leaf type of the MerkleTreeLeaf structure represented by this object.
-
#leaf_type=(lt) ⇒ Object
Set the leaf type of the MerkleTreeLeaf structure.
-
#to_blob ⇒ String
Generate a binary blob representing this MerkleTreeLeaf structure.
-
#version ⇒ Object
Return a symbol indicating the version of the MerkleTreeLeaf structure represented by this object.
-
#version=(v) ⇒ Object
Set the version of the MerkleTreeLeaf structure to create.
Constructor Details
#initialize ⇒ MerkleTreeLeaf
Instantiate a new MerkleTreeLeaf.
32 33 34 35 |
# File 'lib/certificate-transparency/merkle_tree_leaf.rb', line 32 def initialize @version = ::CertificateTransparency::Version[:v1] @leaf_type = ::CertificateTransparency::MerkleLeafType[:timestamped_entry] end |
Instance Attribute Details
#timestamped_entry ⇒ Object
Returns the value of attribute timestamped_entry.
8 9 10 |
# File 'lib/certificate-transparency/merkle_tree_leaf.rb', line 8 def @timestamped_entry end |
Class Method Details
.from_blob(blob) ⇒ CertificateTransparency::MerkleTreeLeaf
Return a new MerkleTreeLeaf instance, from a binary blob of data. Raises an ArgumentError if the blob is invalid in some way.
17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/certificate-transparency/merkle_tree_leaf.rb', line 17 def self.from_blob(blob) new.tap do |mtl| mtl.version, leaf_type, te = blob.unpack("CCa*") unless leaf_type == ::CertificateTransparency::MerkleLeafType[:timestamped_entry] raise ArgumentError, "Unknown leaf type in blob" end mtl. = ::CertificateTransparency::TimestampedEntry.from_blob(te) end end |
Instance Method Details
#leaf_type ⇒ Object
Return a symbol indicating the leaf type of the MerkleTreeLeaf
structure represented by this object. At present, only
:timestamped_entry is supported.
93 94 95 |
# File 'lib/certificate-transparency/merkle_tree_leaf.rb', line 93 def leaf_type ::CertificateTransparency::MerkleLeafType.invert[@leaf_type] end |
#leaf_type=(lt) ⇒ Object
Set the leaf type of the MerkleTreeLeaf structure. At present, only
:timestamped_entry is supported, so there isn't much point in ever
calling this method.
78 79 80 81 82 83 84 85 |
# File 'lib/certificate-transparency/merkle_tree_leaf.rb', line 78 def leaf_type=(lt) @leaf_type = ::CertificateTransparency::MerkleLeafType[lt] if @leaf_type.nil? raise ArgumentError, "Invalid leaf_type #{lt.inspect}" end end |
#to_blob ⇒ String
Generate a binary blob representing this MerkleTreeLeaf structure.
118 119 120 121 122 123 124 125 |
# File 'lib/certificate-transparency/merkle_tree_leaf.rb', line 118 def to_blob if @timestamped_entry.nil? raise RuntimeError, "timestamped_entry has not been set" end [@version, @leaf_type, @timestamped_entry.to_blob].pack("CCa*") end |
#version ⇒ Object
Return a symbol indicating the version of the MerkleTreeLeaf structure
represented by this object. At present, only :v1 is supported.
66 67 68 |
# File 'lib/certificate-transparency/merkle_tree_leaf.rb', line 66 def version ::CertificateTransparency::Version.invert[@version] end |
#version=(v) ⇒ Object
Set the version of the MerkleTreeLeaf structure to create. At present,
only :v1 is supported, so there isn't much point in ever calling this
method.
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/certificate-transparency/merkle_tree_leaf.rb', line 45 def version=(v) @version = case v when Symbol ::CertificateTransparency::Version[v] when Integer v else nil end if @version.nil? or !::CertificateTransparency::Version.values.include?(@version) raise ArgumentError, "Invalid version #{v.inspect}" end end |