| Module | Base32 |
| In: |
lib/Dnsruby/resource/NSEC3.rb
|
| HEX | = | '[0-9a-v]' |
# 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
# 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