Class Dnsruby::RR::HIP
In: lib/Dnsruby/resource/HIP.rb
Parent: RR
Message Update ResolvError EncodeError OtherResolvError ServFail FormErr DecodeError NXRRSet YXDomain NotImp NXDomain VerifyError NotAuth YXRRSet NotZone Refused TsigError CodeMapper Types MetaTypes QTypes Nsec3HashAlgorithms Algorithms OpCode Classes ExtendedRCode Modes RCode Comparable Name RRSet TsigNotSignedResponseError Resolver SingleResolver StandardError TimeoutError ResolvTimeout DNS Dnssec Hosts RR\n[lib/Dnsruby/resource/A.rb\nlib/Dnsruby/resource/AAAA.rb\nlib/Dnsruby/resource/AFSDB.rb\nlib/Dnsruby/resource/CERT.rb\nlib/Dnsruby/resource/DHCID.rb\nlib/Dnsruby/resource/DLV.rb\nlib/Dnsruby/resource/DNSKEY.rb\nlib/Dnsruby/resource/DS.rb\nlib/Dnsruby/resource/HINFO.rb\nlib/Dnsruby/resource/HIP.rb\nlib/Dnsruby/resource/IN.rb\nlib/Dnsruby/resource/IPSECKEY.rb\nlib/Dnsruby/resource/ISDN.rb\nlib/Dnsruby/resource/KX.rb\nlib/Dnsruby/resource/LOC.rb\nlib/Dnsruby/resource/MINFO.rb\nlib/Dnsruby/resource/MX.rb\nlib/Dnsruby/resource/NAPTR.rb\nlib/Dnsruby/resource/NSAP.rb\nlib/Dnsruby/resource/NSEC.rb\nlib/Dnsruby/resource/NSEC3.rb\nlib/Dnsruby/resource/NSEC3PARAM.rb\nlib/Dnsruby/resource/OPT.rb\nlib/Dnsruby/resource/PX.rb\nlib/Dnsruby/resource/RP.rb\nlib/Dnsruby/resource/RRSIG.rb\nlib/Dnsruby/resource/RT.rb\nlib/Dnsruby/resource/SOA.rb\nlib/Dnsruby/resource/SPF.rb\nlib/Dnsruby/resource/SRV.rb\nlib/Dnsruby/resource/SSHFP.rb\nlib/Dnsruby/resource/TKEY.rb\nlib/Dnsruby/resource/TSIG.rb\nlib/Dnsruby/resource/TXT.rb\nlib/Dnsruby/resource/X25.rb\nlib/Dnsruby/resource/domain_name.rb\nlib/Dnsruby/resource/generic.rb\nlib/Dnsruby/resource/resource.rb] Recursor IPv6 IPv4 ZoneTransfer MessageDecoder MessageEncoder Question Header TheLog ValidatorThread PacketSender ResolverRuby Config KeyCache Cache SingleVerifier SelectThread Resolv ZoneReader lib/Dnsruby/DNS.rb lib/Dnsruby/dnssec.rb lib/Dnsruby/Hosts.rb lib/Dnsruby/resource/PX.rb lib/Dnsruby/Recursor.rb lib/Dnsruby/update.rb lib/Dnsruby/ipv6.rb lib/Dnsruby/ipv4.rb lib/Dnsruby/code_mapper.rb lib/Dnsruby/zone_transfer.rb lib/Dnsruby/message.rb lib/Dnsruby/TheLog.rb lib/Dnsruby/resource/resource.rb lib/Dnsruby/validator_thread.rb lib/Dnsruby/PacketSender.rb lib/Dnsruby/Resolver.rb lib/Dnsruby/Config.rb lib/Dnsruby/key_cache.rb lib/Dnsruby/Cache.rb lib/Dnsruby/single_verifier.rb lib/Dnsruby/SingleResolver.rb lib/Dnsruby/select_thread.rb lib/Dnsruby/name.rb lib/dnsruby.rb lib/Dnsruby/resource/TKEY.rb lib/Dnsruby/zone_reader.rb Dnsruby dot/m_61_0.png

Methods

Constants

TypeValue = Types::HIP #:nodoc: all

Attributes

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

Public Instance methods

[Source]

    # 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

[Source]

     # 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

[Source]

    # 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

[Source]

    # 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

[Source]

    # 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

Public Key field - presentation format is base64 - public_key methods reused from IPSECKEY

[Source]

    # File lib/Dnsruby/resource/HIP.rb, line 74
74:       def public_key_string
75:         [@public_key.to_s].pack("m*").gsub("\n", "")
76:       end

[Validate]