Class | Dnsruby::RR::HIP |
In: |
lib/Dnsruby/resource/HIP.rb
|
Parent: | RR |
TypeValue | = | Types::HIP #:nodoc: all |
hit_length | [RW] | An 8-bit length for the HIT field |
pk_algorithm | [RW] |
The PK algorithm used :
0 - no key present 1 - DSA key present 2 - RSA key present |
pk_length | [RW] | An 8-bit length for the Public Key field |
rsvs | [RW] | An array of Rendezvous Servers |
# File lib/Dnsruby/resource/HIP.rb, line 47 47: def from_hash(hash) 48: @rsvs=[] 49: @hit_length = hash[:hit_length] 50: @pk_algorithm = hash[:pk_algorithm] 51: @pk_length = hash[:pk_length] 52: @hit = hash[:hit] 53: @public_key = hash[:public_key] 54: if (hash[:rsvs]) 55: hash[:rsvs].each {|rsv| 56: @rsvs.push(Name.create(rsv)) 57: } 58: end 59: end
# File lib/Dnsruby/resource/HIP.rb, line 84 84: def from_string(input) 85: @rsvs=[] 86: if (input.length > 0) 87: split = input.split(" ") 88: 89: @pk_algorithm = split[0].to_i 90: @hit = hit_from_string(split[1]) 91: @hit_length = @hit.length 92: @public_key = public_key_from_string(split[2]) 93: @pk_length = @public_key.length 94: 95: # Now load in any RSVs there may be 96: count = 3 97: while (split[count]) 98: @rsvs.push(Name.create(split[count])) 99: count += 1 100: end 101: 102: end 103: end
# File lib/Dnsruby/resource/HIP.rb, line 66 66: def hit_from_string(hit_text) 67: # Decode the hex value 68: hit_text.gsub!(/\n/, "") 69: hit_text.gsub!(/ /, "") 70: return hit_text.unpack("H*")[0] 71: end
HIT field - stored in binary : client methods should handle base16(hex) encoding
# File lib/Dnsruby/resource/HIP.rb, line 62 62: def hit_string 63: # Return hex value 64: [@hit.to_s].pack("H*").gsub("\n", "") 65: end
# File lib/Dnsruby/resource/HIP.rb, line 78 78: def public_key_from_string(key_text) 79: key_text.gsub!(/\n/, "") 80: key_text.gsub!(/ /, "") 81: return key_text.unpack("m*")[0] 82: end