dnsruby 1.39 → 1.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -269,6 +269,7 @@ module Dnsruby
269
269
  DHCID = 49 # RFC 4701
270
270
  NSEC3 = 50 # RFC still pending at time of writing
271
271
  NSEC3PARAM= 51 # RFC still pending at time of writing
272
+ HIP = 55 # RFC 5205
272
273
  SPF = 99 # RFC 4408
273
274
  UINFO = 100 # non-standard
274
275
  UID = 101 # non-standard
@@ -372,6 +373,7 @@ module Dnsruby
372
373
 
373
374
  # http://www.iana.org/assignments/dns-sec-alg-numbers/
374
375
  class Algorithms < CodeMapper
376
+ RESERVED = 0
375
377
  RSAMD5 = 1
376
378
  DH = 2
377
379
  DSA = 3
@@ -568,6 +570,7 @@ module Dnsruby
568
570
  require 'Dnsruby/update'
569
571
  require 'Dnsruby/zone_transfer'
570
572
  require 'Dnsruby/dnssec'
573
+ require 'Dnsruby/zone_reader'
571
574
 
572
575
  #Default Resolver to use for Dnsruby class methods
573
576
  DefaultResolver = self.new
@@ -0,0 +1,70 @@
1
+
2
+ #--
3
+ #Copyright 2007 Nominet UK
4
+ #
5
+ #Licensed under the Apache License, Version 2.0 (the "License");
6
+ #you may not use this file except in compliance with the License.
7
+ #You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ #Unless required by applicable law or agreed to in writing, software
12
+ #distributed under the License is distributed on an "AS IS" BASIS,
13
+ #WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ #See the License for the specific language governing permissions and
15
+ #limitations under the License.
16
+ #++
17
+ require 'rubygems'
18
+ require 'test/unit'
19
+ require 'dnsruby'
20
+ include Dnsruby
21
+ class TestHIP < Test::Unit::TestCase
22
+ def test_hip
23
+ [{"www.example.com. IN HIP ( 2 200100107B1A74DF365639CC39F1D578
24
+ AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cIvM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ryra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXdXF5D )" =>
25
+ [2, "200100107B1A74DF365639CC39F1D578", "AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cIvM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ryra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXdXF5D", []]},
26
+
27
+ {"www.example.com. IN HIP ( 2 200100107B1A74DF365639CC39F1D578
28
+ AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cIvM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ryra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXdXF5D
29
+ rvs.example.com. )" =>
30
+ [2, "200100107B1A74DF365639CC39F1D578", "AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cIvM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ryra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXdXF5D",
31
+ ["rvs.example.com"]]},
32
+ {"www.example.com. IN HIP ( 2 200100107B1A74DF365639CC39F1D578
33
+ AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cIvM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ryra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXdXF5D
34
+ rvs1.example.com.
35
+ rvs2.example.com. )" =>
36
+ [2, "200100107B1A74DF365639CC39F1D578", "AwEAAbdxyhNuSutc5EMzxTs9LBPCIkOFH8cIvM4p9+LrV4e19WzK00+CI6zBCQTdtWsuxKbWIy87UOoJTwkUs7lBu+Upr1gsNrut79ryra+bSRGQb1slImA8YVJyuIDsj7kwzG7jnERNqnWxZ48AWkskmdHaVDP4BcelrTI3rMXdXF5D",
37
+ ["rvs1.example.com", "rvs2.example.com"]]},
38
+ ].each {|hash|
39
+ hash.each {|txt, data|
40
+
41
+
42
+ hip = RR.create(txt)
43
+ assert(hip.pk_algorithm == data[0])
44
+ assert(hip.hit_string == data[1])
45
+ assert(hip.public_key_string == data[2])
46
+ hip.rsvs.each {|in_rsv|
47
+ assert(data[3].include?in_rsv.to_s)
48
+ }
49
+ assert(data[3].length == hip.rsvs.length)
50
+
51
+
52
+ m = Dnsruby::Message.new
53
+ m.add_additional(hip)
54
+ data = m.encode
55
+ m2 = Dnsruby::Message.decode(data)
56
+ hip2 = m2.additional()[0]
57
+ assert(hip.pk_algorithm == hip2.pk_algorithm)
58
+ assert(hip.hit_string == hip2.hit_string)
59
+ assert(hip.public_key_string == hip2.public_key_string)
60
+ hip.rsvs.each {|in_rsv|
61
+ assert(hip2.rsvs.include?in_rsv)
62
+ }
63
+ assert(hip2.rsvs.length == hip.rsvs.length)
64
+ assert(hip == hip2)
65
+ }
66
+ }
67
+ end
68
+
69
+ end
70
+
@@ -0,0 +1,70 @@
1
+
2
+ #--
3
+ #Copyright 2007 Nominet UK
4
+ #
5
+ #Licensed under the Apache License, Version 2.0 (the "License");
6
+ #you may not use this file except in compliance with the License.
7
+ #You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ #Unless required by applicable law or agreed to in writing, software
12
+ #distributed under the License is distributed on an "AS IS" BASIS,
13
+ #WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ #See the License for the specific language governing permissions and
15
+ #limitations under the License.
16
+ #++
17
+ require 'rubygems'
18
+ require 'test/unit'
19
+ require 'dnsruby'
20
+ include Dnsruby
21
+ class TestIPSECKEY < Test::Unit::TestCase
22
+ def test_ipseckey
23
+ [{"38.1.0.192.in-addr.arpa. 7200 IN IPSECKEY ( 10 3 2
24
+ mygateway.example.com.
25
+ AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ== )" =>
26
+ ["mygateway.example.com", "AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ==",
27
+ 10, 3, 2]},
28
+
29
+ {"38.2.0.192.in-addr.arpa. 7200 IN IPSECKEY ( 10 1 2
30
+ 192.0.2.38
31
+ AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ== )" =>
32
+ ["192.0.2.38", "AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ==", 10, 1, 2]},
33
+ {"38.2.0.192.in-addr.arpa. 7200 IN IPSECKEY ( 10 0 2
34
+ .
35
+ AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ== )" =>
36
+ ["", "AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ==", 10, 0, 2]},
37
+ {"38.2.0.192.in-addr.arpa. 7200 IN IPSECKEY ( 10 1 2
38
+ 192.0.2.3
39
+ AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ== )" =>
40
+ ["192.0.2.3", "AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ==", 10, 1, 2]},
41
+ {"0.d.4.0.3.0.e.f.f.f.3.f.0.1.2.01.0.0.0.0.0.2.8.B.D.0.1.0.0.2.ip6.arpa. 7200 IN IPSECKEY ( 10 2 2
42
+ 2001:0DB8:0:8002::2000:1
43
+ AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ== )" =>
44
+ ["2001:DB8:0:8002::2000:1", "AQNRU3mG7TVTO2BkR47usntb102uFJtugbo6BSGvgqt4AQ==",
45
+ 10, 2, 2]}
46
+ ].each {|hash|
47
+ hash.each {|txt, data|
48
+
49
+
50
+ ipseckey = RR.create(txt)
51
+ assert(ipseckey.precedence == data[2])
52
+ assert(ipseckey.gateway_type == data[3])
53
+ assert(ipseckey.algorithm == data[4])
54
+ assert(ipseckey.gateway.to_s == data[0])
55
+ assert(ipseckey.public_key_string == data[1])
56
+
57
+ m = Dnsruby::Message.new
58
+ m.add_additional(ipseckey)
59
+ data = m.encode
60
+ m2 = Dnsruby::Message.decode(data)
61
+ ipseckey2 = m2.additional()[0]
62
+ assert(ipseckey.gateway_type == ipseckey2.gateway_type)
63
+ assert(ipseckey.algorithm == ipseckey2.algorithm)
64
+ assert(ipseckey.gateway == ipseckey2.gateway)
65
+ assert(ipseckey == ipseckey2)
66
+ }
67
+ }
68
+ end
69
+
70
+ end
@@ -167,11 +167,16 @@ class TestRR < Test::Unit::TestCase
167
167
  :certtype => 3,
168
168
  :keytag => 1,
169
169
  :alg => 1,
170
- :cert => '123456789abcdefghijklmnopqrstuvwxyz',
170
+ :cert => 'ffsayw1dvk7higuvhn56r26uwjx/',
171
171
  },
172
172
  { #[25]
173
173
  :type => Types.SPF,
174
174
  :strings => 'txt-txtdata',
175
+ },
176
+ {
177
+ :type => Types.KX,
178
+ :preference => 10,
179
+ :exchange => 'kx-exchange.example.com',
175
180
  },
176
181
  ]
177
182
 
@@ -265,4 +270,35 @@ class TestRR < Test::Unit::TestCase
265
270
  update.add('example.com.','NAPTR', 3600, '1 0 "s" "SIP+D2T" "" _sip._tcp.example.com.')
266
271
  update.encode
267
272
  end
273
+
274
+ def test_cert
275
+ rr = RR.create("test.kht.se. 60 IN CERT PGP 0 0 mQGiBDnY2vERBAD3cOxqoAYHYzS+xttvuyN9wZS8CrgwLIlT8Ewo/CCFI11PEO+gJyNPvWPRQsyt1SE60reaIsie2bQTg3DYIg0PmH+ZOlNkpKesPULzdlw4Rx3dD/M3Lkrm977h4Y70ZKC+tbvoYKCCOIkUVevny1PVZ+mB94rb0mMgawSTrct03QCg/w6aHNJFQV7O9ZQ1Fir85M3RS8cEAOo4/1ASVudz3qKZQEhU2Z9O2ydXqpEanHfGirjWYi5RelVsQ9IfBSPFaPAWzQ24nvQ18NU7TgdDQhP4meZXiVXcLBR5Mee2kByf2KAnBUF9aah5s8wZbSrC6u8xEZLuiauvWmCUIWe0Ylc1/L37XeDjrBI2pT+k183X119d6Fr1BACGfZVGsot5rxBUEFPPSrBqYXG/0hRYv9Eq8a4rJAHK2IUWYfivZgL4DtrJnHlha+H5EPQVYkIAN3nGjXoHmosY+J3Sk+GyR+dCBHEwCkoHMKph3igczCEfxAWgqKeYd5mf+QQq2JKrkn2jceiIO7s3CrepeEFAjDSGuxhZjPJVm7QoRGFuaWVsIFAuIE1haG9uZXkgPGRhbm1AcHJpbWUuZ3VzaGkub3JnPohOBBARAgAOBQI52NrxBAsDAQICGQEACgkQ+75aMGJLskn6LgCbBXUD7UmGla5e1zyhuY667hP3F+UAoJIeDZJyRFkQAmb+u8KekRyLD1MLtDJEYW5pZWwgTWFob25leSAoU2Vjb25kYXJ5IEVtYWlsKSA8Z3VzaGlAZ3VzaGkub3JnPohgBBMRAgAgBQJF1J/XAhsjBgsJCAcDAgQVAggDBBYCAwECHgECF4AACgkQ+75aMGJLskkVhACggsivQ9qLhfdA1rGm6f8LRJBSC4wAoI930h+/hshClj6AkNwGRtHdf5XJuQINBDnY2vQQCAD2Qle3CH8IF3KiutapQvMF6PlTETlPtvFuuUs4INoBp1ajFOmPQFXz0AfGy0OplK33TGSGSfgMg71l6RfUodNQ+PVZX9x2Uk89PY3bzpnhV5JZzf24rnRPxfx2vIPFRzBhznzJZv8V+bv9kV7HAarTW56NoKVyOtQa8L9GAFgr5fSI/VhOSdvNILSd5JEHNmszbDgNRR0PfIizHHxbLY7288kjwEPwpVsYjY67VYy4XTjTNP18F1dDox0YbN4zISy1Kv884bEpQBgRjXyEpwpy1obEAxnIByl6ypUM2Zafq9AKUJsCRtMIPWakXUGfnHy9iUsiGSa6q6Jew1XpMgs7AAICB/9eGjzF2gDh6U7I72x/6bSdlExx2LvIF92OZKc0S55IOS4Lgzs7Hbfm1aOL4oJt7wBg94xkF4cerxz7y8R9J+k3GNl14KOjbYaMAh1rdxdAzikYMH1p1hS78GMtwxky6jE5en87BGGMmnbC84JlxwN+MD7diu8D0Gkgjj/pxOp32D5jEe02wBPVjFTpFLJjpFniLUY6AohRDEdSuZwWPuoKVWhpeWkasNn5qgwGyDREbXpyPsU02BkwE4JiGs+JMMdOn9KMh5dxiuwsMM9gHiQZS3mSNBBKPWI5ZXsdStVFvapjf2FUFDXLUbTROPv1Xhqf0u7YYORFnWeVtvzKIxVaiEYEGBECAAYFAjnY2vQACgkQ+75aMGJLsklBWgCeN7z9xk52y/aoaCuF6hYb0d+3k98AoMRxvHuXI1Nc2FXY/x65PwHiUbaY")
276
+ rr = RR.create("all.rr.org. IN CERT 6 0 0 FFsAyW1dVK7hIGuvhN56r26UwJx/")
277
+ # rr = RR.create("all.rr.org. IN WKS 128.32.0.10 UDP who route timed domain")
278
+ rr = RR.create('selector._domainkey.all.rr.org. IN TXT "v=DKIM1; n=Use=20DKIM; p=AwEAAZfbYw8SffZwsbrCLbC+JLErREIF6Yfe9aqsa1Pz6tpGWiLxm9rSL6/YoBvNP3UWX91YDF0JMo6lhu3UIZjITvIwDhx+RJYko9vLzaaJKXGf3ygy6z+deWoZJAV1lTY0Ltx9genboe88CSCHw9aSLkh0obN9Ck8R6zAMYR19ciM/; t=s"')
279
+ end
280
+
281
+ def test_dhcid
282
+ rr = RR.create("all.rr.org. IN DHCID AAIBY2/AuCccgoJbsaxcQc9TUapptP69lOjxfNuVAA2kjEA=")
283
+ m = Dnsruby::Message.new
284
+ m.add_additional(rr)
285
+ data = m.encode
286
+ m2 = Dnsruby::Message.decode(data)
287
+ rr2 = m2.additional()[0]
288
+ assert(rr == rr2)
289
+ end
290
+
291
+ def test_loc
292
+ rr = RR.create("all.rr.org. IN LOC 42 21 54 N 71 06 18 W -24m 30m")
293
+ assert(rr.vert_pre == 1000)
294
+ assert(rr.horiz_pre == 1000000)
295
+ lon = rr.longitude
296
+ # rr2 = RR.create("all.rr.org. 1209600 IN LOC 42 21 54.000 N 71 06 18.000 W 4294967272m 30m 10000m 10m")
297
+ # print rr2.longitude
298
+ # assert(rr2.longitude = lon)
299
+ # print rr.to_s + "\n"
300
+ # print rr2.to_s + "\n"
301
+ # assert(rr.longitude == rr2.longitude)
302
+ # assert(rr == rr2)
303
+ end
268
304
  end
@@ -52,52 +52,6 @@ class VerifierTest < Test::Unit::TestCase
52
52
  verifier = Dnsruby::SingleVerifier.new(nil)
53
53
  verifier.verify_rrset(rrset, key512)
54
54
  end
55
-
56
- def test_sha2_zone
57
- key1 = Dnsruby::RR.create("example.com. 3600 IN DNSKEY 256 3 8 AwEAAeTXG9RkEnPqrs1gTA
58
- +7R2YdovW5HrObuMcsgIjfgAupTXX7NHBVUVX0oF2x8fJIeYt9pTuogTuUhw9/
59
- kJrCI43VWa7xbsMkTbyj1/
60
- wrfZB25nZnt4DQiqpYm8AZ3XmRBilibsGubVvrzWiQLC1gGXKUJ7JyQyL98G9ODUH2bmnb
61
- ;{id = 43938 (zsk), size = 1024b}")
62
- key2 = Dnsruby::RR.create("example.com. 3600 IN DNSKEY 257 3 8
63
- AwEAAeLAE37+XYbieMtOqPRMbimhCjcyc/bSTbMQtKioxzjzgBPu/gVgHTeITJa
64
- +IBFOD763HkzmG6ZIEcNAagCLg6+xeTnp017CBWWgnU+ksXdjgQ5KLfM/g4d2TL/Xf/BZJP
65
- +JcIYqx3BNDT//bJpuwXqk6WkMtHGDSfSugel26TvgxG9X9xTaJh0u/
66
- QMFpm9H4IyQ8557cYAG04z8Yx3PszE5niE6JGho7Qpv2YhpsuLh7dneUTtdqFajdyqU0lZ3iDHnrfm7ve75LorIMPB0FqIo8Q
67
- +hqV/U44QB/gTuXiBPjxje6D6WLWJdisIKflYZjUBD0FxuOXZQ5+RFVMV5RSc= ;{id =
68
- 18976 (ksk), size = 2048b}")
69
- rrset = Dnsruby::RRSet.new(key1)
70
- rrset.add(key2)
71
- sig2 = Dnsruby::RR.create("example.com. 3600 IN RRSIG DNSKEY 8 2 3600 20091109083537
72
- 20091012083537 18976 example.com. 0S/8cNh9otTenbcqQ2C5fxglGLrkI/EHp/
73
- 8Y3NDbJ5M50xUzrXd91wjDCE2X/z7UNGeBtyFRqm2ZeId4MygBIBsFaqOr98X8qQo3qpZ/
74
- ZtudmSSlk8X77bnKzsBxdLQgtE/REiT6j556zJJ9LtQ/
75
- yHgdMmJa5BNPYbQDpJdzJGIYLe1Gx8edOqcPt0LAc3FmjB096Gmlt7JpIWJXrh2Q82eDTkLiEpv7ePAimduKh14
76
- +ERi6mLKFDaQjnfkwZ7/zjw6Ekp3a7L9Pa4S/OKUis/TarEQJf
77
- +w9yAVKKL8HCIFKOXfn1rOWZ8LIEzlmUmOVOV03F1Paww+9fJaG+WDhpQ== ;{id =
78
- 18976}")
79
- rrset.add(sig2)
80
- verifier = Dnsruby::SingleVerifier.new(nil)
81
- verifier.verify_rrset(rrset, key2)
82
- sig = Dnsruby::RR.create("example.com. 3600 IN RRSIG DNSKEY 8 2 3600 20091109083537
83
- 20091012083537 43938 example.com. TXaNGZ4QklUIlPtXaGhNegER
84
- +uwJAvM9fSmnSt55FiMrMgkJDb6b/
85
- GTyOF6INgKopO1wZRZI0iWaPUI0SRow6
86
- +X8Idpk05uG7Two5R9uMGX0hu8PWc8BzuAxgeyawCYkXwXQ6Ah0PF9xkc/
87
- Xlieo6T34XsoeHmKjmjMWs1KdFkU= ;{id = 43938}")
88
- rrset.add(sig)
89
- verifier.verify_rrset(rrset, key1)
90
- txt = Dnsruby::RR.create('example.com. 86400 IN TXT "v=spf1 -all"')
91
- rrset = Dnsruby::RRSet.new(txt)
92
- txt_sig = Dnsruby::RR.create("example.com. 86400 IN RRSIG TXT 8 2 86400 20091109083536
93
- 20091012083536 43938 example.com. rZcuxDZ7QO1oBSqwlV
94
- +1ar7RTvwWOCYpgZy6oxXQMWkxONXnHVQO32yl
95
- +3WzROW4tYHfFpsdyvo1BCT1PRRXLcLFGJd/
96
- T3Y6ciiq5ZzsesfYV0aChOUhseX7MnMjsaLGbmDDVmGqW78nsoBjv9g
97
- +0YshQa7E1ctz2aQ2sorWN+E= ;{id = 43938}")
98
- rrset.add(txt_sig)
99
- verifier.verify_rrset(rrset, key1)
100
- end
101
55
 
102
56
  def test_se_query
103
57
  # Run some queries on the .se zone
@@ -39,6 +39,7 @@ require "test/tc_rrsig.rb"
39
39
  require "test/tc_nsec.rb"
40
40
  require "test/tc_nsec3.rb"
41
41
  require "test/tc_nsec3param.rb"
42
+ require "test/tc_ipseckey.rb"
42
43
 
43
44
  begin
44
45
  require "openssl"
@@ -54,4 +55,4 @@ rescue Exception => e
54
55
  end
55
56
  if (have_openssl)
56
57
  require "test/tc_ds.rb"
57
- end
58
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dnsruby
3
3
  version: !ruby/object:Gem::Version
4
- version: "1.39"
4
+ version: "1.40"
5
5
  platform: ruby
6
6
  authors:
7
7
  - AlexD
@@ -9,7 +9,7 @@ autorequire: dnsruby
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-10-16 00:00:00 +01:00
12
+ date: 2009-11-12 00:00:00 +00:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -36,6 +36,8 @@ files:
36
36
  - test/tc_ds.rb
37
37
  - test/tc_escapedchars.rb
38
38
  - test/tc_header.rb
39
+ - test/tc_hip.rb
40
+ - test/tc_ipseckey.rb
39
41
  - test/tc_itar.rb
40
42
  - test/tc_misc.rb
41
43
  - test/tc_name.rb
@@ -92,14 +94,18 @@ files:
92
94
  - lib/Dnsruby/resource/AAAA.rb
93
95
  - lib/Dnsruby/resource/AFSDB.rb
94
96
  - lib/Dnsruby/resource/CERT.rb
97
+ - lib/Dnsruby/resource/DHCID.rb
95
98
  - lib/Dnsruby/resource/DLV.rb
96
99
  - lib/Dnsruby/resource/DNSKEY.rb
97
100
  - lib/Dnsruby/resource/domain_name.rb
98
101
  - lib/Dnsruby/resource/DS.rb
99
102
  - lib/Dnsruby/resource/generic.rb
100
103
  - lib/Dnsruby/resource/HINFO.rb
104
+ - lib/Dnsruby/resource/HIP.rb
101
105
  - lib/Dnsruby/resource/IN.rb
106
+ - lib/Dnsruby/resource/IPSECKEY.rb
102
107
  - lib/Dnsruby/resource/ISDN.rb
108
+ - lib/Dnsruby/resource/KX.rb
103
109
  - lib/Dnsruby/resource/LOC.rb
104
110
  - lib/Dnsruby/resource/MINFO.rb
105
111
  - lib/Dnsruby/resource/MX.rb
@@ -128,6 +134,7 @@ files:
128
134
  - lib/Dnsruby/TheLog.rb
129
135
  - lib/Dnsruby/update.rb
130
136
  - lib/Dnsruby/validator_thread.rb
137
+ - lib/Dnsruby/zone_reader.rb
131
138
  - lib/Dnsruby/zone_transfer.rb
132
139
  - lib/dnsruby.rb
133
140
  - demo/axfr.rb
@@ -170,6 +177,6 @@ rubyforge_project: dnsruby
170
177
  rubygems_version: 1.3.1
171
178
  signing_key:
172
179
  specification_version: 2
173
- summary: Ruby DNS implementation
180
+ summary: Ruby DNS(SEC) implementation
174
181
  test_files:
175
182
  - test/ts_offline.rb