Class: WebPackage::MICE
- Inherits:
-
Object
- Object
- WebPackage::MICE
- Includes:
- Helpers
- Defined in:
- lib/web_package/mice.rb
Overview
Merkle Integrity Content Encoding tools.ietf.org/id/draft-thomson-http-mice-03.html
Constant Summary collapse
- CHUNK_SIZE =
bytes
2**14
Instance Method Summary collapse
Instance Method Details
#encode(text) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/web_package/mice.rb', line 9 def encode(text) num_parts = text.bytesize.fdiv(CHUNK_SIZE).ceil chunks = [] proofs = [] num_parts.times do |i| delimeter = i.zero? && "\x00" || "\x01" ri = num_parts - i - 1 chunks << force_bin(text.byteslice(ri * CHUNK_SIZE, CHUNK_SIZE)) proofs << digest("#{chunks.last}#{proofs.last}#{delimeter}") end chunks << [CHUNK_SIZE].pack('Q>') return proofs.pop, chunks.zip(proofs).flatten.reverse!.join end |