dnsruby 1.1

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 (520) hide show
  1. data/EVENTMACHINE +64 -0
  2. data/README +63 -0
  3. data/doc/classes/Dnsruby.html +463 -0
  4. data/doc/classes/Dnsruby/Algorithms.html +171 -0
  5. data/doc/classes/Dnsruby/Classes.html +197 -0
  6. data/doc/classes/Dnsruby/Classes.src/M000209.html +23 -0
  7. data/doc/classes/Dnsruby/Classes.src/M000210.html +19 -0
  8. data/doc/classes/Dnsruby/CodeMapper.html +375 -0
  9. data/doc/classes/Dnsruby/CodeMapper.src/M000186.html +18 -0
  10. data/doc/classes/Dnsruby/CodeMapper.src/M000187.html +33 -0
  11. data/doc/classes/Dnsruby/CodeMapper.src/M000188.html +21 -0
  12. data/doc/classes/Dnsruby/CodeMapper.src/M000189.html +19 -0
  13. data/doc/classes/Dnsruby/CodeMapper.src/M000190.html +19 -0
  14. data/doc/classes/Dnsruby/CodeMapper.src/M000191.html +18 -0
  15. data/doc/classes/Dnsruby/CodeMapper.src/M000192.html +22 -0
  16. data/doc/classes/Dnsruby/CodeMapper.src/M000193.html +22 -0
  17. data/doc/classes/Dnsruby/CodeMapper.src/M000194.html +22 -0
  18. data/doc/classes/Dnsruby/CodeMapper.src/M000195.html +31 -0
  19. data/doc/classes/Dnsruby/CodeMapper.src/M000196.html +19 -0
  20. data/doc/classes/Dnsruby/Config.html +413 -0
  21. data/doc/classes/Dnsruby/Config.src/M000148.html +18 -0
  22. data/doc/classes/Dnsruby/Config.src/M000149.html +19 -0
  23. data/doc/classes/Dnsruby/Config.src/M000150.html +19 -0
  24. data/doc/classes/Dnsruby/Config.src/M000151.html +25 -0
  25. data/doc/classes/Dnsruby/Config.src/M000152.html +21 -0
  26. data/doc/classes/Dnsruby/Config.src/M000153.html +38 -0
  27. data/doc/classes/Dnsruby/Config.src/M000154.html +26 -0
  28. data/doc/classes/Dnsruby/Config.src/M000155.html +22 -0
  29. data/doc/classes/Dnsruby/Config.src/M000156.html +27 -0
  30. data/doc/classes/Dnsruby/Config.src/M000157.html +22 -0
  31. data/doc/classes/Dnsruby/Config.src/M000158.html +21 -0
  32. data/doc/classes/Dnsruby/DNS.html +571 -0
  33. data/doc/classes/Dnsruby/DNS.src/M000258.html +24 -0
  34. data/doc/classes/Dnsruby/DNS.src/M000259.html +18 -0
  35. data/doc/classes/Dnsruby/DNS.src/M000260.html +18 -0
  36. data/doc/classes/Dnsruby/DNS.src/M000261.html +20 -0
  37. data/doc/classes/Dnsruby/DNS.src/M000262.html +19 -0
  38. data/doc/classes/Dnsruby/DNS.src/M000263.html +20 -0
  39. data/doc/classes/Dnsruby/DNS.src/M000264.html +18 -0
  40. data/doc/classes/Dnsruby/DNS.src/M000265.html +19 -0
  41. data/doc/classes/Dnsruby/DNS.src/M000266.html +20 -0
  42. data/doc/classes/Dnsruby/DNS.src/M000267.html +28 -0
  43. data/doc/classes/Dnsruby/DNS.src/M000268.html +19 -0
  44. data/doc/classes/Dnsruby/DNS.src/M000269.html +20 -0
  45. data/doc/classes/Dnsruby/DNS.src/M000270.html +31 -0
  46. data/doc/classes/Dnsruby/DecodeError.html +120 -0
  47. data/doc/classes/Dnsruby/Dnssec.html +287 -0
  48. data/doc/classes/Dnsruby/Dnssec.src/M000249.html +23 -0
  49. data/doc/classes/Dnsruby/Dnssec.src/M000250.html +19 -0
  50. data/doc/classes/Dnsruby/Dnssec.src/M000251.html +90 -0
  51. data/doc/classes/Dnsruby/Dnssec.src/M000252.html +76 -0
  52. data/doc/classes/Dnsruby/EncodeError.html +120 -0
  53. data/doc/classes/Dnsruby/FormErr.html +119 -0
  54. data/doc/classes/Dnsruby/Header.html +501 -0
  55. data/doc/classes/Dnsruby/Header.src/M000231.html +35 -0
  56. data/doc/classes/Dnsruby/Header.src/M000232.html +18 -0
  57. data/doc/classes/Dnsruby/Header.src/M000233.html +18 -0
  58. data/doc/classes/Dnsruby/Header.src/M000234.html +21 -0
  59. data/doc/classes/Dnsruby/Header.src/M000235.html +20 -0
  60. data/doc/classes/Dnsruby/Header.src/M000236.html +32 -0
  61. data/doc/classes/Dnsruby/Header.src/M000237.html +27 -0
  62. data/doc/classes/Dnsruby/Header.src/M000238.html +26 -0
  63. data/doc/classes/Dnsruby/Header.src/M000239.html +47 -0
  64. data/doc/classes/Dnsruby/Header.src/M000240.html +28 -0
  65. data/doc/classes/Dnsruby/Header.src/M000241.html +30 -0
  66. data/doc/classes/Dnsruby/Hosts.html +316 -0
  67. data/doc/classes/Dnsruby/Hosts.src/M000197.html +20 -0
  68. data/doc/classes/Dnsruby/Hosts.src/M000198.html +19 -0
  69. data/doc/classes/Dnsruby/Hosts.src/M000199.html +20 -0
  70. data/doc/classes/Dnsruby/Hosts.src/M000200.html +21 -0
  71. data/doc/classes/Dnsruby/Hosts.src/M000201.html +19 -0
  72. data/doc/classes/Dnsruby/Hosts.src/M000202.html +20 -0
  73. data/doc/classes/Dnsruby/Hosts.src/M000203.html +21 -0
  74. data/doc/classes/Dnsruby/IPv4.html +233 -0
  75. data/doc/classes/Dnsruby/IPv4.src/M000204.html +32 -0
  76. data/doc/classes/Dnsruby/IPv4.src/M000205.html +19 -0
  77. data/doc/classes/Dnsruby/IPv4.src/M000206.html +18 -0
  78. data/doc/classes/Dnsruby/IPv4.src/M000207.html +18 -0
  79. data/doc/classes/Dnsruby/IPv4.src/M000208.html +18 -0
  80. data/doc/classes/Dnsruby/IPv6.html +281 -0
  81. data/doc/classes/Dnsruby/IPv6.src/M000242.html +60 -0
  82. data/doc/classes/Dnsruby/IPv6.src/M000243.html +22 -0
  83. data/doc/classes/Dnsruby/IPv6.src/M000244.html +20 -0
  84. data/doc/classes/Dnsruby/IPv6.src/M000245.html +18 -0
  85. data/doc/classes/Dnsruby/Message.html +803 -0
  86. data/doc/classes/Dnsruby/Message.src/M000119.html +38 -0
  87. data/doc/classes/Dnsruby/Message.src/M000120.html +26 -0
  88. data/doc/classes/Dnsruby/Message.src/M000121.html +22 -0
  89. data/doc/classes/Dnsruby/Message.src/M000122.html +22 -0
  90. data/doc/classes/Dnsruby/Message.src/M000123.html +20 -0
  91. data/doc/classes/Dnsruby/Message.src/M000124.html +20 -0
  92. data/doc/classes/Dnsruby/Message.src/M000125.html +20 -0
  93. data/doc/classes/Dnsruby/Message.src/M000126.html +20 -0
  94. data/doc/classes/Dnsruby/Message.src/M000127.html +18 -0
  95. data/doc/classes/Dnsruby/Message.src/M000128.html +20 -0
  96. data/doc/classes/Dnsruby/Message.src/M000129.html +23 -0
  97. data/doc/classes/Dnsruby/Message.src/M000130.html +30 -0
  98. data/doc/classes/Dnsruby/Message.src/M000131.html +20 -0
  99. data/doc/classes/Dnsruby/Message.src/M000132.html +18 -0
  100. data/doc/classes/Dnsruby/Message.src/M000133.html +56 -0
  101. data/doc/classes/Dnsruby/Message.src/M000134.html +35 -0
  102. data/doc/classes/Dnsruby/Message.src/M000135.html +46 -0
  103. data/doc/classes/Dnsruby/Message/Section.html +160 -0
  104. data/doc/classes/Dnsruby/Message/Section.src/M000141.html +29 -0
  105. data/doc/classes/Dnsruby/Message/Section.src/M000142.html +30 -0
  106. data/doc/classes/Dnsruby/MetaTypes.html +136 -0
  107. data/doc/classes/Dnsruby/Modes.html +171 -0
  108. data/doc/classes/Dnsruby/NXDomain.html +119 -0
  109. data/doc/classes/Dnsruby/Name.html +330 -0
  110. data/doc/classes/Dnsruby/Name.src/M000104.html +28 -0
  111. data/doc/classes/Dnsruby/Name.src/M000105.html +20 -0
  112. data/doc/classes/Dnsruby/Name.src/M000106.html +18 -0
  113. data/doc/classes/Dnsruby/Name.src/M000107.html +21 -0
  114. data/doc/classes/Dnsruby/Name.src/M000108.html +22 -0
  115. data/doc/classes/Dnsruby/Name.src/M000109.html +18 -0
  116. data/doc/classes/Dnsruby/Name/Label.html +300 -0
  117. data/doc/classes/Dnsruby/Name/Label.src/M000110.html +21 -0
  118. data/doc/classes/Dnsruby/Name/Label.src/M000111.html +18 -0
  119. data/doc/classes/Dnsruby/Name/Label.src/M000112.html +22 -0
  120. data/doc/classes/Dnsruby/Name/Label.src/M000113.html +18 -0
  121. data/doc/classes/Dnsruby/Name/Label.src/M000114.html +18 -0
  122. data/doc/classes/Dnsruby/Name/Label.src/M000115.html +18 -0
  123. data/doc/classes/Dnsruby/Name/Label.src/M000116.html +18 -0
  124. data/doc/classes/Dnsruby/Name/Label.src/M000117.html +18 -0
  125. data/doc/classes/Dnsruby/Name/Label.src/M000118.html +18 -0
  126. data/doc/classes/Dnsruby/NotImp.html +119 -0
  127. data/doc/classes/Dnsruby/OpCode.html +146 -0
  128. data/doc/classes/Dnsruby/OtherResolvError.html +119 -0
  129. data/doc/classes/Dnsruby/QTypes.html +146 -0
  130. data/doc/classes/Dnsruby/Question.html +301 -0
  131. data/doc/classes/Dnsruby/Question.src/M000226.html +47 -0
  132. data/doc/classes/Dnsruby/Question.src/M000227.html +18 -0
  133. data/doc/classes/Dnsruby/Question.src/M000228.html +18 -0
  134. data/doc/classes/Dnsruby/Question.src/M000229.html +32 -0
  135. data/doc/classes/Dnsruby/Question.src/M000230.html +18 -0
  136. data/doc/classes/Dnsruby/RCode.html +211 -0
  137. data/doc/classes/Dnsruby/RR.html +648 -0
  138. data/doc/classes/Dnsruby/RR.src/M000001.html +18 -0
  139. data/doc/classes/Dnsruby/RR.src/M000002.html +22 -0
  140. data/doc/classes/Dnsruby/RR.src/M000003.html +18 -0
  141. data/doc/classes/Dnsruby/RR.src/M000004.html +18 -0
  142. data/doc/classes/Dnsruby/RR.src/M000005.html +26 -0
  143. data/doc/classes/Dnsruby/RR.src/M000006.html +18 -0
  144. data/doc/classes/Dnsruby/RR.src/M000007.html +36 -0
  145. data/doc/classes/Dnsruby/RR.src/M000008.html +100 -0
  146. data/doc/classes/Dnsruby/RR.src/M000009.html +18 -0
  147. data/doc/classes/Dnsruby/RR.src/M000010.html +18 -0
  148. data/doc/classes/Dnsruby/RR.src/M000011.html +22 -0
  149. data/doc/classes/Dnsruby/RR.src/M000012.html +29 -0
  150. data/doc/classes/Dnsruby/RR.src/M000013.html +24 -0
  151. data/doc/classes/Dnsruby/RR/ANY.html +133 -0
  152. data/doc/classes/Dnsruby/RR/CERT.html +180 -0
  153. data/doc/classes/Dnsruby/RR/CERT/CertificateTypes.html +169 -0
  154. data/doc/classes/Dnsruby/RR/CNAME.html +151 -0
  155. data/doc/classes/Dnsruby/RR/DNAME.html +150 -0
  156. data/doc/classes/Dnsruby/RR/DNSKEY.html +422 -0
  157. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000044.html +20 -0
  158. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000045.html +21 -0
  159. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000046.html +28 -0
  160. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000047.html +22 -0
  161. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000048.html +18 -0
  162. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000049.html +22 -0
  163. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000050.html +18 -0
  164. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000051.html +26 -0
  165. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000052.html +38 -0
  166. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000053.html +45 -0
  167. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000054.html +21 -0
  168. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000055.html +24 -0
  169. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000056.html +32 -0
  170. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000057.html +24 -0
  171. data/doc/classes/Dnsruby/RR/DS.html +286 -0
  172. data/doc/classes/Dnsruby/RR/DS.src/M000039.html +22 -0
  173. data/doc/classes/Dnsruby/RR/DS.src/M000040.html +28 -0
  174. data/doc/classes/Dnsruby/RR/DS.src/M000041.html +24 -0
  175. data/doc/classes/Dnsruby/RR/DS.src/M000042.html +28 -0
  176. data/doc/classes/Dnsruby/RR/DS.src/M000043.html +36 -0
  177. data/doc/classes/Dnsruby/RR/DomainName.html +175 -0
  178. data/doc/classes/Dnsruby/RR/DomainName.src/M000083.html +18 -0
  179. data/doc/classes/Dnsruby/RR/Generic.html +133 -0
  180. data/doc/classes/Dnsruby/RR/HINFO.html +155 -0
  181. data/doc/classes/Dnsruby/RR/IN.html +155 -0
  182. data/doc/classes/Dnsruby/RR/IN/A.html +200 -0
  183. data/doc/classes/Dnsruby/RR/IN/A.src/M000017.html +18 -0
  184. data/doc/classes/Dnsruby/RR/IN/A.src/M000018.html +18 -0
  185. data/doc/classes/Dnsruby/RR/IN/A.src/M000019.html +18 -0
  186. data/doc/classes/Dnsruby/RR/IN/AAAA.html +139 -0
  187. data/doc/classes/Dnsruby/RR/IN/AFSDB.html +145 -0
  188. data/doc/classes/Dnsruby/RR/IN/PX.html +143 -0
  189. data/doc/classes/Dnsruby/RR/IN/SRV.html +238 -0
  190. data/doc/classes/Dnsruby/RR/IN/SRV.src/M000014.html +29 -0
  191. data/doc/classes/Dnsruby/RR/IN/SRV.src/M000015.html +26 -0
  192. data/doc/classes/Dnsruby/RR/IN/SRV.src/M000016.html +22 -0
  193. data/doc/classes/Dnsruby/RR/IN/WKS.html +166 -0
  194. data/doc/classes/Dnsruby/RR/IN/WKS.src/M000020.html +20 -0
  195. data/doc/classes/Dnsruby/RR/ISDN.html +155 -0
  196. data/doc/classes/Dnsruby/RR/LOC.html +395 -0
  197. data/doc/classes/Dnsruby/RR/LOC.src/M000025.html +32 -0
  198. data/doc/classes/Dnsruby/RR/LOC.src/M000026.html +23 -0
  199. data/doc/classes/Dnsruby/RR/LOC.src/M000027.html +25 -0
  200. data/doc/classes/Dnsruby/RR/LOC.src/M000028.html +21 -0
  201. data/doc/classes/Dnsruby/RR/LOC.src/M000029.html +20 -0
  202. data/doc/classes/Dnsruby/RR/LOC.src/M000030.html +23 -0
  203. data/doc/classes/Dnsruby/RR/MB.html +150 -0
  204. data/doc/classes/Dnsruby/RR/MG.html +150 -0
  205. data/doc/classes/Dnsruby/RR/MINFO.html +156 -0
  206. data/doc/classes/Dnsruby/RR/MR.html +150 -0
  207. data/doc/classes/Dnsruby/RR/MX.html +155 -0
  208. data/doc/classes/Dnsruby/RR/NAPTR.html +190 -0
  209. data/doc/classes/Dnsruby/RR/NS.html +151 -0
  210. data/doc/classes/Dnsruby/RR/NSAP.html +293 -0
  211. data/doc/classes/Dnsruby/RR/NSAP.src/M000093.html +19 -0
  212. data/doc/classes/Dnsruby/RR/NSAP.src/M000094.html +19 -0
  213. data/doc/classes/Dnsruby/RR/NSAP.src/M000095.html +22 -0
  214. data/doc/classes/Dnsruby/RR/NSAP.src/M000096.html +31 -0
  215. data/doc/classes/Dnsruby/RR/NSEC.html +301 -0
  216. data/doc/classes/Dnsruby/RR/NSEC.src/M000031.html +19 -0
  217. data/doc/classes/Dnsruby/RR/NSEC.src/M000032.html +18 -0
  218. data/doc/classes/Dnsruby/RR/NSEC.src/M000033.html +34 -0
  219. data/doc/classes/Dnsruby/RR/NSEC.src/M000034.html +18 -0
  220. data/doc/classes/Dnsruby/RR/NSEC.src/M000035.html +71 -0
  221. data/doc/classes/Dnsruby/RR/NSEC.src/M000036.html +18 -0
  222. data/doc/classes/Dnsruby/RR/NSEC.src/M000037.html +80 -0
  223. data/doc/classes/Dnsruby/RR/NSEC.src/M000038.html +23 -0
  224. data/doc/classes/Dnsruby/RR/NSEC3.html +366 -0
  225. data/doc/classes/Dnsruby/RR/NSEC3.src/M000085.html +28 -0
  226. data/doc/classes/Dnsruby/RR/NSEC3.src/M000086.html +18 -0
  227. data/doc/classes/Dnsruby/RR/NSEC3.src/M000087.html +18 -0
  228. data/doc/classes/Dnsruby/RR/NSEC3.src/M000088.html +22 -0
  229. data/doc/classes/Dnsruby/RR/NSEC3.src/M000089.html +18 -0
  230. data/doc/classes/Dnsruby/RR/NSEC3.src/M000090.html +21 -0
  231. data/doc/classes/Dnsruby/RR/NSEC3.src/M000091.html +21 -0
  232. data/doc/classes/Dnsruby/RR/NSEC3.src/M000092.html +29 -0
  233. data/doc/classes/Dnsruby/RR/NSEC3PARAM.html +279 -0
  234. data/doc/classes/Dnsruby/RR/NSEC3PARAM.src/M000077.html +28 -0
  235. data/doc/classes/Dnsruby/RR/NSEC3PARAM.src/M000078.html +18 -0
  236. data/doc/classes/Dnsruby/RR/NSEC3PARAM.src/M000079.html +22 -0
  237. data/doc/classes/Dnsruby/RR/NSEC3PARAM.src/M000080.html +21 -0
  238. data/doc/classes/Dnsruby/RR/NSEC3PARAM.src/M000081.html +25 -0
  239. data/doc/classes/Dnsruby/RR/PTR.html +132 -0
  240. data/doc/classes/Dnsruby/RR/RP.html +183 -0
  241. data/doc/classes/Dnsruby/RR/RP.src/M000082.html +19 -0
  242. data/doc/classes/Dnsruby/RR/RRSIG.html +357 -0
  243. data/doc/classes/Dnsruby/RR/RRSIG.src/M000097.html +26 -0
  244. data/doc/classes/Dnsruby/RR/RRSIG.src/M000098.html +28 -0
  245. data/doc/classes/Dnsruby/RR/RRSIG.src/M000099.html +23 -0
  246. data/doc/classes/Dnsruby/RR/RRSIG.src/M000100.html +23 -0
  247. data/doc/classes/Dnsruby/RR/RRSIG.src/M000101.html +46 -0
  248. data/doc/classes/Dnsruby/RR/RRSIG.src/M000102.html +50 -0
  249. data/doc/classes/Dnsruby/RR/RRSIG.src/M000103.html +27 -0
  250. data/doc/classes/Dnsruby/RR/RT.html +155 -0
  251. data/doc/classes/Dnsruby/RR/SOA.html +233 -0
  252. data/doc/classes/Dnsruby/RR/SOA.src/M000066.html +24 -0
  253. data/doc/classes/Dnsruby/RR/SOA.src/M000067.html +27 -0
  254. data/doc/classes/Dnsruby/RR/SPF.html +138 -0
  255. data/doc/classes/Dnsruby/RR/TKEY.html +313 -0
  256. data/doc/classes/Dnsruby/RR/TKEY.src/M000021.html +19 -0
  257. data/doc/classes/Dnsruby/RR/TKEY.src/M000022.html +29 -0
  258. data/doc/classes/Dnsruby/RR/TKEY.src/M000023.html +21 -0
  259. data/doc/classes/Dnsruby/RR/TKEY.src/M000024.html +29 -0
  260. data/doc/classes/Dnsruby/RR/TSIG.html +524 -0
  261. data/doc/classes/Dnsruby/RR/TSIG.src/M000068.html +24 -0
  262. data/doc/classes/Dnsruby/RR/TSIG.src/M000069.html +32 -0
  263. data/doc/classes/Dnsruby/RR/TSIG.src/M000070.html +54 -0
  264. data/doc/classes/Dnsruby/RR/TSIG.src/M000071.html +121 -0
  265. data/doc/classes/Dnsruby/RR/TSIG.src/M000072.html +33 -0
  266. data/doc/classes/Dnsruby/RR/TSIG.src/M000073.html +25 -0
  267. data/doc/classes/Dnsruby/RR/TSIG.src/M000074.html +36 -0
  268. data/doc/classes/Dnsruby/RR/TSIG.src/M000075.html +22 -0
  269. data/doc/classes/Dnsruby/RR/TSIG.src/M000076.html +29 -0
  270. data/doc/classes/Dnsruby/RR/TXT.html +233 -0
  271. data/doc/classes/Dnsruby/RR/TXT.src/M000061.html +18 -0
  272. data/doc/classes/Dnsruby/RR/TXT.src/M000062.html +18 -0
  273. data/doc/classes/Dnsruby/RR/TXT.src/M000063.html +20 -0
  274. data/doc/classes/Dnsruby/RR/TXT.src/M000064.html +27 -0
  275. data/doc/classes/Dnsruby/RR/TXT.src/M000065.html +25 -0
  276. data/doc/classes/Dnsruby/RR/X25.html +203 -0
  277. data/doc/classes/Dnsruby/RR/X25.src/M000058.html +18 -0
  278. data/doc/classes/Dnsruby/RR/X25.src/M000059.html +18 -0
  279. data/doc/classes/Dnsruby/RR/X25.src/M000060.html +22 -0
  280. data/doc/classes/Dnsruby/RRSet.html +404 -0
  281. data/doc/classes/Dnsruby/RRSet.src/M000211.html +23 -0
  282. data/doc/classes/Dnsruby/RRSet.src/M000212.html +18 -0
  283. data/doc/classes/Dnsruby/RRSet.src/M000213.html +18 -0
  284. data/doc/classes/Dnsruby/RRSet.src/M000214.html +47 -0
  285. data/doc/classes/Dnsruby/RRSet.src/M000215.html +42 -0
  286. data/doc/classes/Dnsruby/RRSet.src/M000216.html +18 -0
  287. data/doc/classes/Dnsruby/RRSet.src/M000217.html +20 -0
  288. data/doc/classes/Dnsruby/RRSet.src/M000218.html +18 -0
  289. data/doc/classes/Dnsruby/RRSet.src/M000219.html +18 -0
  290. data/doc/classes/Dnsruby/RRSet.src/M000220.html +18 -0
  291. data/doc/classes/Dnsruby/RRSet.src/M000221.html +18 -0
  292. data/doc/classes/Dnsruby/RRSet.src/M000222.html +22 -0
  293. data/doc/classes/Dnsruby/RRSet.src/M000223.html +18 -0
  294. data/doc/classes/Dnsruby/RRSet.src/M000224.html +22 -0
  295. data/doc/classes/Dnsruby/RRSet.src/M000225.html +18 -0
  296. data/doc/classes/Dnsruby/Refused.html +119 -0
  297. data/doc/classes/Dnsruby/Resolv.html +401 -0
  298. data/doc/classes/Dnsruby/Resolv.src/M000159.html +18 -0
  299. data/doc/classes/Dnsruby/Resolv.src/M000160.html +18 -0
  300. data/doc/classes/Dnsruby/Resolv.src/M000161.html +18 -0
  301. data/doc/classes/Dnsruby/Resolv.src/M000162.html +18 -0
  302. data/doc/classes/Dnsruby/Resolv.src/M000163.html +18 -0
  303. data/doc/classes/Dnsruby/Resolv.src/M000164.html +18 -0
  304. data/doc/classes/Dnsruby/Resolv.src/M000165.html +18 -0
  305. data/doc/classes/Dnsruby/Resolv.src/M000166.html +19 -0
  306. data/doc/classes/Dnsruby/Resolv.src/M000167.html +20 -0
  307. data/doc/classes/Dnsruby/Resolv.src/M000168.html +29 -0
  308. data/doc/classes/Dnsruby/Resolv.src/M000169.html +19 -0
  309. data/doc/classes/Dnsruby/Resolv.src/M000170.html +20 -0
  310. data/doc/classes/Dnsruby/Resolv.src/M000171.html +25 -0
  311. data/doc/classes/Dnsruby/ResolvError.html +117 -0
  312. data/doc/classes/Dnsruby/ResolvTimeout.html +117 -0
  313. data/doc/classes/Dnsruby/Resolver.html +1055 -0
  314. data/doc/classes/Dnsruby/Resolver.src/M000271.html +21 -0
  315. data/doc/classes/Dnsruby/Resolver.src/M000272.html +27 -0
  316. data/doc/classes/Dnsruby/Resolver.src/M000273.html +28 -0
  317. data/doc/classes/Dnsruby/Resolver.src/M000274.html +18 -0
  318. data/doc/classes/Dnsruby/Resolver.src/M000275.html +51 -0
  319. data/doc/classes/Dnsruby/Resolver.src/M000276.html +21 -0
  320. data/doc/classes/Dnsruby/Resolver.src/M000277.html +22 -0
  321. data/doc/classes/Dnsruby/Resolver.src/M000278.html +18 -0
  322. data/doc/classes/Dnsruby/Resolver.src/M000279.html +20 -0
  323. data/doc/classes/Dnsruby/Resolver.src/M000280.html +19 -0
  324. data/doc/classes/Dnsruby/Resolver.src/M000281.html +19 -0
  325. data/doc/classes/Dnsruby/Resolver.src/M000282.html +19 -0
  326. data/doc/classes/Dnsruby/Resolver.src/M000283.html +19 -0
  327. data/doc/classes/Dnsruby/Resolver.src/M000284.html +19 -0
  328. data/doc/classes/Dnsruby/Resolver.src/M000285.html +19 -0
  329. data/doc/classes/Dnsruby/Resolver.src/M000286.html +19 -0
  330. data/doc/classes/Dnsruby/Resolver.src/M000287.html +19 -0
  331. data/doc/classes/Dnsruby/Resolver.src/M000288.html +19 -0
  332. data/doc/classes/Dnsruby/Resolver.src/M000289.html +19 -0
  333. data/doc/classes/Dnsruby/Resolver.src/M000290.html +19 -0
  334. data/doc/classes/Dnsruby/Resolver.src/M000291.html +19 -0
  335. data/doc/classes/Dnsruby/Resolver.src/M000292.html +26 -0
  336. data/doc/classes/Dnsruby/Resolver.src/M000293.html +18 -0
  337. data/doc/classes/Dnsruby/Resolver.src/M000294.html +23 -0
  338. data/doc/classes/Dnsruby/Resolver.src/M000295.html +18 -0
  339. data/doc/classes/Dnsruby/ServFail.html +119 -0
  340. data/doc/classes/Dnsruby/SingleResolver.html +674 -0
  341. data/doc/classes/Dnsruby/SingleResolver.src/M000172.html +18 -0
  342. data/doc/classes/Dnsruby/SingleResolver.src/M000173.html +24 -0
  343. data/doc/classes/Dnsruby/SingleResolver.src/M000174.html +36 -0
  344. data/doc/classes/Dnsruby/SingleResolver.src/M000175.html +18 -0
  345. data/doc/classes/Dnsruby/SingleResolver.src/M000176.html +19 -0
  346. data/doc/classes/Dnsruby/SingleResolver.src/M000177.html +50 -0
  347. data/doc/classes/Dnsruby/SingleResolver.src/M000178.html +19 -0
  348. data/doc/classes/Dnsruby/SingleResolver.src/M000179.html +21 -0
  349. data/doc/classes/Dnsruby/SingleResolver.src/M000180.html +25 -0
  350. data/doc/classes/Dnsruby/SingleResolver.src/M000181.html +54 -0
  351. data/doc/classes/Dnsruby/SingleResolver.src/M000182.html +27 -0
  352. data/doc/classes/Dnsruby/SingleResolver.src/M000183.html +27 -0
  353. data/doc/classes/Dnsruby/SingleResolver.src/M000184.html +35 -0
  354. data/doc/classes/Dnsruby/SingleResolver.src/M000185.html +21 -0
  355. data/doc/classes/Dnsruby/TheLog.html +196 -0
  356. data/doc/classes/Dnsruby/TheLog.src/M000246.html +20 -0
  357. data/doc/classes/Dnsruby/TheLog.src/M000247.html +20 -0
  358. data/doc/classes/Dnsruby/TheLog.src/M000248.html +20 -0
  359. data/doc/classes/Dnsruby/Types.html +436 -0
  360. data/doc/classes/Dnsruby/Update.html +368 -0
  361. data/doc/classes/Dnsruby/Update.src/M000253.html +32 -0
  362. data/doc/classes/Dnsruby/Update.src/M000254.html +36 -0
  363. data/doc/classes/Dnsruby/Update.src/M000255.html +32 -0
  364. data/doc/classes/Dnsruby/Update.src/M000256.html +41 -0
  365. data/doc/classes/Dnsruby/Update.src/M000257.html +34 -0
  366. data/doc/classes/Dnsruby/VerifyError.html +119 -0
  367. data/doc/classes/Dnsruby/ZoneTransfer.html +300 -0
  368. data/doc/classes/Dnsruby/ZoneTransfer.src/M000143.html +18 -0
  369. data/doc/classes/Dnsruby/ZoneTransfer.src/M000144.html +24 -0
  370. data/doc/classes/Dnsruby/ZoneTransfer.src/M000145.html +35 -0
  371. data/doc/classes/Dnsruby/ZoneTransfer/Delta.html +200 -0
  372. data/doc/classes/Dnsruby/ZoneTransfer/Delta.src/M000146.html +19 -0
  373. data/doc/classes/Dnsruby/ZoneTransfer/Delta.src/M000147.html +19 -0
  374. data/doc/created.rid +1 -0
  375. data/doc/files/lib/Dnsruby/Config_rb.html +101 -0
  376. data/doc/files/lib/Dnsruby/DNS_rb.html +110 -0
  377. data/doc/files/lib/Dnsruby/Hosts_rb.html +108 -0
  378. data/doc/files/lib/Dnsruby/Resolver_rb.html +109 -0
  379. data/doc/files/lib/Dnsruby/SingleResolver_rb.html +108 -0
  380. data/doc/files/lib/Dnsruby/TheLog_rb.html +110 -0
  381. data/doc/files/lib/Dnsruby/code_mapper_rb.html +101 -0
  382. data/doc/files/lib/Dnsruby/dnssec_rb.html +107 -0
  383. data/doc/files/lib/Dnsruby/event_machine_interface_rb.html +108 -0
  384. data/doc/files/lib/Dnsruby/ipv4_rb.html +101 -0
  385. data/doc/files/lib/Dnsruby/ipv6_rb.html +101 -0
  386. data/doc/files/lib/Dnsruby/message_rb.html +109 -0
  387. data/doc/files/lib/Dnsruby/name_rb.html +101 -0
  388. data/doc/files/lib/Dnsruby/resource/AAAA_rb.html +101 -0
  389. data/doc/files/lib/Dnsruby/resource/AFSDB_rb.html +101 -0
  390. data/doc/files/lib/Dnsruby/resource/A_rb.html +101 -0
  391. data/doc/files/lib/Dnsruby/resource/CERT_rb.html +101 -0
  392. data/doc/files/lib/Dnsruby/resource/DNSKEY_rb.html +101 -0
  393. data/doc/files/lib/Dnsruby/resource/DS_rb.html +101 -0
  394. data/doc/files/lib/Dnsruby/resource/HINFO_rb.html +101 -0
  395. data/doc/files/lib/Dnsruby/resource/IN_rb.html +112 -0
  396. data/doc/files/lib/Dnsruby/resource/ISDN_rb.html +101 -0
  397. data/doc/files/lib/Dnsruby/resource/LOC_rb.html +101 -0
  398. data/doc/files/lib/Dnsruby/resource/MINFO_rb.html +101 -0
  399. data/doc/files/lib/Dnsruby/resource/MX_rb.html +101 -0
  400. data/doc/files/lib/Dnsruby/resource/NAPTR_rb.html +101 -0
  401. data/doc/files/lib/Dnsruby/resource/NSAP_rb.html +101 -0
  402. data/doc/files/lib/Dnsruby/resource/NSEC3PARAM_rb.html +101 -0
  403. data/doc/files/lib/Dnsruby/resource/NSEC3_rb.html +101 -0
  404. data/doc/files/lib/Dnsruby/resource/NSEC_rb.html +101 -0
  405. data/doc/files/lib/Dnsruby/resource/OPT_rb.html +101 -0
  406. data/doc/files/lib/Dnsruby/resource/PX_rb.html +101 -0
  407. data/doc/files/lib/Dnsruby/resource/RP_rb.html +101 -0
  408. data/doc/files/lib/Dnsruby/resource/RRSIG_rb.html +101 -0
  409. data/doc/files/lib/Dnsruby/resource/RT_rb.html +101 -0
  410. data/doc/files/lib/Dnsruby/resource/SOA_rb.html +101 -0
  411. data/doc/files/lib/Dnsruby/resource/SPF_rb.html +101 -0
  412. data/doc/files/lib/Dnsruby/resource/SRV_rb.html +101 -0
  413. data/doc/files/lib/Dnsruby/resource/TKEY_rb.html +101 -0
  414. data/doc/files/lib/Dnsruby/resource/TSIG_rb.html +114 -0
  415. data/doc/files/lib/Dnsruby/resource/TXT_rb.html +108 -0
  416. data/doc/files/lib/Dnsruby/resource/X25_rb.html +101 -0
  417. data/doc/files/lib/Dnsruby/resource/domain_name_rb.html +101 -0
  418. data/doc/files/lib/Dnsruby/resource/generic_rb.html +131 -0
  419. data/doc/files/lib/Dnsruby/resource/resource_rb.html +110 -0
  420. data/doc/files/lib/Dnsruby/select_thread_rb.html +111 -0
  421. data/doc/files/lib/Dnsruby/update_rb.html +101 -0
  422. data/doc/files/lib/Dnsruby/zone_transfer_rb.html +101 -0
  423. data/doc/files/lib/dnsruby_rb.html +118 -0
  424. data/doc/fr_class_index.html +108 -0
  425. data/doc/fr_file_index.html +75 -0
  426. data/doc/fr_method_index.html +321 -0
  427. data/doc/index.html +24 -0
  428. data/lib/Dnsruby/Config.rb +363 -0
  429. data/lib/Dnsruby/DNS.rb +293 -0
  430. data/lib/Dnsruby/Hosts.rb +126 -0
  431. data/lib/Dnsruby/Resolver.rb +999 -0
  432. data/lib/Dnsruby/SingleResolver.rb +493 -0
  433. data/lib/Dnsruby/TheLog.rb +60 -0
  434. data/lib/Dnsruby/code_mapper.rb +165 -0
  435. data/lib/Dnsruby/dnssec.rb +357 -0
  436. data/lib/Dnsruby/event_machine_interface.rb +264 -0
  437. data/lib/Dnsruby/ipv4.rb +74 -0
  438. data/lib/Dnsruby/ipv6.rb +144 -0
  439. data/lib/Dnsruby/message.rb +961 -0
  440. data/lib/Dnsruby/name.rb +332 -0
  441. data/lib/Dnsruby/resource/A.rb +56 -0
  442. data/lib/Dnsruby/resource/AAAA.rb +54 -0
  443. data/lib/Dnsruby/resource/AFSDB.rb +68 -0
  444. data/lib/Dnsruby/resource/CERT.rb +89 -0
  445. data/lib/Dnsruby/resource/DNSKEY.rb +242 -0
  446. data/lib/Dnsruby/resource/DS.rb +162 -0
  447. data/lib/Dnsruby/resource/HINFO.rb +52 -0
  448. data/lib/Dnsruby/resource/IN.rb +70 -0
  449. data/lib/Dnsruby/resource/ISDN.rb +54 -0
  450. data/lib/Dnsruby/resource/LOC.rb +255 -0
  451. data/lib/Dnsruby/resource/MINFO.rb +70 -0
  452. data/lib/Dnsruby/resource/MX.rb +66 -0
  453. data/lib/Dnsruby/resource/NAPTR.rb +90 -0
  454. data/lib/Dnsruby/resource/NSAP.rb +172 -0
  455. data/lib/Dnsruby/resource/NSEC.rb +243 -0
  456. data/lib/Dnsruby/resource/NSEC3.rb +173 -0
  457. data/lib/Dnsruby/resource/NSEC3PARAM.rb +120 -0
  458. data/lib/Dnsruby/resource/OPT.rb +210 -0
  459. data/lib/Dnsruby/resource/PX.rb +71 -0
  460. data/lib/Dnsruby/resource/RP.rb +67 -0
  461. data/lib/Dnsruby/resource/RRSIG.rb +256 -0
  462. data/lib/Dnsruby/resource/RT.rb +67 -0
  463. data/lib/Dnsruby/resource/SOA.rb +95 -0
  464. data/lib/Dnsruby/resource/SPF.rb +29 -0
  465. data/lib/Dnsruby/resource/SRV.rb +112 -0
  466. data/lib/Dnsruby/resource/TKEY.rb +163 -0
  467. data/lib/Dnsruby/resource/TSIG.rb +584 -0
  468. data/lib/Dnsruby/resource/TXT.rb +76 -0
  469. data/lib/Dnsruby/resource/X25.rb +53 -0
  470. data/lib/Dnsruby/resource/domain_name.rb +54 -0
  471. data/lib/Dnsruby/resource/generic.rb +151 -0
  472. data/lib/Dnsruby/resource/resource.rb +561 -0
  473. data/lib/Dnsruby/select_thread.rb +449 -0
  474. data/lib/Dnsruby/update.rb +262 -0
  475. data/lib/Dnsruby/zone_transfer.rb +332 -0
  476. data/lib/dnsruby.rb +512 -0
  477. data/test/custom.txt +4 -0
  478. data/test/resolv.conf +4 -0
  479. data/test/tc_axfr.rb +32 -0
  480. data/test/tc_dns.rb +230 -0
  481. data/test/tc_dnskey.rb +52 -0
  482. data/test/tc_dnsruby.rb +42 -0
  483. data/test/tc_dnssec.rb +88 -0
  484. data/test/tc_ds.rb +38 -0
  485. data/test/tc_escapedchars.rb +484 -0
  486. data/test/tc_event_machine_deferrable.rb +85 -0
  487. data/test/tc_event_machine_res.rb +174 -0
  488. data/test/tc_event_machine_single_res.rb +101 -0
  489. data/test/tc_event_machine_soak.rb +98 -0
  490. data/test/tc_header.rb +104 -0
  491. data/test/tc_misc.rb +139 -0
  492. data/test/tc_name.rb +53 -0
  493. data/test/tc_nsec.rb +36 -0
  494. data/test/tc_nsec3.rb +63 -0
  495. data/test/tc_nsec3param.rb +30 -0
  496. data/test/tc_packet.rb +179 -0
  497. data/test/tc_packet_unique_push.rb +102 -0
  498. data/test/tc_question.rb +51 -0
  499. data/test/tc_res_config.rb +92 -0
  500. data/test/tc_res_env.rb +51 -0
  501. data/test/tc_res_file.rb +42 -0
  502. data/test/tc_res_opt.rb +187 -0
  503. data/test/tc_resolver.rb +184 -0
  504. data/test/tc_rr-opt.rb +82 -0
  505. data/test/tc_rr-txt.rb +137 -0
  506. data/test/tc_rr-unknown.rb +99 -0
  507. data/test/tc_rr.rb +258 -0
  508. data/test/tc_rrset.rb +58 -0
  509. data/test/tc_rrsig.rb +32 -0
  510. data/test/tc_single_resolver.rb +169 -0
  511. data/test/tc_soak.rb +200 -0
  512. data/test/tc_soak_base.rb +136 -0
  513. data/test/tc_tcp.rb +35 -0
  514. data/test/tc_tkey.rb +75 -0
  515. data/test/tc_tsig.rb +237 -0
  516. data/test/tc_update.rb +215 -0
  517. data/test/ts_dnsruby.rb +17 -0
  518. data/test/ts_offline.rb +42 -0
  519. data/test/ts_online.rb +107 -0
  520. metadata +627 -0
@@ -0,0 +1,89 @@
1
+ #--
2
+ #Copyright 2007 Nominet UK
3
+ #
4
+ #Licensed under the Apache License, Version 2.0 (the "License");
5
+ #you may not use this file except in compliance with the License.
6
+ #You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ #Unless required by applicable law or agreed to in writing, software
11
+ #distributed under the License is distributed on an "AS IS" BASIS,
12
+ #WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ #See the License for the specific language governing permissions and
14
+ #limitations under the License.
15
+ #++
16
+ module Dnsruby
17
+ class RR
18
+ #Class for DNS Certificate (CERT) resource records. (see RFC 2538)
19
+ #
20
+ #RFC 2782
21
+ class CERT < RR
22
+ ClassValue = nil #:nodoc: all
23
+ TypeValue = Types::CERT #:nodoc: all
24
+
25
+ #Returns the format code for the certificate
26
+ attr_accessor :certtype
27
+ #Returns the key tag for the public key in the certificate
28
+ attr_accessor :keytag
29
+ #Returns the algorithm used by the certificate
30
+ attr_accessor :alg
31
+ #Returns the data comprising the certificate itself (in raw binary form)
32
+ attr_accessor :cert
33
+
34
+ class CertificateTypes < CodeMapper
35
+ PKIX = 1 # PKIX (X.509v3)
36
+ SPKI = 2 # Simple Public Key Infrastructure
37
+ PGP = 3 # Pretty Good Privacy
38
+ IPKIX = 4 # URL of an X.509 data object
39
+ ISPKI = 5 # URL of an SPKI certificate
40
+ IPGP = 6 # Fingerprint and URL of an OpenPGP packet
41
+ ACPKIX = 7 # Attribute Certificate
42
+ IACPKIX = 8 # URL of an Attribute Certificate
43
+ URI = 253 # Certificate format defined by URI
44
+ OID = 254 # Certificate format defined by OID
45
+
46
+ update()
47
+ end
48
+
49
+ def from_data(data) #:nodoc: all
50
+ @certtype = CertificateTypes::new(data[0])
51
+ @keytag = data[1]
52
+ @alg = Dnsruby::Algorithms.new(data[2])
53
+ @cert= data[3]
54
+ end
55
+
56
+ def from_hash(hash) #:nodoc: all
57
+ @certtype = CertificateTypes::new(hash[:certtype])
58
+ @keytag = hash[:keytag]
59
+ @alg = Dnsruby::Algorithms.new(hash[:alg])
60
+ @cert= hash[:cert]
61
+ end
62
+
63
+ def from_string(input) #:nodoc: all
64
+ if (input != "")
65
+ names = input.split(" ")
66
+ @certtype = CertificateTypes::new(names[0])
67
+ @keytag = names[1]
68
+ @alg = Dnsruby::Algorithms.new(names[2])
69
+ @cert = names[3]
70
+ end
71
+ end
72
+
73
+ def rdata_to_string #:nodoc: all
74
+ return "#{@certtype.string} #{@keytag} #{@alg.string} #{@cert}"
75
+ end
76
+
77
+ def encode_rdata(msg, canonical=false) #:nodoc: all
78
+ msg.put_pack('nnn', @certtype.code, @keytag, @alg.code)
79
+ msg.put_string(@cert)
80
+ end
81
+
82
+ def self.decode_rdata(msg) #:nodoc: all
83
+ certtype, keytag, alg = msg.get_unpack('nnn')
84
+ cert = msg.get_string
85
+ return self.new([certtype, keytag, alg, cert])
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,242 @@
1
+ #--
2
+ #Copyright 2007 Nominet UK
3
+ #
4
+ #Licensed under the Apache License, Version 2.0 (the "License");
5
+ #you may not use this file except in compliance with the License.
6
+ #You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ #Unless required by applicable law or agreed to in writing, software
11
+ #distributed under the License is distributed on an "AS IS" BASIS,
12
+ #WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ #See the License for the specific language governing permissions and
14
+ #limitations under the License.
15
+ #++
16
+ module Dnsruby
17
+ class RR
18
+ #RFC4034, section 2
19
+ #DNSSEC uses public key cryptography to sign and authenticate DNS
20
+ #resource record sets (RRsets). The public keys are stored in DNSKEY
21
+ #resource records and are used in the DNSSEC authentication process
22
+ #described in [RFC4035]: A zone signs its authoritative RRsets by
23
+ #using a private key and stores the corresponding public key in a
24
+ #DNSKEY RR. A resolver can then use the public key to validate
25
+ #signatures covering the RRsets in the zone, and thus to authenticate
26
+ #them.
27
+ class DNSKEY < RR
28
+ ClassValue = nil #:nodoc: all
29
+ TypeValue = Types::DNSKEY #:nodoc: all
30
+
31
+ #Key is a zone key
32
+ ZONE_KEY = 0x100
33
+
34
+ #Key is a secure entry point key
35
+ SEP_KEY = 0x1
36
+
37
+ #The flags for the DNSKEY RR
38
+ attr_accessor :flags
39
+ #The protocol for this DNSKEY RR.
40
+ #MUST be 3.
41
+ attr_reader :protocol
42
+ #The algorithm used for this key
43
+ #See Dnsruby::Algorithms for permitted values
44
+ attr_reader :algorithm
45
+ #The public key
46
+ attr_reader :key
47
+
48
+ def init_defaults
49
+ self.protocol=3
50
+ self.flags=ZONE_KEY
51
+ @algorithm=Algorithms.RSASHA1
52
+ end
53
+
54
+ def protocol=(p)
55
+ if (p!=3)
56
+ raise DecodeError.new("DNSKEY protocol field set to #{p}, contrary to RFC4034 section 2.1.2")
57
+ else @protocol = p
58
+ end
59
+ end
60
+
61
+ def algorithm=(a)
62
+ if (a.instance_of?String)
63
+ if (a.length == 1)
64
+ a = a.to_i
65
+ end
66
+ end
67
+ begin
68
+ alg = Algorithms.new(a)
69
+ @algorithm = alg
70
+ rescue ArgumentError => e
71
+ raise DecodeError.new(e)
72
+ end
73
+ end
74
+
75
+ def zone_key=(on)
76
+ if (on)
77
+ @flags |= ZONE_KEY
78
+ else
79
+ @flags &= (~ZONE_KEY)
80
+ end
81
+ end
82
+
83
+ def zone_key?
84
+ return @flags & ZONE_KEY
85
+ end
86
+
87
+ def sep_key=(on)
88
+ if (on)
89
+ @flags |= SEP_KEY
90
+ else
91
+ @flags &= (~SEP_KEY)
92
+ end
93
+ end
94
+
95
+ def sep_key?
96
+ return @flags & SEP_KEY
97
+ end
98
+
99
+ def flags=(f)
100
+ # Only two values allowed -
101
+ # Zone Key flag (bit 7)
102
+ # Secure Entry Point flag (bit 15)
103
+ if ((f & ~ZONE_KEY & ~SEP_KEY) > 0)
104
+ raise DecodeError.new("Only zone key and secure entry point flags allowed for DNSKEY" +
105
+ " (RFC4034 section 2.1.1)")
106
+ else
107
+ @flags = f
108
+ end
109
+ end
110
+
111
+ def from_data(data) #:nodoc: all
112
+ flags, protocol, algorithm, @key = data
113
+ self.flags=(flags)
114
+ self.protocol=(protocol)
115
+ self.algorithm=(algorithm)
116
+ end
117
+
118
+ def from_string(input)
119
+ if (input.length > 0)
120
+ data = input.split(" ")
121
+ self.flags=(data[0].to_i)
122
+ self.protocol=(data[1].to_i)
123
+ self.algorithm=(data[2])
124
+ # key can include whitespace - include all text
125
+ # until we come to " )" at the end, and then gsub
126
+ # the white space out
127
+ # Also, brackets may or may not be present
128
+ buf = ""
129
+ index = 3
130
+ end_index = data.length - 1
131
+ if (data[index]=="(")
132
+ end_index = data.length - 2
133
+ index = 4
134
+ end
135
+ (index..end_index).each {|i|
136
+ buf += data[i]
137
+ }
138
+ self.key=(buf)
139
+ end
140
+ end
141
+
142
+ def rdata_to_string #:nodoc: all
143
+ if (@flags!=nil)
144
+ # return "#{@flags} #{@protocol} #{@algorithm.string} ( #{Base64.encode64(@key.to_s)} )"
145
+ return "#{@flags} #{@protocol} #{@algorithm.string} ( #{[@key.to_s].pack("m*")} )"
146
+ else
147
+ return ""
148
+ end
149
+ end
150
+
151
+ def encode_rdata(msg, canonical=false) #:nodoc: all
152
+ # 2 octets, then 2 sets of 1 octet
153
+ msg.put_pack('ncc', @flags, @protocol, @algorithm.to_i)
154
+ msg.put_bytes(@key)
155
+ end
156
+
157
+ def self.decode_rdata(msg) #:nodoc: all
158
+ # 2 octets, then 2 sets of 1 octet
159
+ flags, protocol, algorithm = msg.get_unpack('ncc')
160
+ key = msg.get_bytes
161
+ return self.new(
162
+ [flags, protocol, algorithm, key])
163
+ end
164
+
165
+ def key_tag
166
+ tag=0
167
+ rdata = MessageEncoder.new {|msg|
168
+ encode_rdata(msg)
169
+ }.to_s
170
+ if (@algorithm == Algorithms.RSAMD5)
171
+ #The key tag for algorithm 1 (RSA/MD5) is defined differently from the
172
+ #key tag for all other algorithms, for historical reasons.
173
+ d1 = rdata[rdata.length - 3] & 0xFF
174
+ d2 = rdata[rdata.length - 2] & 0xFF
175
+ tag = (d1 << 8) + d2
176
+ else
177
+ tag = 0
178
+ last = 0
179
+ 0.step(rdata.length-1, 2) {|i|
180
+ last = i
181
+ d1 = rdata[i] & 0xFF
182
+ d2 = rdata[i + 1] & 0xFF
183
+ tag += ((d1 << 8) + d2)
184
+ }
185
+ last+=2
186
+ if (last < rdata.length)
187
+ d1 = rdata[last] & 0xFF
188
+ tag += (d1 << 8)
189
+ end
190
+ tag += ((tag >> 16) & 0xFFFF)
191
+ end
192
+ tag=tag&0xFFFF
193
+ return tag
194
+ end
195
+
196
+ def key=(key_text)
197
+ key_text.gsub!(/\n/, "")
198
+ key_text.gsub!(/ /, "")
199
+ # @key=Base64.decode64(key_text)
200
+ @key=key_text.unpack("m*")[0]
201
+ end
202
+
203
+ def public_key
204
+ if (@public_key==nil)
205
+ if (@algorithm == Algorithms.RSASHA1)
206
+ @public_key = rsa_key
207
+ end
208
+ end
209
+ # @TODO@ Support other key encodings!
210
+ return @public_key
211
+ end
212
+
213
+ def rsa_key
214
+ exponentLength = @key[0]
215
+ pos = 1
216
+ if (exponentLength == 0)
217
+ exponentLength = (@key[1]<<8) + @key[1]
218
+ pos += 2
219
+ end
220
+ exponent = get_num(@key[pos, exponentLength])
221
+ pos += exponentLength
222
+
223
+ modulus = get_num(@key[pos, @key.length])
224
+
225
+ key = OpenSSL::PKey::RSA.new
226
+ key.e = exponent
227
+ key.n = modulus
228
+ return key
229
+ end
230
+
231
+ def get_num(bytes)
232
+ ret = 0
233
+ shift = (bytes.length-1) * 8
234
+ bytes.each_byte {|byte|
235
+ ret += byte.to_i << shift
236
+ shift -= 8
237
+ }
238
+ return ret
239
+ end
240
+ end
241
+ end
242
+ end
@@ -0,0 +1,162 @@
1
+ #--
2
+ #Copyright 2007 Nominet UK
3
+ #
4
+ #Licensed under the Apache License, Version 2.0 (the "License");
5
+ #you may not use this file except in compliance with the License.
6
+ #You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ #Unless required by applicable law or agreed to in writing, software
11
+ #distributed under the License is distributed on an "AS IS" BASIS,
12
+ #WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ #See the License for the specific language governing permissions and
14
+ #limitations under the License.
15
+ #++
16
+ module Dnsruby
17
+ class RR
18
+ #RFC4034, section 4
19
+ #The DS Resource Record refers to a DNSKEY RR and is used in the DNS
20
+ #DNSKEY authentication process. A DS RR refers to a DNSKEY RR by
21
+ #storing the key tag, algorithm number, and a digest of the DNSKEY RR.
22
+ #Note that while the digest should be sufficient to identify the
23
+ #public key, storing the key tag and key algorithm helps make the
24
+ #identification process more efficient. By authenticating the DS
25
+ #record, a resolver can authenticate the DNSKEY RR to which the DS
26
+ #record points. The key authentication process is described in
27
+ #[RFC4035].
28
+
29
+ class DS < RR
30
+ ClassValue = nil #:nodoc: all
31
+ TypeValue = Types::DS #:nodoc: all
32
+
33
+ #The RDATA for a DS RR consists of a 2 octet Key Tag field, a 1 octet
34
+ #Algorithm field, a 1 octet Digest Type field, and a Digest field.
35
+ #
36
+ # 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
37
+ # 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
38
+ #+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
39
+ #| Key Tag | Algorithm | Digest Type |
40
+ #+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
41
+ #/ /
42
+ #/ Digest /
43
+ #/ /
44
+ #+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
45
+
46
+
47
+ #The Key Tag field lists the key tag of the DNSKEY RR referred to by
48
+ #the DS record, in network byte order.
49
+ attr_accessor :key_tag
50
+ #The algorithm used for this key
51
+ #See Dnsruby::Algorithms for permitted values
52
+ attr_reader :algorithm
53
+ #The DS RR refers to a DNSKEY RR by including a digest of that DNSKEY
54
+ #RR. The Digest Type field identifies the algorithm used to construct
55
+ #the digest.
56
+ attr_reader :digest_type
57
+ #The DS record refers to a DNSKEY RR by including a digest of that
58
+ #DNSKEY RR.
59
+ attr_accessor :digest
60
+
61
+ def digest_type=(d)
62
+ if ((d == 1) || (d == "SHA-1") || (d == "1"))
63
+ @digest_type = 1
64
+ else
65
+ raise DecodeError.new("Unsupported DS digest type (#{d})")
66
+ end
67
+ end
68
+
69
+ def algorithm=(a)
70
+ if (a.instance_of?String)
71
+ if (a.length == 1)
72
+ a = a.to_i
73
+ end
74
+ end
75
+ begin
76
+ alg = Algorithms.new(a)
77
+ @algorithm = alg
78
+ rescue ArgumentError => e
79
+ raise DecodeError.new(e)
80
+ end
81
+ end
82
+
83
+ # Return the digest of the specified DNSKEY RR
84
+ def digest_key(key)
85
+ data = MessageEncoder.new {|msg|
86
+ msg.put_rr(key, true)
87
+ }.to_s
88
+
89
+ OpenSSL::Digest::SHA1.new(data)
90
+ return digest
91
+
92
+ end
93
+
94
+ # Check if the key's digest is the same as that stored in the DS record
95
+ def check_key(key)
96
+ if (key.key_tag == @key_tag)
97
+ digest = digest_key(key)
98
+ if (@digest == digest)
99
+ if (!key.zone_key?)
100
+ else
101
+ return true
102
+ end
103
+ else
104
+ end
105
+ end
106
+ return false
107
+ end
108
+
109
+
110
+ def from_data(data) #:nodoc: all
111
+ key_tag, algorithm, digest_type, digest = data
112
+ self.key_tag=(key_tag)
113
+ self.algorithm=(algorithm)
114
+ self.digest_type=(digest_type)
115
+ self.digest=(digest)
116
+ end
117
+
118
+ def from_string(input)
119
+ if (input.length > 0)
120
+ data = input.split(" ")
121
+ self.key_tag=(data[0].to_i)
122
+ self.algorithm=(data[1])
123
+ self.digest_type=(data[2])
124
+
125
+ buf = ""
126
+ index = 3
127
+ end_index = data.length - 1
128
+ if (data[index]=="(")
129
+ end_index = data.length - 2
130
+ index = 4
131
+ end
132
+ (index..end_index).each {|i|
133
+ buf += data[i]
134
+ }
135
+ # self.digest=Base64.decode64(buf)
136
+ self.digest=buf.unpack("m*")[0]
137
+ end
138
+ end
139
+
140
+ def rdata_to_string #:nodoc: all
141
+ if (@key_tag != nil)
142
+ # return "#{@key_tag.to_i} #{@algorithm.string} #{@digest_type} ( #{Base64.encode64(@digest)} )"
143
+ return "#{@key_tag.to_i} #{@algorithm.string} #{@digest_type} ( #{[@digest].pack("m*")} )"
144
+ else
145
+ return ""
146
+ end
147
+ end
148
+
149
+ def encode_rdata(msg, canonical=false) #:nodoc: all
150
+ msg.put_pack("ncc", @key_tag, @algorithm.code, @digest_type)
151
+ msg.put_bytes(@digest)
152
+ end
153
+
154
+ def self.decode_rdata(msg) #:nodoc: all
155
+ key_tag, algorithm, digest_type = msg.get_unpack("ncc")
156
+ digest = msg.get_bytes
157
+ return self.new(
158
+ [key_tag, algorithm, digest_type, digest])
159
+ end
160
+ end
161
+ end
162
+ end