Module Base32
In: lib/Dnsruby/resource/NSEC3.rb
Base32 dot/m_33_1.png

Methods

Constants

HEX = '[0-9a-v]'

Public Instance methods

[Source]

    # File lib/Dnsruby/resource/NSEC3.rb, line 33
33:   def decode32hex(str)
34:     str.gsub(/\G\s*(#{HEX}{8}|#{HEX}{7}=|#{HEX}{5}={3}|#{HEX}{4}={4}|#{HEX}{2}={6}|(\S))/imno) do
35:       raise "invalid base32" if $2
36:       s = $1
37:       s.tr("=", "0").to_i(32).divmod(256).pack("NC")[0,
38:         (s.count("^=")*5).div(8)]
39:     end
40:   end

[Source]

    # File lib/Dnsruby/resource/NSEC3.rb, line 19
19:   def encode32hex(str)
20:     str.gsub(/\G(.{5})|(.{1,4}\z)/mn) do
21:       full = $1; frag = $2
22:       n, c = (full || frag.ljust(5, "\0")).unpack("NC")
23:       full = ((n << 8) | c).to_s(32).rjust(8, "0")
24:       if frag
25:         full[0, (frag.length*8+4).div(5)].ljust(8, "=").upcase
26:       else
27:         full.upcase
28:       end
29:     end
30:   end

[Validate]