dnsruby 1.31 → 1.32
Sign up to get free protection for your applications and to get access to all the features.
- data/html/created.rid +1 -1
- data/lib/Dnsruby/PacketSender.rb +1 -1
- data/lib/Dnsruby/Resolver.rb +1 -1
- data/lib/Dnsruby/iana_ports.rb +5208 -5205
- data/lib/Dnsruby/name.rb +1 -1
- data/lib/Dnsruby/resource/DS.rb +7 -1
- data/lib/Dnsruby/resource/NSEC3.rb +4 -2
- data/lib/Dnsruby/resource/NSEC3PARAM.rb +4 -2
- data/lib/Dnsruby/resource/RRSIG.rb +5 -5
- data/lib/Dnsruby/single_verifier.rb +7 -6
- metadata +2 -2
data/lib/Dnsruby/name.rb
CHANGED
@@ -55,7 +55,7 @@ module Dnsruby
|
|
55
55
|
return Name.new(split_escaped(arg), /\.\z/ =~ arg ? true : false)
|
56
56
|
# return Name.new(Label.split(arg), /\.\z/ =~ arg ? true : false)
|
57
57
|
when Array
|
58
|
-
return Name.new(arg, /\.\z/ =~ ((arg.last.kind_of?String)?arg.last : arg.last.string) ? true : false)
|
58
|
+
return Name.new(arg, /\.\z/ =~ (arg.last ? ((arg.last.kind_of?String)?arg.last : arg.last.string) : arg.last) ? true : false)
|
59
59
|
else
|
60
60
|
raise ArgumentError.new("cannot interpret as DNS name: #{arg.inspect}")
|
61
61
|
end
|
data/lib/Dnsruby/resource/DS.rb
CHANGED
@@ -209,7 +209,13 @@ module Dnsruby
|
|
209
209
|
index = 4
|
210
210
|
end
|
211
211
|
(index..end_index).each {|i|
|
212
|
-
|
212
|
+
if (comment_index = data[i].index(";"))
|
213
|
+
buf += data[i].slice(0, comment_index)
|
214
|
+
# @TODO@ We lose the comments here - we should really keep them for when we write back to string format?
|
215
|
+
break
|
216
|
+
else
|
217
|
+
buf += data[i]
|
218
|
+
end
|
213
219
|
}
|
214
220
|
# self.digest=Base64.decode64(buf)
|
215
221
|
buf.gsub!(/\n/, "")
|
@@ -206,7 +206,8 @@ module Dnsruby
|
|
206
206
|
self.flags=(flags)
|
207
207
|
self.iterations=(iterations)
|
208
208
|
# self.salt_length=(salt_length)
|
209
|
-
self.salt=(salt)
|
209
|
+
# self.salt=(salt)
|
210
|
+
@salt=salt
|
210
211
|
self.hash_length=(hash_length)
|
211
212
|
self.next_hashed=(next_hashed)
|
212
213
|
self.types=(types)
|
@@ -299,7 +300,8 @@ module Dnsruby
|
|
299
300
|
end
|
300
301
|
|
301
302
|
def encode_rdata(msg, canonical=false) #:nodoc: all
|
302
|
-
s = salt()
|
303
|
+
# s = salt()
|
304
|
+
s = @salt
|
303
305
|
sl = s.length()
|
304
306
|
if (s == "-")
|
305
307
|
sl = 0
|
@@ -90,7 +90,8 @@ module Dnsruby
|
|
90
90
|
self.flags=(flags)
|
91
91
|
self.iterations=(iterations)
|
92
92
|
# self.salt_length=(salt_length)
|
93
|
-
self.salt=(salt)
|
93
|
+
# self.salt=(salt)
|
94
|
+
@salt=salt
|
94
95
|
end
|
95
96
|
|
96
97
|
def from_string(input)
|
@@ -110,7 +111,8 @@ module Dnsruby
|
|
110
111
|
end
|
111
112
|
|
112
113
|
def encode_rdata(msg, canonical=false) #:nodoc: all
|
113
|
-
s = salt()
|
114
|
+
# s = salt()
|
115
|
+
s = @salt
|
114
116
|
sl = s.length()
|
115
117
|
if (s == "-")
|
116
118
|
sl == 0
|
@@ -202,7 +202,7 @@ module Dnsruby
|
|
202
202
|
# digits, while the decimal representation of a 32-bit unsigned integer
|
203
203
|
# can never be longer than 10 digits.
|
204
204
|
if (input.length == 10)
|
205
|
-
return input
|
205
|
+
return input.to_i
|
206
206
|
elsif (input.length == 14)
|
207
207
|
year = input[0,4]
|
208
208
|
mon=input[4,2]
|
@@ -210,20 +210,20 @@ module Dnsruby
|
|
210
210
|
hour=input[8,2]
|
211
211
|
min=input[10,2]
|
212
212
|
sec=input[12,2]
|
213
|
-
return Time.
|
213
|
+
return Time.gm(year, mon, day, hour, min, sec).to_i
|
214
214
|
else
|
215
215
|
raise DecodeError.new("RRSIG : Illegal time value #{input} - see RFC 4034 section 3.2")
|
216
216
|
end
|
217
217
|
end
|
218
218
|
|
219
219
|
def format_time(time)
|
220
|
-
return Time.at(time).strftime("%Y%m%d%H%M%S")
|
220
|
+
return Time.at(time).gmtime.strftime("%Y%m%d%H%M%S")
|
221
221
|
end
|
222
222
|
|
223
223
|
def rdata_to_string #:nodoc: all
|
224
224
|
if (@type_covered!=nil)
|
225
225
|
# signature = Base64.encode64(@signature) # .gsub(/\n/, "")
|
226
|
-
signature = [@signature].pack("m*")
|
226
|
+
signature = [@signature].pack("m*").gsub(/\n/, "")
|
227
227
|
# @TODO@ Display the expiration and inception as
|
228
228
|
return "#{@type_covered.string} #{@algorithm.string} #{@labels} #{@original_ttl} " +
|
229
229
|
"#{format_time(@expiration)} ( #{format_time(@inception)} " +
|
@@ -259,7 +259,7 @@ module Dnsruby
|
|
259
259
|
#the Signature field excluded;
|
260
260
|
data = MessageEncoder.new { |msg|
|
261
261
|
msg.put_pack('ncc', @type_covered.to_i, @algorithm.to_i, @labels)
|
262
|
-
msg.put_pack("NNN", @original_ttl, @expiration
|
262
|
+
msg.put_pack("NNN", @original_ttl, @expiration, @inception)
|
263
263
|
msg.put_pack("n", @key_tag)
|
264
264
|
msg.put_name(@signers_name, true)
|
265
265
|
}.to_s
|
@@ -114,7 +114,7 @@ module Dnsruby
|
|
114
114
|
# Check that the RRSet and RRSIG record are compatible
|
115
115
|
def check_rr_data(rrset, sigrec)#:nodoc: all
|
116
116
|
#Each RR MUST have the same owner name as the RRSIG RR;
|
117
|
-
if (rrset.name.
|
117
|
+
if (rrset.name.canonical != sigrec.name.canonical)
|
118
118
|
raise VerifyError.new("RRSET should have same owner name as RRSIG for verification (rrsert=#{rrset.name}, sigrec=#{sigrec.name}")
|
119
119
|
end
|
120
120
|
|
@@ -280,7 +280,7 @@ module Dnsruby
|
|
280
280
|
# if (all_delegate && rrset.sigs.length == 0)
|
281
281
|
# next
|
282
282
|
# end
|
283
|
-
if ((rrset.name.
|
283
|
+
if ((rrset.name.canonical == msg.question()[0].qname.canonical) && (rrset.sigs.length == 0))
|
284
284
|
next
|
285
285
|
end
|
286
286
|
end
|
@@ -866,11 +866,12 @@ module Dnsruby
|
|
866
866
|
# If we get to root, then return false
|
867
867
|
n = Name.create(name)
|
868
868
|
root = Name.create(".")
|
869
|
-
while (n != root)
|
869
|
+
while (true) # n != root)
|
870
870
|
# Try the trusted keys first, then the DS set
|
871
871
|
(@trust_anchors.keys + @trusted_keys.keys + @configured_ds_store + @discovered_ds_store).each {|key|
|
872
|
-
return key if key.name.
|
872
|
+
return key if key.name.canonical == n.canonical
|
873
873
|
}
|
874
|
+
break if (n == root)
|
874
875
|
# strip the name
|
875
876
|
n = n.strip_label
|
876
877
|
end
|
@@ -1095,7 +1096,7 @@ module Dnsruby
|
|
1095
1096
|
if (!ns_rrset || ns_rrset.length == 0)
|
1096
1097
|
ns_rrset = ns_ret.authority.rrset(name, Types.NS) # @TOO@ Is ths OK?
|
1097
1098
|
end
|
1098
|
-
if (!ns_rrset || ns_rrset.length == 0 || ns_rrset.name.
|
1099
|
+
if (!ns_rrset || ns_rrset.length == 0 || ns_rrset.name.canonical != name.canonical)
|
1099
1100
|
return nil
|
1100
1101
|
end
|
1101
1102
|
if (ns_rrset.sigs.length > 0)
|
@@ -1132,7 +1133,7 @@ module Dnsruby
|
|
1132
1133
|
# and see if we can find any of the names in the A/AAAA records in ns_additional
|
1133
1134
|
found_addr = false
|
1134
1135
|
ns_additional.each {|addr_rr|
|
1135
|
-
if (ns_rr.nsdname.
|
1136
|
+
if (ns_rr.nsdname.canonical == addr_rr.name.canonical)
|
1136
1137
|
# print "Found address #{addr_rr.address} for #{ns_rr.nsdname}\n"
|
1137
1138
|
nameservers.push(addr_rr.address.to_s)
|
1138
1139
|
found_addr = true
|
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.
|
4
|
+
version: "1.32"
|
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-06-
|
12
|
+
date: 2009-06-09 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|