dnsruby 1.24 → 1.26

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.
Files changed (1094) hide show
  1. data/demo/example_recurse.rb +4 -5
  2. data/demo/trace_dns.rb +5 -4
  3. data/doc/classes/Cache.html +179 -0
  4. data/doc/classes/Cache.src/M000212.html +19 -0
  5. data/doc/classes/Cache.src/M000213.html +18 -0
  6. data/doc/classes/Cache.src/M000214.html +23 -0
  7. data/doc/classes/ConfigTable.html +500 -0
  8. data/doc/classes/ConfigTable.src/M000019.html +25 -0
  9. data/doc/classes/ConfigTable.src/M000020.html +18 -0
  10. data/doc/classes/ConfigTable.src/M000021.html +18 -0
  11. data/doc/classes/ConfigTable.src/M000022.html +18 -0
  12. data/doc/classes/ConfigTable.src/M000023.html +18 -0
  13. data/doc/classes/ConfigTable.src/M000024.html +18 -0
  14. data/doc/classes/ConfigTable.src/M000025.html +18 -0
  15. data/doc/classes/ConfigTable.src/M000026.html +18 -0
  16. data/doc/classes/ConfigTable.src/M000027.html +18 -0
  17. data/doc/classes/ConfigTable.src/M000028.html +19 -0
  18. data/doc/classes/ConfigTable.src/M000029.html +21 -0
  19. data/doc/classes/ConfigTable.src/M000030.html +20 -0
  20. data/doc/classes/ConfigTable.src/M000031.html +18 -0
  21. data/doc/classes/ConfigTable.src/M000032.html +25 -0
  22. data/doc/classes/ConfigTable.src/M000033.html +23 -0
  23. data/doc/classes/ConfigTable.src/M000034.html +20 -0
  24. data/doc/classes/ConfigTable.src/M000035.html +20 -0
  25. data/doc/classes/ConfigTable.src/M000036.html +23 -0
  26. data/doc/classes/ConfigTable.src/M000037.html +19 -0
  27. data/doc/classes/ConfigTable.src/M000038.html +18 -0
  28. data/doc/classes/ConfigTable.src/M000039.html +18 -0
  29. data/doc/classes/ConfigTable/BoolItem.html +154 -0
  30. data/doc/classes/ConfigTable/BoolItem.src/M000040.html +18 -0
  31. data/doc/classes/ConfigTable/BoolItem.src/M000041.html +18 -0
  32. data/doc/classes/ConfigTable/ExecItem.html +201 -0
  33. data/doc/classes/ConfigTable/ExecItem.src/M000059.html +20 -0
  34. data/doc/classes/ConfigTable/ExecItem.src/M000060.html +18 -0
  35. data/doc/classes/ConfigTable/ExecItem.src/M000061.html +18 -0
  36. data/doc/classes/ConfigTable/ExecItem.src/M000062.html +18 -0
  37. data/doc/classes/ConfigTable/ExecItem.src/M000063.html +22 -0
  38. data/doc/classes/ConfigTable/Item.html +250 -0
  39. data/doc/classes/ConfigTable/Item.src/M000066.html +22 -0
  40. data/doc/classes/ConfigTable/Item.src/M000067.html +18 -0
  41. data/doc/classes/ConfigTable/Item.src/M000068.html +18 -0
  42. data/doc/classes/ConfigTable/Item.src/M000069.html +18 -0
  43. data/doc/classes/ConfigTable/Item.src/M000070.html +18 -0
  44. data/doc/classes/ConfigTable/Item.src/M000071.html +18 -0
  45. data/doc/classes/ConfigTable/MetaConfigEnvironment.html +325 -0
  46. data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000046.html +19 -0
  47. data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000047.html +18 -0
  48. data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000048.html +18 -0
  49. data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000049.html +18 -0
  50. data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000050.html +18 -0
  51. data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000051.html +18 -0
  52. data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000052.html +18 -0
  53. data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000053.html +18 -0
  54. data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000054.html +18 -0
  55. data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000055.html +18 -0
  56. data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000056.html +18 -0
  57. data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000057.html +19 -0
  58. data/doc/classes/ConfigTable/MetaConfigEnvironment.src/M000058.html +19 -0
  59. data/doc/classes/ConfigTable/PackageSelectionItem.html +169 -0
  60. data/doc/classes/ConfigTable/PackageSelectionItem.src/M000044.html +19 -0
  61. data/doc/classes/ConfigTable/PackageSelectionItem.src/M000045.html +18 -0
  62. data/doc/classes/ConfigTable/PathItem.html +139 -0
  63. data/doc/classes/ConfigTable/PathItem.src/M000043.html +18 -0
  64. data/doc/classes/ConfigTable/ProgramItem.html +139 -0
  65. data/doc/classes/ConfigTable/ProgramItem.src/M000042.html +18 -0
  66. data/doc/classes/ConfigTable/SelectItem.html +156 -0
  67. data/doc/classes/ConfigTable/SelectItem.src/M000064.html +19 -0
  68. data/doc/classes/ConfigTable/SelectItem.src/M000065.html +18 -0
  69. data/doc/classes/DnskeyTest.html +180 -0
  70. data/doc/classes/DnskeyTest.src/M000016.html +26 -0
  71. data/doc/classes/DnskeyTest.src/M000017.html +24 -0
  72. data/doc/classes/DnskeyTest.src/M000018.html +33 -0
  73. data/doc/classes/Dnsruby.html +44 -3
  74. data/doc/classes/Dnsruby.src/M000351.html +18 -0
  75. data/doc/classes/Dnsruby/Algorithms.html +12 -10
  76. data/doc/classes/Dnsruby/Classes.html +10 -10
  77. data/doc/classes/Dnsruby/Classes.src/M000573.html +23 -0
  78. data/doc/classes/Dnsruby/Classes.src/M000574.html +19 -0
  79. data/doc/classes/Dnsruby/CodeMapper.html +55 -55
  80. data/doc/classes/Dnsruby/CodeMapper.src/{M000186.html → M000550.html} +0 -0
  81. data/doc/classes/Dnsruby/CodeMapper.src/M000551.html +33 -0
  82. data/doc/classes/Dnsruby/CodeMapper.src/{M000188.html → M000552.html} +0 -0
  83. data/doc/classes/Dnsruby/CodeMapper.src/M000553.html +19 -0
  84. data/doc/classes/Dnsruby/CodeMapper.src/M000554.html +19 -0
  85. data/doc/classes/Dnsruby/CodeMapper.src/M000555.html +18 -0
  86. data/doc/classes/Dnsruby/CodeMapper.src/M000556.html +22 -0
  87. data/doc/classes/Dnsruby/CodeMapper.src/M000557.html +22 -0
  88. data/doc/classes/Dnsruby/CodeMapper.src/M000558.html +22 -0
  89. data/doc/classes/Dnsruby/CodeMapper.src/M000559.html +31 -0
  90. data/doc/classes/Dnsruby/CodeMapper.src/M000560.html +19 -0
  91. data/doc/classes/Dnsruby/Config.html +63 -63
  92. data/doc/classes/Dnsruby/Config.src/{M000148.html → M000505.html} +0 -0
  93. data/doc/classes/Dnsruby/Config.src/{M000149.html → M000506.html} +0 -0
  94. data/doc/classes/Dnsruby/Config.src/{M000150.html → M000507.html} +0 -0
  95. data/doc/classes/Dnsruby/Config.src/{M000151.html → M000508.html} +0 -0
  96. data/doc/classes/Dnsruby/Config.src/{M000152.html → M000509.html} +0 -0
  97. data/doc/classes/Dnsruby/Config.src/{M000153.html → M000510.html} +0 -0
  98. data/doc/classes/Dnsruby/Config.src/{M000154.html → M000511.html} +0 -0
  99. data/doc/classes/Dnsruby/Config.src/M000512.html +22 -0
  100. data/doc/classes/Dnsruby/Config.src/{M000156.html → M000513.html} +0 -0
  101. data/doc/classes/Dnsruby/Config.src/{M000157.html → M000514.html} +0 -0
  102. data/doc/classes/Dnsruby/Config.src/{M000158.html → M000515.html} +0 -0
  103. data/doc/classes/Dnsruby/DNS.html +81 -81
  104. data/doc/classes/Dnsruby/DNS.src/{M000258.html → M000645.html} +0 -0
  105. data/doc/classes/Dnsruby/DNS.src/{M000259.html → M000646.html} +0 -0
  106. data/doc/classes/Dnsruby/DNS.src/{M000260.html → M000647.html} +0 -0
  107. data/doc/classes/Dnsruby/DNS.src/{M000261.html → M000648.html} +0 -0
  108. data/doc/classes/Dnsruby/DNS.src/{M000262.html → M000649.html} +0 -0
  109. data/doc/classes/Dnsruby/DNS.src/{M000263.html → M000650.html} +0 -0
  110. data/doc/classes/Dnsruby/DNS.src/{M000264.html → M000651.html} +0 -0
  111. data/doc/classes/Dnsruby/DNS.src/{M000265.html → M000652.html} +0 -0
  112. data/doc/classes/Dnsruby/DNS.src/{M000266.html → M000653.html} +0 -0
  113. data/doc/classes/Dnsruby/DNS.src/M000654.html +30 -0
  114. data/doc/classes/Dnsruby/DNS.src/M000655.html +19 -0
  115. data/doc/classes/Dnsruby/DNS.src/M000656.html +20 -0
  116. data/doc/classes/Dnsruby/DNS.src/M000657.html +31 -0
  117. data/doc/classes/Dnsruby/Dnssec.html +279 -30
  118. data/doc/classes/Dnsruby/Dnssec.src/M000615.html +21 -0
  119. data/doc/classes/Dnsruby/Dnssec.src/M000616.html +18 -0
  120. data/doc/classes/Dnsruby/Dnssec.src/M000617.html +18 -0
  121. data/doc/classes/Dnsruby/Dnssec.src/M000618.html +19 -0
  122. data/doc/classes/Dnsruby/Dnssec.src/M000619.html +18 -0
  123. data/doc/classes/Dnsruby/Dnssec.src/M000620.html +18 -0
  124. data/doc/classes/Dnsruby/Dnssec.src/M000621.html +18 -0
  125. data/doc/classes/Dnsruby/Dnssec.src/M000622.html +18 -0
  126. data/doc/classes/Dnsruby/Dnssec.src/M000623.html +19 -0
  127. data/doc/classes/Dnsruby/Dnssec.src/M000624.html +18 -0
  128. data/doc/classes/Dnsruby/Dnssec.src/M000625.html +20 -0
  129. data/doc/classes/Dnsruby/Dnssec.src/M000626.html +46 -0
  130. data/doc/classes/Dnsruby/Dnssec.src/M000627.html +23 -0
  131. data/doc/classes/Dnsruby/Dnssec.src/M000628.html +22 -0
  132. data/doc/classes/Dnsruby/Dnssec.src/M000629.html +19 -0
  133. data/doc/classes/Dnsruby/Dnssec.src/M000630.html +116 -0
  134. data/doc/classes/Dnsruby/Dnssec.src/M000631.html +33 -0
  135. data/doc/classes/Dnsruby/Dnssec.src/M000632.html +28 -0
  136. data/doc/classes/Dnsruby/Dnssec.src/M000633.html +92 -0
  137. data/doc/classes/Dnsruby/Dnssec/ValidationPolicy.html +167 -0
  138. data/doc/classes/Dnsruby/Header.html +101 -71
  139. data/doc/classes/Dnsruby/Header.src/M000595.html +18 -0
  140. data/doc/classes/Dnsruby/Header.src/M000596.html +35 -0
  141. data/doc/classes/Dnsruby/Header.src/M000597.html +18 -0
  142. data/doc/classes/Dnsruby/Header.src/M000598.html +18 -0
  143. data/doc/classes/Dnsruby/Header.src/M000599.html +21 -0
  144. data/doc/classes/Dnsruby/Header.src/M000600.html +20 -0
  145. data/doc/classes/Dnsruby/Header.src/M000601.html +32 -0
  146. data/doc/classes/Dnsruby/Header.src/M000602.html +27 -0
  147. data/doc/classes/Dnsruby/Header.src/M000603.html +26 -0
  148. data/doc/classes/Dnsruby/Header.src/M000604.html +18 -0
  149. data/doc/classes/Dnsruby/Header.src/M000605.html +47 -0
  150. data/doc/classes/Dnsruby/Header.src/M000606.html +28 -0
  151. data/doc/classes/Dnsruby/Header.src/M000607.html +30 -0
  152. data/doc/classes/Dnsruby/Hosts.html +43 -43
  153. data/doc/classes/Dnsruby/Hosts.src/{M000197.html → M000561.html} +0 -0
  154. data/doc/classes/Dnsruby/Hosts.src/{M000198.html → M000562.html} +0 -0
  155. data/doc/classes/Dnsruby/Hosts.src/{M000199.html → M000563.html} +0 -0
  156. data/doc/classes/Dnsruby/Hosts.src/{M000200.html → M000564.html} +0 -0
  157. data/doc/classes/Dnsruby/Hosts.src/{M000201.html → M000565.html} +0 -0
  158. data/doc/classes/Dnsruby/Hosts.src/{M000202.html → M000566.html} +0 -0
  159. data/doc/classes/Dnsruby/Hosts.src/{M000203.html → M000567.html} +0 -0
  160. data/doc/classes/Dnsruby/IPv4.html +25 -25
  161. data/doc/classes/Dnsruby/IPv4.src/{M000204.html → M000568.html} +0 -0
  162. data/doc/classes/Dnsruby/IPv4.src/{M000205.html → M000569.html} +0 -0
  163. data/doc/classes/Dnsruby/IPv4.src/{M000206.html → M000570.html} +0 -0
  164. data/doc/classes/Dnsruby/IPv4.src/{M000207.html → M000571.html} +0 -0
  165. data/doc/classes/Dnsruby/IPv4.src/{M000208.html → M000572.html} +0 -0
  166. data/doc/classes/Dnsruby/IPv6.html +20 -20
  167. data/doc/classes/Dnsruby/IPv6.src/{M000242.html → M000608.html} +0 -0
  168. data/doc/classes/Dnsruby/IPv6.src/{M000243.html → M000609.html} +0 -0
  169. data/doc/classes/Dnsruby/IPv6.src/{M000244.html → M000610.html} +0 -0
  170. data/doc/classes/Dnsruby/IPv6.src/{M000245.html → M000611.html} +0 -0
  171. data/doc/classes/Dnsruby/Message.html +174 -116
  172. data/doc/classes/Dnsruby/Message.src/M000473.html +39 -0
  173. data/doc/classes/Dnsruby/Message.src/M000474.html +26 -0
  174. data/doc/classes/Dnsruby/Message.src/M000475.html +23 -0
  175. data/doc/classes/Dnsruby/Message.src/M000476.html +22 -0
  176. data/doc/classes/Dnsruby/Message.src/M000477.html +22 -0
  177. data/doc/classes/Dnsruby/Message.src/M000478.html +20 -0
  178. data/doc/classes/Dnsruby/Message.src/M000479.html +20 -0
  179. data/doc/classes/Dnsruby/Message.src/M000480.html +20 -0
  180. data/doc/classes/Dnsruby/Message.src/M000481.html +20 -0
  181. data/doc/classes/Dnsruby/Message.src/M000482.html +18 -0
  182. data/doc/classes/Dnsruby/Message.src/M000483.html +20 -0
  183. data/doc/classes/Dnsruby/Message.src/M000484.html +23 -0
  184. data/doc/classes/Dnsruby/Message.src/M000485.html +30 -0
  185. data/doc/classes/Dnsruby/Message.src/M000486.html +20 -0
  186. data/doc/classes/Dnsruby/Message.src/M000487.html +18 -0
  187. data/doc/classes/Dnsruby/Message.src/M000488.html +23 -0
  188. data/doc/classes/Dnsruby/Message.src/M000489.html +24 -0
  189. data/doc/classes/Dnsruby/Message.src/M000490.html +73 -0
  190. data/doc/classes/Dnsruby/Message.src/M000491.html +35 -0
  191. data/doc/classes/Dnsruby/Message.src/M000492.html +46 -0
  192. data/doc/classes/Dnsruby/Message/Section.html +12 -12
  193. data/doc/classes/Dnsruby/Message/Section.src/{M000141.html → M000498.html} +0 -0
  194. data/doc/classes/Dnsruby/Message/Section.src/{M000142.html → M000499.html} +0 -0
  195. data/doc/classes/Dnsruby/Name.html +30 -30
  196. data/doc/classes/Dnsruby/Name.src/M000458.html +35 -0
  197. data/doc/classes/Dnsruby/Name.src/M000459.html +20 -0
  198. data/doc/classes/Dnsruby/Name.src/M000460.html +18 -0
  199. data/doc/classes/Dnsruby/Name.src/M000461.html +21 -0
  200. data/doc/classes/Dnsruby/Name.src/M000462.html +22 -0
  201. data/doc/classes/Dnsruby/Name.src/M000463.html +18 -0
  202. data/doc/classes/Dnsruby/Name/Label.html +45 -45
  203. data/doc/classes/Dnsruby/Name/Label.src/M000464.html +21 -0
  204. data/doc/classes/Dnsruby/Name/Label.src/M000465.html +18 -0
  205. data/doc/classes/Dnsruby/Name/Label.src/M000466.html +22 -0
  206. data/doc/classes/Dnsruby/Name/Label.src/M000467.html +18 -0
  207. data/doc/classes/Dnsruby/Name/Label.src/M000468.html +18 -0
  208. data/doc/classes/Dnsruby/Name/Label.src/M000469.html +18 -0
  209. data/doc/classes/Dnsruby/Name/Label.src/M000470.html +18 -0
  210. data/doc/classes/Dnsruby/Name/Label.src/M000471.html +18 -0
  211. data/doc/classes/Dnsruby/Name/Label.src/M000472.html +18 -0
  212. data/doc/classes/Dnsruby/Question.html +30 -25
  213. data/doc/classes/Dnsruby/Question.src/M000590.html +47 -0
  214. data/doc/classes/Dnsruby/Question.src/M000591.html +18 -0
  215. data/doc/classes/Dnsruby/Question.src/M000592.html +18 -0
  216. data/doc/classes/Dnsruby/Question.src/M000593.html +32 -0
  217. data/doc/classes/Dnsruby/Question.src/M000594.html +18 -0
  218. data/doc/classes/Dnsruby/RR.html +74 -69
  219. data/doc/classes/Dnsruby/RR.src/M000352.html +18 -0
  220. data/doc/classes/Dnsruby/RR.src/M000353.html +22 -0
  221. data/doc/classes/Dnsruby/RR.src/M000354.html +18 -0
  222. data/doc/classes/Dnsruby/RR.src/M000355.html +26 -0
  223. data/doc/classes/Dnsruby/RR.src/M000356.html +26 -0
  224. data/doc/classes/Dnsruby/RR.src/M000357.html +18 -0
  225. data/doc/classes/Dnsruby/RR.src/M000358.html +36 -0
  226. data/doc/classes/Dnsruby/RR.src/M000359.html +100 -0
  227. data/doc/classes/Dnsruby/RR.src/M000360.html +18 -0
  228. data/doc/classes/Dnsruby/RR.src/M000361.html +18 -0
  229. data/doc/classes/Dnsruby/RR.src/M000362.html +22 -0
  230. data/doc/classes/Dnsruby/RR.src/M000363.html +33 -0
  231. data/doc/classes/Dnsruby/RR.src/M000364.html +24 -0
  232. data/doc/classes/Dnsruby/RR/DLV.html +134 -0
  233. data/doc/classes/Dnsruby/RR/DNSKEY.html +70 -70
  234. data/doc/classes/Dnsruby/RR/DNSKEY.src/{M000044.html → M000397.html} +0 -0
  235. data/doc/classes/Dnsruby/RR/DNSKEY.src/{M000045.html → M000398.html} +0 -0
  236. data/doc/classes/Dnsruby/RR/DNSKEY.src/{M000046.html → M000399.html} +0 -0
  237. data/doc/classes/Dnsruby/RR/DNSKEY.src/{M000047.html → M000400.html} +0 -0
  238. data/doc/classes/Dnsruby/RR/DNSKEY.src/{M000048.html → M000401.html} +0 -0
  239. data/doc/classes/Dnsruby/RR/DNSKEY.src/{M000049.html → M000402.html} +0 -0
  240. data/doc/classes/Dnsruby/RR/DNSKEY.src/{M000050.html → M000403.html} +0 -0
  241. data/doc/classes/Dnsruby/RR/DNSKEY.src/{M000051.html → M000404.html} +0 -0
  242. data/doc/classes/Dnsruby/RR/DNSKEY.src/{M000052.html → M000405.html} +0 -0
  243. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000406.html +58 -0
  244. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000407.html +21 -0
  245. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000408.html +24 -0
  246. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000409.html +39 -0
  247. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000410.html +24 -0
  248. data/doc/classes/Dnsruby/RR/DS.html +69 -26
  249. data/doc/classes/Dnsruby/RR/DS.src/M000390.html +19 -0
  250. data/doc/classes/Dnsruby/RR/DS.src/M000391.html +28 -0
  251. data/doc/classes/Dnsruby/RR/DS.src/M000392.html +28 -0
  252. data/doc/classes/Dnsruby/RR/DS.src/M000393.html +38 -0
  253. data/doc/classes/Dnsruby/RR/DS.src/M000394.html +29 -0
  254. data/doc/classes/Dnsruby/RR/DS.src/M000395.html +53 -0
  255. data/doc/classes/Dnsruby/RR/DS.src/M000396.html +40 -0
  256. data/doc/classes/Dnsruby/RR/DS/DigestTypes.html +111 -0
  257. data/doc/classes/Dnsruby/RR/DomainName.html +9 -9
  258. data/doc/classes/Dnsruby/RR/DomainName.src/{M000083.html → M000436.html} +0 -0
  259. data/doc/classes/Dnsruby/RR/IN/A.html +15 -15
  260. data/doc/classes/Dnsruby/RR/IN/A.src/{M000017.html → M000368.html} +0 -0
  261. data/doc/classes/Dnsruby/RR/IN/A.src/{M000018.html → M000369.html} +0 -0
  262. data/doc/classes/Dnsruby/RR/IN/A.src/{M000019.html → M000370.html} +0 -0
  263. data/doc/classes/Dnsruby/RR/IN/SRV.html +15 -15
  264. data/doc/classes/Dnsruby/RR/IN/SRV.src/{M000014.html → M000365.html} +0 -0
  265. data/doc/classes/Dnsruby/RR/IN/SRV.src/{M000015.html → M000366.html} +0 -0
  266. data/doc/classes/Dnsruby/RR/IN/SRV.src/{M000016.html → M000367.html} +0 -0
  267. data/doc/classes/Dnsruby/RR/IN/WKS.html +5 -5
  268. data/doc/classes/Dnsruby/RR/IN/WKS.src/{M000020.html → M000371.html} +0 -0
  269. data/doc/classes/Dnsruby/RR/LOC.html +30 -30
  270. data/doc/classes/Dnsruby/RR/LOC.src/{M000025.html → M000376.html} +0 -0
  271. data/doc/classes/Dnsruby/RR/LOC.src/{M000026.html → M000377.html} +0 -0
  272. data/doc/classes/Dnsruby/RR/LOC.src/{M000027.html → M000378.html} +0 -0
  273. data/doc/classes/Dnsruby/RR/LOC.src/{M000028.html → M000379.html} +0 -0
  274. data/doc/classes/Dnsruby/RR/LOC.src/{M000029.html → M000380.html} +0 -0
  275. data/doc/classes/Dnsruby/RR/LOC.src/{M000030.html → M000381.html} +0 -0
  276. data/doc/classes/Dnsruby/RR/NSAP.html +20 -20
  277. data/doc/classes/Dnsruby/RR/NSAP.src/{M000093.html → M000446.html} +0 -0
  278. data/doc/classes/Dnsruby/RR/NSAP.src/{M000094.html → M000447.html} +0 -0
  279. data/doc/classes/Dnsruby/RR/NSAP.src/{M000095.html → M000448.html} +0 -0
  280. data/doc/classes/Dnsruby/RR/NSAP.src/{M000096.html → M000449.html} +0 -0
  281. data/doc/classes/Dnsruby/RR/NSEC.html +40 -40
  282. data/doc/classes/Dnsruby/RR/NSEC.src/{M000031.html → M000382.html} +0 -0
  283. data/doc/classes/Dnsruby/RR/NSEC.src/{M000032.html → M000383.html} +0 -0
  284. data/doc/classes/Dnsruby/RR/NSEC.src/{M000033.html → M000384.html} +0 -0
  285. data/doc/classes/Dnsruby/RR/NSEC.src/{M000034.html → M000385.html} +0 -0
  286. data/doc/classes/Dnsruby/RR/NSEC.src/M000386.html +75 -0
  287. data/doc/classes/Dnsruby/RR/NSEC.src/M000387.html +18 -0
  288. data/doc/classes/Dnsruby/RR/NSEC.src/M000388.html +92 -0
  289. data/doc/classes/Dnsruby/RR/NSEC.src/M000389.html +23 -0
  290. data/doc/classes/Dnsruby/RR/NSEC3.html +40 -40
  291. data/doc/classes/Dnsruby/RR/NSEC3.src/{M000085.html → M000438.html} +0 -0
  292. data/doc/classes/Dnsruby/RR/NSEC3.src/{M000086.html → M000439.html} +0 -0
  293. data/doc/classes/Dnsruby/RR/NSEC3.src/{M000087.html → M000440.html} +0 -0
  294. data/doc/classes/Dnsruby/RR/NSEC3.src/{M000088.html → M000441.html} +0 -0
  295. data/doc/classes/Dnsruby/RR/NSEC3.src/{M000089.html → M000442.html} +0 -0
  296. data/doc/classes/Dnsruby/RR/NSEC3.src/{M000090.html → M000443.html} +0 -0
  297. data/doc/classes/Dnsruby/RR/NSEC3.src/{M000091.html → M000444.html} +0 -0
  298. data/doc/classes/Dnsruby/RR/NSEC3.src/{M000092.html → M000445.html} +0 -0
  299. data/doc/classes/Dnsruby/RR/NSEC3PARAM.html +25 -25
  300. data/doc/classes/Dnsruby/RR/NSEC3PARAM.src/{M000077.html → M000430.html} +0 -0
  301. data/doc/classes/Dnsruby/RR/NSEC3PARAM.src/{M000078.html → M000431.html} +0 -0
  302. data/doc/classes/Dnsruby/RR/NSEC3PARAM.src/{M000079.html → M000432.html} +0 -0
  303. data/doc/classes/Dnsruby/RR/NSEC3PARAM.src/{M000080.html → M000433.html} +0 -0
  304. data/doc/classes/Dnsruby/RR/NSEC3PARAM.src/{M000081.html → M000434.html} +0 -0
  305. data/doc/classes/Dnsruby/RR/RP.html +5 -5
  306. data/doc/classes/Dnsruby/RR/RP.src/{M000082.html → M000435.html} +0 -0
  307. data/doc/classes/Dnsruby/RR/RRSIG.html +50 -35
  308. data/doc/classes/Dnsruby/RR/RRSIG.src/{M000097.html → M000450.html} +0 -0
  309. data/doc/classes/Dnsruby/RR/RRSIG.src/{M000098.html → M000451.html} +0 -0
  310. data/doc/classes/Dnsruby/RR/RRSIG.src/{M000099.html → M000452.html} +0 -0
  311. data/doc/classes/Dnsruby/RR/RRSIG.src/{M000100.html → M000453.html} +0 -0
  312. data/doc/classes/Dnsruby/RR/RRSIG.src/M000454.html +46 -0
  313. data/doc/classes/Dnsruby/RR/RRSIG.src/M000455.html +50 -0
  314. data/doc/classes/Dnsruby/RR/RRSIG.src/M000456.html +18 -0
  315. data/doc/classes/Dnsruby/RR/RRSIG.src/M000457.html +27 -0
  316. data/doc/classes/Dnsruby/RR/SOA.html +10 -10
  317. data/doc/classes/Dnsruby/RR/SOA.src/{M000066.html → M000419.html} +0 -0
  318. data/doc/classes/Dnsruby/RR/SOA.src/{M000067.html → M000420.html} +0 -0
  319. data/doc/classes/Dnsruby/RR/TKEY.html +20 -20
  320. data/doc/classes/Dnsruby/RR/TKEY.src/{M000021.html → M000372.html} +0 -0
  321. data/doc/classes/Dnsruby/RR/TKEY.src/{M000022.html → M000373.html} +0 -0
  322. data/doc/classes/Dnsruby/RR/TKEY.src/{M000023.html → M000374.html} +0 -0
  323. data/doc/classes/Dnsruby/RR/TKEY.src/{M000024.html → M000375.html} +0 -0
  324. data/doc/classes/Dnsruby/RR/TSIG.html +47 -47
  325. data/doc/classes/Dnsruby/RR/TSIG.src/M000421.html +24 -0
  326. data/doc/classes/Dnsruby/RR/TSIG.src/M000422.html +32 -0
  327. data/doc/classes/Dnsruby/RR/TSIG.src/M000423.html +54 -0
  328. data/doc/classes/Dnsruby/RR/TSIG.src/M000424.html +121 -0
  329. data/doc/classes/Dnsruby/RR/TSIG.src/M000425.html +33 -0
  330. data/doc/classes/Dnsruby/RR/TSIG.src/M000426.html +25 -0
  331. data/doc/classes/Dnsruby/RR/TSIG.src/M000427.html +36 -0
  332. data/doc/classes/Dnsruby/RR/TSIG.src/M000428.html +22 -0
  333. data/doc/classes/Dnsruby/RR/TSIG.src/M000429.html +29 -0
  334. data/doc/classes/Dnsruby/RR/TXT.html +25 -25
  335. data/doc/classes/Dnsruby/RR/TXT.src/{M000061.html → M000414.html} +0 -0
  336. data/doc/classes/Dnsruby/RR/TXT.src/{M000062.html → M000415.html} +0 -0
  337. data/doc/classes/Dnsruby/RR/TXT.src/{M000063.html → M000416.html} +0 -0
  338. data/doc/classes/Dnsruby/RR/TXT.src/{M000064.html → M000417.html} +0 -0
  339. data/doc/classes/Dnsruby/RR/TXT.src/{M000065.html → M000418.html} +0 -0
  340. data/doc/classes/Dnsruby/RR/X25.html +15 -15
  341. data/doc/classes/Dnsruby/RR/X25.src/{M000058.html → M000411.html} +0 -0
  342. data/doc/classes/Dnsruby/RR/X25.src/{M000059.html → M000412.html} +0 -0
  343. data/doc/classes/Dnsruby/RR/X25.src/{M000060.html → M000413.html} +0 -0
  344. data/doc/classes/Dnsruby/RRSet.html +79 -83
  345. data/doc/classes/Dnsruby/RRSet.src/{M000211.html → M000575.html} +0 -0
  346. data/doc/classes/Dnsruby/RRSet.src/{M000212.html → M000576.html} +0 -0
  347. data/doc/classes/Dnsruby/RRSet.src/{M000213.html → M000577.html} +0 -0
  348. data/doc/classes/Dnsruby/RRSet.src/{M000214.html → M000578.html} +0 -0
  349. data/doc/classes/Dnsruby/RRSet.src/M000579.html +32 -0
  350. data/doc/classes/Dnsruby/RRSet.src/M000580.html +18 -0
  351. data/doc/classes/Dnsruby/RRSet.src/M000581.html +20 -0
  352. data/doc/classes/Dnsruby/RRSet.src/M000582.html +18 -0
  353. data/doc/classes/Dnsruby/RRSet.src/M000583.html +18 -0
  354. data/doc/classes/Dnsruby/RRSet.src/M000584.html +18 -0
  355. data/doc/classes/Dnsruby/RRSet.src/M000585.html +18 -0
  356. data/doc/classes/Dnsruby/RRSet.src/M000586.html +22 -0
  357. data/doc/classes/Dnsruby/RRSet.src/M000587.html +18 -0
  358. data/doc/classes/Dnsruby/RRSet.src/M000588.html +22 -0
  359. data/doc/classes/Dnsruby/RRSet.src/M000589.html +18 -0
  360. data/doc/classes/Dnsruby/Recursor.html +744 -0
  361. data/doc/classes/Dnsruby/Recursor.src/M000639.html +19 -0
  362. data/doc/classes/Dnsruby/Recursor.src/M000640.html +97 -0
  363. data/doc/classes/Dnsruby/Recursor.src/M000641.html +20 -0
  364. data/doc/classes/Dnsruby/Recursor.src/M000642.html +18 -0
  365. data/doc/classes/Dnsruby/Recursor.src/M000643.html +31 -0
  366. data/doc/classes/Dnsruby/Recursor.src/M000644.html +231 -0
  367. data/doc/classes/Dnsruby/Resolv.html +66 -66
  368. data/doc/classes/Dnsruby/Resolv.src/M000516.html +18 -0
  369. data/doc/classes/Dnsruby/Resolv.src/M000517.html +18 -0
  370. data/doc/classes/Dnsruby/Resolv.src/M000518.html +18 -0
  371. data/doc/classes/Dnsruby/Resolv.src/M000519.html +18 -0
  372. data/doc/classes/Dnsruby/Resolv.src/M000520.html +18 -0
  373. data/doc/classes/Dnsruby/Resolv.src/M000521.html +18 -0
  374. data/doc/classes/Dnsruby/Resolv.src/M000522.html +18 -0
  375. data/doc/classes/Dnsruby/Resolv.src/M000523.html +19 -0
  376. data/doc/classes/Dnsruby/Resolv.src/M000524.html +20 -0
  377. data/doc/classes/Dnsruby/Resolv.src/M000525.html +29 -0
  378. data/doc/classes/Dnsruby/Resolv.src/M000526.html +19 -0
  379. data/doc/classes/Dnsruby/Resolv.src/M000527.html +20 -0
  380. data/doc/classes/Dnsruby/Resolv.src/M000528.html +25 -0
  381. data/doc/classes/Dnsruby/Resolver.html +219 -160
  382. data/doc/classes/Dnsruby/Resolver.src/M000658.html +24 -0
  383. data/doc/classes/Dnsruby/Resolver.src/M000659.html +27 -0
  384. data/doc/classes/Dnsruby/Resolver.src/M000660.html +28 -0
  385. data/doc/classes/Dnsruby/Resolver.src/M000661.html +18 -0
  386. data/doc/classes/Dnsruby/Resolver.src/M000662.html +51 -0
  387. data/doc/classes/Dnsruby/Resolver.src/M000663.html +25 -0
  388. data/doc/classes/Dnsruby/Resolver.src/M000664.html +22 -0
  389. data/doc/classes/Dnsruby/Resolver.src/M000665.html +18 -0
  390. data/doc/classes/Dnsruby/Resolver.src/M000666.html +20 -0
  391. data/doc/classes/Dnsruby/Resolver.src/M000667.html +19 -0
  392. data/doc/classes/Dnsruby/Resolver.src/M000668.html +21 -0
  393. data/doc/classes/Dnsruby/Resolver.src/M000669.html +21 -0
  394. data/doc/classes/Dnsruby/Resolver.src/M000670.html +27 -0
  395. data/doc/classes/Dnsruby/Resolver.src/M000671.html +19 -0
  396. data/doc/classes/Dnsruby/Resolver.src/M000672.html +19 -0
  397. data/doc/classes/Dnsruby/Resolver.src/M000673.html +19 -0
  398. data/doc/classes/Dnsruby/Resolver.src/M000674.html +19 -0
  399. data/doc/classes/Dnsruby/Resolver.src/M000675.html +19 -0
  400. data/doc/classes/Dnsruby/Resolver.src/M000676.html +19 -0
  401. data/doc/classes/Dnsruby/Resolver.src/M000677.html +19 -0
  402. data/doc/classes/Dnsruby/Resolver.src/M000678.html +19 -0
  403. data/doc/classes/Dnsruby/Resolver.src/M000679.html +19 -0
  404. data/doc/classes/Dnsruby/Resolver.src/M000680.html +19 -0
  405. data/doc/classes/Dnsruby/Resolver.src/M000681.html +26 -0
  406. data/doc/classes/Dnsruby/Resolver.src/M000682.html +18 -0
  407. data/doc/classes/Dnsruby/Resolver.src/M000683.html +23 -0
  408. data/doc/classes/Dnsruby/Resolver.src/M000684.html +18 -0
  409. data/doc/classes/Dnsruby/SingleResolver.html +218 -91
  410. data/doc/classes/Dnsruby/SingleResolver.src/M000529.html +18 -0
  411. data/doc/classes/Dnsruby/SingleResolver.src/M000530.html +24 -0
  412. data/doc/classes/Dnsruby/SingleResolver.src/M000531.html +36 -0
  413. data/doc/classes/Dnsruby/SingleResolver.src/M000532.html +18 -0
  414. data/doc/classes/Dnsruby/SingleResolver.src/M000533.html +19 -0
  415. data/doc/classes/Dnsruby/SingleResolver.src/M000534.html +58 -0
  416. data/doc/classes/Dnsruby/SingleResolver.src/M000535.html +19 -0
  417. data/doc/classes/Dnsruby/SingleResolver.src/M000536.html +19 -0
  418. data/doc/classes/Dnsruby/SingleResolver.src/M000537.html +25 -0
  419. data/doc/classes/Dnsruby/SingleResolver.src/M000538.html +57 -0
  420. data/doc/classes/Dnsruby/SingleResolver.src/M000539.html +21 -0
  421. data/doc/classes/Dnsruby/SingleResolver.src/M000540.html +19 -0
  422. data/doc/classes/Dnsruby/SingleResolver.src/M000541.html +26 -0
  423. data/doc/classes/Dnsruby/SingleResolver.src/M000542.html +26 -0
  424. data/doc/classes/Dnsruby/SingleResolver.src/M000543.html +36 -0
  425. data/doc/classes/Dnsruby/SingleResolver.src/M000544.html +21 -0
  426. data/doc/classes/Dnsruby/SingleResolver.src/M000545.html +31 -0
  427. data/doc/classes/Dnsruby/SingleResolver.src/M000546.html +47 -0
  428. data/doc/classes/Dnsruby/SingleResolver.src/M000547.html +35 -0
  429. data/doc/classes/Dnsruby/SingleResolver.src/M000548.html +24 -0
  430. data/doc/classes/Dnsruby/SingleResolver.src/M000549.html +21 -0
  431. data/doc/classes/Dnsruby/TheLog.html +24 -32
  432. data/doc/classes/Dnsruby/TheLog.src/M000612.html +18 -0
  433. data/doc/classes/Dnsruby/TheLog.src/M000613.html +18 -0
  434. data/doc/classes/Dnsruby/TheLog.src/M000614.html +18 -0
  435. data/doc/classes/Dnsruby/Types.html +5 -0
  436. data/doc/classes/Dnsruby/Update.html +31 -31
  437. data/doc/classes/Dnsruby/Update.src/{M000253.html → M000634.html} +0 -0
  438. data/doc/classes/Dnsruby/Update.src/M000635.html +36 -0
  439. data/doc/classes/Dnsruby/Update.src/M000636.html +32 -0
  440. data/doc/classes/Dnsruby/Update.src/{M000256.html → M000637.html} +0 -0
  441. data/doc/classes/Dnsruby/Update.src/M000638.html +34 -0
  442. data/doc/classes/Dnsruby/ZoneTransfer.html +23 -23
  443. data/doc/classes/Dnsruby/ZoneTransfer.src/{M000143.html → M000500.html} +0 -0
  444. data/doc/classes/Dnsruby/ZoneTransfer.src/{M000144.html → M000501.html} +0 -0
  445. data/doc/classes/Dnsruby/ZoneTransfer.src/{M000145.html → M000502.html} +0 -0
  446. data/doc/classes/Dnsruby/ZoneTransfer/Delta.html +10 -10
  447. data/doc/classes/Dnsruby/ZoneTransfer/Delta.src/{M000146.html → M000503.html} +0 -0
  448. data/doc/classes/Dnsruby/ZoneTransfer/Delta.src/{M000147.html → M000504.html} +0 -0
  449. data/doc/classes/DnssecTest.html +242 -0
  450. data/doc/classes/DnssecTest.src/M000235.html +58 -0
  451. data/doc/classes/DnssecTest.src/M000236.html +28 -0
  452. data/doc/classes/DnssecTest.src/M000237.html +28 -0
  453. data/doc/classes/DnssecTest.src/M000238.html +28 -0
  454. data/doc/classes/DnssecTest.src/M000239.html +33 -0
  455. data/doc/classes/DnssecTest.src/M000240.html +24 -0
  456. data/doc/classes/DnssecTest.src/M000241.html +47 -0
  457. data/doc/classes/DnssecTest.src/M000242.html +30 -0
  458. data/doc/classes/DsTest.html +252 -0
  459. data/doc/classes/DsTest.src/M000190.html +25 -0
  460. data/doc/classes/DsTest.src/M000191.html +24 -0
  461. data/doc/classes/DsTest.src/M000192.html +26 -0
  462. data/doc/classes/DsTest.src/M000193.html +23 -0
  463. data/doc/classes/DsTest.src/M000194.html +31 -0
  464. data/doc/classes/DsTest.src/M000195.html +25 -0
  465. data/doc/classes/Enumerable.html +118 -0
  466. data/doc/classes/Errno.html +111 -0
  467. data/doc/classes/Errno/ENOTEMPTY.html +111 -0
  468. data/doc/classes/EventMachineTestDeferrable.html +212 -0
  469. data/doc/classes/EventMachineTestDeferrable.src/M000100.html +20 -0
  470. data/doc/classes/EventMachineTestDeferrable.src/M000101.html +19 -0
  471. data/doc/classes/EventMachineTestDeferrable.src/M000102.html +28 -0
  472. data/doc/classes/EventMachineTestDeferrable.src/M000103.html +29 -0
  473. data/doc/classes/EventMachineTestDeferrable.src/M000104.html +33 -0
  474. data/doc/classes/EventMachineTestDeferrable.src/M000105.html +32 -0
  475. data/doc/classes/EventMachineTestResolver.html +324 -0
  476. data/doc/classes/EventMachineTestResolver.src/M000177.html +21 -0
  477. data/doc/classes/EventMachineTestResolver.src/M000178.html +19 -0
  478. data/doc/classes/EventMachineTestResolver.src/M000179.html +20 -0
  479. data/doc/classes/EventMachineTestResolver.src/M000180.html +20 -0
  480. data/doc/classes/EventMachineTestResolver.src/M000181.html +24 -0
  481. data/doc/classes/EventMachineTestResolver.src/M000182.html +25 -0
  482. data/doc/classes/EventMachineTestResolver.src/M000183.html +31 -0
  483. data/doc/classes/EventMachineTestResolver.src/M000184.html +24 -0
  484. data/doc/classes/EventMachineTestResolver.src/M000185.html +39 -0
  485. data/doc/classes/EventMachineTestResolver.src/M000186.html +36 -0
  486. data/doc/classes/EventMachineTestResolver.src/M000187.html +32 -0
  487. data/doc/classes/EventMachineTestResolver.src/M000188.html +30 -0
  488. data/doc/classes/EventMachineTestResolver.src/M000189.html +22 -0
  489. data/doc/classes/EventMachineTestSingleResolver.html +227 -0
  490. data/doc/classes/EventMachineTestSingleResolver.src/M000092.html +21 -0
  491. data/doc/classes/EventMachineTestSingleResolver.src/M000093.html +19 -0
  492. data/doc/classes/EventMachineTestSingleResolver.src/M000094.html +31 -0
  493. data/doc/classes/EventMachineTestSingleResolver.src/M000095.html +33 -0
  494. data/doc/classes/EventMachineTestSingleResolver.src/M000096.html +33 -0
  495. data/doc/classes/EventMachineTestSingleResolver.src/M000097.html +32 -0
  496. data/doc/classes/EventMachineTestSingleResolver.src/M000098.html +23 -0
  497. data/doc/classes/File.html +166 -0
  498. data/doc/classes/File.src/M000336.html +20 -0
  499. data/doc/classes/File.src/M000337.html +20 -0
  500. data/doc/classes/File.src/M000338.html +18 -0
  501. data/doc/classes/FileOperations.html +375 -0
  502. data/doc/classes/FileOperations.src/M000685.html +31 -0
  503. data/doc/classes/FileOperations.src/M000686.html +20 -0
  504. data/doc/classes/FileOperations.src/M000687.html +20 -0
  505. data/doc/classes/FileOperations.src/M000688.html +24 -0
  506. data/doc/classes/FileOperations.src/M000689.html +34 -0
  507. data/doc/classes/FileOperations.src/M000690.html +27 -0
  508. data/doc/classes/FileOperations.src/M000691.html +21 -0
  509. data/doc/classes/FileOperations.src/M000692.html +19 -0
  510. data/doc/classes/FileOperations.src/M000693.html +40 -0
  511. data/doc/classes/FileOperations.src/M000694.html +19 -0
  512. data/doc/classes/FileOperations.src/M000695.html +20 -0
  513. data/doc/classes/FileOperations.src/M000696.html +18 -0
  514. data/doc/classes/FileOperations.src/M000697.html +18 -0
  515. data/doc/classes/FileOperations.src/M000698.html +18 -0
  516. data/doc/classes/FileOperations.src/M000699.html +20 -0
  517. data/doc/classes/FileOperations.src/M000700.html +20 -0
  518. data/doc/classes/HookScriptAPI.html +308 -0
  519. data/doc/classes/HookScriptAPI.src/M000339.html +18 -0
  520. data/doc/classes/HookScriptAPI.src/M000341.html +18 -0
  521. data/doc/classes/HookScriptAPI.src/M000342.html +18 -0
  522. data/doc/classes/HookScriptAPI.src/M000343.html +18 -0
  523. data/doc/classes/HookScriptAPI.src/M000344.html +18 -0
  524. data/doc/classes/HookScriptAPI.src/M000345.html +18 -0
  525. data/doc/classes/HookScriptAPI.src/M000346.html +18 -0
  526. data/doc/classes/HookScriptAPI.src/M000347.html +18 -0
  527. data/doc/classes/HookScriptAPI.src/M000348.html +20 -0
  528. data/doc/classes/HookScriptAPI.src/M000349.html +20 -0
  529. data/doc/classes/HookScriptAPI.src/M000350.html +20 -0
  530. data/doc/classes/Installer.html +1148 -0
  531. data/doc/classes/Installer.src/M000243.html +21 -0
  532. data/doc/classes/Installer.src/M000244.html +18 -0
  533. data/doc/classes/Installer.src/M000245.html +17 -0
  534. data/doc/classes/Installer.src/M000246.html +18 -0
  535. data/doc/classes/Installer.src/M000247.html +18 -0
  536. data/doc/classes/Installer.src/M000248.html +18 -0
  537. data/doc/classes/Installer.src/M000249.html +18 -0
  538. data/doc/classes/Installer.src/M000250.html +18 -0
  539. data/doc/classes/Installer.src/M000251.html +23 -0
  540. data/doc/classes/Installer.src/M000252.html +18 -0
  541. data/doc/classes/Installer.src/M000255.html +18 -0
  542. data/doc/classes/Installer.src/M000259.html +18 -0
  543. data/doc/classes/Installer.src/M000260.html +18 -0
  544. data/doc/classes/Installer.src/M000261.html +20 -0
  545. data/doc/classes/Installer.src/M000263.html +18 -0
  546. data/doc/classes/Installer.src/M000267.html +36 -0
  547. data/doc/classes/Installer.src/M000268.html +25 -0
  548. data/doc/classes/Installer.src/M000269.html +24 -0
  549. data/doc/classes/Installer.src/M000270.html +19 -0
  550. data/doc/classes/Installer.src/M000271.html +18 -0
  551. data/doc/classes/Installer.src/M000272.html +18 -0
  552. data/doc/classes/Installer.src/M000273.html +21 -0
  553. data/doc/classes/Installer.src/M000274.html +18 -0
  554. data/doc/classes/Installer.src/M000275.html +20 -0
  555. data/doc/classes/Installer.src/M000276.html +18 -0
  556. data/doc/classes/Installer.src/M000277.html +21 -0
  557. data/doc/classes/Installer.src/M000278.html +18 -0
  558. data/doc/classes/Installer.src/M000279.html +22 -0
  559. data/doc/classes/Installer.src/M000280.html +18 -0
  560. data/doc/classes/Installer.src/M000281.html +23 -0
  561. data/doc/classes/Installer.src/M000282.html +18 -0
  562. data/doc/classes/Installer.src/M000283.html +20 -0
  563. data/doc/classes/Installer.src/M000284.html +19 -0
  564. data/doc/classes/Installer.src/M000285.html +19 -0
  565. data/doc/classes/Installer.src/M000286.html +20 -0
  566. data/doc/classes/Installer.src/M000287.html +30 -0
  567. data/doc/classes/Installer.src/M000288.html +20 -0
  568. data/doc/classes/Installer.src/M000294.html +19 -0
  569. data/doc/classes/Installer.src/M000295.html +20 -0
  570. data/doc/classes/Installer.src/M000298.html +19 -0
  571. data/doc/classes/Installer.src/M000302.html +26 -0
  572. data/doc/classes/Installer.src/M000303.html +25 -0
  573. data/doc/classes/Installer.src/M000304.html +29 -0
  574. data/doc/classes/Installer.src/M000305.html +26 -0
  575. data/doc/classes/Installer/Shebang.html +202 -0
  576. data/doc/classes/Installer/Shebang.src/M000306.html +23 -0
  577. data/doc/classes/Installer/Shebang.src/M000307.html +19 -0
  578. data/doc/classes/Installer/Shebang.src/M000308.html +19 -0
  579. data/doc/classes/Installer/Shebang.src/M000309.html +18 -0
  580. data/doc/classes/Nsec3ParamTest.html +172 -0
  581. data/doc/classes/Nsec3ParamTest.src/M000233.html +26 -0
  582. data/doc/classes/Nsec3ParamTest.src/M000234.html +24 -0
  583. data/doc/classes/Nsec3Test.html +202 -0
  584. data/doc/classes/Nsec3Test.src/M000207.html +27 -0
  585. data/doc/classes/Nsec3Test.src/M000208.html +24 -0
  586. data/doc/classes/Nsec3Test.src/M000209.html +39 -0
  587. data/doc/classes/Nsec3Test.src/M000210.html +23 -0
  588. data/doc/classes/NsecTest.html +187 -0
  589. data/doc/classes/NsecTest.src/M000333.html +23 -0
  590. data/doc/classes/NsecTest.src/M000334.html +24 -0
  591. data/doc/classes/NsecTest.src/M000335.html +23 -0
  592. data/doc/classes/RrsetTest.html +137 -0
  593. data/doc/classes/RrsetTest.src/M000310.html +68 -0
  594. data/doc/classes/RrsigTest.html +150 -0
  595. data/doc/classes/RrsigTest.src/M000099.html +35 -0
  596. data/doc/classes/SetupError.html +111 -0
  597. data/doc/classes/TestAResolverFile.html +152 -0
  598. data/doc/classes/TestAResolverFile.src/M000205.html +18 -0
  599. data/doc/classes/TestAResolverFile.src/M000206.html +33 -0
  600. data/doc/classes/TestAxfr.html +137 -0
  601. data/doc/classes/TestAxfr.src/M000106.html +23 -0
  602. data/doc/classes/TestDNS.html +257 -0
  603. data/doc/classes/TestDNS.src/M000196.html +18 -0
  604. data/doc/classes/TestDNS.src/M000197.html +18 -0
  605. data/doc/classes/TestDNS.src/M000198.html +53 -0
  606. data/doc/classes/TestDNS.src/M000199.html +19 -0
  607. data/doc/classes/TestDNS.src/M000200.html +18 -0
  608. data/doc/classes/TestDNS.src/M000201.html +32 -0
  609. data/doc/classes/TestDNS.src/M000202.html +74 -0
  610. data/doc/classes/TestDNS.src/M000203.html +41 -0
  611. data/doc/classes/TestDNS.src/M000204.html +67 -0
  612. data/doc/classes/TestDnsruby.html +137 -0
  613. data/doc/classes/TestDnsruby.src/M000211.html +36 -0
  614. data/doc/classes/TestEscapedChars.html +152 -0
  615. data/doc/classes/TestEscapedChars.src/M000014.html +243 -0
  616. data/doc/classes/TestEscapedChars.src/M000015.html +248 -0
  617. data/doc/classes/TestEventMachineSoak.html +227 -0
  618. data/doc/classes/TestEventMachineSoak.src/M000319.html +19 -0
  619. data/doc/classes/TestEventMachineSoak.src/M000320.html +18 -0
  620. data/doc/classes/TestEventMachineSoak.src/M000321.html +18 -0
  621. data/doc/classes/TestEventMachineSoak.src/M000322.html +33 -0
  622. data/doc/classes/TestEventMachineSoak.src/M000323.html +34 -0
  623. data/doc/classes/TestEventMachineSoak.src/M000324.html +33 -0
  624. data/doc/classes/TestEventMachineSoak.src/M000325.html +33 -0
  625. data/doc/classes/TestHeader.html +137 -0
  626. data/doc/classes/TestHeader.src/M000091.html +98 -0
  627. data/doc/classes/TestMisc.html +167 -0
  628. data/doc/classes/TestMisc.src/M000011.html +28 -0
  629. data/doc/classes/TestMisc.src/M000012.html +50 -0
  630. data/doc/classes/TestMisc.src/M000013.html +84 -0
  631. data/doc/classes/TestName.html +182 -0
  632. data/doc/classes/TestName.src/M000218.html +24 -0
  633. data/doc/classes/TestName.src/M000219.html +23 -0
  634. data/doc/classes/TestName.src/M000220.html +21 -0
  635. data/doc/classes/TestName.src/M000221.html +21 -0
  636. data/doc/classes/TestPacket.html +182 -0
  637. data/doc/classes/TestPacket.src/M000229.html +154 -0
  638. data/doc/classes/TestPacket.src/M000230.html +25 -0
  639. data/doc/classes/TestPacket.src/M000231.html +23 -0
  640. data/doc/classes/TestPacket.src/M000232.html +32 -0
  641. data/doc/classes/TestPacketUniquePush.html +140 -0
  642. data/doc/classes/TestPacketUniquePush.src/M000318.html +81 -0
  643. data/doc/classes/TestQuestion.html +137 -0
  644. data/doc/classes/TestQuestion.src/M000090.html +45 -0
  645. data/doc/classes/TestQueue.html +137 -0
  646. data/doc/classes/TestQueue.src/M000089.html +27 -0
  647. data/doc/classes/TestRR.html +137 -0
  648. data/doc/classes/TestRR.src/M000217.html +256 -0
  649. data/doc/classes/TestRecur.html +137 -0
  650. data/doc/classes/TestRecur.src/M000176.html +20 -0
  651. data/doc/classes/TestResOpt.html +227 -0
  652. data/doc/classes/TestResOpt.src/M000311.html +37 -0
  653. data/doc/classes/TestResOpt.src/M000312.html +19 -0
  654. data/doc/classes/TestResOpt.src/M000313.html +30 -0
  655. data/doc/classes/TestResOpt.src/M000314.html +37 -0
  656. data/doc/classes/TestResOpt.src/M000315.html +45 -0
  657. data/doc/classes/TestResOpt.src/M000316.html +36 -0
  658. data/doc/classes/TestResOpt.src/M000317.html +60 -0
  659. data/doc/classes/TestResolver.html +357 -0
  660. data/doc/classes/TestResolver.src/M000077.html +18 -0
  661. data/doc/classes/TestResolver.src/M000078.html +20 -0
  662. data/doc/classes/TestResolver.src/M000079.html +20 -0
  663. data/doc/classes/TestResolver.src/M000080.html +24 -0
  664. data/doc/classes/TestResolver.src/M000081.html +25 -0
  665. data/doc/classes/TestResolver.src/M000082.html +31 -0
  666. data/doc/classes/TestResolver.src/M000083.html +24 -0
  667. data/doc/classes/TestResolver.src/M000084.html +42 -0
  668. data/doc/classes/TestResolver.src/M000085.html +38 -0
  669. data/doc/classes/TestResolver.src/M000086.html +34 -0
  670. data/doc/classes/TestResolver.src/M000087.html +30 -0
  671. data/doc/classes/TestResolver.src/M000088.html +41 -0
  672. data/doc/classes/TestResolverConfig.html +205 -0
  673. data/doc/classes/TestResolverConfig.src/M000225.html +18 -0
  674. data/doc/classes/TestResolverConfig.src/M000226.html +37 -0
  675. data/doc/classes/TestResolverConfig.src/M000227.html +23 -0
  676. data/doc/classes/TestResolverConfig.src/M000228.html +22 -0
  677. data/doc/classes/TestResolverEnv.html +141 -0
  678. data/doc/classes/TestResolverEnv.src/M000332.html +44 -0
  679. data/doc/classes/TestRrOpt.html +182 -0
  680. data/doc/classes/TestRrOpt.src/M000007.html +33 -0
  681. data/doc/classes/TestRrOpt.src/M000008.html +46 -0
  682. data/doc/classes/TestRrOpt.src/M000009.html +23 -0
  683. data/doc/classes/TestRrOpt.src/M000010.html +34 -0
  684. data/doc/classes/TestRrTest.html +155 -0
  685. data/doc/classes/TestRrTest.src/M000224.html +77 -0
  686. data/doc/classes/TestRrUnknown.html +167 -0
  687. data/doc/classes/TestRrUnknown.src/M000074.html +41 -0
  688. data/doc/classes/TestRrUnknown.src/M000075.html +39 -0
  689. data/doc/classes/TestRrUnknown.src/M000076.html +42 -0
  690. data/doc/classes/TestSingleResolver.html +293 -0
  691. data/doc/classes/TestSingleResolver.src/M000149.html +18 -0
  692. data/doc/classes/TestSingleResolver.src/M000150.html +19 -0
  693. data/doc/classes/TestSingleResolver.src/M000151.html +28 -0
  694. data/doc/classes/TestSingleResolver.src/M000152.html +30 -0
  695. data/doc/classes/TestSingleResolver.src/M000153.html +55 -0
  696. data/doc/classes/TestSingleResolver.src/M000154.html +26 -0
  697. data/doc/classes/TestSingleResolver.src/M000155.html +23 -0
  698. data/doc/classes/TestSingleResolver.src/M000156.html +27 -0
  699. data/doc/classes/TestSingleResolver.src/M000157.html +39 -0
  700. data/doc/classes/TestSingleResolverSoak.html +223 -0
  701. data/doc/classes/TestSingleResolverSoak.src/M000326.html +18 -0
  702. data/doc/classes/TestSingleResolverSoak.src/M000327.html +18 -0
  703. data/doc/classes/TestSingleResolverSoak.src/M000328.html +57 -0
  704. data/doc/classes/TestSingleResolverSoak.src/M000329.html +64 -0
  705. data/doc/classes/TestSingleResolverSoak.src/M000330.html +25 -0
  706. data/doc/classes/TestSingleResolverSoak.src/M000331.html +63 -0
  707. data/doc/classes/TestSoakBase.html +172 -0
  708. data/doc/classes/TestSoakBase.src/M000072.html +68 -0
  709. data/doc/classes/TestSoakBase.src/M000073.html +66 -0
  710. data/doc/classes/TestTKey.html +152 -0
  711. data/doc/classes/TestTKey.src/M000215.html +18 -0
  712. data/doc/classes/TestTKey.src/M000216.html +65 -0
  713. data/doc/classes/TestTSig.html +309 -0
  714. data/doc/classes/TestTSig.src/M000138.html +18 -0
  715. data/doc/classes/TestTSig.src/M000139.html +20 -0
  716. data/doc/classes/TestTSig.src/M000140.html +26 -0
  717. data/doc/classes/TestTSig.src/M000141.html +69 -0
  718. data/doc/classes/TestTSig.src/M000142.html +21 -0
  719. data/doc/classes/TestTSig.src/M000143.html +60 -0
  720. data/doc/classes/TestTSig.src/M000144.html +33 -0
  721. data/doc/classes/TestTSig.src/M000145.html +20 -0
  722. data/doc/classes/TestTSig.src/M000146.html +24 -0
  723. data/doc/classes/TestTSig.src/M000147.html +54 -0
  724. data/doc/classes/TestTSig.src/M000148.html +23 -0
  725. data/doc/classes/TestTcp.html +152 -0
  726. data/doc/classes/TestTcp.src/M000222.html +21 -0
  727. data/doc/classes/TestTcp.src/M000223.html +23 -0
  728. data/doc/classes/TestUpdate.html +152 -0
  729. data/doc/classes/TestUpdate.src/M000174.html +20 -0
  730. data/doc/classes/TestUpdate.src/M000175.html +203 -0
  731. data/doc/classes/ToplevelInstaller.html +621 -0
  732. data/doc/classes/ToplevelInstaller.src/M000107.html +23 -0
  733. data/doc/classes/ToplevelInstaller.src/M000108.html +18 -0
  734. data/doc/classes/ToplevelInstaller.src/M000109.html +25 -0
  735. data/doc/classes/ToplevelInstaller.src/M000110.html +21 -0
  736. data/doc/classes/ToplevelInstaller.src/M000111.html +18 -0
  737. data/doc/classes/ToplevelInstaller.src/M000112.html +18 -0
  738. data/doc/classes/ToplevelInstaller.src/M000113.html +38 -0
  739. data/doc/classes/ToplevelInstaller.src/M000114.html +18 -0
  740. data/doc/classes/ToplevelInstaller.src/M000115.html +18 -0
  741. data/doc/classes/ToplevelInstaller.src/M000116.html +18 -0
  742. data/doc/classes/ToplevelInstaller.src/M000117.html +18 -0
  743. data/doc/classes/ToplevelInstaller.src/M000118.html +18 -0
  744. data/doc/classes/ToplevelInstaller.src/M000119.html +40 -0
  745. data/doc/classes/ToplevelInstaller.src/M000120.html +18 -0
  746. data/doc/classes/ToplevelInstaller.src/M000121.html +18 -0
  747. data/doc/classes/ToplevelInstaller.src/M000122.html +21 -0
  748. data/doc/classes/ToplevelInstaller.src/M000128.html +40 -0
  749. data/doc/classes/ToplevelInstaller.src/M000129.html +31 -0
  750. data/doc/classes/ToplevelInstaller.src/M000130.html +52 -0
  751. data/doc/classes/ToplevelInstaller.src/M000131.html +19 -0
  752. data/doc/classes/ToplevelInstaller.src/M000132.html +18 -0
  753. data/doc/classes/ToplevelInstaller.src/M000133.html +18 -0
  754. data/doc/classes/ToplevelInstaller.src/M000134.html +18 -0
  755. data/doc/classes/ToplevelInstaller.src/M000135.html +20 -0
  756. data/doc/classes/ToplevelInstaller.src/M000136.html +18 -0
  757. data/doc/classes/ToplevelInstaller.src/M000137.html +18 -0
  758. data/doc/classes/ToplevelInstallerMulti.html +398 -0
  759. data/doc/classes/ToplevelInstallerMulti.src/M000158.html +21 -0
  760. data/doc/classes/ToplevelInstallerMulti.src/M000159.html +21 -0
  761. data/doc/classes/ToplevelInstallerMulti.src/M000160.html +23 -0
  762. data/doc/classes/ToplevelInstallerMulti.src/M000161.html +29 -0
  763. data/doc/classes/ToplevelInstallerMulti.src/M000162.html +22 -0
  764. data/doc/classes/ToplevelInstallerMulti.src/M000163.html +21 -0
  765. data/doc/classes/ToplevelInstallerMulti.src/M000164.html +21 -0
  766. data/doc/classes/ToplevelInstallerMulti.src/M000165.html +20 -0
  767. data/doc/classes/ToplevelInstallerMulti.src/M000166.html +20 -0
  768. data/doc/classes/ToplevelInstallerMulti.src/M000167.html +20 -0
  769. data/doc/classes/ToplevelInstallerMulti.src/M000168.html +21 -0
  770. data/doc/classes/ToplevelInstallerMulti.src/M000169.html +21 -0
  771. data/doc/classes/ToplevelInstallerMulti.src/M000170.html +25 -0
  772. data/doc/classes/ToplevelInstallerMulti.src/M000171.html +18 -0
  773. data/doc/classes/ToplevelInstallerMulti.src/M000172.html +18 -0
  774. data/doc/classes/ToplevelInstallerMulti.src/M000173.html +18 -0
  775. data/doc/created.rid +1 -1
  776. data/doc/files/demo/axfr_rb.html +158 -0
  777. data/doc/files/demo/check_soa_rb.html +138 -0
  778. data/doc/files/demo/check_zone_rb.html +231 -0
  779. data/doc/files/demo/check_zone_rb.src/M000001.html +81 -0
  780. data/doc/files/demo/check_zone_rb.src/M000002.html +30 -0
  781. data/doc/files/demo/check_zone_rb.src/M000003.html +23 -0
  782. data/doc/files/demo/check_zone_rb.src/M000004.html +23 -0
  783. data/doc/files/demo/check_zone_rb.src/M000005.html +23 -0
  784. data/doc/files/demo/example_recurse_rb.html +115 -0
  785. data/doc/files/demo/mresolv_rb.html +130 -0
  786. data/doc/files/demo/mx_rb.html +108 -0
  787. data/doc/files/demo/rubydig_rb.html +128 -0
  788. data/doc/files/demo/trace_dns_rb.html +108 -0
  789. data/doc/files/lib/Dnsruby/Cache_rb.html +109 -0
  790. data/doc/files/lib/Dnsruby/Config_rb.html +1 -1
  791. data/doc/files/lib/Dnsruby/DNS_rb.html +1 -1
  792. data/doc/files/lib/Dnsruby/Hosts_rb.html +1 -1
  793. data/doc/files/lib/Dnsruby/Recursor_rb.html +101 -0
  794. data/doc/files/lib/Dnsruby/Resolver_rb.html +2 -1
  795. data/doc/files/lib/Dnsruby/SingleResolver_rb.html +2 -1
  796. data/doc/files/lib/Dnsruby/TheLog_rb.html +4 -4
  797. data/doc/files/lib/Dnsruby/code_mapper_rb.html +1 -1
  798. data/doc/files/lib/Dnsruby/dnssec_rb.html +1 -1
  799. data/doc/files/lib/Dnsruby/event_machine_interface_rb.html +1 -1
  800. data/doc/files/lib/Dnsruby/iana_ports_rb.html +127 -0
  801. data/doc/files/lib/Dnsruby/ipv4_rb.html +1 -1
  802. data/doc/files/lib/Dnsruby/ipv6_rb.html +1 -1
  803. data/doc/files/lib/Dnsruby/message_rb.html +1 -1
  804. data/doc/files/lib/Dnsruby/name_rb.html +1 -1
  805. data/doc/files/lib/Dnsruby/resource/AAAA_rb.html +1 -1
  806. data/doc/files/lib/Dnsruby/resource/AFSDB_rb.html +1 -1
  807. data/doc/files/lib/Dnsruby/resource/A_rb.html +1 -1
  808. data/doc/files/lib/Dnsruby/resource/CERT_rb.html +1 -1
  809. data/doc/files/lib/Dnsruby/resource/DLV_rb.html +101 -0
  810. data/doc/files/lib/Dnsruby/resource/DNSKEY_rb.html +1 -1
  811. data/doc/files/lib/Dnsruby/resource/DS_rb.html +8 -1
  812. data/doc/files/lib/Dnsruby/resource/HINFO_rb.html +1 -1
  813. data/doc/files/lib/Dnsruby/resource/IN_rb.html +1 -1
  814. data/doc/files/lib/Dnsruby/resource/ISDN_rb.html +1 -1
  815. data/doc/files/lib/Dnsruby/resource/LOC_rb.html +1 -1
  816. data/doc/files/lib/Dnsruby/resource/MINFO_rb.html +1 -1
  817. data/doc/files/lib/Dnsruby/resource/MX_rb.html +1 -1
  818. data/doc/files/lib/Dnsruby/resource/NAPTR_rb.html +1 -1
  819. data/doc/files/lib/Dnsruby/resource/NSAP_rb.html +1 -1
  820. data/doc/files/lib/Dnsruby/resource/NSEC3PARAM_rb.html +1 -1
  821. data/doc/files/lib/Dnsruby/resource/NSEC3_rb.html +1 -1
  822. data/doc/files/lib/Dnsruby/resource/NSEC_rb.html +1 -1
  823. data/doc/files/lib/Dnsruby/resource/OPT_rb.html +1 -1
  824. data/doc/files/lib/Dnsruby/resource/PX_rb.html +1 -1
  825. data/doc/files/lib/Dnsruby/resource/RP_rb.html +1 -1
  826. data/doc/files/lib/Dnsruby/resource/RRSIG_rb.html +1 -1
  827. data/doc/files/lib/Dnsruby/resource/RT_rb.html +1 -1
  828. data/doc/files/lib/Dnsruby/resource/SOA_rb.html +1 -1
  829. data/doc/files/lib/Dnsruby/resource/SPF_rb.html +1 -1
  830. data/doc/files/lib/Dnsruby/resource/SRV_rb.html +1 -1
  831. data/doc/files/lib/Dnsruby/resource/TKEY_rb.html +1 -1
  832. data/doc/files/lib/Dnsruby/resource/TSIG_rb.html +1 -1
  833. data/doc/files/lib/Dnsruby/resource/TXT_rb.html +1 -1
  834. data/doc/files/lib/Dnsruby/resource/X25_rb.html +1 -1
  835. data/doc/files/lib/Dnsruby/resource/domain_name_rb.html +1 -1
  836. data/doc/files/lib/Dnsruby/resource/generic_rb.html +2 -1
  837. data/doc/files/lib/Dnsruby/resource/resource_rb.html +1 -1
  838. data/doc/files/lib/Dnsruby/select_thread_rb.html +1 -1
  839. data/doc/files/lib/Dnsruby/update_rb.html +1 -1
  840. data/doc/files/lib/Dnsruby/zone_transfer_rb.html +1 -1
  841. data/doc/files/lib/dnsruby_rb.html +2 -2
  842. data/doc/files/setup_rb.html +148 -0
  843. data/doc/files/setup_rb.src/M000006.html +18 -0
  844. data/doc/files/test/tc_axfr_rb.html +110 -0
  845. data/doc/files/test/tc_dns_rb.html +117 -0
  846. data/doc/files/test/tc_dnskey_rb.html +109 -0
  847. data/doc/files/test/tc_dnsruby_rb.html +117 -0
  848. data/doc/files/test/tc_dnssec_rb.html +109 -0
  849. data/doc/files/test/tc_ds_rb.html +110 -0
  850. data/doc/files/test/tc_escapedchars_rb.html +117 -0
  851. data/doc/files/test/tc_event_machine_deferrable_rb.html +111 -0
  852. data/doc/files/test/tc_event_machine_res_rb.html +111 -0
  853. data/doc/files/test/tc_event_machine_single_res_rb.html +111 -0
  854. data/doc/files/test/tc_event_machine_soak_rb.html +113 -0
  855. data/doc/files/test/tc_header_rb.html +117 -0
  856. data/doc/files/test/tc_misc_rb.html +110 -0
  857. data/doc/files/test/tc_name_rb.html +117 -0
  858. data/doc/files/test/tc_nsec3_rb.html +109 -0
  859. data/doc/files/test/tc_nsec3param_rb.html +109 -0
  860. data/doc/files/test/tc_nsec_rb.html +109 -0
  861. data/doc/files/test/tc_packet_rb.html +117 -0
  862. data/doc/files/test/tc_packet_unique_push_rb.html +117 -0
  863. data/doc/files/test/tc_question_rb.html +117 -0
  864. data/doc/files/test/tc_queue_rb.html +109 -0
  865. data/doc/files/test/tc_recur_rb.html +109 -0
  866. data/doc/files/test/tc_res_config_rb.html +110 -0
  867. data/doc/files/test/tc_res_env_rb.html +117 -0
  868. data/doc/files/test/tc_res_file_rb.html +110 -0
  869. data/doc/files/test/tc_res_opt_rb.html +117 -0
  870. data/doc/files/test/tc_resolver_rb.html +117 -0
  871. data/doc/files/test/tc_rr-opt_rb.html +118 -0
  872. data/doc/files/test/tc_rr-txt_rb.html +117 -0
  873. data/doc/files/test/tc_rr-unknown_rb.html +110 -0
  874. data/doc/files/test/tc_rr_rb.html +117 -0
  875. data/doc/files/test/tc_rrset_rb.html +109 -0
  876. data/doc/files/test/tc_rrsig_rb.html +109 -0
  877. data/doc/files/test/tc_single_resolver_rb.html +117 -0
  878. data/doc/files/test/tc_soak_base_rb.html +110 -0
  879. data/doc/files/test/tc_soak_rb.html +121 -0
  880. data/doc/files/test/tc_tcp_rb.html +110 -0
  881. data/doc/files/test/tc_tkey_rb.html +111 -0
  882. data/doc/files/test/tc_tsig_rb.html +111 -0
  883. data/doc/files/test/tc_update_rb.html +117 -0
  884. data/doc/files/test/ts_dnsruby_rb.html +109 -0
  885. data/doc/files/test/ts_offline_rb.html +133 -0
  886. data/doc/files/test/ts_online_rb.html +128 -0
  887. data/doc/fr_class_index.html +66 -1
  888. data/doc/fr_file_index.html +57 -1
  889. data/doc/fr_method_index.html +700 -295
  890. data/doc/index.html +1 -1
  891. data/lib/Dnsruby/Cache.rb +26 -0
  892. data/lib/Dnsruby/Recursor.rb +487 -0
  893. data/lib/Dnsruby/Resolver.rb +70 -13
  894. data/lib/Dnsruby/SingleResolver.rb +157 -36
  895. data/lib/Dnsruby/dnssec.rb +352 -97
  896. data/lib/Dnsruby/event_machine_interface.rb +3 -3
  897. data/lib/Dnsruby/iana_ports.rb +5198 -0
  898. data/lib/Dnsruby/message.rb +28 -28
  899. data/lib/Dnsruby/name.rb +6 -0
  900. data/lib/Dnsruby/resource/DNSKEY.rb +6 -8
  901. data/lib/Dnsruby/resource/RRSIG.rb +8 -8
  902. data/lib/Dnsruby/resource/resource.rb +37 -19
  903. data/lib/dnsruby.rb +1 -0
  904. data/test/tc_dnssec.rb +94 -14
  905. data/test/tc_packet.rb +8 -2
  906. data/test/tc_recur.rb +10 -0
  907. data/test/tc_res_config.rb +1 -1
  908. data/test/tc_res_opt.rb +2 -2
  909. data/test/tc_resolver.rb +42 -0
  910. data/test/tc_rrsig.rb +2 -2
  911. data/test/tc_single_resolver.rb +38 -0
  912. data/test/tc_tcp.rb +1 -1
  913. data/test/ts_online.rb +1 -0
  914. metadata +864 -295
  915. data/doc/classes/Dnsruby/Classes.src/M000209.html +0 -23
  916. data/doc/classes/Dnsruby/Classes.src/M000210.html +0 -19
  917. data/doc/classes/Dnsruby/CodeMapper.src/M000187.html +0 -33
  918. data/doc/classes/Dnsruby/CodeMapper.src/M000189.html +0 -19
  919. data/doc/classes/Dnsruby/CodeMapper.src/M000190.html +0 -19
  920. data/doc/classes/Dnsruby/CodeMapper.src/M000191.html +0 -18
  921. data/doc/classes/Dnsruby/CodeMapper.src/M000192.html +0 -22
  922. data/doc/classes/Dnsruby/CodeMapper.src/M000193.html +0 -22
  923. data/doc/classes/Dnsruby/CodeMapper.src/M000194.html +0 -22
  924. data/doc/classes/Dnsruby/CodeMapper.src/M000195.html +0 -31
  925. data/doc/classes/Dnsruby/CodeMapper.src/M000196.html +0 -19
  926. data/doc/classes/Dnsruby/Config.src/M000155.html +0 -22
  927. data/doc/classes/Dnsruby/DNS.src/M000267.html +0 -28
  928. data/doc/classes/Dnsruby/DNS.src/M000268.html +0 -19
  929. data/doc/classes/Dnsruby/DNS.src/M000269.html +0 -20
  930. data/doc/classes/Dnsruby/DNS.src/M000270.html +0 -31
  931. data/doc/classes/Dnsruby/Dnssec.src/M000249.html +0 -23
  932. data/doc/classes/Dnsruby/Dnssec.src/M000250.html +0 -19
  933. data/doc/classes/Dnsruby/Dnssec.src/M000251.html +0 -90
  934. data/doc/classes/Dnsruby/Dnssec.src/M000252.html +0 -76
  935. data/doc/classes/Dnsruby/Header.src/M000231.html +0 -35
  936. data/doc/classes/Dnsruby/Header.src/M000232.html +0 -18
  937. data/doc/classes/Dnsruby/Header.src/M000233.html +0 -18
  938. data/doc/classes/Dnsruby/Header.src/M000234.html +0 -21
  939. data/doc/classes/Dnsruby/Header.src/M000235.html +0 -20
  940. data/doc/classes/Dnsruby/Header.src/M000236.html +0 -32
  941. data/doc/classes/Dnsruby/Header.src/M000237.html +0 -27
  942. data/doc/classes/Dnsruby/Header.src/M000238.html +0 -26
  943. data/doc/classes/Dnsruby/Header.src/M000239.html +0 -47
  944. data/doc/classes/Dnsruby/Header.src/M000240.html +0 -28
  945. data/doc/classes/Dnsruby/Header.src/M000241.html +0 -30
  946. data/doc/classes/Dnsruby/Message.src/M000119.html +0 -38
  947. data/doc/classes/Dnsruby/Message.src/M000120.html +0 -26
  948. data/doc/classes/Dnsruby/Message.src/M000121.html +0 -22
  949. data/doc/classes/Dnsruby/Message.src/M000122.html +0 -22
  950. data/doc/classes/Dnsruby/Message.src/M000123.html +0 -20
  951. data/doc/classes/Dnsruby/Message.src/M000124.html +0 -20
  952. data/doc/classes/Dnsruby/Message.src/M000125.html +0 -20
  953. data/doc/classes/Dnsruby/Message.src/M000126.html +0 -20
  954. data/doc/classes/Dnsruby/Message.src/M000127.html +0 -18
  955. data/doc/classes/Dnsruby/Message.src/M000128.html +0 -20
  956. data/doc/classes/Dnsruby/Message.src/M000129.html +0 -23
  957. data/doc/classes/Dnsruby/Message.src/M000130.html +0 -30
  958. data/doc/classes/Dnsruby/Message.src/M000131.html +0 -20
  959. data/doc/classes/Dnsruby/Message.src/M000132.html +0 -18
  960. data/doc/classes/Dnsruby/Message.src/M000133.html +0 -56
  961. data/doc/classes/Dnsruby/Message.src/M000134.html +0 -35
  962. data/doc/classes/Dnsruby/Message.src/M000135.html +0 -46
  963. data/doc/classes/Dnsruby/Name.src/M000104.html +0 -28
  964. data/doc/classes/Dnsruby/Name.src/M000105.html +0 -20
  965. data/doc/classes/Dnsruby/Name.src/M000106.html +0 -18
  966. data/doc/classes/Dnsruby/Name.src/M000107.html +0 -21
  967. data/doc/classes/Dnsruby/Name.src/M000108.html +0 -22
  968. data/doc/classes/Dnsruby/Name.src/M000109.html +0 -18
  969. data/doc/classes/Dnsruby/Name/Label.src/M000110.html +0 -21
  970. data/doc/classes/Dnsruby/Name/Label.src/M000111.html +0 -18
  971. data/doc/classes/Dnsruby/Name/Label.src/M000112.html +0 -22
  972. data/doc/classes/Dnsruby/Name/Label.src/M000113.html +0 -18
  973. data/doc/classes/Dnsruby/Name/Label.src/M000114.html +0 -18
  974. data/doc/classes/Dnsruby/Name/Label.src/M000115.html +0 -18
  975. data/doc/classes/Dnsruby/Name/Label.src/M000116.html +0 -18
  976. data/doc/classes/Dnsruby/Name/Label.src/M000117.html +0 -18
  977. data/doc/classes/Dnsruby/Name/Label.src/M000118.html +0 -18
  978. data/doc/classes/Dnsruby/Question.src/M000226.html +0 -47
  979. data/doc/classes/Dnsruby/Question.src/M000227.html +0 -18
  980. data/doc/classes/Dnsruby/Question.src/M000228.html +0 -18
  981. data/doc/classes/Dnsruby/Question.src/M000229.html +0 -32
  982. data/doc/classes/Dnsruby/Question.src/M000230.html +0 -18
  983. data/doc/classes/Dnsruby/RR.src/M000001.html +0 -18
  984. data/doc/classes/Dnsruby/RR.src/M000002.html +0 -22
  985. data/doc/classes/Dnsruby/RR.src/M000003.html +0 -18
  986. data/doc/classes/Dnsruby/RR.src/M000004.html +0 -18
  987. data/doc/classes/Dnsruby/RR.src/M000005.html +0 -26
  988. data/doc/classes/Dnsruby/RR.src/M000006.html +0 -18
  989. data/doc/classes/Dnsruby/RR.src/M000007.html +0 -36
  990. data/doc/classes/Dnsruby/RR.src/M000008.html +0 -100
  991. data/doc/classes/Dnsruby/RR.src/M000009.html +0 -18
  992. data/doc/classes/Dnsruby/RR.src/M000010.html +0 -18
  993. data/doc/classes/Dnsruby/RR.src/M000011.html +0 -22
  994. data/doc/classes/Dnsruby/RR.src/M000012.html +0 -29
  995. data/doc/classes/Dnsruby/RR.src/M000013.html +0 -24
  996. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000053.html +0 -45
  997. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000054.html +0 -21
  998. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000055.html +0 -24
  999. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000056.html +0 -32
  1000. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000057.html +0 -24
  1001. data/doc/classes/Dnsruby/RR/DS.src/M000039.html +0 -22
  1002. data/doc/classes/Dnsruby/RR/DS.src/M000040.html +0 -28
  1003. data/doc/classes/Dnsruby/RR/DS.src/M000041.html +0 -24
  1004. data/doc/classes/Dnsruby/RR/DS.src/M000042.html +0 -28
  1005. data/doc/classes/Dnsruby/RR/DS.src/M000043.html +0 -36
  1006. data/doc/classes/Dnsruby/RR/NSEC.src/M000035.html +0 -71
  1007. data/doc/classes/Dnsruby/RR/NSEC.src/M000036.html +0 -18
  1008. data/doc/classes/Dnsruby/RR/NSEC.src/M000037.html +0 -80
  1009. data/doc/classes/Dnsruby/RR/NSEC.src/M000038.html +0 -23
  1010. data/doc/classes/Dnsruby/RR/RRSIG.src/M000101.html +0 -46
  1011. data/doc/classes/Dnsruby/RR/RRSIG.src/M000102.html +0 -50
  1012. data/doc/classes/Dnsruby/RR/RRSIG.src/M000103.html +0 -27
  1013. data/doc/classes/Dnsruby/RR/TSIG.src/M000068.html +0 -24
  1014. data/doc/classes/Dnsruby/RR/TSIG.src/M000069.html +0 -32
  1015. data/doc/classes/Dnsruby/RR/TSIG.src/M000070.html +0 -54
  1016. data/doc/classes/Dnsruby/RR/TSIG.src/M000071.html +0 -121
  1017. data/doc/classes/Dnsruby/RR/TSIG.src/M000072.html +0 -33
  1018. data/doc/classes/Dnsruby/RR/TSIG.src/M000073.html +0 -25
  1019. data/doc/classes/Dnsruby/RR/TSIG.src/M000074.html +0 -36
  1020. data/doc/classes/Dnsruby/RR/TSIG.src/M000075.html +0 -22
  1021. data/doc/classes/Dnsruby/RR/TSIG.src/M000076.html +0 -29
  1022. data/doc/classes/Dnsruby/RRSet.src/M000215.html +0 -42
  1023. data/doc/classes/Dnsruby/RRSet.src/M000216.html +0 -18
  1024. data/doc/classes/Dnsruby/RRSet.src/M000217.html +0 -20
  1025. data/doc/classes/Dnsruby/RRSet.src/M000218.html +0 -18
  1026. data/doc/classes/Dnsruby/RRSet.src/M000219.html +0 -18
  1027. data/doc/classes/Dnsruby/RRSet.src/M000220.html +0 -18
  1028. data/doc/classes/Dnsruby/RRSet.src/M000221.html +0 -18
  1029. data/doc/classes/Dnsruby/RRSet.src/M000222.html +0 -22
  1030. data/doc/classes/Dnsruby/RRSet.src/M000223.html +0 -18
  1031. data/doc/classes/Dnsruby/RRSet.src/M000224.html +0 -22
  1032. data/doc/classes/Dnsruby/RRSet.src/M000225.html +0 -18
  1033. data/doc/classes/Dnsruby/Resolv.src/M000159.html +0 -18
  1034. data/doc/classes/Dnsruby/Resolv.src/M000160.html +0 -18
  1035. data/doc/classes/Dnsruby/Resolv.src/M000161.html +0 -18
  1036. data/doc/classes/Dnsruby/Resolv.src/M000162.html +0 -18
  1037. data/doc/classes/Dnsruby/Resolv.src/M000163.html +0 -18
  1038. data/doc/classes/Dnsruby/Resolv.src/M000164.html +0 -18
  1039. data/doc/classes/Dnsruby/Resolv.src/M000165.html +0 -18
  1040. data/doc/classes/Dnsruby/Resolv.src/M000166.html +0 -19
  1041. data/doc/classes/Dnsruby/Resolv.src/M000167.html +0 -20
  1042. data/doc/classes/Dnsruby/Resolv.src/M000168.html +0 -29
  1043. data/doc/classes/Dnsruby/Resolv.src/M000169.html +0 -19
  1044. data/doc/classes/Dnsruby/Resolv.src/M000170.html +0 -20
  1045. data/doc/classes/Dnsruby/Resolv.src/M000171.html +0 -25
  1046. data/doc/classes/Dnsruby/Resolver.src/M000271.html +0 -21
  1047. data/doc/classes/Dnsruby/Resolver.src/M000272.html +0 -27
  1048. data/doc/classes/Dnsruby/Resolver.src/M000273.html +0 -28
  1049. data/doc/classes/Dnsruby/Resolver.src/M000274.html +0 -18
  1050. data/doc/classes/Dnsruby/Resolver.src/M000275.html +0 -51
  1051. data/doc/classes/Dnsruby/Resolver.src/M000276.html +0 -21
  1052. data/doc/classes/Dnsruby/Resolver.src/M000277.html +0 -22
  1053. data/doc/classes/Dnsruby/Resolver.src/M000278.html +0 -18
  1054. data/doc/classes/Dnsruby/Resolver.src/M000279.html +0 -20
  1055. data/doc/classes/Dnsruby/Resolver.src/M000280.html +0 -19
  1056. data/doc/classes/Dnsruby/Resolver.src/M000281.html +0 -19
  1057. data/doc/classes/Dnsruby/Resolver.src/M000282.html +0 -19
  1058. data/doc/classes/Dnsruby/Resolver.src/M000283.html +0 -19
  1059. data/doc/classes/Dnsruby/Resolver.src/M000284.html +0 -19
  1060. data/doc/classes/Dnsruby/Resolver.src/M000285.html +0 -19
  1061. data/doc/classes/Dnsruby/Resolver.src/M000286.html +0 -19
  1062. data/doc/classes/Dnsruby/Resolver.src/M000287.html +0 -19
  1063. data/doc/classes/Dnsruby/Resolver.src/M000288.html +0 -19
  1064. data/doc/classes/Dnsruby/Resolver.src/M000289.html +0 -19
  1065. data/doc/classes/Dnsruby/Resolver.src/M000290.html +0 -19
  1066. data/doc/classes/Dnsruby/Resolver.src/M000291.html +0 -19
  1067. data/doc/classes/Dnsruby/Resolver.src/M000292.html +0 -26
  1068. data/doc/classes/Dnsruby/Resolver.src/M000293.html +0 -18
  1069. data/doc/classes/Dnsruby/Resolver.src/M000294.html +0 -23
  1070. data/doc/classes/Dnsruby/Resolver.src/M000295.html +0 -18
  1071. data/doc/classes/Dnsruby/SingleResolver.src/M000172.html +0 -18
  1072. data/doc/classes/Dnsruby/SingleResolver.src/M000173.html +0 -24
  1073. data/doc/classes/Dnsruby/SingleResolver.src/M000174.html +0 -36
  1074. data/doc/classes/Dnsruby/SingleResolver.src/M000175.html +0 -18
  1075. data/doc/classes/Dnsruby/SingleResolver.src/M000176.html +0 -19
  1076. data/doc/classes/Dnsruby/SingleResolver.src/M000177.html +0 -50
  1077. data/doc/classes/Dnsruby/SingleResolver.src/M000178.html +0 -19
  1078. data/doc/classes/Dnsruby/SingleResolver.src/M000179.html +0 -21
  1079. data/doc/classes/Dnsruby/SingleResolver.src/M000180.html +0 -25
  1080. data/doc/classes/Dnsruby/SingleResolver.src/M000181.html +0 -54
  1081. data/doc/classes/Dnsruby/SingleResolver.src/M000182.html +0 -27
  1082. data/doc/classes/Dnsruby/SingleResolver.src/M000183.html +0 -27
  1083. data/doc/classes/Dnsruby/SingleResolver.src/M000184.html +0 -35
  1084. data/doc/classes/Dnsruby/SingleResolver.src/M000185.html +0 -21
  1085. data/doc/classes/Dnsruby/TheLog.src/M000246.html +0 -20
  1086. data/doc/classes/Dnsruby/TheLog.src/M000247.html +0 -20
  1087. data/doc/classes/Dnsruby/TheLog.src/M000248.html +0 -20
  1088. data/doc/classes/Dnsruby/Update.src/M000254.html +0 -36
  1089. data/doc/classes/Dnsruby/Update.src/M000255.html +0 -32
  1090. data/doc/classes/Dnsruby/Update.src/M000257.html +0 -34
  1091. data/lib/Dnsruby/resource/DS.rb.new +0 -202
  1092. data/lib/Dnsruby/resource/DS.rb.orig +0 -162
  1093. data/test/tc_em_deferrable.rb +0 -38
  1094. data/test/tc_inet6.rb +0 -170
@@ -73,59 +73,155 @@ module Dnsruby
73
73
  class Dnssec
74
74
  # A class to cache trusted keys
75
75
  class KeyCache #:nodoc: all
76
- def initialize(keys=[])
77
- @keys = []
76
+ # Cache includes expiration time for keys
77
+ # Cache removes expired records
78
+ def initialize(keys = nil)
79
+ # Store key tag against [expiry, key]
80
+ @keys = {}
78
81
  add(keys)
79
82
  end
83
+ def add_key_with_expiration(k, expiration)
84
+ priv_add_key(k, expiration)
85
+ end
80
86
  def add(k)
81
87
  if (k == nil)
82
88
  return false
83
89
  elsif (k.instance_of?RRSet)
84
- k.rrs.each {|rr| @keys.push(rr)}
85
- elsif (k.kind_of?RR)
86
- @keys.push(k)
87
- elsif (k.kind_of?Array)
88
- k.each {|rr| @keys.push(rr)}
90
+ add_rrset(k)
91
+ elsif (k.kind_of?KeyCache)
92
+ kaes = k.keys_and_expirations
93
+ kaes.keys.each { |keykey|
94
+ # priv_add_key(keykey, kaes[keykey])
95
+ priv_add_key(keykey[1], keykey[0])
96
+ }
89
97
  else
90
- return false
98
+ raise ArgumentError.new("Expected an RRSet or KeyCache! Got #{k.class}")
91
99
  end
92
- remove_duplicate_keys
93
100
  return true
94
101
  end
95
- def remove_duplicate_keys
96
- # There must be a better way than this!!
97
- @keys.each_index do |index|
98
- key = @keys[index]
99
- (index+1..@keys.length-1).each do |pos|
100
- if (key == @keys[pos])
101
- @keys.delete_at(pos)
102
+
103
+ def add_rrset(k)
104
+ # Get expiration from the RRSIG
105
+ # There can be several RRSIGs here, one for each key which has signed the RRSet
106
+ # We want to choose the one with the most secure signing algorithm, key length,
107
+ # and the longest expiration time - not easy!
108
+ # for now, we simply accept all signed keys
109
+ k.sigs.each { |sig|
110
+ if (sig.type_covered = Types.DNSKEY)
111
+ if (sig.inception <= Time.now.to_i)
112
+ # Check sig.expiration, sig.algorithm
113
+ if (sig.expiration > Time.now.to_i)
114
+ # add the keys to the store
115
+ k.rrs.each {|rr| priv_add_key(rr, sig.expiration)}
116
+ end
102
117
  end
103
118
  end
119
+ }
120
+ end
121
+
122
+ def priv_add_key(k, exp)
123
+ # Check that the key does not already exist with a longer expiration!
124
+ if (@keys[k] == nil)
125
+ @keys[k.key_tag] = [exp,k]
126
+ elsif ((@keys[k])[0] < exp)
127
+ @keys[k.key_tag] = [exp,k]
104
128
  end
105
129
  end
130
+
106
131
  def each
107
- @keys.each {|key| yield key}
132
+ # Only offer currently-valid keys here
133
+ remove_expired_keys
134
+ @keys.values.each {|v| yield v[1]}
108
135
  end
109
136
  def keys
110
- return @keys
137
+ # Only offer currently-valid keys here
138
+ remove_expired_keys
139
+ ks = []
140
+ @keys.values.each {|a| ks.push(a[1])}
141
+ return ks
142
+ # return @keys.keys
143
+ end
144
+ def keys_and_expirations
145
+ remove_expired_keys
146
+ return keys()
147
+ end
148
+ def remove_expired_keys
149
+ @keys.delete_if {|k,v|
150
+ v[0] < Time.now.to_i
151
+ }
111
152
  end
112
- end
153
+ end
154
+
113
155
 
114
- # The set of keys which are trusted. These must be initialised with at least
156
+ class ValidationPolicy
157
+ # Note that any DLV registries which have been configured will only be tried
158
+ # after both the root and any local trust anchors (RFC 5074 section 5)
159
+
160
+ #* Always use the root and ignore local trust anchors.
161
+ ALWAYS_ROOT_ONLY = 1
162
+ #* Use the root if successful, otherwise try local anchors.
163
+ ROOT_THEN_LOCAL_ANCHORS = 2
164
+ #* Use local trust anchors if available, otherwise use root.
165
+ LOCAL_ANCHORS_THEN_ROOT = 3
166
+ #* Always use local trust anchors and ignore the root.
167
+ ALWAYS_LOCAL_ANCHORS_ONLY = 4
168
+ end
169
+ @@validation_policy = ValidationPolicy::LOCAL_ANCHORS_THEN_ROOT
170
+
171
+ def Dnssec.validation_policy=(p)
172
+ if ((p >= ALWAYS_ROOT_ONY) && (p <= ALWAYS_LOCAL_ANCHORS))
173
+ @@validation_policy = p
174
+ # @TODO@ Should we be clearing the trusted keys now?
175
+ end
176
+ end
177
+ def Dnssec.validation_policy
178
+ @@validation_policy
179
+ end
180
+
181
+ # The DNSKEY RRs for the signed root (when it exists)
182
+ @@root_anchors = KeyCache.new
183
+ # @TODO@ Add methods for interacting with root anchors
184
+
185
+ # The set of trust anchors.
186
+ # If the root is unsigned, then these must be initialised with at least
115
187
  # one trusted key by the client application, if verification is to be performed.
188
+ @@trust_anchors = KeyCache.new
189
+
190
+ @@dlv_registries = []
191
+
192
+ def Dnssec.add_trust_anchor(t)
193
+ self.add_trust_anchor_with_expiration(t, Time.utc(2035,"jan",1,20,15,1).to_i)
194
+ end
195
+ # Add the
196
+ def self.add_trust_anchor_with_expiration(k, expiration)
197
+ k.flags = k.flags | RR::IN::DNSKEY::SEP_KEY
198
+ @@trust_anchors.add_key_with_expiration(k, expiration)
199
+ end
200
+
201
+ def Dnssec.remove_trust_anchor(t)
202
+ @@trust_anchors.delete(t)
203
+ end
204
+ # Wipes the cache of trusted keys
205
+ def self.clear_trust_anchors
206
+ @@trust_anchors = KeyCache.new
207
+ end
208
+
209
+ def self.trust_anchors
210
+ return @@trust_anchors.keys
211
+ end
212
+
213
+
214
+ # The set of keys which are trusted.
116
215
  @@trusted_keys = KeyCache.new
117
216
 
118
217
  # The set of keys which have been indicated by a DS RRSet which has been
119
218
  # signed by a trusted key. Although we have not yet located these keys, we
120
219
  # have the details (tag and digest) which can identify the keys when we
121
220
  # see them. At that point, they will be added to our trusted keys.
221
+ # @TODO@ Should add TTL to this!
222
+ # @TODO@ Should we just use the (TBD) general cache for these?
122
223
  @@to_be_trusted_keys = []
123
224
 
124
- # def initialize
125
- # # @TODO@ Maybe write a recursive validating resolver?
126
- #
127
- # end
128
-
129
225
  # Check that the RRSet and RRSIG record are compatible
130
226
  def self.check_rr_data(rrset, sigrec)#:nodoc: all
131
227
  #Each RR MUST have the same owner name as the RRSIG RR;
@@ -151,20 +247,15 @@ module Dnsruby
151
247
  end
152
248
 
153
249
  # Now check that we are in the validity period for the RRSIG
154
- now = Time.now
250
+ now = Time.now.to_i
155
251
  if ((sigrec.expiration < now) || (sigrec.inception > now))
156
252
  raise VerifyError.new("Signature record not in validity period")
157
253
  end
158
254
  end
159
255
 
160
- # Add the specified key(s) to the trusted key cache.
161
- # k can be a DNSKEY, or an Array or RRSet of DNSKEYs.
256
+ # Add the specified keys to the trusted key cache.
257
+ # k can be a KeyCache, or an RRSet of DNSKEYs.
162
258
  def self.add_trusted_key(k)
163
- if (k.instance_of?RRSet)
164
- k.rrs.each {|key| add_trusted_key(key)}
165
- return
166
- end
167
- k.flags = k.flags | RR::IN::DNSKEY::SEP_KEY
168
259
  @@trusted_keys.add(k)
169
260
  end
170
261
 
@@ -174,12 +265,105 @@ module Dnsruby
174
265
  @@to_be_trusted_keys = []
175
266
  end
176
267
 
268
+ def self.trusted_keys
269
+ return @@trusted_keys.keys
270
+ end
271
+
272
+ def self.validate(msg)
273
+ query = Message.new()
274
+ query.header.cd=true
275
+ return self.validate_with_query(query, msg)
276
+ end
277
+
278
+ def self.validate_with_query(query, msg)
279
+ # SHOULD ALWAYS VERIFY DNSSEC-SIGNED RESPONSES?
280
+ # Yes - if a trust anchor is configured. Otherwise, act on CD bit (in query)
281
+ if (((@@validation_policy > ValidationPolicy::ALWAYS_ROOT_ONLY) && (self.trust_anchors().length > 0)) ||
282
+ # Check query here, and validate if CD is true
283
+ (query.header.cd == true))
284
+ # Validate!
285
+ # Remember we may have to update any expired trusted keys
286
+ validated = false
287
+ if (@@validation_policy == ValidationPolicy::ALWAYS_LOCAL_ANCHORS_ONLY)
288
+ validated = validate_with_achors(msg)
289
+ elsif (@@validation_policy == ValidationPolicy::ALWAYS_ROOT_ONLY)
290
+ validated = validate_with_root(msg)
291
+ elsif (@@validation_policy == ValidationPolicy::LOCAL_ANCHORS_THEN_ROOT)
292
+ validated = validate_with_anchors(msg)
293
+ if (!validated)
294
+ validated = validate_with_root(msg)
295
+ end
296
+ elsif (@@validation_policy == ValidationPolicy::ROOT_THEN_LOCAL_ANCHORS)
297
+ validated = validate_with_root(msg)
298
+ if (!validated)
299
+ validated = validate_with_anchors(msg)
300
+ end
301
+ end
302
+ if (!validated)
303
+ validated = validate_with_dlv(msg)
304
+ end
305
+ return validated
306
+ end
307
+ return true
308
+ end
309
+
310
+ # @TODO@ Need to be able to verify RRSet with a provided set of keys ONLY
311
+ # None of these keys should be added to the cache
312
+
313
+
314
+ # @TODO@ It sounds like we need to maintain several sets of trusted keys :
315
+ # : one for signed root, one for local anchors, and one from dlv
316
+ # Might it be simpler to write a GenericValidator, and then create three
317
+ # instances - one with root anchors, one with trust anchors, and one for dlv?
318
+ # @TODO@ Each validator should have its own cache!
319
+ def self.validate_with_anchors(msg)
320
+ # @TODO@ What do we do here?
321
+ # See if it is a child of any of our trust anchors.
322
+ # If it is, then see if we have a trusted key for it
323
+ # If we don't, then see if we can get to it from the closest
324
+ # trust anchor
325
+ return true
326
+ end
327
+
328
+ def self.validate_with_root(msg)
329
+ # @TODO@ What do we do here?
330
+ # See if we have a trusted key for it
331
+ # If we don't, then see if we can get to it from the closest trusted key
332
+ # If not, then see if we can get there from the root
333
+ return true
334
+ end
335
+
336
+ def self.validate_with_dlv(msg)
337
+ # @TODO@ Check
338
+ return true
339
+ end
340
+
177
341
  # Check that the key fits a signed DS record key details
178
342
  # If so, then add the key to the trusted keys
179
- def self.check_ds(key, ds)#:nodoc: all
180
- if (ds.check_key(key))
181
- @@trusted_keys.add(key)
343
+ def self.check_ds(key, ds_rrset)#:nodoc: all
344
+ expiration = 0
345
+ found = false
346
+ ds_rrset.sigs.each { |sig|
347
+ if (sig.type_covered = Types.DS)
348
+ if (sig.inception <= Time.now.to_i)
349
+ # Check sig.expiration, sig.algorithm
350
+ if (sig.expiration > expiration)
351
+ expiration = sig.expiration
352
+ end
353
+ end
354
+ end
355
+ }
356
+ if (expiration > 0)
357
+ ds_rrset.each { |ds|
358
+ if (ds.class == RR::IN::DS)
359
+ if (ds.check_key(key))
360
+ @@trusted_keys.add_key_with_expiration(key, expiration)
361
+ found = true
362
+ end
363
+ end
364
+ }
182
365
  end
366
+ return found
183
367
  end
184
368
 
185
369
  # Verify the specified message (or RRSet) using the set of trusted keys.
@@ -192,50 +376,48 @@ module Dnsruby
192
376
  # before the other RRSets are checked.
193
377
  #
194
378
  # msg can be a Dnsruby::Message or Dnsruby::RRSet.
195
- # keys may be nil, or a Dsnruby::RR::DNSKEY or an Array or RRSet of
196
- # Dnsruby::RR::DNSKEY
379
+ # keys may be nil, or a KeyCache or an RRSet of Dnsruby::RR::DNSKEY
197
380
  #
198
381
  # Returns true if the message verifies OK, and false otherwise.
199
- def self.verify(msg, keys = nil)
382
+ def self.verify(msg) # , keys = nil)
200
383
  if (msg.kind_of?RRSet)
201
- return verify_rrset(msg, keys)
384
+ return verify_rrset(msg) # , keys)
202
385
  end
203
386
  # Use the set of trusted keys to check any RRSets we can, ideally
204
387
  # those of other DNSKEY RRSets first. Then, see if we can use any of the
205
388
  # new total set of keys to check the rest of the rrsets.
206
389
  # Return true if we can verify the whole message.
207
390
 
208
- @@trusted_keys.add(keys)
209
-
210
391
  msg.each_section do |section|
211
392
  ds_rrset = section.rrset(Types.DS)
212
393
  if (ds_rrset && ds_rrset.num_sigs > 0)
213
394
  if (verify_rrset(ds_rrset))
214
- ds_rrset.rrs.each do |ds|
215
- # Work out which key this refers to, and add it to the trusted key store
216
- found = false
217
- msg.each_section do |section|
218
- section.rrset('DNSKEY').rrs.each do |rr|
219
- if (check_ds(rr, ds))
220
- found = true
221
- end
222
- end
223
- end
224
- @@trusted_keys.each {|key|
225
- if (check_ds(key, ds))
395
+ # Need to handle DS RRSets (with RRSIGs) not just DS records.
396
+ # ds_rrset.rrs.each do |ds|
397
+ # Work out which key this refers to, and add it to the trusted key store
398
+ found = false
399
+ msg.each_section do |section|
400
+ section.rrset('DNSKEY').rrs.each do |rr|
401
+ if (check_ds(rr, ds_rrset))
226
402
  found = true
227
403
  end
228
- }
229
- # If we couldn't find the trusted key, then we should store the
230
- # key tag and digest in a @@to_be_trusted_keys.
231
- # Each time we see a new key (which has been signed) then we should
232
- # check if it is sitting on the to_be_trusted_keys store.
233
- # If it is, then we should add it to the trusted_keys and remove the
234
- # DS from the to_be_trusted store
235
- if (!found)
236
- @@to_be_trusted_keys.push(ds)
237
404
  end
238
405
  end
406
+ (get_keys_to_check()).each {|key|
407
+ if (check_ds(key, ds_rrset))
408
+ found = true
409
+ end
410
+ }
411
+ # If we couldn't find the trusted key, then we should store the
412
+ # key tag and digest in a @@to_be_trusted_keys.
413
+ # Each time we see a new key (which has been signed) then we should
414
+ # check if it is sitting on the to_be_trusted_keys store.
415
+ # If it is, then we should add it to the trusted_keys and remove the
416
+ # DS from the to_be_trusted store
417
+ if (!found)
418
+ @@to_be_trusted_keys.push(ds_rrset)
419
+ end
420
+ # end
239
421
  else
240
422
  end
241
423
  end
@@ -243,27 +425,54 @@ module Dnsruby
243
425
  key_rrset = section.rrset(Types.DNSKEY)
244
426
  if (key_rrset && key_rrset.num_sigs > 0)
245
427
  if (verify_rrset(key_rrset))
246
- key_rrset.rrs.each do |rr|
247
- @@trusted_keys.add(rr)
248
- end
249
- else
250
- # See if the keys match any of the to_be_trusted_keys
251
- key_rrset.rrs.each do |key|
252
- @@to_be_trusted_keys.each do |tbtk|
253
- if (check_ds(key, tbtk))
254
- @@to_be_trusted_keys.delete(tbtk)
255
- end
256
- end
257
- end
428
+ # key_rrset.rrs.each do |rr|
429
+ @@trusted_keys.add(key_rrset) # rr)
258
430
  end
431
+ check_to_be_trusted(key_rrset)
259
432
  end
260
433
  end
261
434
 
262
435
  msg.section_rrsets.each do |section, rrsets|
263
436
  rrsets.each do |rrset|
264
- if (section == "additional" && rrset.num_sigs == 0)
437
+ # If delegation NS or glue AAAA/A, then don't expect RRSIG.
438
+ # Otherwise, expect RRSIG and fail verification if RRSIG is not present
439
+
440
+ # Check for delegation
441
+ dsrrset = msg.rrset('DS')
442
+ nsrrset = msg.authority.rrset('NS')
443
+ if ((msg.answer.size == 0) && (!dsrrset) && nsrrset) # && (nsrrset.length > 0))# (isDelegation)
444
+ # Now check NSEC(3) records for absence of DS and SOA
445
+ nsec = msg.authority.rrset('NSEC')
446
+ if (nsec.length == 0)
447
+ nsec = msg.authority.rrset('NSEC3')
448
+ end
449
+ if (nsec.rrs.length > 0)
450
+ if (!(nsec.rrs[0].types.include?'DS') || !(nsec.rrset.rrs[0].types.include?'SOA'))
451
+ next
452
+ end
453
+ end
454
+ end
455
+
456
+ # check for glue
457
+ # if the ownername (in the addtional section) of the glue address is the same or longer as the ownername of the NS record, it is glue
458
+ if (msg.additional.size > 0)
459
+ arec = msg.additional.rrset('A')
460
+ if (arec.rrs.length == 0)
461
+ arec = msg.additional.rrset('AAAA')
462
+ end
463
+ nsname = msg.rrset('NS').rrs()[0].name
464
+ if (arec.rrs().length > 0)
465
+ aname = arec.rrs()[0].name
466
+ if (nsname.subdomain_of?aname)
467
+ next
468
+ end
469
+ end
470
+ end
471
+ # If records are in additional, and no RRSIG, that's Ok - just don't use them!
472
+ if ((section == "additional") && (rrset.sigs.length == 0))
265
473
  next
266
474
  end
475
+ # else verify RRSet
267
476
  if (!verify_rrset(rrset))
268
477
  return false
269
478
  end
@@ -272,6 +481,39 @@ module Dnsruby
272
481
  return true
273
482
  end
274
483
 
484
+ def self.check_to_be_trusted(key_rrset)
485
+ # See if the keys match any of the to_be_trusted_keys
486
+ key_rrset.rrs.each do |key|
487
+ @@to_be_trusted_keys.each do |tbtk|
488
+ # @TODO@ Check that the RRSet is still valid!!
489
+ # Should we get it out of the main cache?
490
+ # if (check_ds(key, tbtk))
491
+ tbtk.rrs.each {|ds|
492
+ if (ds.check_key(key))
493
+ @@trusted_keys.add_key_with_expiration(key, tbtk.sigs()[0].expiration)
494
+ @@to_be_trusted_keys.delete(tbtk)
495
+ end
496
+ }
497
+ end
498
+ # end
499
+ end
500
+
501
+ end
502
+
503
+ def self.get_keys_to_check
504
+ keys_to_check = []
505
+ if (@@validation_policy == ValidationPolicy::ALWAYS_ROOT_ONLY)
506
+ keys_to_check = @@trusted_keys.keys
507
+ elsif (@@validation_policy == ValidationPolicy::ALWAYS_LOCAL_ANCHORS_ONLY)
508
+ keys_to_check = @@trust_anchors.keys
509
+ elsif (@@validation_policy == ValidationPolicy::LOCAL_ANCHORS_THEN_ROOT)
510
+ keys_to_check = @@trust_anchors.keys + @@trusted_keys.keys
511
+ elsif (@@validation_policy == ValidationPolicy::ROOT_THEN_LOCAL_ANCHORS)
512
+ keys_to_check = @@trusted_keys.keys + @@trust_anchors.keys
513
+ end
514
+ return keys_to_check
515
+ end
516
+
275
517
  # Find the first matching DNSKEY and RRSIG record in the two sets.
276
518
  def self.get_matching_key(keys, sigrecs)#:nodoc: all
277
519
  if ((keys == nil) || (sigrecs == nil))
@@ -287,48 +529,61 @@ module Dnsruby
287
529
  return nil, nil
288
530
  end
289
531
 
290
- # Verify the signature of an rrset encoded with the specified dnskey record
291
- # or the set of trusted keys.
532
+ # Verify the signature of an rrset encoded with the specified KeyCache
533
+ # or RRSet. If no signature is included, false is returned.
292
534
  #
293
535
  # Returns true if the RRSet verified, false otherwise.
294
536
  def self.verify_rrset(rrset, keys = nil)
295
- # @TODO@ Finer-grained reporting than "false".
537
+ # @TODO@ Finer-grained reporting than "false".
296
538
  sigrecs = rrset.sigs
297
- # print "\n\n NO RRSIGS!!!\n\n" if (rrset.num_sigs == 0)
298
- return true if (rrset.num_sigs == 0)
539
+ # return false if (rrset.num_sigs == 0)
540
+ if (rrset.num_sigs == 0)
541
+ raise VerifyError.new("No signatures in the RRSet")
542
+ end
299
543
  sigrecs.each do |sigrec|
300
544
  check_rr_data(rrset, sigrec)
301
545
  end
302
546
 
303
547
  keyrec = nil
304
548
  sigrec = nil
305
- keyrec, sigrec = get_matching_key(@@trusted_keys, sigrecs)
306
- if (keyrec == nil)
307
- keyrec, sigrec = get_matching_key(keys, sigrecs)
549
+ if keys.nil?
550
+ if (rrset.rrs()[0].type == Types.DNSKEY)
551
+ check_to_be_trusted(rrset)
552
+ end
553
+ keyrec, sigrec = get_matching_key(get_keys_to_check, sigrecs)
554
+ else
555
+ keyrec, sigrec = get_matching_key(keys, sigrecs)
308
556
  end
309
557
 
310
- return false if !keyrec
558
+ # return false if !keyrec
559
+ if (!keyrec)
560
+ raise VerifyError.new("Signing key not found")
561
+ end
311
562
 
312
563
  # RFC 4034
313
564
  #3.1.8.1. Signature Calculation
314
565
 
315
566
  if (keyrec.sep_key? && !keyrec.zone_key?)
316
567
  Dnsruby.log.error("DNSKEY with with SEP flag set and Zone Key flag not set was used to verify RRSIG over RRSET - this is not allowed by RFC4034 section 2.1.1")
317
- return false
568
+ # return false
569
+ raise VerifyError.new("DNSKEY with SEP flag set and Zone Key flag not set")
318
570
  end
319
-
571
+
320
572
  #Any DNS names in the RDATA field of each RR MUST be in
321
573
  #canonical form; and
322
574
  #The RRset MUST be sorted in canonical order.
323
575
  rrset = rrset.sort_canonical
324
576
 
325
- sig_data =sigrec.sig_data
577
+ sig_data = sigrec.sig_data
326
578
 
327
579
  #RR(i) = owner | type | class | TTL | RDATA length | RDATA
328
580
  rrset.each do |rec|
581
+ old_ttl = rec.ttl
582
+ rec.ttl = sigrec.original_ttl
329
583
  data = MessageEncoder.new { |msg|
330
584
  msg.put_rr(rec, true)
331
585
  }.to_s # @TODO@ worry about wildcards here?
586
+ rec.ttl = old_ttl
332
587
  if (RUBY_VERSION >= "1.9")
333
588
  data.force_encoding("ASCII-8BIT")
334
589
  end
@@ -339,21 +594,21 @@ module Dnsruby
339
594
  verified = false
340
595
  if (sigrec.algorithm == Algorithms.RSASHA1)
341
596
  verified = keyrec.public_key.verify(OpenSSL::Digest::SHA1.new, sigrec.signature, sig_data)
342
- elsif (sigrec.algorithm == HMAC_SHA256)
597
+ elsif (sigrec.algorithm == Algorithms.RSASHA256)
343
598
  verified = keyrec.public_key.verify(OpenSSL::Digest::SHA256.new, sigrec.signature, sig_data)
344
599
  else
345
600
  raise RuntimeError.new("Algorithm #{sigrec.algorithm.code} unsupported by Dnsruby")
346
601
  end
347
602
 
348
- if (verified)
349
- # Sort out the TTLs - set it to the minimum valid ttl
350
- expiration_diff = (sigrec.expiration.to_i - Time.now.to_i).abs
351
- rrset.ttl = ([rrset.ttl, sigrec.ttl, sigrec.original_ttl,
352
- expiration_diff].sort)[0]
353
-
354
- return true
603
+ if (!verified)
604
+ raise VerifyError.new("Signature failed to cryptographically verify")
355
605
  end
356
- return false
606
+ # Sort out the TTLs - set it to the minimum valid ttl
607
+ expiration_diff = (sigrec.expiration.to_i - Time.now.to_i).abs
608
+ rrset.ttl = ([rrset.ttl, sigrec.ttl, sigrec.original_ttl,
609
+ expiration_diff].sort)[0]
610
+
611
+ return true
357
612
  end
358
613
 
359
614
  end