rhodes 3.3.5 → 3.4.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1678) hide show
  1. data/CHANGELOG +3 -1
  2. data/CREDITS +5 -0
  3. data/Rakefile +173 -17
  4. data/doc/build.txt +71 -27
  5. data/doc/configuration.txt +2 -0
  6. data/doc/device-caps.txt +103 -27
  7. data/doc/extensions.txt +49 -33
  8. data/doc/install.txt +15 -12
  9. data/doc/introduction.txt +1 -1
  10. data/doc/nfc.txt +3 -2
  11. data/doc/rhom.txt +22 -1
  12. data/doc/{rhostudio-eclipse.txt → rhostudio-eclipse_outdated.txt} +0 -0
  13. data/doc/rhostudio-test-plan.txt +79 -22
  14. data/doc/simulator.txt +19 -52
  15. data/doc/standard-css.txt +1 -1
  16. data/doc/synchronization.txt +2 -0
  17. data/doc/test-log-debug.txt +149 -1
  18. data/doc/ui.txt +57 -0
  19. data/lib/build/jake.rb +33 -22
  20. data/lib/extensions/barcode/ext/barcode/platform/iphone/Barcode.xcodeproj/project.pbxproj +4 -10
  21. data/lib/extensions/debugger/debugger.rb +18 -5
  22. data/lib/extensions/digest-md5/digest/md5.rb +0 -0
  23. data/lib/extensions/digest-md5/ext/iphone/Dmd5.xcodeproj/project.pbxproj +4 -10
  24. data/lib/extensions/digest-sha1/digest/sha1.rb +0 -0
  25. data/lib/extensions/digest-sha1/ext/iphone/Dsha1.xcodeproj/project.pbxproj +4 -10
  26. data/lib/extensions/digest-sha2/digest/sha2.rb +0 -0
  27. data/lib/extensions/digest-sha2/ext.yml +2 -0
  28. data/lib/extensions/digest-sha2/ext/Rakefile +128 -0
  29. data/lib/extensions/digest-sha2/ext/build +12 -0
  30. data/lib/extensions/digest-sha2/ext/build.bat +1 -0
  31. data/lib/extensions/digest-sha2/ext/depend +6 -0
  32. data/lib/extensions/digest-sha2/ext/digest-sha2.sln +44 -0
  33. data/lib/extensions/digest-sha2/ext/digest-sha2.vcproj +666 -0
  34. data/lib/extensions/digest-sha2/ext/extconf.rb +27 -0
  35. data/lib/extensions/digest-sha2/ext/iphone/Dsha2.xcodeproj/project.pbxproj +272 -0
  36. data/lib/extensions/digest-sha2/ext/iphone/Dsha2_Prefix.pch +7 -0
  37. data/lib/extensions/digest-sha2/ext/iphone/Rakefile +79 -0
  38. data/lib/extensions/digest-sha2/ext/sha2.c +1070 -0
  39. data/lib/extensions/digest-sha2/ext/sha2.h +225 -0
  40. data/lib/extensions/digest-sha2/ext/sha2.rb +1 -0
  41. data/lib/extensions/digest-sha2/ext/sha2init.c +56 -0
  42. data/lib/extensions/digest-sha2/ext/sha2ossl.c +11 -0
  43. data/lib/extensions/digest-sha2/ext/sha2ossl.h +17 -0
  44. data/lib/extensions/digest-sha2/sha2/sha2.rb +74 -0
  45. data/lib/extensions/digest/digest.so.rb +0 -0
  46. data/lib/extensions/digest/ext/iphone/Digest.xcodeproj/project.pbxproj +4 -10
  47. data/lib/extensions/esri/ext/esri/platform/iphone/ESRI.xcodeproj/project.pbxproj +4 -10
  48. data/lib/extensions/ezcrypto/ext/CHANGELOG +85 -0
  49. data/lib/extensions/ezcrypto/ext/MIT-LICENSE +21 -0
  50. data/lib/extensions/ezcrypto/ext/README.rdoc +152 -0
  51. data/lib/extensions/ezcrypto/ext/README_ACTIVE_CRYPTO +122 -0
  52. data/lib/extensions/ezcrypto/ext/README_DIGITAL_SIGNATURES +55 -0
  53. data/lib/extensions/ezcrypto/ext/rakefile +200 -0
  54. data/lib/extensions/ezcrypto/ext/test/active_crypto_test.rb +211 -0
  55. data/lib/extensions/ezcrypto/ext/test/agree2.com.cert +31 -0
  56. data/lib/extensions/ezcrypto/ext/test/association_key_holder_test.rb +38 -0
  57. data/lib/extensions/ezcrypto/ext/test/database.yml +18 -0
  58. data/lib/extensions/ezcrypto/ext/test/digest_test.rb +51 -0
  59. data/lib/extensions/ezcrypto/ext/test/dsakey.pem +12 -0
  60. data/lib/extensions/ezcrypto/ext/test/dsapubkey.pem +12 -0
  61. data/lib/extensions/ezcrypto/ext/test/dsig_test.rb +288 -0
  62. data/lib/extensions/ezcrypto/ext/test/encrypt_test.rb +41 -0
  63. data/lib/extensions/ezcrypto/ext/test/ezcrypto_test.rb +212 -0
  64. data/lib/extensions/ezcrypto/ext/test/key_holder_test.rb +44 -0
  65. data/lib/extensions/ezcrypto/ext/test/protectedsigner.pem +12 -0
  66. data/lib/extensions/ezcrypto/ext/test/sf-class2-root.crt +24 -0
  67. data/lib/extensions/ezcrypto/ext/test/sf_intermediate.crt +29 -0
  68. data/lib/extensions/ezcrypto/ext/test/test_helper.rb +35 -0
  69. data/lib/extensions/ezcrypto/ext/test/testchild.pem +15 -0
  70. data/lib/extensions/ezcrypto/ext/test/testchild.req +12 -0
  71. data/lib/extensions/ezcrypto/ext/test/testpub.pem +4 -0
  72. data/lib/extensions/ezcrypto/ext/test/testsigner.cert +20 -0
  73. data/lib/extensions/ezcrypto/ext/test/testsigner.pem +9 -0
  74. data/lib/extensions/ezcrypto/ext/test/valicert_class2_root.crt +18 -0
  75. data/lib/extensions/ezcrypto/ezcrypto.rb +1 -0
  76. data/lib/extensions/ezcrypto/ezcrypto/ezcrypto.rb +612 -0
  77. data/lib/extensions/ezcrypto/ezcrypto/ezsig.rb +535 -0
  78. data/lib/extensions/ezcrypto/ezcrypto/trusted.pem +2363 -0
  79. data/lib/extensions/fcntl/ext/iphone/Fcntl.xcodeproj/project.pbxproj +4 -10
  80. data/lib/extensions/fcntl/fcntl.rb +0 -0
  81. data/lib/extensions/nfc/ext/nfc/platform/android/src/com/rhomobile/nfc/Nfc.java +9 -22
  82. data/lib/extensions/openssl.so.src/ext.yml +2 -0
  83. data/lib/extensions/openssl.so.src/ext/Rakefile +107 -0
  84. data/lib/extensions/openssl.so.src/ext/build +12 -0
  85. data/lib/extensions/openssl.so.src/ext/build.bat +1 -0
  86. data/lib/extensions/openssl.so/ext.yml +9 -0
  87. data/lib/extensions/openssl.so/ext/Rakefile +139 -0
  88. data/lib/extensions/openssl.so/ext/android/libopenssl.so.a +0 -0
  89. data/lib/extensions/openssl.so/ext/build +12 -0
  90. data/lib/extensions/openssl.so/ext/build.bat +1 -0
  91. data/lib/extensions/openssl.so/ext/iphone/Rakefile +79 -0
  92. data/lib/extensions/openssl.so/ext/iphone/Release-iphoneos/libopenssl.so.a +0 -0
  93. data/lib/extensions/openssl.so/ext/iphone/Release-iphonesimulator/libopenssl.so.a +0 -0
  94. data/lib/extensions/openssl.so/ext/iphone/openssl/openssl.xcodeproj/project.pbxproj +4300 -0
  95. data/lib/extensions/openssl.so/ext/iphone/openssl/openssl/openssl-Prefix.pch +7 -0
  96. data/lib/extensions/openssl.so/ext/sources/apps/apps.h +373 -0
  97. data/lib/extensions/openssl.so/ext/sources/apps/progs.h +366 -0
  98. data/lib/extensions/openssl.so/ext/sources/apps/s_apps.h +176 -0
  99. data/lib/extensions/openssl.so/ext/sources/apps/testdsa.h +217 -0
  100. data/lib/extensions/openssl.so/ext/sources/apps/testrsa.h +518 -0
  101. data/lib/extensions/openssl.so/ext/sources/crypto/LPdir_unix.c +127 -0
  102. data/lib/extensions/openssl.so/ext/sources/crypto/LPdir_win.c +153 -0
  103. data/lib/extensions/openssl.so/ext/sources/crypto/LPdir_win32.c +30 -0
  104. data/lib/extensions/openssl.so/ext/sources/crypto/aes/aes.h +147 -0
  105. data/lib/extensions/openssl.so/ext/sources/crypto/aes/aes_cbc.c +63 -0
  106. data/lib/extensions/openssl.so/ext/sources/crypto/aes/aes_cfb.c +81 -0
  107. data/lib/extensions/openssl.so/ext/sources/crypto/aes/aes_core.c +1358 -0
  108. data/lib/extensions/openssl.so/ext/sources/crypto/aes/aes_ctr.c +61 -0
  109. data/lib/extensions/openssl.so/ext/sources/crypto/aes/aes_ecb.c +73 -0
  110. data/lib/extensions/openssl.so/ext/sources/crypto/aes/aes_ige.c +323 -0
  111. data/lib/extensions/openssl.so/ext/sources/crypto/aes/aes_locl.h +89 -0
  112. data/lib/extensions/openssl.so/ext/sources/crypto/aes/aes_misc.c +85 -0
  113. data/lib/extensions/openssl.so/ext/sources/crypto/aes/aes_ofb.c +60 -0
  114. data/lib/extensions/openssl.so/ext/sources/crypto/aes/aes_wrap.c +259 -0
  115. data/lib/extensions/openssl.so/ext/sources/crypto/arm_arch.h +51 -0
  116. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_bitstr.c +248 -0
  117. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_bool.c +114 -0
  118. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_bytes.c +314 -0
  119. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_d2i_fp.c +286 -0
  120. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_digest.c +113 -0
  121. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_dup.c +109 -0
  122. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_enum.c +182 -0
  123. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_gentm.c +263 -0
  124. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_i2d_fp.c +163 -0
  125. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_int.c +458 -0
  126. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_mbstr.c +400 -0
  127. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_object.c +403 -0
  128. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_octet.c +71 -0
  129. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_print.c +127 -0
  130. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_set.c +241 -0
  131. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_sign.c +333 -0
  132. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_strex.c +574 -0
  133. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_strnid.c +290 -0
  134. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_time.c +198 -0
  135. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_type.c +159 -0
  136. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_utctm.c +318 -0
  137. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_utf8.c +211 -0
  138. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/a_verify.c +228 -0
  139. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/ameth_lib.c +460 -0
  140. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/asn1.h +1404 -0
  141. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/asn1_err.c +332 -0
  142. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/asn1_gen.c +854 -0
  143. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/asn1_lib.c +482 -0
  144. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/asn1_locl.h +145 -0
  145. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/asn1_mac.h +578 -0
  146. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/asn1_par.c +437 -0
  147. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/asn1t.h +960 -0
  148. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/asn_mime.c +951 -0
  149. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/asn_moid.c +160 -0
  150. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/asn_pack.c +191 -0
  151. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/bio_asn1.c +495 -0
  152. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/bio_ndef.c +243 -0
  153. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/charmap.h +15 -0
  154. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/d2i_pr.c +170 -0
  155. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/d2i_pu.c +139 -0
  156. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/evp_asn1.c +189 -0
  157. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/f_enum.c +207 -0
  158. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/f_int.c +219 -0
  159. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/f_string.c +212 -0
  160. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/i2d_pr.c +80 -0
  161. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/i2d_pu.c +95 -0
  162. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/n_pkey.c +357 -0
  163. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/nsseq.c +83 -0
  164. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/p5_pbe.c +148 -0
  165. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/p5_pbev2.c +280 -0
  166. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/p8_pkey.c +155 -0
  167. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/t_bitst.c +102 -0
  168. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/t_crl.c +132 -0
  169. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/t_pkey.c +114 -0
  170. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/t_req.c +266 -0
  171. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/t_spki.c +107 -0
  172. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/t_x509.c +528 -0
  173. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/t_x509a.c +110 -0
  174. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/tasn_dec.c +1347 -0
  175. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/tasn_enc.c +691 -0
  176. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/tasn_fre.c +266 -0
  177. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/tasn_new.c +396 -0
  178. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/tasn_prn.c +627 -0
  179. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/tasn_typ.c +148 -0
  180. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/tasn_utl.c +279 -0
  181. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_algor.c +144 -0
  182. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_attrib.c +118 -0
  183. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_bignum.c +139 -0
  184. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_crl.c +527 -0
  185. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_exten.c +76 -0
  186. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_info.c +114 -0
  187. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_long.c +179 -0
  188. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_name.c +519 -0
  189. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_nx509.c +72 -0
  190. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_pkey.c +151 -0
  191. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_pubkey.c +382 -0
  192. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_req.c +113 -0
  193. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_sig.c +69 -0
  194. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_spki.c +81 -0
  195. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_val.c +69 -0
  196. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_x509.c +194 -0
  197. data/lib/extensions/openssl.so/ext/sources/crypto/asn1/x_x509a.c +180 -0
  198. data/lib/extensions/openssl.so/ext/sources/crypto/bf/bf_cfb64.c +121 -0
  199. data/lib/extensions/openssl.so/ext/sources/crypto/bf/bf_ecb.c +96 -0
  200. data/lib/extensions/openssl.so/ext/sources/crypto/bf/bf_enc.c +306 -0
  201. data/lib/extensions/openssl.so/ext/sources/crypto/bf/bf_locl.h +219 -0
  202. data/lib/extensions/openssl.so/ext/sources/crypto/bf/bf_ofb64.c +110 -0
  203. data/lib/extensions/openssl.so/ext/sources/crypto/bf/bf_pi.h +325 -0
  204. data/lib/extensions/openssl.so/ext/sources/crypto/bf/bf_skey.c +124 -0
  205. data/lib/extensions/openssl.so/ext/sources/crypto/bf/blowfish.h +129 -0
  206. data/lib/extensions/openssl.so/ext/sources/crypto/bio/b_dump.c +187 -0
  207. data/lib/extensions/openssl.so/ext/sources/crypto/bio/b_print.c +842 -0
  208. data/lib/extensions/openssl.so/ext/sources/crypto/bio/b_sock.c +975 -0
  209. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bf_buff.c +512 -0
  210. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bf_nbio.c +253 -0
  211. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bf_null.c +183 -0
  212. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bio.h +847 -0
  213. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bio_cb.c +143 -0
  214. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bio_err.c +155 -0
  215. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bio_lcl.h +36 -0
  216. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bio_lib.c +602 -0
  217. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bss_acpt.c +478 -0
  218. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bss_bio.c +924 -0
  219. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bss_conn.c +652 -0
  220. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bss_dgram.c +1832 -0
  221. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bss_fd.c +319 -0
  222. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bss_file.c +477 -0
  223. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bss_log.c +399 -0
  224. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bss_mem.c +319 -0
  225. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bss_null.c +150 -0
  226. data/lib/extensions/openssl.so/ext/sources/crypto/bio/bss_sock.c +294 -0
  227. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn.h +891 -0
  228. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_add.c +313 -0
  229. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_asm.c +1030 -0
  230. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_blind.c +385 -0
  231. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_const.c +402 -0
  232. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_ctx.c +454 -0
  233. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_depr.c +112 -0
  234. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_div.c +446 -0
  235. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_err.c +150 -0
  236. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_exp.c +1097 -0
  237. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_exp2.c +312 -0
  238. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_gcd.c +654 -0
  239. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_gf2m.c +1113 -0
  240. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_kron.c +184 -0
  241. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_lcl.h +508 -0
  242. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_lib.c +826 -0
  243. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_mod.c +301 -0
  244. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_mont.c +509 -0
  245. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_mpi.c +130 -0
  246. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_mul.c +1166 -0
  247. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_nist.c +1102 -0
  248. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_prime.c +494 -0
  249. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_prime.h +327 -0
  250. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_print.c +378 -0
  251. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_rand.c +305 -0
  252. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_recp.c +234 -0
  253. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_shift.c +223 -0
  254. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_sqr.c +294 -0
  255. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_sqrt.c +393 -0
  256. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_word.c +247 -0
  257. data/lib/extensions/openssl.so/ext/sources/crypto/bn/bn_x931p.c +272 -0
  258. data/lib/extensions/openssl.so/ext/sources/crypto/buffer/buf_err.c +99 -0
  259. data/lib/extensions/openssl.so/ext/sources/crypto/buffer/buf_str.c +119 -0
  260. data/lib/extensions/openssl.so/ext/sources/crypto/buffer/buffer.c +203 -0
  261. data/lib/extensions/openssl.so/ext/sources/crypto/buffer/buffer.h +119 -0
  262. data/lib/extensions/openssl.so/ext/sources/crypto/buildinf.h +12 -0
  263. data/lib/extensions/openssl.so/ext/sources/crypto/camellia/camellia.c +582 -0
  264. data/lib/extensions/openssl.so/ext/sources/crypto/camellia/camellia.h +130 -0
  265. data/lib/extensions/openssl.so/ext/sources/crypto/camellia/cmll_cbc.c +64 -0
  266. data/lib/extensions/openssl.so/ext/sources/crypto/camellia/cmll_cfb.c +139 -0
  267. data/lib/extensions/openssl.so/ext/sources/crypto/camellia/cmll_ctr.c +64 -0
  268. data/lib/extensions/openssl.so/ext/sources/crypto/camellia/cmll_ecb.c +74 -0
  269. data/lib/extensions/openssl.so/ext/sources/crypto/camellia/cmll_locl.h +86 -0
  270. data/lib/extensions/openssl.so/ext/sources/crypto/camellia/cmll_misc.c +80 -0
  271. data/lib/extensions/openssl.so/ext/sources/crypto/camellia/cmll_ofb.c +119 -0
  272. data/lib/extensions/openssl.so/ext/sources/crypto/camellia/cmll_utl.c +64 -0
  273. data/lib/extensions/openssl.so/ext/sources/crypto/cast/c_cfb64.c +121 -0
  274. data/lib/extensions/openssl.so/ext/sources/crypto/cast/c_ecb.c +79 -0
  275. data/lib/extensions/openssl.so/ext/sources/crypto/cast/c_enc.c +208 -0
  276. data/lib/extensions/openssl.so/ext/sources/crypto/cast/c_ofb64.c +110 -0
  277. data/lib/extensions/openssl.so/ext/sources/crypto/cast/c_skey.c +173 -0
  278. data/lib/extensions/openssl.so/ext/sources/crypto/cast/cast.h +107 -0
  279. data/lib/extensions/openssl.so/ext/sources/crypto/cast/cast_lcl.h +227 -0
  280. data/lib/extensions/openssl.so/ext/sources/crypto/cast/cast_s.h +585 -0
  281. data/lib/extensions/openssl.so/ext/sources/crypto/cmac/cm_ameth.c +97 -0
  282. data/lib/extensions/openssl.so/ext/sources/crypto/cmac/cm_pmeth.c +224 -0
  283. data/lib/extensions/openssl.so/ext/sources/crypto/cmac/cmac.c +308 -0
  284. data/lib/extensions/openssl.so/ext/sources/crypto/cmac/cmac.h +82 -0
  285. data/lib/extensions/openssl.so/ext/sources/crypto/cms/cms.h +501 -0
  286. data/lib/extensions/openssl.so/ext/sources/crypto/cms/cms_asn1.c +389 -0
  287. data/lib/extensions/openssl.so/ext/sources/crypto/cms/cms_att.c +195 -0
  288. data/lib/extensions/openssl.so/ext/sources/crypto/cms/cms_cd.c +134 -0
  289. data/lib/extensions/openssl.so/ext/sources/crypto/cms/cms_dd.c +148 -0
  290. data/lib/extensions/openssl.so/ext/sources/crypto/cms/cms_enc.c +294 -0
  291. data/lib/extensions/openssl.so/ext/sources/crypto/cms/cms_env.c +876 -0
  292. data/lib/extensions/openssl.so/ext/sources/crypto/cms/cms_err.c +245 -0
  293. data/lib/extensions/openssl.so/ext/sources/crypto/cms/cms_ess.c +420 -0
  294. data/lib/extensions/openssl.so/ext/sources/crypto/cms/cms_io.c +133 -0
  295. data/lib/extensions/openssl.so/ext/sources/crypto/cms/cms_lcl.h +473 -0
  296. data/lib/extensions/openssl.so/ext/sources/crypto/cms/cms_lib.c +626 -0
  297. data/lib/extensions/openssl.so/ext/sources/crypto/cms/cms_pwri.c +454 -0
  298. data/lib/extensions/openssl.so/ext/sources/crypto/cms/cms_sd.c +985 -0
  299. data/lib/extensions/openssl.so/ext/sources/crypto/cms/cms_smime.c +850 -0
  300. data/lib/extensions/openssl.so/ext/sources/crypto/comp/c_rle.c +61 -0
  301. data/lib/extensions/openssl.so/ext/sources/crypto/comp/c_zlib.c +799 -0
  302. data/lib/extensions/openssl.so/ext/sources/crypto/comp/comp.h +80 -0
  303. data/lib/extensions/openssl.so/ext/sources/crypto/comp/comp_err.c +100 -0
  304. data/lib/extensions/openssl.so/ext/sources/crypto/comp/comp_lib.c +72 -0
  305. data/lib/extensions/openssl.so/ext/sources/crypto/conf/conf.h +263 -0
  306. data/lib/extensions/openssl.so/ext/sources/crypto/conf/conf_api.c +301 -0
  307. data/lib/extensions/openssl.so/ext/sources/crypto/conf/conf_api.h +89 -0
  308. data/lib/extensions/openssl.so/ext/sources/crypto/conf/conf_def.c +740 -0
  309. data/lib/extensions/openssl.so/ext/sources/crypto/conf/conf_def.h +180 -0
  310. data/lib/extensions/openssl.so/ext/sources/crypto/conf/conf_err.c +131 -0
  311. data/lib/extensions/openssl.so/ext/sources/crypto/conf/conf_lib.c +407 -0
  312. data/lib/extensions/openssl.so/ext/sources/crypto/conf/conf_mall.c +80 -0
  313. data/lib/extensions/openssl.so/ext/sources/crypto/conf/conf_mod.c +623 -0
  314. data/lib/extensions/openssl.so/ext/sources/crypto/conf/conf_sap.c +111 -0
  315. data/lib/extensions/openssl.so/ext/sources/crypto/cpt_err.c +105 -0
  316. data/lib/extensions/openssl.so/ext/sources/crypto/cryptlib.c +926 -0
  317. data/lib/extensions/openssl.so/ext/sources/crypto/cryptlib.h +111 -0
  318. data/lib/extensions/openssl.so/ext/sources/crypto/crypto.h +604 -0
  319. data/lib/extensions/openssl.so/ext/sources/crypto/cversion.c +117 -0
  320. data/lib/extensions/openssl.so/ext/sources/crypto/des/cbc_cksm.c +106 -0
  321. data/lib/extensions/openssl.so/ext/sources/crypto/des/cbc_enc.c +61 -0
  322. data/lib/extensions/openssl.so/ext/sources/crypto/des/cfb64ede.c +254 -0
  323. data/lib/extensions/openssl.so/ext/sources/crypto/des/cfb64enc.c +121 -0
  324. data/lib/extensions/openssl.so/ext/sources/crypto/des/cfb_enc.c +195 -0
  325. data/lib/extensions/openssl.so/ext/sources/crypto/des/des.h +248 -0
  326. data/lib/extensions/openssl.so/ext/sources/crypto/des/des_enc.c +400 -0
  327. data/lib/extensions/openssl.so/ext/sources/crypto/des/des_locl.h +432 -0
  328. data/lib/extensions/openssl.so/ext/sources/crypto/des/des_old.c +273 -0
  329. data/lib/extensions/openssl.so/ext/sources/crypto/des/des_old.h +446 -0
  330. data/lib/extensions/openssl.so/ext/sources/crypto/des/des_old2.c +82 -0
  331. data/lib/extensions/openssl.so/ext/sources/crypto/des/des_ver.h +71 -0
  332. data/lib/extensions/openssl.so/ext/sources/crypto/des/ecb3_enc.c +83 -0
  333. data/lib/extensions/openssl.so/ext/sources/crypto/des/ecb_enc.c +122 -0
  334. data/lib/extensions/openssl.so/ext/sources/crypto/des/ede_cbcm_enc.c +199 -0
  335. data/lib/extensions/openssl.so/ext/sources/crypto/des/enc_read.c +240 -0
  336. data/lib/extensions/openssl.so/ext/sources/crypto/des/enc_writ.c +179 -0
  337. data/lib/extensions/openssl.so/ext/sources/crypto/des/fcrypt.c +170 -0
  338. data/lib/extensions/openssl.so/ext/sources/crypto/des/fcrypt_b.c +143 -0
  339. data/lib/extensions/openssl.so/ext/sources/crypto/des/ncbc_enc.c +148 -0
  340. data/lib/extensions/openssl.so/ext/sources/crypto/des/ofb64ede.c +125 -0
  341. data/lib/extensions/openssl.so/ext/sources/crypto/des/ofb64enc.c +110 -0
  342. data/lib/extensions/openssl.so/ext/sources/crypto/des/ofb_enc.c +135 -0
  343. data/lib/extensions/openssl.so/ext/sources/crypto/des/pcbc_enc.c +123 -0
  344. data/lib/extensions/openssl.so/ext/sources/crypto/des/qud_cksm.c +139 -0
  345. data/lib/extensions/openssl.so/ext/sources/crypto/des/rand_key.c +68 -0
  346. data/lib/extensions/openssl.so/ext/sources/crypto/des/read2pwd.c +140 -0
  347. data/lib/extensions/openssl.so/ext/sources/crypto/des/rpc_des.h +131 -0
  348. data/lib/extensions/openssl.so/ext/sources/crypto/des/rpc_enc.c +98 -0
  349. data/lib/extensions/openssl.so/ext/sources/crypto/des/set_key.c +416 -0
  350. data/lib/extensions/openssl.so/ext/sources/crypto/des/spr.h +204 -0
  351. data/lib/extensions/openssl.so/ext/sources/crypto/des/str2key.c +174 -0
  352. data/lib/extensions/openssl.so/ext/sources/crypto/des/xcbc_enc.c +197 -0
  353. data/lib/extensions/openssl.so/ext/sources/crypto/dh/dh.h +280 -0
  354. data/lib/extensions/openssl.so/ext/sources/crypto/dh/dh_ameth.c +501 -0
  355. data/lib/extensions/openssl.so/ext/sources/crypto/dh/dh_asn1.c +93 -0
  356. data/lib/extensions/openssl.so/ext/sources/crypto/dh/dh_check.c +142 -0
  357. data/lib/extensions/openssl.so/ext/sources/crypto/dh/dh_depr.c +83 -0
  358. data/lib/extensions/openssl.so/ext/sources/crypto/dh/dh_err.c +122 -0
  359. data/lib/extensions/openssl.so/ext/sources/crypto/dh/dh_gen.c +192 -0
  360. data/lib/extensions/openssl.so/ext/sources/crypto/dh/dh_key.c +292 -0
  361. data/lib/extensions/openssl.so/ext/sources/crypto/dh/dh_lib.c +260 -0
  362. data/lib/extensions/openssl.so/ext/sources/crypto/dh/dh_pmeth.c +254 -0
  363. data/lib/extensions/openssl.so/ext/sources/crypto/dh/dh_prn.c +80 -0
  364. data/lib/extensions/openssl.so/ext/sources/crypto/dsa/dsa.h +327 -0
  365. data/lib/extensions/openssl.so/ext/sources/crypto/dsa/dsa_ameth.c +704 -0
  366. data/lib/extensions/openssl.so/ext/sources/crypto/dsa/dsa_asn1.c +188 -0
  367. data/lib/extensions/openssl.so/ext/sources/crypto/dsa/dsa_depr.c +106 -0
  368. data/lib/extensions/openssl.so/ext/sources/crypto/dsa/dsa_err.c +130 -0
  369. data/lib/extensions/openssl.so/ext/sources/crypto/dsa/dsa_gen.c +371 -0
  370. data/lib/extensions/openssl.so/ext/sources/crypto/dsa/dsa_key.c +144 -0
  371. data/lib/extensions/openssl.so/ext/sources/crypto/dsa/dsa_lib.c +329 -0
  372. data/lib/extensions/openssl.so/ext/sources/crypto/dsa/dsa_locl.h +60 -0
  373. data/lib/extensions/openssl.so/ext/sources/crypto/dsa/dsa_ossl.c +412 -0
  374. data/lib/extensions/openssl.so/ext/sources/crypto/dsa/dsa_pmeth.c +318 -0
  375. data/lib/extensions/openssl.so/ext/sources/crypto/dsa/dsa_prn.c +121 -0
  376. data/lib/extensions/openssl.so/ext/sources/crypto/dsa/dsa_sign.c +114 -0
  377. data/lib/extensions/openssl.so/ext/sources/crypto/dsa/dsa_vrf.c +76 -0
  378. data/lib/extensions/openssl.so/ext/sources/crypto/dso/dso.h +409 -0
  379. data/lib/extensions/openssl.so/ext/sources/crypto/dso/dso_beos.c +270 -0
  380. data/lib/extensions/openssl.so/ext/sources/crypto/dso/dso_dl.c +393 -0
  381. data/lib/extensions/openssl.so/ext/sources/crypto/dso/dso_dlfcn.c +484 -0
  382. data/lib/extensions/openssl.so/ext/sources/crypto/dso/dso_err.c +159 -0
  383. data/lib/extensions/openssl.so/ext/sources/crypto/dso/dso_lib.c +483 -0
  384. data/lib/extensions/openssl.so/ext/sources/crypto/dso/dso_null.c +90 -0
  385. data/lib/extensions/openssl.so/ext/sources/crypto/dso/dso_openssl.c +83 -0
  386. data/lib/extensions/openssl.so/ext/sources/crypto/dso/dso_vms.c +525 -0
  387. data/lib/extensions/openssl.so/ext/sources/crypto/dso/dso_win32.c +844 -0
  388. data/lib/extensions/openssl.so/ext/sources/crypto/ebcdic.c +221 -0
  389. data/lib/extensions/openssl.so/ext/sources/crypto/ebcdic.h +19 -0
  390. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec.h +1159 -0
  391. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec2_mult.c +390 -0
  392. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec2_oct.c +407 -0
  393. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec2_smpl.c +719 -0
  394. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec_ameth.c +660 -0
  395. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec_asn1.c +1447 -0
  396. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec_check.c +123 -0
  397. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec_curve.c +2100 -0
  398. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec_cvt.c +170 -0
  399. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec_err.c +276 -0
  400. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec_key.c +563 -0
  401. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec_lcl.h +446 -0
  402. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec_lib.c +1096 -0
  403. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec_mult.c +940 -0
  404. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec_oct.c +199 -0
  405. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec_pmeth.c +341 -0
  406. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ec_print.c +195 -0
  407. data/lib/extensions/openssl.so/ext/sources/crypto/ec/eck_prn.c +392 -0
  408. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ecp_mont.c +323 -0
  409. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ecp_nist.c +217 -0
  410. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ecp_nistp224.c +1658 -0
  411. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ecp_nistp256.c +2171 -0
  412. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ecp_nistp521.c +2025 -0
  413. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ecp_nistputil.c +197 -0
  414. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ecp_oct.c +433 -0
  415. data/lib/extensions/openssl.so/ext/sources/crypto/ec/ecp_smpl.c +1360 -0
  416. data/lib/extensions/openssl.so/ext/sources/crypto/ecdh/ecdh.h +125 -0
  417. data/lib/extensions/openssl.so/ext/sources/crypto/ecdh/ech_err.c +100 -0
  418. data/lib/extensions/openssl.so/ext/sources/crypto/ecdh/ech_key.c +83 -0
  419. data/lib/extensions/openssl.so/ext/sources/crypto/ecdh/ech_lib.c +266 -0
  420. data/lib/extensions/openssl.so/ext/sources/crypto/ecdh/ech_locl.h +102 -0
  421. data/lib/extensions/openssl.so/ext/sources/crypto/ecdh/ech_ossl.c +215 -0
  422. data/lib/extensions/openssl.so/ext/sources/crypto/ecdsa/ecdsa.h +260 -0
  423. data/lib/extensions/openssl.so/ext/sources/crypto/ecdsa/ecs_asn1.c +69 -0
  424. data/lib/extensions/openssl.so/ext/sources/crypto/ecdsa/ecs_err.c +106 -0
  425. data/lib/extensions/openssl.so/ext/sources/crypto/ecdsa/ecs_lib.c +278 -0
  426. data/lib/extensions/openssl.so/ext/sources/crypto/ecdsa/ecs_locl.h +115 -0
  427. data/lib/extensions/openssl.so/ext/sources/crypto/ecdsa/ecs_ossl.c +483 -0
  428. data/lib/extensions/openssl.so/ext/sources/crypto/ecdsa/ecs_sign.c +106 -0
  429. data/lib/extensions/openssl.so/ext/sources/crypto/ecdsa/ecs_vrf.c +96 -0
  430. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_all.c +135 -0
  431. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_cnf.c +259 -0
  432. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_cryptodev.c +1450 -0
  433. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_ctrl.c +389 -0
  434. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_dyn.c +548 -0
  435. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_err.c +173 -0
  436. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_fat.c +182 -0
  437. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_init.c +154 -0
  438. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_int.h +206 -0
  439. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_lib.c +332 -0
  440. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_list.c +433 -0
  441. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_openssl.c +384 -0
  442. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_pkey.c +196 -0
  443. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_rdrand.c +142 -0
  444. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_rsax.c +668 -0
  445. data/lib/extensions/openssl.so/ext/sources/crypto/engine/eng_table.c +351 -0
  446. data/lib/extensions/openssl.so/ext/sources/crypto/engine/engine.h +842 -0
  447. data/lib/extensions/openssl.so/ext/sources/crypto/engine/tb_asnmth.c +246 -0
  448. data/lib/extensions/openssl.so/ext/sources/crypto/engine/tb_cipher.c +143 -0
  449. data/lib/extensions/openssl.so/ext/sources/crypto/engine/tb_dh.c +118 -0
  450. data/lib/extensions/openssl.so/ext/sources/crypto/engine/tb_digest.c +143 -0
  451. data/lib/extensions/openssl.so/ext/sources/crypto/engine/tb_dsa.c +118 -0
  452. data/lib/extensions/openssl.so/ext/sources/crypto/engine/tb_ecdh.c +133 -0
  453. data/lib/extensions/openssl.so/ext/sources/crypto/engine/tb_ecdsa.c +118 -0
  454. data/lib/extensions/openssl.so/ext/sources/crypto/engine/tb_pkmeth.c +167 -0
  455. data/lib/extensions/openssl.so/ext/sources/crypto/engine/tb_rand.c +118 -0
  456. data/lib/extensions/openssl.so/ext/sources/crypto/engine/tb_rsa.c +118 -0
  457. data/lib/extensions/openssl.so/ext/sources/crypto/engine/tb_store.c +123 -0
  458. data/lib/extensions/openssl.so/ext/sources/crypto/err/err.c +1138 -0
  459. data/lib/extensions/openssl.so/ext/sources/crypto/err/err.h +386 -0
  460. data/lib/extensions/openssl.so/ext/sources/crypto/err/err_all.c +167 -0
  461. data/lib/extensions/openssl.so/ext/sources/crypto/err/err_prn.c +114 -0
  462. data/lib/extensions/openssl.so/ext/sources/crypto/evp/bio_b64.c +598 -0
  463. data/lib/extensions/openssl.so/ext/sources/crypto/evp/bio_enc.c +428 -0
  464. data/lib/extensions/openssl.so/ext/sources/crypto/evp/bio_md.c +275 -0
  465. data/lib/extensions/openssl.so/ext/sources/crypto/evp/bio_ok.c +624 -0
  466. data/lib/extensions/openssl.so/ext/sources/crypto/evp/c_all.c +90 -0
  467. data/lib/extensions/openssl.so/ext/sources/crypto/evp/c_allc.c +230 -0
  468. data/lib/extensions/openssl.so/ext/sources/crypto/evp/c_alld.c +114 -0
  469. data/lib/extensions/openssl.so/ext/sources/crypto/evp/digest.c +403 -0
  470. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_aes.c +1313 -0
  471. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_aes_cbc_hmac_sha1.c +406 -0
  472. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_bf.c +88 -0
  473. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_camellia.c +131 -0
  474. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_cast.c +90 -0
  475. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_des.c +224 -0
  476. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_des3.c +316 -0
  477. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_idea.c +118 -0
  478. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_null.c +104 -0
  479. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_old.c +125 -0
  480. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_rc2.c +238 -0
  481. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_rc4.c +137 -0
  482. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_rc4_hmac_md5.c +298 -0
  483. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_rc5.c +126 -0
  484. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_seed.c +83 -0
  485. data/lib/extensions/openssl.so/ext/sources/crypto/evp/e_xcbc_d.c +138 -0
  486. data/lib/extensions/openssl.so/ext/sources/crypto/evp/encode.c +445 -0
  487. data/lib/extensions/openssl.so/ext/sources/crypto/evp/evp.h +1402 -0
  488. data/lib/extensions/openssl.so/ext/sources/crypto/evp/evp_acnf.c +73 -0
  489. data/lib/extensions/openssl.so/ext/sources/crypto/evp/evp_enc.c +681 -0
  490. data/lib/extensions/openssl.so/ext/sources/crypto/evp/evp_err.c +234 -0
  491. data/lib/extensions/openssl.so/ext/sources/crypto/evp/evp_fips.c +113 -0
  492. data/lib/extensions/openssl.so/ext/sources/crypto/evp/evp_key.c +189 -0
  493. data/lib/extensions/openssl.so/ext/sources/crypto/evp/evp_lib.c +316 -0
  494. data/lib/extensions/openssl.so/ext/sources/crypto/evp/evp_locl.h +385 -0
  495. data/lib/extensions/openssl.so/ext/sources/crypto/evp/evp_pbe.c +316 -0
  496. data/lib/extensions/openssl.so/ext/sources/crypto/evp/evp_pkey.c +242 -0
  497. data/lib/extensions/openssl.so/ext/sources/crypto/evp/m_dss.c +101 -0
  498. data/lib/extensions/openssl.so/ext/sources/crypto/evp/m_dss1.c +103 -0
  499. data/lib/extensions/openssl.so/ext/sources/crypto/evp/m_ecdsa.c +151 -0
  500. data/lib/extensions/openssl.so/ext/sources/crypto/evp/m_md4.c +103 -0
  501. data/lib/extensions/openssl.so/ext/sources/crypto/evp/m_md5.c +102 -0
  502. data/lib/extensions/openssl.so/ext/sources/crypto/evp/m_mdc2.c +103 -0
  503. data/lib/extensions/openssl.so/ext/sources/crypto/evp/m_null.c +95 -0
  504. data/lib/extensions/openssl.so/ext/sources/crypto/evp/m_ripemd.c +102 -0
  505. data/lib/extensions/openssl.so/ext/sources/crypto/evp/m_sha.c +101 -0
  506. data/lib/extensions/openssl.so/ext/sources/crypto/evp/m_sha1.c +209 -0
  507. data/lib/extensions/openssl.so/ext/sources/crypto/evp/m_sigver.c +200 -0
  508. data/lib/extensions/openssl.so/ext/sources/crypto/evp/m_wp.c +43 -0
  509. data/lib/extensions/openssl.so/ext/sources/crypto/evp/names.c +206 -0
  510. data/lib/extensions/openssl.so/ext/sources/crypto/evp/p5_crpt.c +143 -0
  511. data/lib/extensions/openssl.so/ext/sources/crypto/evp/p5_crpt2.c +322 -0
  512. data/lib/extensions/openssl.so/ext/sources/crypto/evp/p_dec.c +87 -0
  513. data/lib/extensions/openssl.so/ext/sources/crypto/evp/p_enc.c +86 -0
  514. data/lib/extensions/openssl.so/ext/sources/crypto/evp/p_lib.c +469 -0
  515. data/lib/extensions/openssl.so/ext/sources/crypto/evp/p_open.c +128 -0
  516. data/lib/extensions/openssl.so/ext/sources/crypto/evp/p_seal.c +116 -0
  517. data/lib/extensions/openssl.so/ext/sources/crypto/evp/p_sign.c +139 -0
  518. data/lib/extensions/openssl.so/ext/sources/crypto/evp/p_verify.c +121 -0
  519. data/lib/extensions/openssl.so/ext/sources/crypto/evp/pmeth_fn.c +368 -0
  520. data/lib/extensions/openssl.so/ext/sources/crypto/evp/pmeth_gn.c +221 -0
  521. data/lib/extensions/openssl.so/ext/sources/crypto/evp/pmeth_lib.c +593 -0
  522. data/lib/extensions/openssl.so/ext/sources/crypto/ex_data.c +636 -0
  523. data/lib/extensions/openssl.so/ext/sources/crypto/fips_err.h +209 -0
  524. data/lib/extensions/openssl.so/ext/sources/crypto/fips_ers.c +7 -0
  525. data/lib/extensions/openssl.so/ext/sources/crypto/hmac/hm_ameth.c +167 -0
  526. data/lib/extensions/openssl.so/ext/sources/crypto/hmac/hm_pmeth.c +271 -0
  527. data/lib/extensions/openssl.so/ext/sources/crypto/hmac/hmac.c +251 -0
  528. data/lib/extensions/openssl.so/ext/sources/crypto/hmac/hmac.h +110 -0
  529. data/lib/extensions/openssl.so/ext/sources/crypto/idea/i_cbc.c +168 -0
  530. data/lib/extensions/openssl.so/ext/sources/crypto/idea/i_cfb64.c +122 -0
  531. data/lib/extensions/openssl.so/ext/sources/crypto/idea/i_ecb.c +85 -0
  532. data/lib/extensions/openssl.so/ext/sources/crypto/idea/i_ofb64.c +111 -0
  533. data/lib/extensions/openssl.so/ext/sources/crypto/idea/i_skey.c +164 -0
  534. data/lib/extensions/openssl.so/ext/sources/crypto/idea/idea.h +103 -0
  535. data/lib/extensions/openssl.so/ext/sources/crypto/idea/idea_lcl.h +215 -0
  536. data/lib/extensions/openssl.so/ext/sources/crypto/krb5/krb5_asn.c +167 -0
  537. data/lib/extensions/openssl.so/ext/sources/crypto/krb5/krb5_asn.h +256 -0
  538. data/lib/extensions/openssl.so/ext/sources/crypto/lhash/lh_stats.c +248 -0
  539. data/lib/extensions/openssl.so/ext/sources/crypto/lhash/lhash.c +475 -0
  540. data/lib/extensions/openssl.so/ext/sources/crypto/lhash/lhash.h +241 -0
  541. data/lib/extensions/openssl.so/ext/sources/crypto/md32_common.h +415 -0
  542. data/lib/extensions/openssl.so/ext/sources/crypto/md4/md4.h +120 -0
  543. data/lib/extensions/openssl.so/ext/sources/crypto/md4/md4_dgst.c +168 -0
  544. data/lib/extensions/openssl.so/ext/sources/crypto/md4/md4_locl.h +112 -0
  545. data/lib/extensions/openssl.so/ext/sources/crypto/md4/md4_one.c +97 -0
  546. data/lib/extensions/openssl.so/ext/sources/crypto/md5/md5.h +120 -0
  547. data/lib/extensions/openssl.so/ext/sources/crypto/md5/md5_dgst.c +185 -0
  548. data/lib/extensions/openssl.so/ext/sources/crypto/md5/md5_locl.h +130 -0
  549. data/lib/extensions/openssl.so/ext/sources/crypto/md5/md5_one.c +97 -0
  550. data/lib/extensions/openssl.so/ext/sources/crypto/mdc2/mdc2.h +98 -0
  551. data/lib/extensions/openssl.so/ext/sources/crypto/mdc2/mdc2_one.c +76 -0
  552. data/lib/extensions/openssl.so/ext/sources/crypto/mdc2/mdc2dgst.c +200 -0
  553. data/lib/extensions/openssl.so/ext/sources/crypto/mem.c +420 -0
  554. data/lib/extensions/openssl.so/ext/sources/crypto/mem_clr.c +77 -0
  555. data/lib/extensions/openssl.so/ext/sources/crypto/mem_dbg.c +874 -0
  556. data/lib/extensions/openssl.so/ext/sources/crypto/modes/cbc128.c +202 -0
  557. data/lib/extensions/openssl.so/ext/sources/crypto/modes/ccm128.c +441 -0
  558. data/lib/extensions/openssl.so/ext/sources/crypto/modes/cfb128.c +242 -0
  559. data/lib/extensions/openssl.so/ext/sources/crypto/modes/ctr128.c +252 -0
  560. data/lib/extensions/openssl.so/ext/sources/crypto/modes/cts128.c +465 -0
  561. data/lib/extensions/openssl.so/ext/sources/crypto/modes/gcm128.c +1757 -0
  562. data/lib/extensions/openssl.so/ext/sources/crypto/modes/modes.h +135 -0
  563. data/lib/extensions/openssl.so/ext/sources/crypto/modes/modes_lcl.h +131 -0
  564. data/lib/extensions/openssl.so/ext/sources/crypto/modes/ofb128.c +121 -0
  565. data/lib/extensions/openssl.so/ext/sources/crypto/modes/xts128.c +187 -0
  566. data/lib/extensions/openssl.so/ext/sources/crypto/o_dir.c +83 -0
  567. data/lib/extensions/openssl.so/ext/sources/crypto/o_dir.h +53 -0
  568. data/lib/extensions/openssl.so/ext/sources/crypto/o_fips.c +96 -0
  569. data/lib/extensions/openssl.so/ext/sources/crypto/o_init.c +82 -0
  570. data/lib/extensions/openssl.so/ext/sources/crypto/o_str.c +111 -0
  571. data/lib/extensions/openssl.so/ext/sources/crypto/o_str.h +68 -0
  572. data/lib/extensions/openssl.so/ext/sources/crypto/o_time.c +372 -0
  573. data/lib/extensions/openssl.so/ext/sources/crypto/o_time.h +67 -0
  574. data/lib/extensions/openssl.so/ext/sources/crypto/objects/o_names.c +372 -0
  575. data/lib/extensions/openssl.so/ext/sources/crypto/objects/obj_dat.c +810 -0
  576. data/lib/extensions/openssl.so/ext/sources/crypto/objects/obj_dat.h +5102 -0
  577. data/lib/extensions/openssl.so/ext/sources/crypto/objects/obj_err.c +102 -0
  578. data/lib/extensions/openssl.so/ext/sources/crypto/objects/obj_lib.c +129 -0
  579. data/lib/extensions/openssl.so/ext/sources/crypto/objects/obj_mac.h +4032 -0
  580. data/lib/extensions/openssl.so/ext/sources/crypto/objects/obj_xref.c +234 -0
  581. data/lib/extensions/openssl.so/ext/sources/crypto/objects/obj_xref.h +77 -0
  582. data/lib/extensions/openssl.so/ext/sources/crypto/objects/objects.h +1138 -0
  583. data/lib/extensions/openssl.so/ext/sources/crypto/ocsp/ocsp.h +623 -0
  584. data/lib/extensions/openssl.so/ext/sources/crypto/ocsp/ocsp_asn.c +182 -0
  585. data/lib/extensions/openssl.so/ext/sources/crypto/ocsp/ocsp_cl.c +371 -0
  586. data/lib/extensions/openssl.so/ext/sources/crypto/ocsp/ocsp_err.c +142 -0
  587. data/lib/extensions/openssl.so/ext/sources/crypto/ocsp/ocsp_ext.c +518 -0
  588. data/lib/extensions/openssl.so/ext/sources/crypto/ocsp/ocsp_ht.c +504 -0
  589. data/lib/extensions/openssl.so/ext/sources/crypto/ocsp/ocsp_lib.c +266 -0
  590. data/lib/extensions/openssl.so/ext/sources/crypto/ocsp/ocsp_prn.c +290 -0
  591. data/lib/extensions/openssl.so/ext/sources/crypto/ocsp/ocsp_srv.c +264 -0
  592. data/lib/extensions/openssl.so/ext/sources/crypto/ocsp/ocsp_vfy.c +446 -0
  593. data/lib/extensions/openssl.so/ext/sources/crypto/opensslconf.h +230 -0
  594. data/lib/extensions/openssl.so/ext/sources/crypto/opensslconf.h.in +154 -0
  595. data/lib/extensions/openssl.so/ext/sources/crypto/opensslv.h +89 -0
  596. data/lib/extensions/openssl.so/ext/sources/crypto/ossl_typ.h +202 -0
  597. data/lib/extensions/openssl.so/ext/sources/crypto/pem/pem.h +641 -0
  598. data/lib/extensions/openssl.so/ext/sources/crypto/pem/pem2.h +70 -0
  599. data/lib/extensions/openssl.so/ext/sources/crypto/pem/pem_all.c +296 -0
  600. data/lib/extensions/openssl.so/ext/sources/crypto/pem/pem_err.c +161 -0
  601. data/lib/extensions/openssl.so/ext/sources/crypto/pem/pem_info.c +405 -0
  602. data/lib/extensions/openssl.so/ext/sources/crypto/pem/pem_lib.c +852 -0
  603. data/lib/extensions/openssl.so/ext/sources/crypto/pem/pem_oth.c +86 -0
  604. data/lib/extensions/openssl.so/ext/sources/crypto/pem/pem_pk8.c +242 -0
  605. data/lib/extensions/openssl.so/ext/sources/crypto/pem/pem_pkey.c +242 -0
  606. data/lib/extensions/openssl.so/ext/sources/crypto/pem/pem_seal.c +189 -0
  607. data/lib/extensions/openssl.so/ext/sources/crypto/pem/pem_sign.c +102 -0
  608. data/lib/extensions/openssl.so/ext/sources/crypto/pem/pem_x509.c +68 -0
  609. data/lib/extensions/openssl.so/ext/sources/crypto/pem/pem_xaux.c +68 -0
  610. data/lib/extensions/openssl.so/ext/sources/crypto/pem/pvkfmt.c +950 -0
  611. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/p12_add.c +240 -0
  612. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/p12_asn.c +125 -0
  613. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/p12_attr.c +145 -0
  614. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/p12_crpt.c +112 -0
  615. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/p12_crt.c +359 -0
  616. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/p12_decr.c +184 -0
  617. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/p12_init.c +92 -0
  618. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/p12_key.c +219 -0
  619. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/p12_kiss.c +302 -0
  620. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/p12_mutl.c +190 -0
  621. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/p12_npas.c +225 -0
  622. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/p12_p8d.c +68 -0
  623. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/p12_p8e.c +97 -0
  624. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/p12_utl.c +146 -0
  625. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/pk12err.c +144 -0
  626. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs12/pkcs12.h +331 -0
  627. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs7/bio_pk7.c +69 -0
  628. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs7/pk7_asn1.c +247 -0
  629. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs7/pk7_attr.c +165 -0
  630. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs7/pk7_doit.c +1299 -0
  631. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs7/pk7_lib.c +665 -0
  632. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs7/pk7_mime.c +97 -0
  633. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs7/pk7_smime.c +606 -0
  634. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs7/pkcs7.h +499 -0
  635. data/lib/extensions/openssl.so/ext/sources/crypto/pkcs7/pkcs7err.c +187 -0
  636. data/lib/extensions/openssl.so/ext/sources/crypto/pqueue/pqueue.c +252 -0
  637. data/lib/extensions/openssl.so/ext/sources/crypto/pqueue/pqueue.h +94 -0
  638. data/lib/extensions/openssl.so/ext/sources/crypto/rand/md_rand.c +592 -0
  639. data/lib/extensions/openssl.so/ext/sources/crypto/rand/rand.h +149 -0
  640. data/lib/extensions/openssl.so/ext/sources/crypto/rand/rand_egd.c +303 -0
  641. data/lib/extensions/openssl.so/ext/sources/crypto/rand/rand_err.c +100 -0
  642. data/lib/extensions/openssl.so/ext/sources/crypto/rand/rand_lcl.h +158 -0
  643. data/lib/extensions/openssl.so/ext/sources/crypto/rand/rand_lib.c +295 -0
  644. data/lib/extensions/openssl.so/ext/sources/crypto/rand/rand_nw.c +183 -0
  645. data/lib/extensions/openssl.so/ext/sources/crypto/rand/rand_os2.c +153 -0
  646. data/lib/extensions/openssl.so/ext/sources/crypto/rand/rand_unix.c +431 -0
  647. data/lib/extensions/openssl.so/ext/sources/crypto/rand/rand_win.c +807 -0
  648. data/lib/extensions/openssl.so/ext/sources/crypto/rand/randfile.c +326 -0
  649. data/lib/extensions/openssl.so/ext/sources/crypto/rc2/rc2.h +103 -0
  650. data/lib/extensions/openssl.so/ext/sources/crypto/rc2/rc2_cbc.c +226 -0
  651. data/lib/extensions/openssl.so/ext/sources/crypto/rc2/rc2_ecb.c +88 -0
  652. data/lib/extensions/openssl.so/ext/sources/crypto/rc2/rc2_locl.h +156 -0
  653. data/lib/extensions/openssl.so/ext/sources/crypto/rc2/rc2_skey.c +153 -0
  654. data/lib/extensions/openssl.so/ext/sources/crypto/rc2/rc2cfb64.c +122 -0
  655. data/lib/extensions/openssl.so/ext/sources/crypto/rc2/rc2ofb64.c +111 -0
  656. data/lib/extensions/openssl.so/ext/sources/crypto/rc4/rc4.h +90 -0
  657. data/lib/extensions/openssl.so/ext/sources/crypto/rc4/rc4_enc.c +315 -0
  658. data/lib/extensions/openssl.so/ext/sources/crypto/rc4/rc4_locl.h +5 -0
  659. data/lib/extensions/openssl.so/ext/sources/crypto/rc4/rc4_skey.c +116 -0
  660. data/lib/extensions/openssl.so/ext/sources/crypto/rc4/rc4_utl.c +62 -0
  661. data/lib/extensions/openssl.so/ext/sources/crypto/ripemd/ripemd.h +107 -0
  662. data/lib/extensions/openssl.so/ext/sources/crypto/ripemd/rmd_dgst.c +292 -0
  663. data/lib/extensions/openssl.so/ext/sources/crypto/ripemd/rmd_locl.h +150 -0
  664. data/lib/extensions/openssl.so/ext/sources/crypto/ripemd/rmd_one.c +78 -0
  665. data/lib/extensions/openssl.so/ext/sources/crypto/ripemd/rmdconst.h +399 -0
  666. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa.h +582 -0
  667. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_ameth.c +698 -0
  668. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_asn1.c +121 -0
  669. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_chk.c +184 -0
  670. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_crpt.c +257 -0
  671. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_depr.c +101 -0
  672. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_eay.c +915 -0
  673. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_err.c +209 -0
  674. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_gen.c +234 -0
  675. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_lib.c +333 -0
  676. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_locl.h +4 -0
  677. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_none.c +98 -0
  678. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_null.c +151 -0
  679. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_oaep.c +235 -0
  680. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_pk1.c +224 -0
  681. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_pmeth.c +723 -0
  682. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_prn.c +93 -0
  683. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_pss.c +300 -0
  684. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_saos.c +150 -0
  685. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_sign.c +318 -0
  686. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_ssl.c +154 -0
  687. data/lib/extensions/openssl.so/ext/sources/crypto/rsa/rsa_x931.c +177 -0
  688. data/lib/extensions/openssl.so/ext/sources/crypto/seed/seed.c +336 -0
  689. data/lib/extensions/openssl.so/ext/sources/crypto/seed/seed.h +139 -0
  690. data/lib/extensions/openssl.so/ext/sources/crypto/seed/seed_cbc.c +63 -0
  691. data/lib/extensions/openssl.so/ext/sources/crypto/seed/seed_cfb.c +116 -0
  692. data/lib/extensions/openssl.so/ext/sources/crypto/seed/seed_ecb.c +60 -0
  693. data/lib/extensions/openssl.so/ext/sources/crypto/seed/seed_locl.h +116 -0
  694. data/lib/extensions/openssl.so/ext/sources/crypto/seed/seed_ofb.c +116 -0
  695. data/lib/extensions/openssl.so/ext/sources/crypto/sha/sha.h +214 -0
  696. data/lib/extensions/openssl.so/ext/sources/crypto/sha/sha1_one.c +78 -0
  697. data/lib/extensions/openssl.so/ext/sources/crypto/sha/sha1dgst.c +75 -0
  698. data/lib/extensions/openssl.so/ext/sources/crypto/sha/sha256.c +282 -0
  699. data/lib/extensions/openssl.so/ext/sources/crypto/sha/sha512.c +597 -0
  700. data/lib/extensions/openssl.so/ext/sources/crypto/sha/sha_dgst.c +75 -0
  701. data/lib/extensions/openssl.so/ext/sources/crypto/sha/sha_locl.h +441 -0
  702. data/lib/extensions/openssl.so/ext/sources/crypto/sha/sha_one.c +78 -0
  703. data/lib/extensions/openssl.so/ext/sources/crypto/srp/srp.h +172 -0
  704. data/lib/extensions/openssl.so/ext/sources/crypto/srp/srp_grps.h +517 -0
  705. data/lib/extensions/openssl.so/ext/sources/crypto/srp/srp_lcl.h +83 -0
  706. data/lib/extensions/openssl.so/ext/sources/crypto/srp/srp_lib.c +357 -0
  707. data/lib/extensions/openssl.so/ext/sources/crypto/srp/srp_vfy.c +657 -0
  708. data/lib/extensions/openssl.so/ext/sources/crypto/stack/safestack.h +2663 -0
  709. data/lib/extensions/openssl.so/ext/sources/crypto/stack/stack.c +334 -0
  710. data/lib/extensions/openssl.so/ext/sources/crypto/stack/stack.h +108 -0
  711. data/lib/extensions/openssl.so/ext/sources/crypto/symhacks.h +477 -0
  712. data/lib/extensions/openssl.so/ext/sources/crypto/ts/ts.h +858 -0
  713. data/lib/extensions/openssl.so/ext/sources/crypto/ts/ts_asn1.c +322 -0
  714. data/lib/extensions/openssl.so/ext/sources/crypto/ts/ts_conf.c +507 -0
  715. data/lib/extensions/openssl.so/ext/sources/crypto/ts/ts_err.c +179 -0
  716. data/lib/extensions/openssl.so/ext/sources/crypto/ts/ts_lib.c +145 -0
  717. data/lib/extensions/openssl.so/ext/sources/crypto/ts/ts_req_print.c +102 -0
  718. data/lib/extensions/openssl.so/ext/sources/crypto/ts/ts_req_utils.c +234 -0
  719. data/lib/extensions/openssl.so/ext/sources/crypto/ts/ts_rsp_print.c +287 -0
  720. data/lib/extensions/openssl.so/ext/sources/crypto/ts/ts_rsp_sign.c +1020 -0
  721. data/lib/extensions/openssl.so/ext/sources/crypto/ts/ts_rsp_utils.c +409 -0
  722. data/lib/extensions/openssl.so/ext/sources/crypto/ts/ts_rsp_verify.c +728 -0
  723. data/lib/extensions/openssl.so/ext/sources/crypto/ts/ts_verify_ctx.c +159 -0
  724. data/lib/extensions/openssl.so/ext/sources/crypto/txt_db/txt_db.c +388 -0
  725. data/lib/extensions/openssl.so/ext/sources/crypto/txt_db/txt_db.h +112 -0
  726. data/lib/extensions/openssl.so/ext/sources/crypto/ui/ui.h +383 -0
  727. data/lib/extensions/openssl.so/ext/sources/crypto/ui/ui_compat.c +67 -0
  728. data/lib/extensions/openssl.so/ext/sources/crypto/ui/ui_compat.h +83 -0
  729. data/lib/extensions/openssl.so/ext/sources/crypto/ui/ui_err.c +112 -0
  730. data/lib/extensions/openssl.so/ext/sources/crypto/ui/ui_lib.c +924 -0
  731. data/lib/extensions/openssl.so/ext/sources/crypto/ui/ui_locl.h +153 -0
  732. data/lib/extensions/openssl.so/ext/sources/crypto/ui/ui_openssl.c +712 -0
  733. data/lib/extensions/openssl.so/ext/sources/crypto/ui/ui_util.c +91 -0
  734. data/lib/extensions/openssl.so/ext/sources/crypto/uid.c +89 -0
  735. data/lib/extensions/openssl.so/ext/sources/crypto/vms_rms.h +51 -0
  736. data/lib/extensions/openssl.so/ext/sources/crypto/whrlpool/whrlpool.h +41 -0
  737. data/lib/extensions/openssl.so/ext/sources/crypto/whrlpool/wp_block.c +655 -0
  738. data/lib/extensions/openssl.so/ext/sources/crypto/whrlpool/wp_dgst.c +265 -0
  739. data/lib/extensions/openssl.so/ext/sources/crypto/whrlpool/wp_locl.h +3 -0
  740. data/lib/extensions/openssl.so/ext/sources/crypto/x509/by_dir.c +482 -0
  741. data/lib/extensions/openssl.so/ext/sources/crypto/x509/by_file.c +300 -0
  742. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509.h +1297 -0
  743. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_att.c +359 -0
  744. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_cmp.c +344 -0
  745. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_d2.c +107 -0
  746. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_def.c +81 -0
  747. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_err.c +164 -0
  748. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_ext.c +210 -0
  749. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_lu.c +716 -0
  750. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_obj.c +226 -0
  751. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_r2x.c +114 -0
  752. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_req.c +316 -0
  753. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_set.c +150 -0
  754. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_trs.c +288 -0
  755. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_txt.c +193 -0
  756. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_v3.c +274 -0
  757. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_vfy.c +2214 -0
  758. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_vfy.h +567 -0
  759. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509_vpm.c +438 -0
  760. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509cset.c +170 -0
  761. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509name.c +383 -0
  762. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509rset.c +83 -0
  763. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509spki.c +121 -0
  764. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x509type.c +131 -0
  765. data/lib/extensions/openssl.so/ext/sources/crypto/x509/x_all.c +535 -0
  766. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/ext_dat.h +132 -0
  767. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/pcy_cache.c +286 -0
  768. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/pcy_data.c +135 -0
  769. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/pcy_int.h +212 -0
  770. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/pcy_lib.c +167 -0
  771. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/pcy_map.c +132 -0
  772. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/pcy_node.c +197 -0
  773. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/pcy_tree.c +872 -0
  774. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_addr.c +1338 -0
  775. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_akey.c +208 -0
  776. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_akeya.c +72 -0
  777. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_alt.c +614 -0
  778. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_asid.c +890 -0
  779. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_bcons.c +124 -0
  780. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_bitst.c +141 -0
  781. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_conf.c +525 -0
  782. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_cpols.c +457 -0
  783. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_crld.c +616 -0
  784. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_enum.c +97 -0
  785. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_extku.c +144 -0
  786. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_genn.c +252 -0
  787. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_ia5.c +116 -0
  788. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_info.c +193 -0
  789. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_int.c +89 -0
  790. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_lib.c +309 -0
  791. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_ncons.c +505 -0
  792. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_ocsp.c +289 -0
  793. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_pci.c +328 -0
  794. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_pcia.c +55 -0
  795. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_pcons.c +140 -0
  796. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_pku.c +108 -0
  797. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_pmaps.c +155 -0
  798. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_prn.c +234 -0
  799. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_purp.c +767 -0
  800. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_skey.c +145 -0
  801. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_sxnet.c +262 -0
  802. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3_utl.c +874 -0
  803. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/v3err.c +226 -0
  804. data/lib/extensions/openssl.so/ext/sources/crypto/x509v3/x509v3.h +1007 -0
  805. data/lib/extensions/openssl.so/ext/sources/e_os.h +735 -0
  806. data/lib/extensions/openssl.so/ext/sources/e_os2.h +315 -0
  807. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/e_gost_err.c +212 -0
  808. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/e_gost_err.h +156 -0
  809. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost2001.c +343 -0
  810. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost2001_keyx.c +308 -0
  811. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost2001_keyx.h +10 -0
  812. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost89.c +409 -0
  813. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost89.h +96 -0
  814. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost94_keyx.c +291 -0
  815. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost_ameth.c +945 -0
  816. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost_asn1.c +55 -0
  817. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost_crypt.c +617 -0
  818. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost_ctl.c +89 -0
  819. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost_eng.c +273 -0
  820. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost_keywrap.c +109 -0
  821. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost_keywrap.h +56 -0
  822. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost_lcl.h +221 -0
  823. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost_md.c +75 -0
  824. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost_params.c +198 -0
  825. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost_params.h +34 -0
  826. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost_pmeth.c +628 -0
  827. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gost_sign.c +321 -0
  828. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gosthash.c +255 -0
  829. data/lib/extensions/openssl.so/ext/sources/engines/ccgost/gosthash.h +48 -0
  830. data/lib/extensions/openssl.so/ext/sources/engines/e_4758cca.c +987 -0
  831. data/lib/extensions/openssl.so/ext/sources/engines/e_4758cca_err.c +153 -0
  832. data/lib/extensions/openssl.so/ext/sources/engines/e_4758cca_err.h +97 -0
  833. data/lib/extensions/openssl.so/ext/sources/engines/e_aep.c +1139 -0
  834. data/lib/extensions/openssl.so/ext/sources/engines/e_aep_err.c +161 -0
  835. data/lib/extensions/openssl.so/ext/sources/engines/e_aep_err.h +105 -0
  836. data/lib/extensions/openssl.so/ext/sources/engines/e_atalla.c +607 -0
  837. data/lib/extensions/openssl.so/ext/sources/engines/e_atalla_err.c +149 -0
  838. data/lib/extensions/openssl.so/ext/sources/engines/e_atalla_err.h +93 -0
  839. data/lib/extensions/openssl.so/ext/sources/engines/e_capi.c +1913 -0
  840. data/lib/extensions/openssl.so/ext/sources/engines/e_capi_err.c +184 -0
  841. data/lib/extensions/openssl.so/ext/sources/engines/e_capi_err.h +128 -0
  842. data/lib/extensions/openssl.so/ext/sources/engines/e_chil.c +1356 -0
  843. data/lib/extensions/openssl.so/ext/sources/engines/e_chil_err.c +160 -0
  844. data/lib/extensions/openssl.so/ext/sources/engines/e_chil_err.h +104 -0
  845. data/lib/extensions/openssl.so/ext/sources/engines/e_cswift.c +1129 -0
  846. data/lib/extensions/openssl.so/ext/sources/engines/e_cswift_err.c +154 -0
  847. data/lib/extensions/openssl.so/ext/sources/engines/e_cswift_err.h +98 -0
  848. data/lib/extensions/openssl.so/ext/sources/engines/e_gmp.c +480 -0
  849. data/lib/extensions/openssl.so/ext/sources/engines/e_gmp_err.c +141 -0
  850. data/lib/extensions/openssl.so/ext/sources/engines/e_gmp_err.h +85 -0
  851. data/lib/extensions/openssl.so/ext/sources/engines/e_nuron.c +434 -0
  852. data/lib/extensions/openssl.so/ext/sources/engines/e_nuron_err.c +146 -0
  853. data/lib/extensions/openssl.so/ext/sources/engines/e_nuron_err.h +90 -0
  854. data/lib/extensions/openssl.so/ext/sources/engines/e_padlock.c +1239 -0
  855. data/lib/extensions/openssl.so/ext/sources/engines/e_sureware.c +1055 -0
  856. data/lib/extensions/openssl.so/ext/sources/engines/e_sureware_err.c +158 -0
  857. data/lib/extensions/openssl.so/ext/sources/engines/e_sureware_err.h +102 -0
  858. data/lib/extensions/openssl.so/ext/sources/engines/e_ubsec.c +1069 -0
  859. data/lib/extensions/openssl.so/ext/sources/engines/e_ubsec_err.c +157 -0
  860. data/lib/extensions/openssl.so/ext/sources/engines/e_ubsec_err.h +101 -0
  861. data/lib/extensions/openssl.so/ext/sources/engines/vendor_defns/aep.h +178 -0
  862. data/lib/extensions/openssl.so/ext/sources/engines/vendor_defns/atalla.h +48 -0
  863. data/lib/extensions/openssl.so/ext/sources/engines/vendor_defns/cswift.h +234 -0
  864. data/lib/extensions/openssl.so/ext/sources/engines/vendor_defns/hw_4758_cca.h +149 -0
  865. data/lib/extensions/openssl.so/ext/sources/engines/vendor_defns/hw_ubsec.h +100 -0
  866. data/lib/extensions/openssl.so/ext/sources/engines/vendor_defns/hwcryptohook.h +486 -0
  867. data/lib/extensions/openssl.so/ext/sources/engines/vendor_defns/sureware.h +239 -0
  868. data/lib/extensions/openssl.so/ext/sources/include/openssl/aes.h +1 -0
  869. data/lib/extensions/openssl.so/ext/sources/include/openssl/asn1.h +1 -0
  870. data/lib/extensions/openssl.so/ext/sources/include/openssl/asn1_mac.h +1 -0
  871. data/lib/extensions/openssl.so/ext/sources/include/openssl/asn1t.h +1 -0
  872. data/lib/extensions/openssl.so/ext/sources/include/openssl/bio.h +1 -0
  873. data/lib/extensions/openssl.so/ext/sources/include/openssl/blowfish.h +1 -0
  874. data/lib/extensions/openssl.so/ext/sources/include/openssl/bn.h +1 -0
  875. data/lib/extensions/openssl.so/ext/sources/include/openssl/buffer.h +1 -0
  876. data/lib/extensions/openssl.so/ext/sources/include/openssl/camellia.h +1 -0
  877. data/lib/extensions/openssl.so/ext/sources/include/openssl/cast.h +1 -0
  878. data/lib/extensions/openssl.so/ext/sources/include/openssl/cmac.h +1 -0
  879. data/lib/extensions/openssl.so/ext/sources/include/openssl/cms.h +1 -0
  880. data/lib/extensions/openssl.so/ext/sources/include/openssl/comp.h +1 -0
  881. data/lib/extensions/openssl.so/ext/sources/include/openssl/conf.h +1 -0
  882. data/lib/extensions/openssl.so/ext/sources/include/openssl/conf_api.h +1 -0
  883. data/lib/extensions/openssl.so/ext/sources/include/openssl/crypto.h +1 -0
  884. data/lib/extensions/openssl.so/ext/sources/include/openssl/des.h +1 -0
  885. data/lib/extensions/openssl.so/ext/sources/include/openssl/des_old.h +1 -0
  886. data/lib/extensions/openssl.so/ext/sources/include/openssl/dh.h +1 -0
  887. data/lib/extensions/openssl.so/ext/sources/include/openssl/dsa.h +1 -0
  888. data/lib/extensions/openssl.so/ext/sources/include/openssl/dso.h +1 -0
  889. data/lib/extensions/openssl.so/ext/sources/include/openssl/dtls1.h +1 -0
  890. data/lib/extensions/openssl.so/ext/sources/include/openssl/e_os2.h +1 -0
  891. data/lib/extensions/openssl.so/ext/sources/include/openssl/ebcdic.h +1 -0
  892. data/lib/extensions/openssl.so/ext/sources/include/openssl/ec.h +1 -0
  893. data/lib/extensions/openssl.so/ext/sources/include/openssl/ecdh.h +1 -0
  894. data/lib/extensions/openssl.so/ext/sources/include/openssl/ecdsa.h +1 -0
  895. data/lib/extensions/openssl.so/ext/sources/include/openssl/engine.h +1 -0
  896. data/lib/extensions/openssl.so/ext/sources/include/openssl/err.h +1 -0
  897. data/lib/extensions/openssl.so/ext/sources/include/openssl/evp.h +1 -0
  898. data/lib/extensions/openssl.so/ext/sources/include/openssl/hmac.h +1 -0
  899. data/lib/extensions/openssl.so/ext/sources/include/openssl/idea.h +1 -0
  900. data/lib/extensions/openssl.so/ext/sources/include/openssl/krb5_asn.h +1 -0
  901. data/lib/extensions/openssl.so/ext/sources/include/openssl/kssl.h +1 -0
  902. data/lib/extensions/openssl.so/ext/sources/include/openssl/lhash.h +1 -0
  903. data/lib/extensions/openssl.so/ext/sources/include/openssl/md4.h +1 -0
  904. data/lib/extensions/openssl.so/ext/sources/include/openssl/md5.h +1 -0
  905. data/lib/extensions/openssl.so/ext/sources/include/openssl/mdc2.h +1 -0
  906. data/lib/extensions/openssl.so/ext/sources/include/openssl/modes.h +1 -0
  907. data/lib/extensions/openssl.so/ext/sources/include/openssl/obj_mac.h +1 -0
  908. data/lib/extensions/openssl.so/ext/sources/include/openssl/objects.h +1 -0
  909. data/lib/extensions/openssl.so/ext/sources/include/openssl/ocsp.h +1 -0
  910. data/lib/extensions/openssl.so/ext/sources/include/openssl/opensslconf.h +1 -0
  911. data/lib/extensions/openssl.so/ext/sources/include/openssl/opensslv.h +1 -0
  912. data/lib/extensions/openssl.so/ext/sources/include/openssl/ossl_typ.h +1 -0
  913. data/lib/extensions/openssl.so/ext/sources/include/openssl/pem.h +1 -0
  914. data/lib/extensions/openssl.so/ext/sources/include/openssl/pem2.h +1 -0
  915. data/lib/extensions/openssl.so/ext/sources/include/openssl/pkcs12.h +1 -0
  916. data/lib/extensions/openssl.so/ext/sources/include/openssl/pkcs7.h +1 -0
  917. data/lib/extensions/openssl.so/ext/sources/include/openssl/pqueue.h +1 -0
  918. data/lib/extensions/openssl.so/ext/sources/include/openssl/rand.h +1 -0
  919. data/lib/extensions/openssl.so/ext/sources/include/openssl/rc2.h +1 -0
  920. data/lib/extensions/openssl.so/ext/sources/include/openssl/rc4.h +1 -0
  921. data/lib/extensions/openssl.so/ext/sources/include/openssl/ripemd.h +1 -0
  922. data/lib/extensions/openssl.so/ext/sources/include/openssl/rsa.h +1 -0
  923. data/lib/extensions/openssl.so/ext/sources/include/openssl/safestack.h +1 -0
  924. data/lib/extensions/openssl.so/ext/sources/include/openssl/seed.h +1 -0
  925. data/lib/extensions/openssl.so/ext/sources/include/openssl/sha.h +1 -0
  926. data/lib/extensions/openssl.so/ext/sources/include/openssl/srp.h +1 -0
  927. data/lib/extensions/openssl.so/ext/sources/include/openssl/srtp.h +1 -0
  928. data/lib/extensions/openssl.so/ext/sources/include/openssl/ssl.h +1 -0
  929. data/lib/extensions/openssl.so/ext/sources/include/openssl/ssl2.h +1 -0
  930. data/lib/extensions/openssl.so/ext/sources/include/openssl/ssl23.h +1 -0
  931. data/lib/extensions/openssl.so/ext/sources/include/openssl/ssl3.h +1 -0
  932. data/lib/extensions/openssl.so/ext/sources/include/openssl/stack.h +1 -0
  933. data/lib/extensions/openssl.so/ext/sources/include/openssl/store.h +1 -0
  934. data/lib/extensions/openssl.so/ext/sources/include/openssl/symhacks.h +1 -0
  935. data/lib/extensions/openssl.so/ext/sources/include/openssl/tls1.h +1 -0
  936. data/lib/extensions/openssl.so/ext/sources/include/openssl/ts.h +1 -0
  937. data/lib/extensions/openssl.so/ext/sources/include/openssl/txt_db.h +1 -0
  938. data/lib/extensions/openssl.so/ext/sources/include/openssl/ui.h +1 -0
  939. data/lib/extensions/openssl.so/ext/sources/include/openssl/ui_compat.h +1 -0
  940. data/lib/extensions/openssl.so/ext/sources/include/openssl/whrlpool.h +1 -0
  941. data/lib/extensions/openssl.so/ext/sources/include/openssl/x509.h +1 -0
  942. data/lib/extensions/openssl.so/ext/sources/include/openssl/x509_vfy.h +1 -0
  943. data/lib/extensions/openssl.so/ext/sources/include/openssl/x509v3.h +1 -0
  944. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/assert.h +50 -0
  945. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/conio.h +40 -0
  946. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/ctype.h +90 -0
  947. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/direct.h +22 -0
  948. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/errno.h +158 -0
  949. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/fcntl.h +56 -0
  950. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/float.h +330 -0
  951. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/io.h +63 -0
  952. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/limits.h +95 -0
  953. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/malloc.h +59 -0
  954. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/math.h +95 -0
  955. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/memory.h +44 -0
  956. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/process.h +59 -0
  957. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/setjmp.h +69 -0
  958. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/signal.h +53 -0
  959. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/stdarg.h +78 -0
  960. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/stddef.h +88 -0
  961. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/stdio.h +182 -0
  962. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/stdlib.h +142 -0
  963. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/string.h +109 -0
  964. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/strings.h +3 -0
  965. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/sys/locking.h +31 -0
  966. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/sys/stat.h +92 -0
  967. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/sys/time.h +20 -0
  968. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/sys/timeb.h +58 -0
  969. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/sys/types.h +35 -0
  970. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/sys/utime.h +21 -0
  971. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/time.h +81 -0
  972. data/lib/extensions/openssl.so/ext/sources/include/wcecompat/winsock_extras.h +46 -0
  973. data/lib/extensions/openssl.so/ext/sources/ssl/bio_ssl.c +605 -0
  974. data/lib/extensions/openssl.so/ext/sources/ssl/d1_both.c +1591 -0
  975. data/lib/extensions/openssl.so/ext/sources/ssl/d1_clnt.c +1710 -0
  976. data/lib/extensions/openssl.so/ext/sources/ssl/d1_enc.c +289 -0
  977. data/lib/extensions/openssl.so/ext/sources/ssl/d1_lib.c +482 -0
  978. data/lib/extensions/openssl.so/ext/sources/ssl/d1_meth.c +77 -0
  979. data/lib/extensions/openssl.so/ext/sources/ssl/d1_pkt.c +1876 -0
  980. data/lib/extensions/openssl.so/ext/sources/ssl/d1_srtp.c +493 -0
  981. data/lib/extensions/openssl.so/ext/sources/ssl/d1_srvr.c +1711 -0
  982. data/lib/extensions/openssl.so/ext/sources/ssl/dtls1.h +283 -0
  983. data/lib/extensions/openssl.so/ext/sources/ssl/kssl.c +2221 -0
  984. data/lib/extensions/openssl.so/ext/sources/ssl/kssl.h +183 -0
  985. data/lib/extensions/openssl.so/ext/sources/ssl/kssl_lcl.h +87 -0
  986. data/lib/extensions/openssl.so/ext/sources/ssl/s23_clnt.c +779 -0
  987. data/lib/extensions/openssl.so/ext/sources/ssl/s23_lib.c +187 -0
  988. data/lib/extensions/openssl.so/ext/sources/ssl/s23_meth.c +92 -0
  989. data/lib/extensions/openssl.so/ext/sources/ssl/s23_pkt.c +117 -0
  990. data/lib/extensions/openssl.so/ext/sources/ssl/s23_srvr.c +638 -0
  991. data/lib/extensions/openssl.so/ext/sources/ssl/s2_clnt.c +1125 -0
  992. data/lib/extensions/openssl.so/ext/sources/ssl/s2_enc.c +193 -0
  993. data/lib/extensions/openssl.so/ext/sources/ssl/s2_lib.c +556 -0
  994. data/lib/extensions/openssl.so/ext/sources/ssl/s2_meth.c +84 -0
  995. data/lib/extensions/openssl.so/ext/sources/ssl/s2_pkt.c +744 -0
  996. data/lib/extensions/openssl.so/ext/sources/ssl/s2_srvr.c +1142 -0
  997. data/lib/extensions/openssl.so/ext/sources/ssl/s3_both.c +843 -0
  998. data/lib/extensions/openssl.so/ext/sources/ssl/s3_clnt.c +3371 -0
  999. data/lib/extensions/openssl.so/ext/sources/ssl/s3_enc.c +861 -0
  1000. data/lib/extensions/openssl.so/ext/sources/ssl/s3_lib.c +4282 -0
  1001. data/lib/extensions/openssl.so/ext/sources/ssl/s3_meth.c +77 -0
  1002. data/lib/extensions/openssl.so/ext/sources/ssl/s3_pkt.c +1518 -0
  1003. data/lib/extensions/openssl.so/ext/sources/ssl/s3_srvr.c +3586 -0
  1004. data/lib/extensions/openssl.so/ext/sources/ssl/srtp.h +145 -0
  1005. data/lib/extensions/openssl.so/ext/sources/ssl/ssl.h +2573 -0
  1006. data/lib/extensions/openssl.so/ext/sources/ssl/ssl2.h +272 -0
  1007. data/lib/extensions/openssl.so/ext/sources/ssl/ssl23.h +83 -0
  1008. data/lib/extensions/openssl.so/ext/sources/ssl/ssl3.h +678 -0
  1009. data/lib/extensions/openssl.so/ext/sources/ssl/ssl_algs.c +149 -0
  1010. data/lib/extensions/openssl.so/ext/sources/ssl/ssl_asn1.c +642 -0
  1011. data/lib/extensions/openssl.so/ext/sources/ssl/ssl_cert.c +853 -0
  1012. data/lib/extensions/openssl.so/ext/sources/ssl/ssl_ciph.c +1852 -0
  1013. data/lib/extensions/openssl.so/ext/sources/ssl/ssl_err.c +609 -0
  1014. data/lib/extensions/openssl.so/ext/sources/ssl/ssl_err2.c +70 -0
  1015. data/lib/extensions/openssl.so/ext/sources/ssl/ssl_lib.c +3251 -0
  1016. data/lib/extensions/openssl.so/ext/sources/ssl/ssl_locl.h +1134 -0
  1017. data/lib/extensions/openssl.so/ext/sources/ssl/ssl_rsa.c +779 -0
  1018. data/lib/extensions/openssl.so/ext/sources/ssl/ssl_sess.c +1159 -0
  1019. data/lib/extensions/openssl.so/ext/sources/ssl/ssl_stat.c +567 -0
  1020. data/lib/extensions/openssl.so/ext/sources/ssl/ssl_txt.c +248 -0
  1021. data/lib/extensions/openssl.so/ext/sources/ssl/t1_clnt.c +92 -0
  1022. data/lib/extensions/openssl.so/ext/sources/ssl/t1_enc.c +1256 -0
  1023. data/lib/extensions/openssl.so/ext/sources/ssl/t1_lib.c +2578 -0
  1024. data/lib/extensions/openssl.so/ext/sources/ssl/t1_meth.c +88 -0
  1025. data/lib/extensions/openssl.so/ext/sources/ssl/t1_reneg.c +292 -0
  1026. data/lib/extensions/openssl.so/ext/sources/ssl/t1_srvr.c +93 -0
  1027. data/lib/extensions/openssl.so/ext/sources/ssl/tls1.h +735 -0
  1028. data/lib/extensions/openssl.so/ext/sources/ssl/tls_srp.c +506 -0
  1029. data/lib/extensions/openssl.so/ext/win32/UPDATE +15 -0
  1030. data/lib/extensions/openssl.so/ext/win32/bin/libeay32.dll +0 -0
  1031. data/lib/extensions/openssl.so/ext/win32/bin/ssleay32.dll +0 -0
  1032. data/lib/extensions/openssl.so/ext/win32/include/openssl/aes.h +147 -0
  1033. data/lib/extensions/openssl.so/ext/win32/include/openssl/applink.c +94 -0
  1034. data/lib/extensions/openssl.so/ext/win32/include/openssl/asn1.h +1404 -0
  1035. data/lib/extensions/openssl.so/ext/win32/include/openssl/asn1_mac.h +578 -0
  1036. data/lib/extensions/openssl.so/ext/win32/include/openssl/asn1t.h +960 -0
  1037. data/lib/extensions/openssl.so/ext/win32/include/openssl/bio.h +847 -0
  1038. data/lib/extensions/openssl.so/ext/win32/include/openssl/blowfish.h +129 -0
  1039. data/lib/extensions/openssl.so/ext/win32/include/openssl/bn.h +891 -0
  1040. data/lib/extensions/openssl.so/ext/win32/include/openssl/buffer.h +119 -0
  1041. data/lib/extensions/openssl.so/ext/win32/include/openssl/camellia.h +130 -0
  1042. data/lib/extensions/openssl.so/ext/win32/include/openssl/cast.h +107 -0
  1043. data/lib/extensions/openssl.so/ext/win32/include/openssl/cmac.h +82 -0
  1044. data/lib/extensions/openssl.so/ext/win32/include/openssl/cms.h +501 -0
  1045. data/lib/extensions/openssl.so/ext/win32/include/openssl/comp.h +80 -0
  1046. data/lib/extensions/openssl.so/ext/win32/include/openssl/conf.h +263 -0
  1047. data/lib/extensions/openssl.so/ext/win32/include/openssl/conf_api.h +89 -0
  1048. data/lib/extensions/openssl.so/ext/win32/include/openssl/crypto.h +604 -0
  1049. data/lib/extensions/openssl.so/ext/win32/include/openssl/des.h +248 -0
  1050. data/lib/extensions/openssl.so/ext/win32/include/openssl/des_old.h +446 -0
  1051. data/lib/extensions/openssl.so/ext/win32/include/openssl/dh.h +280 -0
  1052. data/lib/extensions/openssl.so/ext/win32/include/openssl/dsa.h +327 -0
  1053. data/lib/extensions/openssl.so/ext/win32/include/openssl/dso.h +409 -0
  1054. data/lib/extensions/openssl.so/ext/win32/include/openssl/dtls1.h +283 -0
  1055. data/lib/extensions/openssl.so/ext/win32/include/openssl/e_os2.h +315 -0
  1056. data/lib/extensions/openssl.so/ext/win32/include/openssl/ebcdic.h +19 -0
  1057. data/lib/extensions/openssl.so/ext/win32/include/openssl/ec.h +1159 -0
  1058. data/lib/extensions/openssl.so/ext/win32/include/openssl/ecdh.h +125 -0
  1059. data/lib/extensions/openssl.so/ext/win32/include/openssl/ecdsa.h +260 -0
  1060. data/lib/extensions/openssl.so/ext/win32/include/openssl/engine.h +842 -0
  1061. data/lib/extensions/openssl.so/ext/win32/include/openssl/err.h +386 -0
  1062. data/lib/extensions/openssl.so/ext/win32/include/openssl/evp.h +1402 -0
  1063. data/lib/extensions/openssl.so/ext/win32/include/openssl/hmac.h +110 -0
  1064. data/lib/extensions/openssl.so/ext/win32/include/openssl/idea.h +103 -0
  1065. data/lib/extensions/openssl.so/ext/win32/include/openssl/krb5_asn.h +256 -0
  1066. data/lib/extensions/openssl.so/ext/win32/include/openssl/kssl.h +183 -0
  1067. data/lib/extensions/openssl.so/ext/win32/include/openssl/lhash.h +241 -0
  1068. data/lib/extensions/openssl.so/ext/win32/include/openssl/md4.h +120 -0
  1069. data/lib/extensions/openssl.so/ext/win32/include/openssl/md5.h +120 -0
  1070. data/lib/extensions/openssl.so/ext/win32/include/openssl/mdc2.h +98 -0
  1071. data/lib/extensions/openssl.so/ext/win32/include/openssl/modes.h +135 -0
  1072. data/lib/extensions/openssl.so/ext/win32/include/openssl/obj_mac.h +4032 -0
  1073. data/lib/extensions/openssl.so/ext/win32/include/openssl/objects.h +1138 -0
  1074. data/lib/extensions/openssl.so/ext/win32/include/openssl/ocsp.h +623 -0
  1075. data/lib/extensions/openssl.so/ext/win32/include/openssl/opensslconf.h +235 -0
  1076. data/lib/extensions/openssl.so/ext/win32/include/openssl/opensslv.h +89 -0
  1077. data/lib/extensions/openssl.so/ext/win32/include/openssl/ossl_typ.h +202 -0
  1078. data/lib/extensions/openssl.so/ext/win32/include/openssl/pem.h +641 -0
  1079. data/lib/extensions/openssl.so/ext/win32/include/openssl/pem2.h +70 -0
  1080. data/lib/extensions/openssl.so/ext/win32/include/openssl/pkcs12.h +331 -0
  1081. data/lib/extensions/openssl.so/ext/win32/include/openssl/pkcs7.h +499 -0
  1082. data/lib/extensions/openssl.so/ext/win32/include/openssl/pqueue.h +94 -0
  1083. data/lib/extensions/openssl.so/ext/win32/include/openssl/rand.h +149 -0
  1084. data/lib/extensions/openssl.so/ext/win32/include/openssl/rc2.h +103 -0
  1085. data/lib/extensions/openssl.so/ext/win32/include/openssl/rc4.h +90 -0
  1086. data/lib/extensions/openssl.so/ext/win32/include/openssl/ripemd.h +107 -0
  1087. data/lib/extensions/openssl.so/ext/win32/include/openssl/rsa.h +582 -0
  1088. data/lib/extensions/openssl.so/ext/win32/include/openssl/safestack.h +2663 -0
  1089. data/lib/extensions/openssl.so/ext/win32/include/openssl/seed.h +139 -0
  1090. data/lib/extensions/openssl.so/ext/win32/include/openssl/sha.h +214 -0
  1091. data/lib/extensions/openssl.so/ext/win32/include/openssl/srp.h +172 -0
  1092. data/lib/extensions/openssl.so/ext/win32/include/openssl/srtp.h +145 -0
  1093. data/lib/extensions/openssl.so/ext/win32/include/openssl/ssl.h +2572 -0
  1094. data/lib/extensions/openssl.so/ext/win32/include/openssl/ssl2.h +272 -0
  1095. data/lib/extensions/openssl.so/ext/win32/include/openssl/ssl23.h +83 -0
  1096. data/lib/extensions/openssl.so/ext/win32/include/openssl/ssl3.h +678 -0
  1097. data/lib/extensions/openssl.so/ext/win32/include/openssl/stack.h +108 -0
  1098. data/lib/extensions/openssl.so/ext/win32/include/openssl/symhacks.h +477 -0
  1099. data/lib/extensions/openssl.so/ext/win32/include/openssl/tls1.h +735 -0
  1100. data/lib/extensions/openssl.so/ext/win32/include/openssl/ts.h +858 -0
  1101. data/lib/extensions/openssl.so/ext/win32/include/openssl/txt_db.h +112 -0
  1102. data/lib/extensions/openssl.so/ext/win32/include/openssl/ui.h +383 -0
  1103. data/lib/extensions/openssl.so/ext/win32/include/openssl/ui_compat.h +83 -0
  1104. data/lib/extensions/openssl.so/ext/win32/include/openssl/whrlpool.h +41 -0
  1105. data/lib/extensions/openssl.so/ext/win32/include/openssl/x509.h +1297 -0
  1106. data/lib/extensions/openssl.so/ext/win32/include/openssl/x509_vfy.h +567 -0
  1107. data/lib/extensions/openssl.so/ext/win32/include/openssl/x509v3.h +1007 -0
  1108. data/lib/extensions/openssl.so/ext/win32/lib/libeay32.lib +0 -0
  1109. data/lib/extensions/openssl.so/ext/win32/lib/ssleay32.lib +0 -0
  1110. data/lib/extensions/openssl.so/ext/wm/lib/libopenssl.lib +0 -0
  1111. data/lib/extensions/openssl.so/ext/wm/openssl.sln +30 -0
  1112. data/lib/extensions/openssl.so/ext/wm/openssl.vcproj +3254 -0
  1113. data/lib/extensions/openssl.so/ext/wm/tmp/MC3000c50b (ARMV4I)/Release/BuildLog.htm +0 -0
  1114. data/lib/extensions/openssl.so/ext/wm/tmp/Windows Mobile 6 Professional SDK (ARMV4I)/Release/BuildLog.htm +0 -0
  1115. data/lib/extensions/openssl.so/openssl.so.rb +1 -0
  1116. data/lib/extensions/openssl/ext.yml +2 -0
  1117. data/lib/extensions/openssl/ext/Rakefile +132 -0
  1118. data/lib/extensions/openssl/ext/android/extconf.h +55 -0
  1119. data/lib/extensions/openssl/ext/build +12 -0
  1120. data/lib/extensions/openssl/ext/build.bat +1 -0
  1121. data/lib/extensions/openssl/ext/extconf.rb +141 -0
  1122. data/lib/extensions/openssl/ext/iphone/Rakefile +79 -0
  1123. data/lib/extensions/openssl/ext/iphone/extconf.h +55 -0
  1124. data/lib/extensions/openssl/ext/iphone/openssl.xcodeproj/project.pbxproj +472 -0
  1125. data/lib/extensions/openssl/ext/iphone/openssl_Prefix.pch +7 -0
  1126. data/lib/extensions/openssl/ext/macosx/extconf.h +53 -0
  1127. data/lib/extensions/openssl/ext/openssl.sln +44 -0
  1128. data/lib/extensions/openssl/ext/openssl.vcproj +844 -0
  1129. data/lib/extensions/openssl/ext/openssl_missing.c +361 -0
  1130. data/lib/extensions/openssl/ext/openssl_missing.h +194 -0
  1131. data/lib/extensions/openssl/ext/ossl.c +514 -0
  1132. data/lib/extensions/openssl/ext/ossl.h +243 -0
  1133. data/lib/extensions/openssl/ext/ossl_asn1.c +1170 -0
  1134. data/lib/extensions/openssl/ext/ossl_asn1.h +59 -0
  1135. data/lib/extensions/openssl/ext/ossl_bio.c +86 -0
  1136. data/lib/extensions/openssl/ext/ossl_bio.h +21 -0
  1137. data/lib/extensions/openssl/ext/ossl_bn.c +852 -0
  1138. data/lib/extensions/openssl/ext/ossl_bn.h +25 -0
  1139. data/lib/extensions/openssl/ext/ossl_cipher.c +546 -0
  1140. data/lib/extensions/openssl/ext/ossl_cipher.h +22 -0
  1141. data/lib/extensions/openssl/ext/ossl_config.c +492 -0
  1142. data/lib/extensions/openssl/ext/ossl_config.h +22 -0
  1143. data/lib/extensions/openssl/ext/ossl_digest.c +257 -0
  1144. data/lib/extensions/openssl/ext/ossl_digest.h +22 -0
  1145. data/lib/extensions/openssl/ext/ossl_engine.c +411 -0
  1146. data/lib/extensions/openssl/ext/ossl_engine.h +20 -0
  1147. data/lib/extensions/openssl/ext/ossl_hmac.c +270 -0
  1148. data/lib/extensions/openssl/ext/ossl_hmac.h +19 -0
  1149. data/lib/extensions/openssl/ext/ossl_ns_spki.c +257 -0
  1150. data/lib/extensions/openssl/ext/ossl_ns_spki.h +21 -0
  1151. data/lib/extensions/openssl/ext/ossl_ocsp.c +773 -0
  1152. data/lib/extensions/openssl/ext/ossl_ocsp.h +24 -0
  1153. data/lib/extensions/openssl/ext/ossl_pkcs12.c +212 -0
  1154. data/lib/extensions/openssl/ext/ossl_pkcs12.h +15 -0
  1155. data/lib/extensions/openssl/ext/ossl_pkcs5.c +98 -0
  1156. data/lib/extensions/openssl/ext/ossl_pkcs5.h +6 -0
  1157. data/lib/extensions/openssl/ext/ossl_pkcs7.c +1041 -0
  1158. data/lib/extensions/openssl/ext/ossl_pkcs7.h +22 -0
  1159. data/lib/extensions/openssl/ext/ossl_pkey.c +240 -0
  1160. data/lib/extensions/openssl/ext/ossl_pkey.h +141 -0
  1161. data/lib/extensions/openssl/ext/ossl_pkey_dh.c +536 -0
  1162. data/lib/extensions/openssl/ext/ossl_pkey_dsa.c +492 -0
  1163. data/lib/extensions/openssl/ext/ossl_pkey_ec.c +1597 -0
  1164. data/lib/extensions/openssl/ext/ossl_pkey_rsa.c +601 -0
  1165. data/lib/extensions/openssl/ext/ossl_rand.c +202 -0
  1166. data/lib/extensions/openssl/ext/ossl_rand.h +20 -0
  1167. data/lib/extensions/openssl/ext/ossl_ssl.c +1691 -0
  1168. data/lib/extensions/openssl/ext/ossl_ssl.h +36 -0
  1169. data/lib/extensions/openssl/ext/ossl_ssl_session.c +306 -0
  1170. data/lib/extensions/openssl/ext/ossl_version.h +16 -0
  1171. data/lib/extensions/openssl/ext/ossl_x509.c +104 -0
  1172. data/lib/extensions/openssl/ext/ossl_x509.h +114 -0
  1173. data/lib/extensions/openssl/ext/ossl_x509attr.c +275 -0
  1174. data/lib/extensions/openssl/ext/ossl_x509cert.c +766 -0
  1175. data/lib/extensions/openssl/ext/ossl_x509crl.c +537 -0
  1176. data/lib/extensions/openssl/ext/ossl_x509ext.c +459 -0
  1177. data/lib/extensions/openssl/ext/ossl_x509name.c +375 -0
  1178. data/lib/extensions/openssl/ext/ossl_x509req.c +468 -0
  1179. data/lib/extensions/openssl/ext/ossl_x509revoked.c +229 -0
  1180. data/lib/extensions/openssl/ext/ossl_x509store.c +624 -0
  1181. data/lib/extensions/openssl/ext/ruby_missing.h +41 -0
  1182. data/lib/extensions/openssl/ext/windows/extconf.h +66 -0
  1183. data/lib/extensions/openssl/openssl.rb +24 -0
  1184. data/lib/extensions/openssl/openssl/bn.rb +35 -0
  1185. data/lib/extensions/openssl/openssl/buffering.rb +341 -0
  1186. data/lib/extensions/openssl/openssl/cipher.rb +65 -0
  1187. data/lib/extensions/openssl/openssl/digest.rb +61 -0
  1188. data/lib/extensions/openssl/openssl/ssl-internal.rb +178 -0
  1189. data/lib/extensions/openssl/openssl/ssl.rb +1 -0
  1190. data/lib/extensions/openssl/openssl/x509-internal.rb +153 -0
  1191. data/lib/extensions/openssl/openssl/x509.rb +1 -0
  1192. data/lib/extensions/rhoxml/rexml/xmldecl.rb +119 -0
  1193. data/lib/extensions/zlib/ext.yml +2 -0
  1194. data/lib/extensions/zlib/ext/README +115 -0
  1195. data/lib/extensions/zlib/ext/Rakefile +127 -0
  1196. data/lib/extensions/zlib/ext/adler32.c +179 -0
  1197. data/lib/extensions/zlib/ext/build +12 -0
  1198. data/lib/extensions/zlib/ext/build.bat +1 -0
  1199. data/lib/extensions/zlib/ext/compress.c +80 -0
  1200. data/lib/extensions/zlib/ext/crc32.c +425 -0
  1201. data/lib/extensions/zlib/ext/crc32.h +441 -0
  1202. data/lib/extensions/zlib/ext/deflate.c +1965 -0
  1203. data/lib/extensions/zlib/ext/deflate.h +346 -0
  1204. data/lib/extensions/zlib/ext/gzclose.c +25 -0
  1205. data/lib/extensions/zlib/ext/gzguts.h +193 -0
  1206. data/lib/extensions/zlib/ext/gzlib.c +620 -0
  1207. data/lib/extensions/zlib/ext/gzread.c +589 -0
  1208. data/lib/extensions/zlib/ext/gzwrite.c +565 -0
  1209. data/lib/extensions/zlib/ext/infback.c +640 -0
  1210. data/lib/extensions/zlib/ext/inffast.c +340 -0
  1211. data/lib/extensions/zlib/ext/inffast.h +11 -0
  1212. data/lib/extensions/zlib/ext/inffixed.h +94 -0
  1213. data/lib/extensions/zlib/ext/inflate.c +1496 -0
  1214. data/lib/extensions/zlib/ext/inflate.h +122 -0
  1215. data/lib/extensions/zlib/ext/inftrees.c +306 -0
  1216. data/lib/extensions/zlib/ext/inftrees.h +62 -0
  1217. data/lib/extensions/zlib/ext/iphone/Rakefile +79 -0
  1218. data/lib/extensions/zlib/ext/iphone/zlib.xcodeproj/project.pbxproj +360 -0
  1219. data/lib/extensions/zlib/ext/iphone/zlib_Prefix.pch +7 -0
  1220. data/lib/extensions/zlib/ext/trees.c +1224 -0
  1221. data/lib/extensions/zlib/ext/trees.h +128 -0
  1222. data/lib/extensions/zlib/ext/uncompr.c +59 -0
  1223. data/lib/extensions/zlib/ext/zconf.h +506 -0
  1224. data/lib/extensions/zlib/ext/zlib.c +3762 -0
  1225. data/lib/extensions/zlib/ext/zlib.h +1744 -0
  1226. data/lib/extensions/zlib/ext/zlib.sln +36 -0
  1227. data/lib/extensions/zlib/ext/zlib.vcproj +746 -0
  1228. data/lib/extensions/zlib/ext/zlib.vsprops +16 -0
  1229. data/lib/extensions/zlib/ext/zutil.c +324 -0
  1230. data/lib/extensions/zlib/ext/zutil.h +252 -0
  1231. data/lib/extensions/zlib/zlib.rb +0 -0
  1232. data/lib/framework/rbconfig.rb +1 -1
  1233. data/lib/framework/rho/render.rb +31 -34
  1234. data/lib/framework/rho/rho.rb +89 -24
  1235. data/lib/framework/rho/rhocontroller.rb +8 -5
  1236. data/lib/framework/rho/rhofsconnector.rb +3 -0
  1237. data/lib/framework/rhodes.rb +9 -9
  1238. data/lib/framework/rhom/rhom.rb +15 -0
  1239. data/lib/framework/rhom/rhom_db_adapter.rb +18 -0
  1240. data/lib/framework/rhom/rhom_object_factory.rb +36 -26
  1241. data/lib/framework/rhomotoapi.rb +65 -1
  1242. data/lib/framework/rhosystem.rb +23 -19
  1243. data/lib/framework/version.rb +7 -7
  1244. data/lib/rhodes.rb +9 -9
  1245. data/platform/android/Rhodes/AndroidManifest.xml +117 -117
  1246. data/platform/android/Rhodes/AndroidManifest.xml.erb +77 -0
  1247. data/platform/android/Rhodes/PushReceiver.erb +14 -0
  1248. data/platform/android/Rhodes/jni/Android.mk +3 -1
  1249. data/platform/android/Rhodes/jni/include/rhodes/jni/com_rhomobile_rhodes_Logger.h +16 -0
  1250. data/platform/android/Rhodes/jni/include/rhodes/jni/com_rhomobile_rhodes_RhodesService.h +8 -0
  1251. data/platform/android/Rhodes/jni/src/fileapi.cpp +18 -0
  1252. data/platform/android/Rhodes/jni/src/logger.cpp +16 -0
  1253. data/platform/android/Rhodes/jni/src/rhodesapp.cpp +9 -2
  1254. data/platform/android/Rhodes/jni/src/signature.cpp +3 -28
  1255. data/platform/android/Rhodes/src/com/rhomobile/rhodes/BaseActivity.java +41 -37
  1256. data/platform/android/Rhodes/src/com/rhomobile/rhodes/Logger.java +5 -5
  1257. data/platform/android/Rhodes/src/com/rhomobile/rhodes/PushReceiver.java +6 -2
  1258. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesActivity.java +38 -15
  1259. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesApplication.java +49 -9
  1260. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesService.java +130 -10
  1261. data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothManagerNew.java +13 -1
  1262. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/Camera.java +8 -6
  1263. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/CameraNewService.java +20 -0
  1264. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/CameraOldService.java +5 -0
  1265. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/CameraSemiService.java +14 -0
  1266. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/CameraService.java +2 -0
  1267. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/ImageCapture.java +16 -13
  1268. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/AbstractRhoExtension.java +1 -1
  1269. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/Config.java +3 -0
  1270. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/IRhoExtManager.java +1 -1
  1271. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/IRhoExtension.java +3 -1
  1272. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/RhoExtManager.java +10 -0
  1273. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/RhoExtManagerImpl.java +23 -35
  1274. data/platform/android/Rhodes/src/com/rhomobile/rhodes/file/RhoFileApi.java +10 -0
  1275. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/SplashScreen.java +60 -34
  1276. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality.java +14 -1
  1277. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality01.java +38 -3
  1278. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality08.java +26 -4
  1279. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality11.java +47 -0
  1280. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionalityManager.java +4 -1
  1281. data/platform/android/Rhodes/src/com/rhomobile/rhodes/socket/RhoSocketImpl.java +9 -1
  1282. data/platform/android/Rhodes/src/com/rhomobile/rhodes/webview/GoogleWebView.java +10 -0
  1283. data/platform/android/Rhodes/src/com/rhomobile/rhodes/webview/IRhoWebView.java +2 -0
  1284. data/platform/android/Rhodes/src/com/rhomobile/rhodes/webview/RhoWebViewClient.java +10 -3
  1285. data/platform/android/build/RhodesSRC_build.files +1 -1
  1286. data/platform/android/build/android.rake +567 -556
  1287. data/platform/android/build/android_tools.rb +87 -0
  1288. data/platform/android/build/librhocommon_build.files +3 -0
  1289. data/platform/android/build/librhodb_build.files +2 -0
  1290. data/platform/android/build/manifest_generator.rb +96 -0
  1291. data/platform/bb/Hsqldb/src/org/hsqldb/Expression.java +2 -4
  1292. data/platform/bb/RubyVM/src/com/rho/RhoProfiler.java +11 -0
  1293. data/platform/bb/RubyVM/src/com/xruby/runtime/lang/RhoSupport.java +61 -48
  1294. data/platform/bb/build/rhodes_build.files +0 -1
  1295. data/platform/bb/rhodes/platform/4.7/com/rho/rubyext/SignatureCapture.java +314 -0
  1296. data/platform/bb/rhodes/platform/common/com/rho/rubyext/SignatureCapture.java +312 -0
  1297. data/platform/bb/rhodes/src/rhomobile/RhodesApplication.java +4 -1
  1298. data/platform/iphone/Classes/AppManager/AppManager.h +1 -0
  1299. data/platform/iphone/Classes/AppManager/AppManager.m +165 -123
  1300. data/platform/iphone/Classes/Event/Event.m +53 -14
  1301. data/platform/iphone/Classes/Rhodes.h +5 -4
  1302. data/platform/iphone/Classes/Rhodes.m +10 -8
  1303. data/platform/iphone/Classes/Signature/SignatureDelegate.m +2 -2
  1304. data/platform/iphone/Classes/SimpleMainView.m +55 -17
  1305. data/platform/iphone/Classes/SplashViewController.m +28 -1
  1306. data/platform/iphone/Info.plist +59 -54
  1307. data/platform/iphone/RhoLib/RhoLib.xcodeproj/project.pbxproj +43 -14
  1308. data/platform/iphone/curl/curl.xcodeproj/project.pbxproj +15 -18
  1309. data/platform/iphone/rbuild/iphone.rake +113 -4
  1310. data/platform/iphone/rhoextlib/rhoextlib.xcodeproj/project.pbxproj +15 -17
  1311. data/platform/iphone/rhorubylib/rhorubylib.xcodeproj/project.pbxproj +6 -14
  1312. data/platform/iphone/rhorunner.xcodeproj/project.pbxproj +20 -23
  1313. data/platform/iphone/rhosynclib/rhosynclib.xcodeproj/project.pbxproj +22 -14
  1314. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Frameworks/QtCore.framework/Versions/4/QtCore +0 -0
  1315. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui +0 -0
  1316. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Frameworks/QtNetwork.framework/Versions/4/QtNetwork +0 -0
  1317. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Frameworks/QtWebKit.framework/Versions/4/QtWebKit +0 -0
  1318. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Info.plist +1 -1
  1319. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/MacOS/RhoSimulator +0 -0
  1320. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/accessible/libqtaccessiblewidgets.dylib +0 -0
  1321. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/bearer/libqcorewlanbearer.dylib +0 -0
  1322. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/bearer/libqgenericbearer.dylib +0 -0
  1323. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/codecs/libqcncodecs.dylib +0 -0
  1324. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/codecs/libqjpcodecs.dylib +0 -0
  1325. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/codecs/libqkrcodecs.dylib +0 -0
  1326. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/codecs/libqtwcodecs.dylib +0 -0
  1327. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/graphicssystems/libqtracegraphicssystem.dylib +0 -0
  1328. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/imageformats/libqgif.dylib +0 -0
  1329. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/imageformats/libqico.dylib +0 -0
  1330. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/imageformats/libqjpeg.dylib +0 -0
  1331. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/imageformats/libqmng.dylib +0 -0
  1332. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/imageformats/libqtga.dylib +0 -0
  1333. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/imageformats/libqtiff.dylib +0 -0
  1334. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/qmltooling/libqmldbg_inspector.dylib +0 -0
  1335. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/qmltooling/libqmldbg_tcp.dylib +0 -0
  1336. data/platform/osx/build/osx.rake +18 -9
  1337. data/platform/shared/RhoConnectClient/RhoConnectClient.cpp +12 -0
  1338. data/platform/shared/RhoConnectClient/RhoConnectClient.h +3 -0
  1339. data/platform/shared/common/Android.mk +1 -0
  1340. data/platform/shared/common/BundleManager.cpp +503 -47
  1341. data/platform/shared/common/ExtManager.h +4 -0
  1342. data/platform/shared/common/RhoSettingsDefs.h +3 -0
  1343. data/platform/shared/common/RhoStd.h +14 -1
  1344. data/platform/shared/common/RhodesApp.cpp +84 -137
  1345. data/platform/shared/common/RhodesApp.h +12 -7
  1346. data/platform/shared/common/RhodesAppBase.cpp +124 -2
  1347. data/platform/shared/common/RhodesAppBase.h +43 -2
  1348. data/platform/shared/common/ThreadQueue.cpp +1 -1
  1349. data/platform/shared/common/app_build_capabilities.h +0 -7
  1350. data/platform/shared/common/map/MapEngine.h +1 -0
  1351. data/platform/shared/common/push/IRhoPushClient.h +46 -0
  1352. data/platform/shared/common/push/RhoPushManager.cpp +146 -0
  1353. data/platform/shared/common/push/RhoPushManager.h +79 -0
  1354. data/platform/shared/curl/lib/curl_config.h +8 -0
  1355. data/platform/shared/curl/lib/netrc.c +2 -0
  1356. data/platform/shared/db/Android.mk +4 -1
  1357. data/platform/shared/db/DBAdapter.cpp +218 -12
  1358. data/platform/shared/db/DBAdapter.h +16 -1
  1359. data/platform/shared/db/DBAttrManager.cpp +18 -1
  1360. data/platform/shared/db/DBAttrManager.h +2 -1
  1361. data/platform/shared/db/DBImportTransaction.cpp +300 -0
  1362. data/platform/shared/db/DBImportTransaction.h +56 -0
  1363. data/platform/shared/db/DBRequestHelper.cpp +114 -0
  1364. data/platform/shared/db/DBRequestHelper.h +27 -0
  1365. data/platform/shared/logging/RhoLogConf.h +2 -0
  1366. data/platform/shared/net/AsyncHttp.cpp +4 -3
  1367. data/platform/shared/net/AsyncHttp.h +3 -2
  1368. data/platform/shared/net/CURLNetRequest.cpp +18 -5
  1369. data/platform/shared/net/HttpServer.cpp +18 -14
  1370. data/platform/shared/qt/rhodes/MainWindowCallback.h +0 -1
  1371. data/platform/shared/qt/rhodes/QtMainWindow.cpp +180 -36
  1372. data/platform/shared/qt/rhodes/QtMainWindow.h +13 -1
  1373. data/platform/shared/qt/rhodes/QtMainWindow.ui +22 -3
  1374. data/platform/shared/qt/rhodes/RhoSimulator.h +3 -0
  1375. data/platform/shared/qt/rhodes/impl/MainWindowImpl.cpp +22 -0
  1376. data/platform/shared/qt/rhodes/impl/MainWindowImpl.h +6 -0
  1377. data/platform/shared/qt/rhodes/impl/SystemImpl.cpp +15 -0
  1378. data/platform/shared/qt/rhodes/main.cpp +15 -1
  1379. data/platform/shared/qt/rholib/rholib.pro +8 -2
  1380. data/platform/shared/qt/syncengine/syncengine.pro +6 -2
  1381. data/platform/shared/ruby/ext/rho/extensions.c +2 -0
  1382. data/platform/shared/ruby/ext/rho/rhoruby.c +12 -0
  1383. data/platform/shared/ruby/ext/rho/rhoruby.h +2 -0
  1384. data/platform/shared/ruby/ext/rho/rhosupport.c +77 -38
  1385. data/platform/shared/ruby/ext/sqlite3_api/sqlite3_api_wrap.c +54 -2
  1386. data/platform/shared/ruby/ext/syncengine/syncengine.i +4 -0
  1387. data/platform/shared/ruby/ext/syncengine/syncengine_wrap.c +40 -1
  1388. data/platform/shared/ruby/ext/system/system.i +38 -4
  1389. data/platform/shared/ruby/ext/system/system_wrap.c +277 -9
  1390. data/platform/shared/ruby/iphone/ruby/config.h +28 -0
  1391. data/platform/shared/ruby/main.c +8 -0
  1392. data/platform/shared/ruby/wince/sys/timeb.c +4 -0
  1393. data/platform/shared/ruby/wince/sys/timeb.h +1 -0
  1394. data/platform/shared/rubyext/Android.mk +2 -1
  1395. data/platform/shared/rubyext/System.cpp +93 -3
  1396. data/platform/shared/rubyext/ZipFiles.cpp +65 -0
  1397. data/platform/shared/statistic/RhoProfiler.cpp +36 -6
  1398. data/platform/shared/statistic/RhoProfiler.h +3 -0
  1399. data/platform/shared/sync/ClientRegister.cpp +21 -5
  1400. data/platform/shared/sync/ClientRegister.h +4 -2
  1401. data/platform/shared/sync/ISyncProtocol.h +5 -2
  1402. data/platform/shared/sync/SyncEngine.cpp +85 -15
  1403. data/platform/shared/sync/SyncEngine.h +5 -0
  1404. data/platform/shared/sync/SyncNotify.cpp +3 -0
  1405. data/platform/shared/sync/SyncProtocol_3.h +14 -2
  1406. data/platform/shared/sync/SyncSource.cpp +238 -40
  1407. data/platform/shared/sync/SyncSource.h +2 -0
  1408. data/platform/shared/sync/SyncThread.cpp +7 -0
  1409. data/platform/shared/sync/SyncThread.h +1 -0
  1410. data/platform/shared/tcmalloc/rhomem.h +1 -1
  1411. data/platform/shared/tcmalloc/windows/port.cpp +1 -1
  1412. data/platform/shared/unzip/Android.mk +1 -1
  1413. data/platform/shared/unzip/zip.cpp +2953 -0
  1414. data/platform/shared/unzip/zip.h +255 -0
  1415. data/platform/win32/RhoSimulator/QtCore4.dll +0 -0
  1416. data/platform/win32/RhoSimulator/QtGui4.dll +0 -0
  1417. data/platform/win32/RhoSimulator/QtNetwork4.dll +0 -0
  1418. data/platform/win32/RhoSimulator/QtWebKit4.dll +0 -0
  1419. data/platform/win32/RhoSimulator/RhoSimulator.exe +0 -0
  1420. data/platform/win32/RhoSimulator/imageformats/qgif4.dll +0 -0
  1421. data/platform/win32/RhoSimulator/imageformats/qico4.dll +0 -0
  1422. data/platform/win32/RhoSimulator/imageformats/qjpeg4.dll +0 -0
  1423. data/platform/win32/RhoSimulator/imageformats/qmng4.dll +0 -0
  1424. data/platform/win32/RhoSimulator/imageformats/qsvg4.dll +0 -0
  1425. data/platform/win32/RhoSimulator/imageformats/qtiff4.dll +0 -0
  1426. data/platform/win32/RhoSimulator/phonon4.dll +0 -0
  1427. data/platform/win32/RubyWin/RubyWin.sln +2 -2
  1428. data/platform/win32/RubyWin/RubyWin.vcproj +6 -7
  1429. data/platform/wm/RhoLib/RhoLib.vcproj +33 -3
  1430. data/platform/wm/build/rhodes.nsi +64 -230
  1431. data/platform/wm/build/wm.rake +306 -93
  1432. data/platform/wm/rhodes.sln +70 -21
  1433. data/platform/wm/rhodes/DateTimePicker.h +1 -1
  1434. data/platform/wm/rhodes/IEBrowserEngine.cpp +4 -1
  1435. data/platform/wm/rhodes/MainWindow.cpp +8 -7
  1436. data/platform/wm/rhodes/MainWindow.h +1 -1
  1437. data/platform/wm/rhodes/RhoNativeViewManager.cpp +2 -2
  1438. data/platform/wm/rhodes/Rhodes.cpp +80 -30
  1439. data/platform/wm/rhodes/camera/Camera.cpp +44 -65
  1440. data/platform/wm/rhodes/camera/Camera.h +6 -0
  1441. data/platform/wm/rhodes/rho/common/ExtManager.cpp +29 -6
  1442. data/platform/wm/rhodes/rho/common/RhoClassFactory.cpp +6 -1
  1443. data/platform/wm/rhodes/rho/net/NetRequestImpl.cpp +3 -0
  1444. data/platform/wm/rhodes/rho/net/NetRequestImpl.h +1 -1
  1445. data/platform/wm/rhodes/rho/rubyext/NativeToolbarExt.cpp +5 -5
  1446. data/platform/wm/rhodes/rho/rubyext/SystemImpl.cpp +188 -29
  1447. data/platform/wm/rhodes/rho/rubyext/WebView.cpp +3 -3
  1448. data/platform/wm/rhodes/rhodes.vcproj +2284 -148
  1449. data/platform/wm/rhodes/simulator/MainWindowQt.cpp +48 -10
  1450. data/platform/wm/rhodes/simulator/MainWindowQt.h +6 -2
  1451. data/platform/wm/rhoelements.sln +122 -0
  1452. data/platform/wm/rubylib/rubylib.vcproj +4 -2
  1453. data/platform/wm/sqlite3/sqlite3.vcproj +4 -2
  1454. data/platform/wm/syncengine/syncengine.vcproj +20 -2
  1455. data/platform/wm/tcmalloc/tcmalloc.vcproj +160 -0
  1456. data/platform/wp7/RhoRubyLib/rubyext/RhoSyncEngine.cs +4 -0
  1457. data/platform/wp7/RhoRubyLib/rubyext/RhoSystem.cs +4 -0
  1458. data/rakefile.rb +173 -17
  1459. data/res/build-tools/license_rc.dll +0 -0
  1460. data/res/build-tools/win32/license_rc.dll +0 -0
  1461. data/res/generators/templates/application/app/layout.erb +7 -3
  1462. data/res/generators/templates/application/public/css/re_webkit.css +1 -1
  1463. data/res/generators/templates/application/public/css/re_webkit_flat.css +753 -0
  1464. data/res/generators/templates/extension/extensions/montana/ext/montana/platform/iphone/Montana.xcodeproj/project.pbxproj +4 -10
  1465. data/spec/framework_spec/app/spec/core/file/new_spec.rb +2 -2
  1466. data/spec/framework_spec/app/spec/core/file/open_spec.rb +6 -6
  1467. data/spec/framework_spec/app/spec/core/file/shared/open.rb +1 -1
  1468. data/spec/framework_spec/app/spec/core/file/shared/stat.rb +2 -2
  1469. data/spec/framework_spec/app/spec/core/file/stat/blksize_spec.rb +1 -1
  1470. data/spec/framework_spec/app/spec/core/file/stat/blocks_spec.rb +1 -1
  1471. data/spec/framework_spec/app/spec/core/file/stat/comparison_spec.rb +1 -1
  1472. data/spec/framework_spec/app/spec/core/file/stat/ino_spec.rb +1 -1
  1473. data/spec/framework_spec/app/spec/core/file/stat/inspect_spec.rb +1 -1
  1474. data/spec/framework_spec/app/spec/core/file/stat/mode_spec.rb +1 -1
  1475. data/spec/framework_spec/app/spec/core/file/stat/nlink_spec.rb +1 -1
  1476. data/spec/framework_spec/app/spec/core/file/stat_spec.rb +1 -1
  1477. data/spec/framework_spec/app/spec/core/file/sticky_spec.rb +2 -2
  1478. data/spec/framework_spec/app/spec/core/io/close_read_spec.rb +1 -1
  1479. data/spec/framework_spec/app/spec/core/io/close_write_spec.rb +1 -1
  1480. data/spec/framework_spec/app/spec/core/io/foreach_spec.rb +8 -8
  1481. data/spec/framework_spec/app/spec/core/io/getc_spec.rb +1 -1
  1482. data/spec/framework_spec/app/spec/core/io/gets_spec.rb +1 -1
  1483. data/spec/framework_spec/app/spec/core/io/stat_spec.rb +1 -1
  1484. data/spec/framework_spec/app/spec/core/kernel/respond_to_spec.rb +1 -1
  1485. data/spec/framework_spec/app/spec/core/time/shared/gmt_offset.rb +1 -1
  1486. data/spec/framework_spec/app/spec/library/digest/hmac_spec.rb +91 -0
  1487. data/spec/framework_spec/app/spec/library/digest/md5/file_spec.rb +1 -1
  1488. data/spec/framework_spec/app/spec/library/digest/sha256/append_spec.rb +7 -0
  1489. data/spec/framework_spec/app/spec/library/digest/sha256/block_length_spec.rb +12 -0
  1490. data/spec/framework_spec/app/spec/library/digest/sha256/digest_bang_spec.rb +13 -0
  1491. data/spec/framework_spec/app/spec/library/digest/sha256/digest_length_spec.rb +12 -0
  1492. data/spec/framework_spec/app/spec/library/digest/sha256/digest_spec.rb +32 -0
  1493. data/spec/framework_spec/app/spec/library/digest/sha256/equal_spec.rb +37 -0
  1494. data/spec/framework_spec/app/spec/library/digest/sha256/file_spec.rb +47 -0
  1495. data/spec/framework_spec/app/spec/library/digest/sha256/hexdigest_bang_spec.rb +14 -0
  1496. data/spec/framework_spec/app/spec/library/digest/sha256/hexdigest_spec.rb +32 -0
  1497. data/spec/framework_spec/app/spec/library/digest/sha256/inspect_spec.rb +12 -0
  1498. data/spec/framework_spec/app/spec/library/digest/sha256/length_spec.rb +8 -0
  1499. data/spec/framework_spec/app/spec/library/digest/sha256/reset_spec.rb +15 -0
  1500. data/spec/framework_spec/app/spec/library/digest/sha256/shared/constants.rb +15 -0
  1501. data/spec/framework_spec/app/spec/library/digest/sha256/shared/length.rb +8 -0
  1502. data/spec/framework_spec/app/spec/library/digest/sha256/shared/update.rb +7 -0
  1503. data/spec/framework_spec/app/spec/library/digest/sha256/size_spec.rb +8 -0
  1504. data/spec/framework_spec/app/spec/library/digest/sha256/to_s_spec.rb +21 -0
  1505. data/spec/framework_spec/app/spec/library/digest/sha256/update_spec.rb +7 -0
  1506. data/spec/framework_spec/app/spec/library/digest/sha384/append_spec.rb +7 -0
  1507. data/spec/framework_spec/app/spec/library/digest/sha384/block_length_spec.rb +12 -0
  1508. data/spec/framework_spec/app/spec/library/digest/sha384/digest_bang_spec.rb +13 -0
  1509. data/spec/framework_spec/app/spec/library/digest/sha384/digest_length_spec.rb +12 -0
  1510. data/spec/framework_spec/app/spec/library/digest/sha384/digest_spec.rb +32 -0
  1511. data/spec/framework_spec/app/spec/library/digest/sha384/equal_spec.rb +37 -0
  1512. data/spec/framework_spec/app/spec/library/digest/sha384/file_spec.rb +47 -0
  1513. data/spec/framework_spec/app/spec/library/digest/sha384/hexdigest_bang_spec.rb +14 -0
  1514. data/spec/framework_spec/app/spec/library/digest/sha384/hexdigest_spec.rb +32 -0
  1515. data/spec/framework_spec/app/spec/library/digest/sha384/inspect_spec.rb +12 -0
  1516. data/spec/framework_spec/app/spec/library/digest/sha384/length_spec.rb +8 -0
  1517. data/spec/framework_spec/app/spec/library/digest/sha384/reset_spec.rb +15 -0
  1518. data/spec/framework_spec/app/spec/library/digest/sha384/shared/constants.rb +16 -0
  1519. data/spec/framework_spec/app/spec/library/digest/sha384/shared/length.rb +8 -0
  1520. data/spec/framework_spec/app/spec/library/digest/sha384/shared/update.rb +7 -0
  1521. data/spec/framework_spec/app/spec/library/digest/sha384/size_spec.rb +8 -0
  1522. data/spec/framework_spec/app/spec/library/digest/sha384/to_s_spec.rb +21 -0
  1523. data/spec/framework_spec/app/spec/library/digest/sha384/update_spec.rb +7 -0
  1524. data/spec/framework_spec/app/spec/library/digest/sha512/append_spec.rb +7 -0
  1525. data/spec/framework_spec/app/spec/library/digest/sha512/block_length_spec.rb +12 -0
  1526. data/spec/framework_spec/app/spec/library/digest/sha512/digest_bang_spec.rb +13 -0
  1527. data/spec/framework_spec/app/spec/library/digest/sha512/digest_length_spec.rb +12 -0
  1528. data/spec/framework_spec/app/spec/library/digest/sha512/digest_spec.rb +32 -0
  1529. data/spec/framework_spec/app/spec/library/digest/sha512/equal_spec.rb +37 -0
  1530. data/spec/framework_spec/app/spec/library/digest/sha512/file_spec.rb +47 -0
  1531. data/spec/framework_spec/app/spec/library/digest/sha512/hexdigest_bang_spec.rb +14 -0
  1532. data/spec/framework_spec/app/spec/library/digest/sha512/hexdigest_spec.rb +32 -0
  1533. data/spec/framework_spec/app/spec/library/digest/sha512/inspect_spec.rb +12 -0
  1534. data/spec/framework_spec/app/spec/library/digest/sha512/length_spec.rb +8 -0
  1535. data/spec/framework_spec/app/spec/library/digest/sha512/reset_spec.rb +15 -0
  1536. data/spec/framework_spec/app/spec/library/digest/sha512/shared/constants.rb +15 -0
  1537. data/spec/framework_spec/app/spec/library/digest/sha512/shared/length.rb +8 -0
  1538. data/spec/framework_spec/app/spec/library/digest/sha512/shared/update.rb +7 -0
  1539. data/spec/framework_spec/app/spec/library/digest/sha512/size_spec.rb +8 -0
  1540. data/spec/framework_spec/app/spec/library/digest/sha512/to_s_spec.rb +21 -0
  1541. data/spec/framework_spec/app/spec/library/digest/sha512/update_spec.rb +7 -0
  1542. data/spec/framework_spec/app/spec/library/ezcrypto/ezcrypto_spec.rb +13 -0
  1543. data/spec/framework_spec/app/spec/library/net/ftp/nlst_spec.rb +1 -1
  1544. data/spec/framework_spec/app/spec/library/net/ftp/retrbinary_spec.rb +1 -1
  1545. data/spec/framework_spec/app/spec/library/net/ftp/retrlines_spec.rb +1 -1
  1546. data/spec/framework_spec/app/spec/library/net/ftp/shared/getbinaryfile.rb +1 -1
  1547. data/spec/framework_spec/app/spec/library/net/ftp/shared/gettextfile.rb +1 -1
  1548. data/spec/framework_spec/app/spec/library/net/ftp/shared/list.rb +1 -1
  1549. data/spec/framework_spec/app/spec/library/net/ftp/shared/putbinaryfile.rb +1 -1
  1550. data/spec/framework_spec/app/spec/library/net/ftp/shared/puttextfile.rb +1 -1
  1551. data/spec/framework_spec/app/spec/library/net/ftp/storbinary_spec.rb +1 -1
  1552. data/spec/framework_spec/app/spec/library/net/ftp/storlines_spec.rb +1 -1
  1553. data/spec/framework_spec/app/spec/library/openssl/cipher_spec.rb +19 -0
  1554. data/spec/framework_spec/app/spec/library/openssl/config/freeze_spec.rb +21 -0
  1555. data/spec/framework_spec/app/spec/library/openssl/hmac/digest_spec.rb +18 -0
  1556. data/spec/framework_spec/app/spec/library/openssl/hmac/hexdigest_spec.rb +18 -0
  1557. data/spec/framework_spec/app/spec/library/openssl/random/pseudo_bytes_spec.rb +7 -0
  1558. data/spec/framework_spec/app/spec/library/openssl/random/random_bytes_spec.rb +7 -0
  1559. data/spec/framework_spec/app/spec/library/openssl/random/shared/random_bytes.rb +29 -0
  1560. data/spec/framework_spec/app/spec/library/openssl/shared/constants.rb +10 -0
  1561. data/spec/framework_spec/app/spec/library/zlib/adler32_spec.rb +46 -0
  1562. data/spec/framework_spec/app/spec/library/zlib/crc32_spec.rb +52 -0
  1563. data/spec/framework_spec/app/spec/library/zlib/crc_table_spec.rb +11 -0
  1564. data/spec/framework_spec/app/spec/library/zlib/deflate/append_spec.rb +1 -0
  1565. data/spec/framework_spec/app/spec/library/zlib/deflate/deflate_spec.rb +49 -0
  1566. data/spec/framework_spec/app/spec/library/zlib/deflate/flush_spec.rb +1 -0
  1567. data/spec/framework_spec/app/spec/library/zlib/deflate/initialize_copy_spec.rb +1 -0
  1568. data/spec/framework_spec/app/spec/library/zlib/deflate/new_spec.rb +1 -0
  1569. data/spec/framework_spec/app/spec/library/zlib/deflate/params_spec.rb +20 -0
  1570. data/spec/framework_spec/app/spec/library/zlib/deflate/set_dictionary_spec.rb +14 -0
  1571. data/spec/framework_spec/app/spec/library/zlib/gzipfile/close_spec.rb +23 -0
  1572. data/spec/framework_spec/app/spec/library/zlib/gzipfile/closed_spec.rb +17 -0
  1573. data/spec/framework_spec/app/spec/library/zlib/gzipfile/comment_spec.rb +27 -0
  1574. data/spec/framework_spec/app/spec/library/zlib/gzipfile/crc_spec.rb +1 -0
  1575. data/spec/framework_spec/app/spec/library/zlib/gzipfile/finish_spec.rb +1 -0
  1576. data/spec/framework_spec/app/spec/library/zlib/gzipfile/level_spec.rb +1 -0
  1577. data/spec/framework_spec/app/spec/library/zlib/gzipfile/mtime_spec.rb +1 -0
  1578. data/spec/framework_spec/app/spec/library/zlib/gzipfile/orig_name_spec.rb +27 -0
  1579. data/spec/framework_spec/app/spec/library/zlib/gzipfile/os_code_spec.rb +1 -0
  1580. data/spec/framework_spec/app/spec/library/zlib/gzipfile/sync_spec.rb +1 -0
  1581. data/spec/framework_spec/app/spec/library/zlib/gzipfile/to_io_spec.rb +1 -0
  1582. data/spec/framework_spec/app/spec/library/zlib/gzipfile/wrap_spec.rb +1 -0
  1583. data/spec/framework_spec/app/spec/library/zlib/gzipreader/each_byte_spec.rb +33 -0
  1584. data/spec/framework_spec/app/spec/library/zlib/gzipreader/each_line_spec.rb +1 -0
  1585. data/spec/framework_spec/app/spec/library/zlib/gzipreader/each_spec.rb +1 -0
  1586. data/spec/framework_spec/app/spec/library/zlib/gzipreader/eof_spec.rb +55 -0
  1587. data/spec/framework_spec/app/spec/library/zlib/gzipreader/getc_spec.rb +55 -0
  1588. data/spec/framework_spec/app/spec/library/zlib/gzipreader/gets_spec.rb +1 -0
  1589. data/spec/framework_spec/app/spec/library/zlib/gzipreader/lineno_spec.rb +1 -0
  1590. data/spec/framework_spec/app/spec/library/zlib/gzipreader/new_spec.rb +1 -0
  1591. data/spec/framework_spec/app/spec/library/zlib/gzipreader/open_spec.rb +1 -0
  1592. data/spec/framework_spec/app/spec/library/zlib/gzipreader/pos_spec.rb +26 -0
  1593. data/spec/framework_spec/app/spec/library/zlib/gzipreader/read_spec.rb +58 -0
  1594. data/spec/framework_spec/app/spec/library/zlib/gzipreader/readchar_spec.rb +1 -0
  1595. data/spec/framework_spec/app/spec/library/zlib/gzipreader/readline_spec.rb +1 -0
  1596. data/spec/framework_spec/app/spec/library/zlib/gzipreader/readlines_spec.rb +1 -0
  1597. data/spec/framework_spec/app/spec/library/zlib/gzipreader/rewind_spec.rb +47 -0
  1598. data/spec/framework_spec/app/spec/library/zlib/gzipreader/tell_spec.rb +1 -0
  1599. data/spec/framework_spec/app/spec/library/zlib/gzipreader/ungetc_spec.rb +1 -0
  1600. data/spec/framework_spec/app/spec/library/zlib/gzipreader/unused_spec.rb +1 -0
  1601. data/spec/framework_spec/app/spec/library/zlib/gzipwriter/append_spec.rb +1 -0
  1602. data/spec/framework_spec/app/spec/library/zlib/gzipwriter/comment_spec.rb +1 -0
  1603. data/spec/framework_spec/app/spec/library/zlib/gzipwriter/flush_spec.rb +1 -0
  1604. data/spec/framework_spec/app/spec/library/zlib/gzipwriter/mtime_spec.rb +41 -0
  1605. data/spec/framework_spec/app/spec/library/zlib/gzipwriter/new_spec.rb +1 -0
  1606. data/spec/framework_spec/app/spec/library/zlib/gzipwriter/open_spec.rb +1 -0
  1607. data/spec/framework_spec/app/spec/library/zlib/gzipwriter/orig_name_spec.rb +1 -0
  1608. data/spec/framework_spec/app/spec/library/zlib/gzipwriter/pos_spec.rb +1 -0
  1609. data/spec/framework_spec/app/spec/library/zlib/gzipwriter/print_spec.rb +1 -0
  1610. data/spec/framework_spec/app/spec/library/zlib/gzipwriter/printf_spec.rb +1 -0
  1611. data/spec/framework_spec/app/spec/library/zlib/gzipwriter/putc_spec.rb +1 -0
  1612. data/spec/framework_spec/app/spec/library/zlib/gzipwriter/puts_spec.rb +1 -0
  1613. data/spec/framework_spec/app/spec/library/zlib/gzipwriter/tell_spec.rb +1 -0
  1614. data/spec/framework_spec/app/spec/library/zlib/gzipwriter/write_spec.rb +24 -0
  1615. data/spec/framework_spec/app/spec/library/zlib/inflate/append_spec.rb +60 -0
  1616. data/spec/framework_spec/app/spec/library/zlib/inflate/inflate_spec.rb +109 -0
  1617. data/spec/framework_spec/app/spec/library/zlib/inflate/new_spec.rb +1 -0
  1618. data/spec/framework_spec/app/spec/library/zlib/inflate/set_dictionary_spec.rb +20 -0
  1619. data/spec/framework_spec/app/spec/library/zlib/inflate/sync_point_spec.rb +1 -0
  1620. data/spec/framework_spec/app/spec/library/zlib/inflate/sync_spec.rb +1 -0
  1621. data/spec/framework_spec/app/spec/library/zlib/zlib_version_spec.rb +1 -0
  1622. data/spec/framework_spec/app/spec/library/zlib/zstream/adler_spec.rb +1 -0
  1623. data/spec/framework_spec/app/spec/library/zlib/zstream/avail_in_spec.rb +1 -0
  1624. data/spec/framework_spec/app/spec/library/zlib/zstream/avail_out_spec.rb +1 -0
  1625. data/spec/framework_spec/app/spec/library/zlib/zstream/close_spec.rb +1 -0
  1626. data/spec/framework_spec/app/spec/library/zlib/zstream/closed_spec.rb +1 -0
  1627. data/spec/framework_spec/app/spec/library/zlib/zstream/data_type_spec.rb +1 -0
  1628. data/spec/framework_spec/app/spec/library/zlib/zstream/end_spec.rb +1 -0
  1629. data/spec/framework_spec/app/spec/library/zlib/zstream/ended_spec.rb +1 -0
  1630. data/spec/framework_spec/app/spec/library/zlib/zstream/finish_spec.rb +1 -0
  1631. data/spec/framework_spec/app/spec/library/zlib/zstream/finished_spec.rb +1 -0
  1632. data/spec/framework_spec/app/spec/library/zlib/zstream/flush_next_in_spec.rb +1 -0
  1633. data/spec/framework_spec/app/spec/library/zlib/zstream/flush_next_out_spec.rb +16 -0
  1634. data/spec/framework_spec/app/spec/library/zlib/zstream/reset_spec.rb +1 -0
  1635. data/spec/framework_spec/app/spec/library/zlib/zstream/stream_end_spec.rb +1 -0
  1636. data/spec/framework_spec/app/spec/library/zlib/zstream/total_in_spec.rb +1 -0
  1637. data/spec/framework_spec/app/spec/library/zlib/zstream/total_out_spec.rb +1 -0
  1638. data/spec/framework_spec/app/spec/shared/file/executable_real.rb +1 -1
  1639. data/spec/framework_spec/app/spec/shared/file/file.rb +1 -1
  1640. data/spec/framework_spec/app/spec_runner.rb +6 -5
  1641. data/spec/framework_spec/build.yml +4 -1
  1642. data/spec/phone_spec/app/BlobBulkTest/blob_bulk_test.png +0 -0
  1643. data/spec/phone_spec/app/BlobBulkTest/blob_bulk_test.rb +11 -0
  1644. data/spec/phone_spec/app/BlobBulkTest_s/blob_bulk_test_s.png +0 -0
  1645. data/spec/phone_spec/app/BlobBulkTest_s/blob_bulk_test_s.rb +11 -0
  1646. data/spec/phone_spec/app/Data/invalid_import_db.zip +0 -0
  1647. data/spec/phone_spec/app/Data/valid_import_db.zip +0 -0
  1648. data/spec/phone_spec/app/spec/asynchttp_spec.rb +1 -1
  1649. data/spec/phone_spec/app/spec/blob_bulksync_spec.rb +160 -0
  1650. data/spec/phone_spec/app/spec/bulksync_spec.rb +51 -1
  1651. data/spec/phone_spec/app/spec/bundle_update_spec.rb +85 -0
  1652. data/spec/phone_spec/app/spec/database_spec.rb +174 -0
  1653. data/spec/phone_spec/app/spec/events_spec.rb +4 -4
  1654. data/spec/phone_spec/app/spec/json_spec.rb +1 -1
  1655. data/spec/phone_spec/app/spec/rho_spec.rb +88 -12
  1656. data/spec/phone_spec/app/spec/rhofile_spec.rb +1 -1
  1657. data/spec/phone_spec/app/spec/rhom_object_spec.rb +8 -5
  1658. data/spec/phone_spec/app/spec/syncengine_spec.rb +281 -18
  1659. data/spec/phone_spec/app/spec/uri_spec.rb +5 -5
  1660. data/spec/phone_spec/app/spec_runner.rb +16 -9
  1661. data/spec/phone_spec/build.yml +2 -1
  1662. data/spec/phone_spec/public/file_for_replace.txt +1 -0
  1663. data/spec/phone_spec/public/file_to_remove.png +0 -0
  1664. data/spec/phone_spec/public/folder_to_remove.png +0 -0
  1665. data/spec/phone_spec/public/folder_to_remove/switch.png +0 -0
  1666. data/spec/phone_spec/public/partial_update_bundle/upgrade_bundle_partial.zip +0 -0
  1667. data/spec/phone_spec/upgrade_package_add_files.txt +2 -0
  1668. data/spec/phone_spec/upgrade_package_remove_files.txt +2 -0
  1669. data/version +1 -1
  1670. metadata +1384 -12
  1671. data/Manifest.txt +0 -8054
  1672. data/doc/alert-api.txt +0 -51
  1673. data/doc/files.txt +0 -4
  1674. data/doc/rhodes-api.txt +0 -147
  1675. data/doc/scanner.txt +0 -507
  1676. data/doc/timer-api.txt +0 -39
  1677. data/doc/tutorial.txt +0 -130
  1678. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/WebkitExtension.java +0 -53
@@ -0,0 +1,283 @@
1
+ /* ssl/dtls1.h */
2
+ /*
3
+ * DTLS implementation written by Nagendra Modadugu
4
+ * (nagendra@cs.stanford.edu) for the OpenSSL project 2005.
5
+ */
6
+ /* ====================================================================
7
+ * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved.
8
+ *
9
+ * Redistribution and use in source and binary forms, with or without
10
+ * modification, are permitted provided that the following conditions
11
+ * are met:
12
+ *
13
+ * 1. Redistributions of source code must retain the above copyright
14
+ * notice, this list of conditions and the following disclaimer.
15
+ *
16
+ * 2. Redistributions in binary form must reproduce the above copyright
17
+ * notice, this list of conditions and the following disclaimer in
18
+ * the documentation and/or other materials provided with the
19
+ * distribution.
20
+ *
21
+ * 3. All advertising materials mentioning features or use of this
22
+ * software must display the following acknowledgment:
23
+ * "This product includes software developed by the OpenSSL Project
24
+ * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
25
+ *
26
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
27
+ * endorse or promote products derived from this software without
28
+ * prior written permission. For written permission, please contact
29
+ * openssl-core@OpenSSL.org.
30
+ *
31
+ * 5. Products derived from this software may not be called "OpenSSL"
32
+ * nor may "OpenSSL" appear in their names without prior written
33
+ * permission of the OpenSSL Project.
34
+ *
35
+ * 6. Redistributions of any form whatsoever must retain the following
36
+ * acknowledgment:
37
+ * "This product includes software developed by the OpenSSL Project
38
+ * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
39
+ *
40
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
41
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
42
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
43
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
44
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
45
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
46
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
47
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
49
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
50
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
51
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
52
+ * ====================================================================
53
+ *
54
+ * This product includes cryptographic software written by Eric Young
55
+ * (eay@cryptsoft.com). This product includes software written by Tim
56
+ * Hudson (tjh@cryptsoft.com).
57
+ *
58
+ */
59
+
60
+ #ifndef HEADER_DTLS1_H
61
+ #define HEADER_DTLS1_H
62
+
63
+ #include <openssl/buffer.h>
64
+ #include <openssl/pqueue.h>
65
+ #ifdef OPENSSL_SYS_VMS
66
+ #include <resource.h>
67
+ #include <sys/timeb.h>
68
+ #endif
69
+ #ifdef OPENSSL_SYS_WIN32
70
+ /* Needed for struct timeval */
71
+ #include <winsock2.h>
72
+ #elif defined(OPENSSL_SYS_NETWARE) && !defined(_WINSOCK2API_)
73
+ #include <sys/timeval.h>
74
+ #else
75
+ #include <sys/time.h>
76
+ #endif
77
+
78
+ #ifdef __cplusplus
79
+ extern "C" {
80
+ #endif
81
+
82
+ #define DTLS1_VERSION 0xFEFF
83
+ #define DTLS1_BAD_VER 0x0100
84
+
85
+ #if 0
86
+ /* this alert description is not specified anywhere... */
87
+ #define DTLS1_AD_MISSING_HANDSHAKE_MESSAGE 110
88
+ #endif
89
+
90
+ /* lengths of messages */
91
+ #define DTLS1_COOKIE_LENGTH 256
92
+
93
+ #define DTLS1_RT_HEADER_LENGTH 13
94
+
95
+ #define DTLS1_HM_HEADER_LENGTH 12
96
+
97
+ #define DTLS1_HM_BAD_FRAGMENT -2
98
+ #define DTLS1_HM_FRAGMENT_RETRY -3
99
+
100
+ #define DTLS1_CCS_HEADER_LENGTH 1
101
+
102
+ #ifdef DTLS1_AD_MISSING_HANDSHAKE_MESSAGE
103
+ #define DTLS1_AL_HEADER_LENGTH 7
104
+ #else
105
+ #define DTLS1_AL_HEADER_LENGTH 2
106
+ #endif
107
+
108
+ #ifndef OPENSSL_NO_SSL_INTERN
109
+
110
+ #ifndef OPENSSL_NO_SCTP
111
+ #define DTLS1_SCTP_AUTH_LABEL "EXPORTER_DTLS_OVER_SCTP"
112
+ #endif
113
+
114
+ typedef struct dtls1_bitmap_st
115
+ {
116
+ unsigned long map; /* track 32 packets on 32-bit systems
117
+ and 64 - on 64-bit systems */
118
+ unsigned char max_seq_num[8]; /* max record number seen so far,
119
+ 64-bit value in big-endian
120
+ encoding */
121
+ } DTLS1_BITMAP;
122
+
123
+ struct dtls1_retransmit_state
124
+ {
125
+ EVP_CIPHER_CTX *enc_write_ctx; /* cryptographic state */
126
+ EVP_MD_CTX *write_hash; /* used for mac generation */
127
+ #ifndef OPENSSL_NO_COMP
128
+ COMP_CTX *compress; /* compression */
129
+ #else
130
+ char *compress;
131
+ #endif
132
+ SSL_SESSION *session;
133
+ unsigned short epoch;
134
+ };
135
+
136
+ struct hm_header_st
137
+ {
138
+ unsigned char type;
139
+ unsigned long msg_len;
140
+ unsigned short seq;
141
+ unsigned long frag_off;
142
+ unsigned long frag_len;
143
+ unsigned int is_ccs;
144
+ struct dtls1_retransmit_state saved_retransmit_state;
145
+ };
146
+
147
+ struct ccs_header_st
148
+ {
149
+ unsigned char type;
150
+ unsigned short seq;
151
+ };
152
+
153
+ struct dtls1_timeout_st
154
+ {
155
+ /* Number of read timeouts so far */
156
+ unsigned int read_timeouts;
157
+
158
+ /* Number of write timeouts so far */
159
+ unsigned int write_timeouts;
160
+
161
+ /* Number of alerts received so far */
162
+ unsigned int num_alerts;
163
+ };
164
+
165
+ typedef struct record_pqueue_st
166
+ {
167
+ unsigned short epoch;
168
+ pqueue q;
169
+ } record_pqueue;
170
+
171
+ typedef struct hm_fragment_st
172
+ {
173
+ struct hm_header_st msg_header;
174
+ unsigned char *fragment;
175
+ unsigned char *reassembly;
176
+ } hm_fragment;
177
+
178
+ typedef struct dtls1_state_st
179
+ {
180
+ unsigned int send_cookie;
181
+ unsigned char cookie[DTLS1_COOKIE_LENGTH];
182
+ unsigned char rcvd_cookie[DTLS1_COOKIE_LENGTH];
183
+ unsigned int cookie_len;
184
+
185
+ /*
186
+ * The current data and handshake epoch. This is initially
187
+ * undefined, and starts at zero once the initial handshake is
188
+ * completed
189
+ */
190
+ unsigned short r_epoch;
191
+ unsigned short w_epoch;
192
+
193
+ /* records being received in the current epoch */
194
+ DTLS1_BITMAP bitmap;
195
+
196
+ /* renegotiation starts a new set of sequence numbers */
197
+ DTLS1_BITMAP next_bitmap;
198
+
199
+ /* handshake message numbers */
200
+ unsigned short handshake_write_seq;
201
+ unsigned short next_handshake_write_seq;
202
+
203
+ unsigned short handshake_read_seq;
204
+
205
+ /* save last sequence number for retransmissions */
206
+ unsigned char last_write_sequence[8];
207
+
208
+ /* Received handshake records (processed and unprocessed) */
209
+ record_pqueue unprocessed_rcds;
210
+ record_pqueue processed_rcds;
211
+
212
+ /* Buffered handshake messages */
213
+ pqueue buffered_messages;
214
+
215
+ /* Buffered (sent) handshake records */
216
+ pqueue sent_messages;
217
+
218
+ /* Buffered application records.
219
+ * Only for records between CCS and Finished
220
+ * to prevent either protocol violation or
221
+ * unnecessary message loss.
222
+ */
223
+ record_pqueue buffered_app_data;
224
+
225
+ /* Is set when listening for new connections with dtls1_listen() */
226
+ unsigned int listen;
227
+
228
+ unsigned int mtu; /* max DTLS packet size */
229
+
230
+ struct hm_header_st w_msg_hdr;
231
+ struct hm_header_st r_msg_hdr;
232
+
233
+ struct dtls1_timeout_st timeout;
234
+
235
+ /* Indicates when the last handshake msg or heartbeat sent will timeout */
236
+ struct timeval next_timeout;
237
+
238
+ /* Timeout duration */
239
+ unsigned short timeout_duration;
240
+
241
+ /* storage for Alert/Handshake protocol data received but not
242
+ * yet processed by ssl3_read_bytes: */
243
+ unsigned char alert_fragment[DTLS1_AL_HEADER_LENGTH];
244
+ unsigned int alert_fragment_len;
245
+ unsigned char handshake_fragment[DTLS1_HM_HEADER_LENGTH];
246
+ unsigned int handshake_fragment_len;
247
+
248
+ unsigned int retransmitting;
249
+ unsigned int change_cipher_spec_ok;
250
+
251
+ #ifndef OPENSSL_NO_SCTP
252
+ /* used when SSL_ST_XX_FLUSH is entered */
253
+ int next_state;
254
+
255
+ int shutdown_received;
256
+ #endif
257
+
258
+ } DTLS1_STATE;
259
+
260
+ typedef struct dtls1_record_data_st
261
+ {
262
+ unsigned char *packet;
263
+ unsigned int packet_length;
264
+ SSL3_BUFFER rbuf;
265
+ SSL3_RECORD rrec;
266
+ #ifndef OPENSSL_NO_SCTP
267
+ struct bio_dgram_sctp_rcvinfo recordinfo;
268
+ #endif
269
+ } DTLS1_RECORD_DATA;
270
+
271
+ #endif
272
+
273
+ /* Timeout multipliers (timeout slice is defined in apps/timeouts.h */
274
+ #define DTLS1_TMO_READ_COUNT 2
275
+ #define DTLS1_TMO_WRITE_COUNT 2
276
+
277
+ #define DTLS1_TMO_ALERT_COUNT 12
278
+
279
+ #ifdef __cplusplus
280
+ }
281
+ #endif
282
+ #endif
283
+
@@ -0,0 +1,2221 @@
1
+ /* ssl/kssl.c -*- mode: C; c-file-style: "eay" -*- */
2
+ /* Written by Vern Staats <staatsvr@asc.hpc.mil> for the OpenSSL project 2000.
3
+ */
4
+ /* ====================================================================
5
+ * Copyright (c) 2000 The OpenSSL Project. All rights reserved.
6
+ *
7
+ * Redistribution and use in source and binary forms, with or without
8
+ * modification, are permitted provided that the following conditions
9
+ * are met:
10
+ *
11
+ * 1. Redistributions of source code must retain the above copyright
12
+ * notice, this list of conditions and the following disclaimer.
13
+ *
14
+ * 2. Redistributions in binary form must reproduce the above copyright
15
+ * notice, this list of conditions and the following disclaimer in
16
+ * the documentation and/or other materials provided with the
17
+ * distribution.
18
+ *
19
+ * 3. All advertising materials mentioning features or use of this
20
+ * software must display the following acknowledgment:
21
+ * "This product includes software developed by the OpenSSL Project
22
+ * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
23
+ *
24
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
25
+ * endorse or promote products derived from this software without
26
+ * prior written permission. For written permission, please contact
27
+ * licensing@OpenSSL.org.
28
+ *
29
+ * 5. Products derived from this software may not be called "OpenSSL"
30
+ * nor may "OpenSSL" appear in their names without prior written
31
+ * permission of the OpenSSL Project.
32
+ *
33
+ * 6. Redistributions of any form whatsoever must retain the following
34
+ * acknowledgment:
35
+ * "This product includes software developed by the OpenSSL Project
36
+ * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
37
+ *
38
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
39
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
40
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
41
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
42
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
43
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
44
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
45
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
46
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
47
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
48
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
49
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
50
+ * ====================================================================
51
+ *
52
+ * This product includes cryptographic software written by Eric Young
53
+ * (eay@cryptsoft.com). This product includes software written by Tim
54
+ * Hudson (tjh@cryptsoft.com).
55
+ *
56
+ */
57
+
58
+
59
+ /* ssl/kssl.c -- Routines to support (& debug) Kerberos5 auth for openssl
60
+ **
61
+ ** 19990701 VRS Started.
62
+ ** 200011?? Jeffrey Altman, Richard Levitte
63
+ ** Generalized for Heimdal, Newer MIT, & Win32.
64
+ ** Integrated into main OpenSSL 0.9.7 snapshots.
65
+ ** 20010413 Simon Wilkinson, VRS
66
+ ** Real RFC2712 KerberosWrapper replaces AP_REQ.
67
+ */
68
+
69
+ #include <openssl/opensslconf.h>
70
+
71
+ #include <string.h>
72
+
73
+ #define KRB5_PRIVATE 1
74
+
75
+ #include <openssl/ssl.h>
76
+ #include <openssl/evp.h>
77
+ #include <openssl/objects.h>
78
+ #include <openssl/krb5_asn.h>
79
+ #include "kssl_lcl.h"
80
+
81
+ #ifndef OPENSSL_NO_KRB5
82
+
83
+ #ifndef ENOMEM
84
+ #define ENOMEM KRB5KRB_ERR_GENERIC
85
+ #endif
86
+
87
+ /*
88
+ * When OpenSSL is built on Windows, we do not want to require that
89
+ * the Kerberos DLLs be available in order for the OpenSSL DLLs to
90
+ * work. Therefore, all Kerberos routines are loaded at run time
91
+ * and we do not link to a .LIB file.
92
+ */
93
+
94
+ #if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_WIN32)
95
+ /*
96
+ * The purpose of the following pre-processor statements is to provide
97
+ * compatibility with different releases of MIT Kerberos for Windows.
98
+ * All versions up to 1.2 used macros. But macros do not allow for
99
+ * a binary compatible interface for DLLs. Therefore, all macros are
100
+ * being replaced by function calls. The following code will allow
101
+ * an OpenSSL DLL built on Windows to work whether or not the macro
102
+ * or function form of the routines are utilized.
103
+ */
104
+ #ifdef krb5_cc_get_principal
105
+ #define NO_DEF_KRB5_CCACHE
106
+ #undef krb5_cc_get_principal
107
+ #endif
108
+ #define krb5_cc_get_principal kssl_krb5_cc_get_principal
109
+
110
+ #define krb5_free_data_contents kssl_krb5_free_data_contents
111
+ #define krb5_free_context kssl_krb5_free_context
112
+ #define krb5_auth_con_free kssl_krb5_auth_con_free
113
+ #define krb5_free_principal kssl_krb5_free_principal
114
+ #define krb5_mk_req_extended kssl_krb5_mk_req_extended
115
+ #define krb5_get_credentials kssl_krb5_get_credentials
116
+ #define krb5_cc_default kssl_krb5_cc_default
117
+ #define krb5_sname_to_principal kssl_krb5_sname_to_principal
118
+ #define krb5_init_context kssl_krb5_init_context
119
+ #define krb5_free_ticket kssl_krb5_free_ticket
120
+ #define krb5_rd_req kssl_krb5_rd_req
121
+ #define krb5_kt_default kssl_krb5_kt_default
122
+ #define krb5_kt_resolve kssl_krb5_kt_resolve
123
+ /* macros in mit 1.2.2 and earlier; functions in mit 1.2.3 and greater */
124
+ #ifndef krb5_kt_close
125
+ #define krb5_kt_close kssl_krb5_kt_close
126
+ #endif /* krb5_kt_close */
127
+ #ifndef krb5_kt_get_entry
128
+ #define krb5_kt_get_entry kssl_krb5_kt_get_entry
129
+ #endif /* krb5_kt_get_entry */
130
+ #define krb5_auth_con_init kssl_krb5_auth_con_init
131
+
132
+ #define krb5_principal_compare kssl_krb5_principal_compare
133
+ #define krb5_decrypt_tkt_part kssl_krb5_decrypt_tkt_part
134
+ #define krb5_timeofday kssl_krb5_timeofday
135
+ #define krb5_rc_default kssl_krb5_rc_default
136
+
137
+ #ifdef krb5_rc_initialize
138
+ #undef krb5_rc_initialize
139
+ #endif
140
+ #define krb5_rc_initialize kssl_krb5_rc_initialize
141
+
142
+ #ifdef krb5_rc_get_lifespan
143
+ #undef krb5_rc_get_lifespan
144
+ #endif
145
+ #define krb5_rc_get_lifespan kssl_krb5_rc_get_lifespan
146
+
147
+ #ifdef krb5_rc_destroy
148
+ #undef krb5_rc_destroy
149
+ #endif
150
+ #define krb5_rc_destroy kssl_krb5_rc_destroy
151
+
152
+ #define valid_cksumtype kssl_valid_cksumtype
153
+ #define krb5_checksum_size kssl_krb5_checksum_size
154
+ #define krb5_kt_free_entry kssl_krb5_kt_free_entry
155
+ #define krb5_auth_con_setrcache kssl_krb5_auth_con_setrcache
156
+ #define krb5_auth_con_getrcache kssl_krb5_auth_con_getrcache
157
+ #define krb5_get_server_rcache kssl_krb5_get_server_rcache
158
+
159
+ /* Prototypes for built in stubs */
160
+ void kssl_krb5_free_data_contents(krb5_context, krb5_data *);
161
+ void kssl_krb5_free_principal(krb5_context, krb5_principal );
162
+ krb5_error_code kssl_krb5_kt_resolve(krb5_context,
163
+ krb5_const char *,
164
+ krb5_keytab *);
165
+ krb5_error_code kssl_krb5_kt_default(krb5_context,
166
+ krb5_keytab *);
167
+ krb5_error_code kssl_krb5_free_ticket(krb5_context, krb5_ticket *);
168
+ krb5_error_code kssl_krb5_rd_req(krb5_context, krb5_auth_context *,
169
+ krb5_const krb5_data *,
170
+ krb5_const_principal, krb5_keytab,
171
+ krb5_flags *,krb5_ticket **);
172
+
173
+ krb5_boolean kssl_krb5_principal_compare(krb5_context, krb5_const_principal,
174
+ krb5_const_principal);
175
+ krb5_error_code kssl_krb5_mk_req_extended(krb5_context,
176
+ krb5_auth_context *,
177
+ krb5_const krb5_flags,
178
+ krb5_data *,
179
+ krb5_creds *,
180
+ krb5_data * );
181
+ krb5_error_code kssl_krb5_init_context(krb5_context *);
182
+ void kssl_krb5_free_context(krb5_context);
183
+ krb5_error_code kssl_krb5_cc_default(krb5_context,krb5_ccache *);
184
+ krb5_error_code kssl_krb5_sname_to_principal(krb5_context,
185
+ krb5_const char *,
186
+ krb5_const char *,
187
+ krb5_int32,
188
+ krb5_principal *);
189
+ krb5_error_code kssl_krb5_get_credentials(krb5_context,
190
+ krb5_const krb5_flags,
191
+ krb5_ccache,
192
+ krb5_creds *,
193
+ krb5_creds * *);
194
+ krb5_error_code kssl_krb5_auth_con_init(krb5_context,
195
+ krb5_auth_context *);
196
+ krb5_error_code kssl_krb5_cc_get_principal(krb5_context context,
197
+ krb5_ccache cache,
198
+ krb5_principal *principal);
199
+ krb5_error_code kssl_krb5_auth_con_free(krb5_context,krb5_auth_context);
200
+ size_t kssl_krb5_checksum_size(krb5_context context,krb5_cksumtype ctype);
201
+ krb5_boolean kssl_valid_cksumtype(krb5_cksumtype ctype);
202
+ krb5_error_code krb5_kt_free_entry(krb5_context,krb5_keytab_entry FAR * );
203
+ krb5_error_code kssl_krb5_auth_con_setrcache(krb5_context,
204
+ krb5_auth_context,
205
+ krb5_rcache);
206
+ krb5_error_code kssl_krb5_get_server_rcache(krb5_context,
207
+ krb5_const krb5_data *,
208
+ krb5_rcache *);
209
+ krb5_error_code kssl_krb5_auth_con_getrcache(krb5_context,
210
+ krb5_auth_context,
211
+ krb5_rcache *);
212
+
213
+ /* Function pointers (almost all Kerberos functions are _stdcall) */
214
+ static void (_stdcall *p_krb5_free_data_contents)(krb5_context, krb5_data *)
215
+ =NULL;
216
+ static void (_stdcall *p_krb5_free_principal)(krb5_context, krb5_principal )
217
+ =NULL;
218
+ static krb5_error_code(_stdcall *p_krb5_kt_resolve)
219
+ (krb5_context, krb5_const char *, krb5_keytab *)=NULL;
220
+ static krb5_error_code (_stdcall *p_krb5_kt_default)(krb5_context,
221
+ krb5_keytab *)=NULL;
222
+ static krb5_error_code (_stdcall *p_krb5_free_ticket)(krb5_context,
223
+ krb5_ticket *)=NULL;
224
+ static krb5_error_code (_stdcall *p_krb5_rd_req)(krb5_context,
225
+ krb5_auth_context *,
226
+ krb5_const krb5_data *,
227
+ krb5_const_principal,
228
+ krb5_keytab, krb5_flags *,
229
+ krb5_ticket **)=NULL;
230
+ static krb5_error_code (_stdcall *p_krb5_mk_req_extended)
231
+ (krb5_context, krb5_auth_context *,
232
+ krb5_const krb5_flags, krb5_data *, krb5_creds *,
233
+ krb5_data * )=NULL;
234
+ static krb5_error_code (_stdcall *p_krb5_init_context)(krb5_context *)=NULL;
235
+ static void (_stdcall *p_krb5_free_context)(krb5_context)=NULL;
236
+ static krb5_error_code (_stdcall *p_krb5_cc_default)(krb5_context,
237
+ krb5_ccache *)=NULL;
238
+ static krb5_error_code (_stdcall *p_krb5_sname_to_principal)
239
+ (krb5_context, krb5_const char *, krb5_const char *,
240
+ krb5_int32, krb5_principal *)=NULL;
241
+ static krb5_error_code (_stdcall *p_krb5_get_credentials)
242
+ (krb5_context, krb5_const krb5_flags, krb5_ccache,
243
+ krb5_creds *, krb5_creds **)=NULL;
244
+ static krb5_error_code (_stdcall *p_krb5_auth_con_init)
245
+ (krb5_context, krb5_auth_context *)=NULL;
246
+ static krb5_error_code (_stdcall *p_krb5_cc_get_principal)
247
+ (krb5_context context, krb5_ccache cache,
248
+ krb5_principal *principal)=NULL;
249
+ static krb5_error_code (_stdcall *p_krb5_auth_con_free)
250
+ (krb5_context, krb5_auth_context)=NULL;
251
+ static krb5_error_code (_stdcall *p_krb5_decrypt_tkt_part)
252
+ (krb5_context, krb5_const krb5_keyblock *,
253
+ krb5_ticket *)=NULL;
254
+ static krb5_error_code (_stdcall *p_krb5_timeofday)
255
+ (krb5_context context, krb5_int32 *timeret)=NULL;
256
+ static krb5_error_code (_stdcall *p_krb5_rc_default)
257
+ (krb5_context context, krb5_rcache *rc)=NULL;
258
+ static krb5_error_code (_stdcall *p_krb5_rc_initialize)
259
+ (krb5_context context, krb5_rcache rc,
260
+ krb5_deltat lifespan)=NULL;
261
+ static krb5_error_code (_stdcall *p_krb5_rc_get_lifespan)
262
+ (krb5_context context, krb5_rcache rc,
263
+ krb5_deltat *lifespan)=NULL;
264
+ static krb5_error_code (_stdcall *p_krb5_rc_destroy)
265
+ (krb5_context context, krb5_rcache rc)=NULL;
266
+ static krb5_boolean (_stdcall *p_krb5_principal_compare)
267
+ (krb5_context, krb5_const_principal, krb5_const_principal)=NULL;
268
+ static size_t (_stdcall *p_krb5_checksum_size)(krb5_context context,krb5_cksumtype ctype)=NULL;
269
+ static krb5_boolean (_stdcall *p_valid_cksumtype)(krb5_cksumtype ctype)=NULL;
270
+ static krb5_error_code (_stdcall *p_krb5_kt_free_entry)
271
+ (krb5_context,krb5_keytab_entry * )=NULL;
272
+ static krb5_error_code (_stdcall * p_krb5_auth_con_setrcache)(krb5_context,
273
+ krb5_auth_context,
274
+ krb5_rcache)=NULL;
275
+ static krb5_error_code (_stdcall * p_krb5_get_server_rcache)(krb5_context,
276
+ krb5_const krb5_data *,
277
+ krb5_rcache *)=NULL;
278
+ static krb5_error_code (* p_krb5_auth_con_getrcache)(krb5_context,
279
+ krb5_auth_context,
280
+ krb5_rcache *)=NULL;
281
+ static krb5_error_code (_stdcall * p_krb5_kt_close)(krb5_context context,
282
+ krb5_keytab keytab)=NULL;
283
+ static krb5_error_code (_stdcall * p_krb5_kt_get_entry)(krb5_context context,
284
+ krb5_keytab keytab,
285
+ krb5_const_principal principal, krb5_kvno vno,
286
+ krb5_enctype enctype, krb5_keytab_entry *entry)=NULL;
287
+ static int krb5_loaded = 0; /* only attempt to initialize func ptrs once */
288
+
289
+ /* Function to Load the Kerberos 5 DLL and initialize function pointers */
290
+ void
291
+ load_krb5_dll(void)
292
+ {
293
+ HANDLE hKRB5_32;
294
+
295
+ krb5_loaded++;
296
+ hKRB5_32 = LoadLibrary(TEXT("KRB5_32"));
297
+ if (!hKRB5_32)
298
+ return;
299
+
300
+ (FARPROC) p_krb5_free_data_contents =
301
+ GetProcAddress( hKRB5_32, "krb5_free_data_contents" );
302
+ (FARPROC) p_krb5_free_context =
303
+ GetProcAddress( hKRB5_32, "krb5_free_context" );
304
+ (FARPROC) p_krb5_auth_con_free =
305
+ GetProcAddress( hKRB5_32, "krb5_auth_con_free" );
306
+ (FARPROC) p_krb5_free_principal =
307
+ GetProcAddress( hKRB5_32, "krb5_free_principal" );
308
+ (FARPROC) p_krb5_mk_req_extended =
309
+ GetProcAddress( hKRB5_32, "krb5_mk_req_extended" );
310
+ (FARPROC) p_krb5_get_credentials =
311
+ GetProcAddress( hKRB5_32, "krb5_get_credentials" );
312
+ (FARPROC) p_krb5_cc_get_principal =
313
+ GetProcAddress( hKRB5_32, "krb5_cc_get_principal" );
314
+ (FARPROC) p_krb5_cc_default =
315
+ GetProcAddress( hKRB5_32, "krb5_cc_default" );
316
+ (FARPROC) p_krb5_sname_to_principal =
317
+ GetProcAddress( hKRB5_32, "krb5_sname_to_principal" );
318
+ (FARPROC) p_krb5_init_context =
319
+ GetProcAddress( hKRB5_32, "krb5_init_context" );
320
+ (FARPROC) p_krb5_free_ticket =
321
+ GetProcAddress( hKRB5_32, "krb5_free_ticket" );
322
+ (FARPROC) p_krb5_rd_req =
323
+ GetProcAddress( hKRB5_32, "krb5_rd_req" );
324
+ (FARPROC) p_krb5_principal_compare =
325
+ GetProcAddress( hKRB5_32, "krb5_principal_compare" );
326
+ (FARPROC) p_krb5_decrypt_tkt_part =
327
+ GetProcAddress( hKRB5_32, "krb5_decrypt_tkt_part" );
328
+ (FARPROC) p_krb5_timeofday =
329
+ GetProcAddress( hKRB5_32, "krb5_timeofday" );
330
+ (FARPROC) p_krb5_rc_default =
331
+ GetProcAddress( hKRB5_32, "krb5_rc_default" );
332
+ (FARPROC) p_krb5_rc_initialize =
333
+ GetProcAddress( hKRB5_32, "krb5_rc_initialize" );
334
+ (FARPROC) p_krb5_rc_get_lifespan =
335
+ GetProcAddress( hKRB5_32, "krb5_rc_get_lifespan" );
336
+ (FARPROC) p_krb5_rc_destroy =
337
+ GetProcAddress( hKRB5_32, "krb5_rc_destroy" );
338
+ (FARPROC) p_krb5_kt_default =
339
+ GetProcAddress( hKRB5_32, "krb5_kt_default" );
340
+ (FARPROC) p_krb5_kt_resolve =
341
+ GetProcAddress( hKRB5_32, "krb5_kt_resolve" );
342
+ (FARPROC) p_krb5_auth_con_init =
343
+ GetProcAddress( hKRB5_32, "krb5_auth_con_init" );
344
+ (FARPROC) p_valid_cksumtype =
345
+ GetProcAddress( hKRB5_32, "valid_cksumtype" );
346
+ (FARPROC) p_krb5_checksum_size =
347
+ GetProcAddress( hKRB5_32, "krb5_checksum_size" );
348
+ (FARPROC) p_krb5_kt_free_entry =
349
+ GetProcAddress( hKRB5_32, "krb5_kt_free_entry" );
350
+ (FARPROC) p_krb5_auth_con_setrcache =
351
+ GetProcAddress( hKRB5_32, "krb5_auth_con_setrcache" );
352
+ (FARPROC) p_krb5_get_server_rcache =
353
+ GetProcAddress( hKRB5_32, "krb5_get_server_rcache" );
354
+ (FARPROC) p_krb5_auth_con_getrcache =
355
+ GetProcAddress( hKRB5_32, "krb5_auth_con_getrcache" );
356
+ (FARPROC) p_krb5_kt_close =
357
+ GetProcAddress( hKRB5_32, "krb5_kt_close" );
358
+ (FARPROC) p_krb5_kt_get_entry =
359
+ GetProcAddress( hKRB5_32, "krb5_kt_get_entry" );
360
+ }
361
+
362
+ /* Stubs for each function to be dynamicly loaded */
363
+ void
364
+ kssl_krb5_free_data_contents(krb5_context CO, krb5_data * data)
365
+ {
366
+ if (!krb5_loaded)
367
+ load_krb5_dll();
368
+
369
+ if ( p_krb5_free_data_contents )
370
+ p_krb5_free_data_contents(CO,data);
371
+ }
372
+
373
+ krb5_error_code
374
+ kssl_krb5_mk_req_extended (krb5_context CO,
375
+ krb5_auth_context * pACO,
376
+ krb5_const krb5_flags F,
377
+ krb5_data * pD1,
378
+ krb5_creds * pC,
379
+ krb5_data * pD2)
380
+ {
381
+ if (!krb5_loaded)
382
+ load_krb5_dll();
383
+
384
+ if ( p_krb5_mk_req_extended )
385
+ return(p_krb5_mk_req_extended(CO,pACO,F,pD1,pC,pD2));
386
+ else
387
+ return KRB5KRB_ERR_GENERIC;
388
+ }
389
+ krb5_error_code
390
+ kssl_krb5_auth_con_init(krb5_context CO,
391
+ krb5_auth_context * pACO)
392
+ {
393
+ if (!krb5_loaded)
394
+ load_krb5_dll();
395
+
396
+ if ( p_krb5_auth_con_init )
397
+ return(p_krb5_auth_con_init(CO,pACO));
398
+ else
399
+ return KRB5KRB_ERR_GENERIC;
400
+ }
401
+ krb5_error_code
402
+ kssl_krb5_auth_con_free (krb5_context CO,
403
+ krb5_auth_context ACO)
404
+ {
405
+ if (!krb5_loaded)
406
+ load_krb5_dll();
407
+
408
+ if ( p_krb5_auth_con_free )
409
+ return(p_krb5_auth_con_free(CO,ACO));
410
+ else
411
+ return KRB5KRB_ERR_GENERIC;
412
+ }
413
+ krb5_error_code
414
+ kssl_krb5_get_credentials(krb5_context CO,
415
+ krb5_const krb5_flags F,
416
+ krb5_ccache CC,
417
+ krb5_creds * pCR,
418
+ krb5_creds ** ppCR)
419
+ {
420
+ if (!krb5_loaded)
421
+ load_krb5_dll();
422
+
423
+ if ( p_krb5_get_credentials )
424
+ return(p_krb5_get_credentials(CO,F,CC,pCR,ppCR));
425
+ else
426
+ return KRB5KRB_ERR_GENERIC;
427
+ }
428
+ krb5_error_code
429
+ kssl_krb5_sname_to_principal(krb5_context CO,
430
+ krb5_const char * pC1,
431
+ krb5_const char * pC2,
432
+ krb5_int32 I,
433
+ krb5_principal * pPR)
434
+ {
435
+ if (!krb5_loaded)
436
+ load_krb5_dll();
437
+
438
+ if ( p_krb5_sname_to_principal )
439
+ return(p_krb5_sname_to_principal(CO,pC1,pC2,I,pPR));
440
+ else
441
+ return KRB5KRB_ERR_GENERIC;
442
+ }
443
+
444
+ krb5_error_code
445
+ kssl_krb5_cc_default(krb5_context CO,
446
+ krb5_ccache * pCC)
447
+ {
448
+ if (!krb5_loaded)
449
+ load_krb5_dll();
450
+
451
+ if ( p_krb5_cc_default )
452
+ return(p_krb5_cc_default(CO,pCC));
453
+ else
454
+ return KRB5KRB_ERR_GENERIC;
455
+ }
456
+
457
+ krb5_error_code
458
+ kssl_krb5_init_context(krb5_context * pCO)
459
+ {
460
+ if (!krb5_loaded)
461
+ load_krb5_dll();
462
+
463
+ if ( p_krb5_init_context )
464
+ return(p_krb5_init_context(pCO));
465
+ else
466
+ return KRB5KRB_ERR_GENERIC;
467
+ }
468
+
469
+ void
470
+ kssl_krb5_free_context(krb5_context CO)
471
+ {
472
+ if (!krb5_loaded)
473
+ load_krb5_dll();
474
+
475
+ if ( p_krb5_free_context )
476
+ p_krb5_free_context(CO);
477
+ }
478
+
479
+ void
480
+ kssl_krb5_free_principal(krb5_context c, krb5_principal p)
481
+ {
482
+ if (!krb5_loaded)
483
+ load_krb5_dll();
484
+
485
+ if ( p_krb5_free_principal )
486
+ p_krb5_free_principal(c,p);
487
+ }
488
+
489
+ krb5_error_code
490
+ kssl_krb5_kt_resolve(krb5_context con,
491
+ krb5_const char * sz,
492
+ krb5_keytab * kt)
493
+ {
494
+ if (!krb5_loaded)
495
+ load_krb5_dll();
496
+
497
+ if ( p_krb5_kt_resolve )
498
+ return(p_krb5_kt_resolve(con,sz,kt));
499
+ else
500
+ return KRB5KRB_ERR_GENERIC;
501
+ }
502
+
503
+ krb5_error_code
504
+ kssl_krb5_kt_default(krb5_context con,
505
+ krb5_keytab * kt)
506
+ {
507
+ if (!krb5_loaded)
508
+ load_krb5_dll();
509
+
510
+ if ( p_krb5_kt_default )
511
+ return(p_krb5_kt_default(con,kt));
512
+ else
513
+ return KRB5KRB_ERR_GENERIC;
514
+ }
515
+
516
+ krb5_error_code
517
+ kssl_krb5_free_ticket(krb5_context con,
518
+ krb5_ticket * kt)
519
+ {
520
+ if (!krb5_loaded)
521
+ load_krb5_dll();
522
+
523
+ if ( p_krb5_free_ticket )
524
+ return(p_krb5_free_ticket(con,kt));
525
+ else
526
+ return KRB5KRB_ERR_GENERIC;
527
+ }
528
+
529
+ krb5_error_code
530
+ kssl_krb5_rd_req(krb5_context con, krb5_auth_context * pacon,
531
+ krb5_const krb5_data * data,
532
+ krb5_const_principal princ, krb5_keytab keytab,
533
+ krb5_flags * flags, krb5_ticket ** pptkt)
534
+ {
535
+ if (!krb5_loaded)
536
+ load_krb5_dll();
537
+
538
+ if ( p_krb5_rd_req )
539
+ return(p_krb5_rd_req(con,pacon,data,princ,keytab,flags,pptkt));
540
+ else
541
+ return KRB5KRB_ERR_GENERIC;
542
+ }
543
+
544
+ krb5_boolean
545
+ krb5_principal_compare(krb5_context con, krb5_const_principal princ1,
546
+ krb5_const_principal princ2)
547
+ {
548
+ if (!krb5_loaded)
549
+ load_krb5_dll();
550
+
551
+ if ( p_krb5_principal_compare )
552
+ return(p_krb5_principal_compare(con,princ1,princ2));
553
+ else
554
+ return KRB5KRB_ERR_GENERIC;
555
+ }
556
+
557
+ krb5_error_code
558
+ krb5_decrypt_tkt_part(krb5_context con, krb5_const krb5_keyblock *keys,
559
+ krb5_ticket *ticket)
560
+ {
561
+ if (!krb5_loaded)
562
+ load_krb5_dll();
563
+
564
+ if ( p_krb5_decrypt_tkt_part )
565
+ return(p_krb5_decrypt_tkt_part(con,keys,ticket));
566
+ else
567
+ return KRB5KRB_ERR_GENERIC;
568
+ }
569
+
570
+ krb5_error_code
571
+ krb5_timeofday(krb5_context con, krb5_int32 *timeret)
572
+ {
573
+ if (!krb5_loaded)
574
+ load_krb5_dll();
575
+
576
+ if ( p_krb5_timeofday )
577
+ return(p_krb5_timeofday(con,timeret));
578
+ else
579
+ return KRB5KRB_ERR_GENERIC;
580
+ }
581
+
582
+ krb5_error_code
583
+ krb5_rc_default(krb5_context con, krb5_rcache *rc)
584
+ {
585
+ if (!krb5_loaded)
586
+ load_krb5_dll();
587
+
588
+ if ( p_krb5_rc_default )
589
+ return(p_krb5_rc_default(con,rc));
590
+ else
591
+ return KRB5KRB_ERR_GENERIC;
592
+ }
593
+
594
+ krb5_error_code
595
+ krb5_rc_initialize(krb5_context con, krb5_rcache rc, krb5_deltat lifespan)
596
+ {
597
+ if (!krb5_loaded)
598
+ load_krb5_dll();
599
+
600
+ if ( p_krb5_rc_initialize )
601
+ return(p_krb5_rc_initialize(con, rc, lifespan));
602
+ else
603
+ return KRB5KRB_ERR_GENERIC;
604
+ }
605
+
606
+ krb5_error_code
607
+ krb5_rc_get_lifespan(krb5_context con, krb5_rcache rc, krb5_deltat *lifespanp)
608
+ {
609
+ if (!krb5_loaded)
610
+ load_krb5_dll();
611
+
612
+ if ( p_krb5_rc_get_lifespan )
613
+ return(p_krb5_rc_get_lifespan(con, rc, lifespanp));
614
+ else
615
+ return KRB5KRB_ERR_GENERIC;
616
+ }
617
+
618
+ krb5_error_code
619
+ krb5_rc_destroy(krb5_context con, krb5_rcache rc)
620
+ {
621
+ if (!krb5_loaded)
622
+ load_krb5_dll();
623
+
624
+ if ( p_krb5_rc_destroy )
625
+ return(p_krb5_rc_destroy(con, rc));
626
+ else
627
+ return KRB5KRB_ERR_GENERIC;
628
+ }
629
+
630
+ size_t
631
+ krb5_checksum_size(krb5_context context,krb5_cksumtype ctype)
632
+ {
633
+ if (!krb5_loaded)
634
+ load_krb5_dll();
635
+
636
+ if ( p_krb5_checksum_size )
637
+ return(p_krb5_checksum_size(context, ctype));
638
+ else
639
+ return KRB5KRB_ERR_GENERIC;
640
+ }
641
+
642
+ krb5_boolean
643
+ valid_cksumtype(krb5_cksumtype ctype)
644
+ {
645
+ if (!krb5_loaded)
646
+ load_krb5_dll();
647
+
648
+ if ( p_valid_cksumtype )
649
+ return(p_valid_cksumtype(ctype));
650
+ else
651
+ return KRB5KRB_ERR_GENERIC;
652
+ }
653
+
654
+ krb5_error_code
655
+ krb5_kt_free_entry(krb5_context con,krb5_keytab_entry * entry)
656
+ {
657
+ if (!krb5_loaded)
658
+ load_krb5_dll();
659
+
660
+ if ( p_krb5_kt_free_entry )
661
+ return(p_krb5_kt_free_entry(con,entry));
662
+ else
663
+ return KRB5KRB_ERR_GENERIC;
664
+ }
665
+
666
+ /* Structure definitions */
667
+ #ifndef NO_DEF_KRB5_CCACHE
668
+ #ifndef krb5_x
669
+ #define krb5_x(ptr,args) ((ptr)?((*(ptr)) args):(abort(),1))
670
+ #define krb5_xc(ptr,args) ((ptr)?((*(ptr)) args):(abort(),(char*)0))
671
+ #endif
672
+
673
+ typedef krb5_pointer krb5_cc_cursor; /* cursor for sequential lookup */
674
+
675
+ typedef struct _krb5_ccache
676
+ {
677
+ krb5_magic magic;
678
+ struct _krb5_cc_ops FAR *ops;
679
+ krb5_pointer data;
680
+ } *krb5_ccache;
681
+
682
+ typedef struct _krb5_cc_ops
683
+ {
684
+ krb5_magic magic;
685
+ char *prefix;
686
+ char * (KRB5_CALLCONV *get_name)
687
+ (krb5_context, krb5_ccache);
688
+ krb5_error_code (KRB5_CALLCONV *resolve)
689
+ (krb5_context, krb5_ccache *, const char *);
690
+ krb5_error_code (KRB5_CALLCONV *gen_new)
691
+ (krb5_context, krb5_ccache *);
692
+ krb5_error_code (KRB5_CALLCONV *init)
693
+ (krb5_context, krb5_ccache, krb5_principal);
694
+ krb5_error_code (KRB5_CALLCONV *destroy)
695
+ (krb5_context, krb5_ccache);
696
+ krb5_error_code (KRB5_CALLCONV *close)
697
+ (krb5_context, krb5_ccache);
698
+ krb5_error_code (KRB5_CALLCONV *store)
699
+ (krb5_context, krb5_ccache, krb5_creds *);
700
+ krb5_error_code (KRB5_CALLCONV *retrieve)
701
+ (krb5_context, krb5_ccache,
702
+ krb5_flags, krb5_creds *, krb5_creds *);
703
+ krb5_error_code (KRB5_CALLCONV *get_princ)
704
+ (krb5_context, krb5_ccache, krb5_principal *);
705
+ krb5_error_code (KRB5_CALLCONV *get_first)
706
+ (krb5_context, krb5_ccache, krb5_cc_cursor *);
707
+ krb5_error_code (KRB5_CALLCONV *get_next)
708
+ (krb5_context, krb5_ccache,
709
+ krb5_cc_cursor *, krb5_creds *);
710
+ krb5_error_code (KRB5_CALLCONV *end_get)
711
+ (krb5_context, krb5_ccache, krb5_cc_cursor *);
712
+ krb5_error_code (KRB5_CALLCONV *remove_cred)
713
+ (krb5_context, krb5_ccache,
714
+ krb5_flags, krb5_creds *);
715
+ krb5_error_code (KRB5_CALLCONV *set_flags)
716
+ (krb5_context, krb5_ccache, krb5_flags);
717
+ } krb5_cc_ops;
718
+ #endif /* NO_DEF_KRB5_CCACHE */
719
+
720
+ krb5_error_code
721
+ kssl_krb5_cc_get_principal
722
+ (krb5_context context, krb5_ccache cache,
723
+ krb5_principal *principal)
724
+ {
725
+ if ( p_krb5_cc_get_principal )
726
+ return(p_krb5_cc_get_principal(context,cache,principal));
727
+ else
728
+ return(krb5_x
729
+ ((cache)->ops->get_princ,(context, cache, principal)));
730
+ }
731
+
732
+ krb5_error_code
733
+ kssl_krb5_auth_con_setrcache(krb5_context con, krb5_auth_context acon,
734
+ krb5_rcache rcache)
735
+ {
736
+ if ( p_krb5_auth_con_setrcache )
737
+ return(p_krb5_auth_con_setrcache(con,acon,rcache));
738
+ else
739
+ return KRB5KRB_ERR_GENERIC;
740
+ }
741
+
742
+ krb5_error_code
743
+ kssl_krb5_get_server_rcache(krb5_context con, krb5_const krb5_data * data,
744
+ krb5_rcache * rcache)
745
+ {
746
+ if ( p_krb5_get_server_rcache )
747
+ return(p_krb5_get_server_rcache(con,data,rcache));
748
+ else
749
+ return KRB5KRB_ERR_GENERIC;
750
+ }
751
+
752
+ krb5_error_code
753
+ kssl_krb5_auth_con_getrcache(krb5_context con, krb5_auth_context acon,
754
+ krb5_rcache * prcache)
755
+ {
756
+ if ( p_krb5_auth_con_getrcache )
757
+ return(p_krb5_auth_con_getrcache(con,acon, prcache));
758
+ else
759
+ return KRB5KRB_ERR_GENERIC;
760
+ }
761
+
762
+ krb5_error_code
763
+ kssl_krb5_kt_close(krb5_context context, krb5_keytab keytab)
764
+ {
765
+ if ( p_krb5_kt_close )
766
+ return(p_krb5_kt_close(context,keytab));
767
+ else
768
+ return KRB5KRB_ERR_GENERIC;
769
+ }
770
+
771
+ krb5_error_code
772
+ kssl_krb5_kt_get_entry(krb5_context context, krb5_keytab keytab,
773
+ krb5_const_principal principal, krb5_kvno vno,
774
+ krb5_enctype enctype, krb5_keytab_entry *entry)
775
+ {
776
+ if ( p_krb5_kt_get_entry )
777
+ return(p_krb5_kt_get_entry(context,keytab,principal,vno,enctype,entry));
778
+ else
779
+ return KRB5KRB_ERR_GENERIC;
780
+ }
781
+ #endif /* OPENSSL_SYS_WINDOWS || OPENSSL_SYS_WIN32 */
782
+
783
+
784
+ /* memory allocation functions for non-temporary storage
785
+ * (e.g. stuff that gets saved into the kssl context) */
786
+ static void* kssl_calloc(size_t nmemb, size_t size)
787
+ {
788
+ void* p;
789
+
790
+ p=OPENSSL_malloc(nmemb*size);
791
+ if (p){
792
+ memset(p, 0, nmemb*size);
793
+ }
794
+ return p;
795
+ }
796
+
797
+ #define kssl_malloc(size) OPENSSL_malloc((size))
798
+ #define kssl_realloc(ptr, size) OPENSSL_realloc(ptr, size)
799
+ #define kssl_free(ptr) OPENSSL_free((ptr))
800
+
801
+
802
+ char
803
+ *kstring(char *string)
804
+ {
805
+ static char *null = "[NULL]";
806
+
807
+ return ((string == NULL)? null: string);
808
+ }
809
+
810
+ /* Given KRB5 enctype (basically DES or 3DES),
811
+ ** return closest match openssl EVP_ encryption algorithm.
812
+ ** Return NULL for unknown or problematic (krb5_dk_encrypt) enctypes.
813
+ ** Assume ENCTYPE_*_RAW (krb5_raw_encrypt) are OK.
814
+ */
815
+ const EVP_CIPHER *
816
+ kssl_map_enc(krb5_enctype enctype)
817
+ {
818
+ switch (enctype)
819
+ {
820
+ case ENCTYPE_DES_HMAC_SHA1: /* EVP_des_cbc(); */
821
+ case ENCTYPE_DES_CBC_CRC:
822
+ case ENCTYPE_DES_CBC_MD4:
823
+ case ENCTYPE_DES_CBC_MD5:
824
+ case ENCTYPE_DES_CBC_RAW:
825
+ return EVP_des_cbc();
826
+ break;
827
+ case ENCTYPE_DES3_CBC_SHA1: /* EVP_des_ede3_cbc(); */
828
+ case ENCTYPE_DES3_CBC_SHA:
829
+ case ENCTYPE_DES3_CBC_RAW:
830
+ return EVP_des_ede3_cbc();
831
+ break;
832
+ default: return NULL;
833
+ break;
834
+ }
835
+ }
836
+
837
+
838
+ /* Return true:1 if p "looks like" the start of the real authenticator
839
+ ** described in kssl_skip_confound() below. The ASN.1 pattern is
840
+ ** "62 xx 30 yy" (APPLICATION-2, SEQUENCE), where xx-yy =~ 2, and
841
+ ** xx and yy are possibly multi-byte length fields.
842
+ */
843
+ static int kssl_test_confound(unsigned char *p)
844
+ {
845
+ int len = 2;
846
+ int xx = 0, yy = 0;
847
+
848
+ if (*p++ != 0x62) return 0;
849
+ if (*p > 0x82) return 0;
850
+ switch(*p) {
851
+ case 0x82: p++; xx = (*p++ << 8); xx += *p++; break;
852
+ case 0x81: p++; xx = *p++; break;
853
+ case 0x80: return 0;
854
+ default: xx = *p++; break;
855
+ }
856
+ if (*p++ != 0x30) return 0;
857
+ if (*p > 0x82) return 0;
858
+ switch(*p) {
859
+ case 0x82: p++; len+=2; yy = (*p++ << 8); yy += *p++; break;
860
+ case 0x81: p++; len++; yy = *p++; break;
861
+ case 0x80: return 0;
862
+ default: yy = *p++; break;
863
+ }
864
+
865
+ return (xx - len == yy)? 1: 0;
866
+ }
867
+
868
+ /* Allocate, fill, and return cksumlens array of checksum lengths.
869
+ ** This array holds just the unique elements from the krb5_cksumarray[].
870
+ ** array[n] == 0 signals end of data.
871
+ **
872
+ ** The krb5_cksumarray[] was an internal variable that has since been
873
+ ** replaced by a more general method for storing the data. It should
874
+ ** not be used. Instead we use real API calls and make a guess for
875
+ ** what the highest assigned CKSUMTYPE_ constant is. As of 1.2.2
876
+ ** it is 0x000c (CKSUMTYPE_HMAC_SHA1_DES3). So we will use 0x0010.
877
+ */
878
+ static size_t *populate_cksumlens(void)
879
+ {
880
+ int i, j, n;
881
+ static size_t *cklens = NULL;
882
+
883
+ #ifdef KRB5_MIT_OLD11
884
+ n = krb5_max_cksum;
885
+ #else
886
+ n = 0x0010;
887
+ #endif /* KRB5_MIT_OLD11 */
888
+
889
+ #ifdef KRB5CHECKAUTH
890
+ if (!cklens && !(cklens = (size_t *) calloc(sizeof(int),n+1))) return NULL;
891
+
892
+ for (i=0; i < n; i++) {
893
+ if (!valid_cksumtype(i)) continue; /* array has holes */
894
+ for (j=0; j < n; j++) {
895
+ if (cklens[j] == 0) {
896
+ cklens[j] = krb5_checksum_size(NULL,i);
897
+ break; /* krb5 elem was new: add */
898
+ }
899
+ if (cklens[j] == krb5_checksum_size(NULL,i)) {
900
+ break; /* ignore duplicate elements */
901
+ }
902
+ }
903
+ }
904
+ #endif /* KRB5CHECKAUTH */
905
+
906
+ return cklens;
907
+ }
908
+
909
+ /* Return pointer to start of real authenticator within authenticator, or
910
+ ** return NULL on error.
911
+ ** Decrypted authenticator looks like this:
912
+ ** [0 or 8 byte confounder] [4-24 byte checksum] [real authent'r]
913
+ ** This hackery wouldn't be necessary if MIT KRB5 1.0.6 had the
914
+ ** krb5_auth_con_getcksumtype() function advertised in its krb5.h.
915
+ */
916
+ unsigned char *kssl_skip_confound(krb5_enctype etype, unsigned char *a)
917
+ {
918
+ int i, conlen;
919
+ size_t cklen;
920
+ static size_t *cksumlens = NULL;
921
+ unsigned char *test_auth;
922
+
923
+ conlen = (etype)? 8: 0;
924
+
925
+ if (!cksumlens && !(cksumlens = populate_cksumlens())) return NULL;
926
+ for (i=0; (cklen = cksumlens[i]) != 0; i++)
927
+ {
928
+ test_auth = a + conlen + cklen;
929
+ if (kssl_test_confound(test_auth)) return test_auth;
930
+ }
931
+
932
+ return NULL;
933
+ }
934
+
935
+
936
+ /* Set kssl_err error info when reason text is a simple string
937
+ ** kssl_err = struct { int reason; char text[KSSL_ERR_MAX+1]; }
938
+ */
939
+ void
940
+ kssl_err_set(KSSL_ERR *kssl_err, int reason, char *text)
941
+ {
942
+ if (kssl_err == NULL) return;
943
+
944
+ kssl_err->reason = reason;
945
+ BIO_snprintf(kssl_err->text, KSSL_ERR_MAX, "%s", text);
946
+ return;
947
+ }
948
+
949
+
950
+ /* Display contents of krb5_data struct, for debugging
951
+ */
952
+ void
953
+ print_krb5_data(char *label, krb5_data *kdata)
954
+ {
955
+ int i;
956
+
957
+ printf("%s[%d] ", label, kdata->length);
958
+ for (i=0; i < (int)kdata->length; i++)
959
+ {
960
+ if (0 && isprint((int) kdata->data[i]))
961
+ printf( "%c ", kdata->data[i]);
962
+ else
963
+ printf( "%02x ", (unsigned char) kdata->data[i]);
964
+ }
965
+ printf("\n");
966
+ }
967
+
968
+
969
+ /* Display contents of krb5_authdata struct, for debugging
970
+ */
971
+ void
972
+ print_krb5_authdata(char *label, krb5_authdata **adata)
973
+ {
974
+ if (adata == NULL)
975
+ {
976
+ printf("%s, authdata==0\n", label);
977
+ return;
978
+ }
979
+ printf("%s [%p]\n", label, (void *)adata);
980
+ #if 0
981
+ {
982
+ int i;
983
+ printf("%s[at%d:%d] ", label, adata->ad_type, adata->length);
984
+ for (i=0; i < adata->length; i++)
985
+ {
986
+ printf((isprint(adata->contents[i]))? "%c ": "%02x",
987
+ adata->contents[i]);
988
+ }
989
+ printf("\n");
990
+ }
991
+ #endif
992
+ }
993
+
994
+
995
+ /* Display contents of krb5_keyblock struct, for debugging
996
+ */
997
+ void
998
+ print_krb5_keyblock(char *label, krb5_keyblock *keyblk)
999
+ {
1000
+ int i;
1001
+
1002
+ if (keyblk == NULL)
1003
+ {
1004
+ printf("%s, keyblk==0\n", label);
1005
+ return;
1006
+ }
1007
+ #ifdef KRB5_HEIMDAL
1008
+ printf("%s\n\t[et%d:%d]: ", label, keyblk->keytype,
1009
+ keyblk->keyvalue->length);
1010
+ for (i=0; i < (int)keyblk->keyvalue->length; i++)
1011
+ {
1012
+ printf("%02x",(unsigned char *)(keyblk->keyvalue->contents)[i]);
1013
+ }
1014
+ printf("\n");
1015
+ #else
1016
+ printf("%s\n\t[et%d:%d]: ", label, keyblk->enctype, keyblk->length);
1017
+ for (i=0; i < (int)keyblk->length; i++)
1018
+ {
1019
+ printf("%02x",keyblk->contents[i]);
1020
+ }
1021
+ printf("\n");
1022
+ #endif
1023
+ }
1024
+
1025
+
1026
+ /* Display contents of krb5_principal_data struct, for debugging
1027
+ ** (krb5_principal is typedef'd == krb5_principal_data *)
1028
+ */
1029
+ static void
1030
+ print_krb5_princ(char *label, krb5_principal_data *princ)
1031
+ {
1032
+ int i, ui, uj;
1033
+
1034
+ printf("%s principal Realm: ", label);
1035
+ if (princ == NULL) return;
1036
+ for (ui=0; ui < (int)princ->realm.length; ui++) putchar(princ->realm.data[ui]);
1037
+ printf(" (nametype %d) has %d strings:\n", princ->type,princ->length);
1038
+ for (i=0; i < (int)princ->length; i++)
1039
+ {
1040
+ printf("\t%d [%d]: ", i, princ->data[i].length);
1041
+ for (uj=0; uj < (int)princ->data[i].length; uj++) {
1042
+ putchar(princ->data[i].data[uj]);
1043
+ }
1044
+ printf("\n");
1045
+ }
1046
+ return;
1047
+ }
1048
+
1049
+
1050
+ /* Given krb5 service (typically "kssl") and hostname in kssl_ctx,
1051
+ ** Return encrypted Kerberos ticket for service @ hostname.
1052
+ ** If authenp is non-NULL, also return encrypted authenticator,
1053
+ ** whose data should be freed by caller.
1054
+ ** (Originally was: Create Kerberos AP_REQ message for SSL Client.)
1055
+ **
1056
+ ** 19990628 VRS Started; Returns Kerberos AP_REQ message.
1057
+ ** 20010409 VRS Modified for RFC2712; Returns enc tkt.
1058
+ ** 20010606 VRS May also return optional authenticator.
1059
+ */
1060
+ krb5_error_code
1061
+ kssl_cget_tkt( /* UPDATE */ KSSL_CTX *kssl_ctx,
1062
+ /* OUT */ krb5_data **enc_ticketp,
1063
+ /* UPDATE */ krb5_data *authenp,
1064
+ /* OUT */ KSSL_ERR *kssl_err)
1065
+ {
1066
+ krb5_error_code krb5rc = KRB5KRB_ERR_GENERIC;
1067
+ krb5_context krb5context = NULL;
1068
+ krb5_auth_context krb5auth_context = NULL;
1069
+ krb5_ccache krb5ccdef = NULL;
1070
+ krb5_creds krb5creds, *krb5credsp = NULL;
1071
+ krb5_data krb5_app_req;
1072
+
1073
+ kssl_err_set(kssl_err, 0, "");
1074
+ memset((char *)&krb5creds, 0, sizeof(krb5creds));
1075
+
1076
+ if (!kssl_ctx)
1077
+ {
1078
+ kssl_err_set(kssl_err, SSL_R_KRB5_S_INIT,
1079
+ "No kssl_ctx defined.\n");
1080
+ goto err;
1081
+ }
1082
+ else if (!kssl_ctx->service_host)
1083
+ {
1084
+ kssl_err_set(kssl_err, SSL_R_KRB5_S_INIT,
1085
+ "kssl_ctx service_host undefined.\n");
1086
+ goto err;
1087
+ }
1088
+
1089
+ if ((krb5rc = krb5_init_context(&krb5context)) != 0)
1090
+ {
1091
+ BIO_snprintf(kssl_err->text,KSSL_ERR_MAX,
1092
+ "krb5_init_context() fails: %d\n", krb5rc);
1093
+ kssl_err->reason = SSL_R_KRB5_C_INIT;
1094
+ goto err;
1095
+ }
1096
+
1097
+ if ((krb5rc = krb5_sname_to_principal(krb5context,
1098
+ kssl_ctx->service_host,
1099
+ (kssl_ctx->service_name)? kssl_ctx->service_name: KRB5SVC,
1100
+ KRB5_NT_SRV_HST, &krb5creds.server)) != 0)
1101
+ {
1102
+ BIO_snprintf(kssl_err->text,KSSL_ERR_MAX,
1103
+ "krb5_sname_to_principal() fails for %s/%s\n",
1104
+ kssl_ctx->service_host,
1105
+ (kssl_ctx->service_name)? kssl_ctx->service_name:
1106
+ KRB5SVC);
1107
+ kssl_err->reason = SSL_R_KRB5_C_INIT;
1108
+ goto err;
1109
+ }
1110
+
1111
+ if ((krb5rc = krb5_cc_default(krb5context, &krb5ccdef)) != 0)
1112
+ {
1113
+ kssl_err_set(kssl_err, SSL_R_KRB5_C_CC_PRINC,
1114
+ "krb5_cc_default fails.\n");
1115
+ goto err;
1116
+ }
1117
+
1118
+ if ((krb5rc = krb5_cc_get_principal(krb5context, krb5ccdef,
1119
+ &krb5creds.client)) != 0)
1120
+ {
1121
+ kssl_err_set(kssl_err, SSL_R_KRB5_C_CC_PRINC,
1122
+ "krb5_cc_get_principal() fails.\n");
1123
+ goto err;
1124
+ }
1125
+
1126
+ if ((krb5rc = krb5_get_credentials(krb5context, 0, krb5ccdef,
1127
+ &krb5creds, &krb5credsp)) != 0)
1128
+ {
1129
+ kssl_err_set(kssl_err, SSL_R_KRB5_C_GET_CRED,
1130
+ "krb5_get_credentials() fails.\n");
1131
+ goto err;
1132
+ }
1133
+
1134
+ *enc_ticketp = &krb5credsp->ticket;
1135
+ #ifdef KRB5_HEIMDAL
1136
+ kssl_ctx->enctype = krb5credsp->session.keytype;
1137
+ #else
1138
+ kssl_ctx->enctype = krb5credsp->keyblock.enctype;
1139
+ #endif
1140
+
1141
+ krb5rc = KRB5KRB_ERR_GENERIC;
1142
+ /* caller should free data of krb5_app_req */
1143
+ /* 20010406 VRS deleted for real KerberosWrapper
1144
+ ** 20010605 VRS reinstated to offer Authenticator to KerberosWrapper
1145
+ */
1146
+ krb5_app_req.length = 0;
1147
+ if (authenp)
1148
+ {
1149
+ krb5_data krb5in_data;
1150
+ const unsigned char *p;
1151
+ long arlen;
1152
+ KRB5_APREQBODY *ap_req;
1153
+
1154
+ authenp->length = 0;
1155
+ krb5in_data.data = NULL;
1156
+ krb5in_data.length = 0;
1157
+ if ((krb5rc = krb5_mk_req_extended(krb5context,
1158
+ &krb5auth_context, 0, &krb5in_data, krb5credsp,
1159
+ &krb5_app_req)) != 0)
1160
+ {
1161
+ kssl_err_set(kssl_err, SSL_R_KRB5_C_MK_REQ,
1162
+ "krb5_mk_req_extended() fails.\n");
1163
+ goto err;
1164
+ }
1165
+
1166
+ arlen = krb5_app_req.length;
1167
+ p = (unsigned char *)krb5_app_req.data;
1168
+ ap_req = (KRB5_APREQBODY *) d2i_KRB5_APREQ(NULL, &p, arlen);
1169
+ if (ap_req)
1170
+ {
1171
+ authenp->length = i2d_KRB5_ENCDATA(
1172
+ ap_req->authenticator, NULL);
1173
+ if (authenp->length &&
1174
+ (authenp->data = malloc(authenp->length)))
1175
+ {
1176
+ unsigned char *adp = (unsigned char *)authenp->data;
1177
+ authenp->length = i2d_KRB5_ENCDATA(
1178
+ ap_req->authenticator, &adp);
1179
+ }
1180
+ }
1181
+
1182
+ if (ap_req) KRB5_APREQ_free((KRB5_APREQ *) ap_req);
1183
+ if (krb5_app_req.length)
1184
+ kssl_krb5_free_data_contents(krb5context,&krb5_app_req);
1185
+ }
1186
+ #ifdef KRB5_HEIMDAL
1187
+ if (kssl_ctx_setkey(kssl_ctx, &krb5credsp->session))
1188
+ {
1189
+ kssl_err_set(kssl_err, SSL_R_KRB5_C_INIT,
1190
+ "kssl_ctx_setkey() fails.\n");
1191
+ }
1192
+ #else
1193
+ if (kssl_ctx_setkey(kssl_ctx, &krb5credsp->keyblock))
1194
+ {
1195
+ kssl_err_set(kssl_err, SSL_R_KRB5_C_INIT,
1196
+ "kssl_ctx_setkey() fails.\n");
1197
+ }
1198
+ #endif
1199
+ else krb5rc = 0;
1200
+
1201
+ err:
1202
+ #ifdef KSSL_DEBUG
1203
+ kssl_ctx_show(kssl_ctx);
1204
+ #endif /* KSSL_DEBUG */
1205
+
1206
+ if (krb5creds.client) krb5_free_principal(krb5context,
1207
+ krb5creds.client);
1208
+ if (krb5creds.server) krb5_free_principal(krb5context,
1209
+ krb5creds.server);
1210
+ if (krb5auth_context) krb5_auth_con_free(krb5context,
1211
+ krb5auth_context);
1212
+ if (krb5context) krb5_free_context(krb5context);
1213
+ return (krb5rc);
1214
+ }
1215
+
1216
+
1217
+ /* Given d2i_-decoded asn1ticket, allocate and return a new krb5_ticket.
1218
+ ** Return Kerberos error code and kssl_err struct on error.
1219
+ ** Allocates krb5_ticket and krb5_principal; caller should free these.
1220
+ **
1221
+ ** 20010410 VRS Implemented krb5_decode_ticket() as
1222
+ ** old_krb5_decode_ticket(). Missing from MIT1.0.6.
1223
+ ** 20010615 VRS Re-cast as openssl/asn1 d2i_*() functions.
1224
+ ** Re-used some of the old krb5_decode_ticket()
1225
+ ** code here. This tkt should alloc/free just
1226
+ ** like the real thing.
1227
+ */
1228
+ static krb5_error_code
1229
+ kssl_TKT2tkt( /* IN */ krb5_context krb5context,
1230
+ /* IN */ KRB5_TKTBODY *asn1ticket,
1231
+ /* OUT */ krb5_ticket **krb5ticket,
1232
+ /* OUT */ KSSL_ERR *kssl_err )
1233
+ {
1234
+ krb5_error_code krb5rc = KRB5KRB_ERR_GENERIC;
1235
+ krb5_ticket *new5ticket = NULL;
1236
+ ASN1_GENERALSTRING *gstr_svc, *gstr_host;
1237
+
1238
+ *krb5ticket = NULL;
1239
+
1240
+ if (asn1ticket == NULL || asn1ticket->realm == NULL ||
1241
+ asn1ticket->sname == NULL ||
1242
+ sk_ASN1_GENERALSTRING_num(asn1ticket->sname->namestring) < 2)
1243
+ {
1244
+ BIO_snprintf(kssl_err->text, KSSL_ERR_MAX,
1245
+ "Null field in asn1ticket.\n");
1246
+ kssl_err->reason = SSL_R_KRB5_S_RD_REQ;
1247
+ return KRB5KRB_ERR_GENERIC;
1248
+ }
1249
+
1250
+ if ((new5ticket = (krb5_ticket *) calloc(1, sizeof(krb5_ticket)))==NULL)
1251
+ {
1252
+ BIO_snprintf(kssl_err->text, KSSL_ERR_MAX,
1253
+ "Unable to allocate new krb5_ticket.\n");
1254
+ kssl_err->reason = SSL_R_KRB5_S_RD_REQ;
1255
+ return ENOMEM; /* or KRB5KRB_ERR_GENERIC; */
1256
+ }
1257
+
1258
+ gstr_svc = sk_ASN1_GENERALSTRING_value(asn1ticket->sname->namestring, 0);
1259
+ gstr_host = sk_ASN1_GENERALSTRING_value(asn1ticket->sname->namestring, 1);
1260
+
1261
+ if ((krb5rc = kssl_build_principal_2(krb5context,
1262
+ &new5ticket->server,
1263
+ asn1ticket->realm->length, (char *)asn1ticket->realm->data,
1264
+ gstr_svc->length, (char *)gstr_svc->data,
1265
+ gstr_host->length, (char *)gstr_host->data)) != 0)
1266
+ {
1267
+ free(new5ticket);
1268
+ BIO_snprintf(kssl_err->text, KSSL_ERR_MAX,
1269
+ "Error building ticket server principal.\n");
1270
+ kssl_err->reason = SSL_R_KRB5_S_RD_REQ;
1271
+ return krb5rc; /* or KRB5KRB_ERR_GENERIC; */
1272
+ }
1273
+
1274
+ krb5_princ_type(krb5context, new5ticket->server) =
1275
+ asn1ticket->sname->nametype->data[0];
1276
+ new5ticket->enc_part.enctype = asn1ticket->encdata->etype->data[0];
1277
+ new5ticket->enc_part.kvno = asn1ticket->encdata->kvno->data[0];
1278
+ new5ticket->enc_part.ciphertext.length =
1279
+ asn1ticket->encdata->cipher->length;
1280
+ if ((new5ticket->enc_part.ciphertext.data =
1281
+ calloc(1, asn1ticket->encdata->cipher->length)) == NULL)
1282
+ {
1283
+ free(new5ticket);
1284
+ BIO_snprintf(kssl_err->text, KSSL_ERR_MAX,
1285
+ "Error allocating cipher in krb5ticket.\n");
1286
+ kssl_err->reason = SSL_R_KRB5_S_RD_REQ;
1287
+ return KRB5KRB_ERR_GENERIC;
1288
+ }
1289
+ else
1290
+ {
1291
+ memcpy(new5ticket->enc_part.ciphertext.data,
1292
+ asn1ticket->encdata->cipher->data,
1293
+ asn1ticket->encdata->cipher->length);
1294
+ }
1295
+
1296
+ *krb5ticket = new5ticket;
1297
+ return 0;
1298
+ }
1299
+
1300
+
1301
+ /* Given krb5 service name in KSSL_CTX *kssl_ctx (typically "kssl"),
1302
+ ** and krb5 AP_REQ message & message length,
1303
+ ** Return Kerberos session key and client principle
1304
+ ** to SSL Server in KSSL_CTX *kssl_ctx.
1305
+ **
1306
+ ** 19990702 VRS Started.
1307
+ */
1308
+ krb5_error_code
1309
+ kssl_sget_tkt( /* UPDATE */ KSSL_CTX *kssl_ctx,
1310
+ /* IN */ krb5_data *indata,
1311
+ /* OUT */ krb5_ticket_times *ttimes,
1312
+ /* OUT */ KSSL_ERR *kssl_err )
1313
+ {
1314
+ krb5_error_code krb5rc = KRB5KRB_ERR_GENERIC;
1315
+ static krb5_context krb5context = NULL;
1316
+ static krb5_auth_context krb5auth_context = NULL;
1317
+ krb5_ticket *krb5ticket = NULL;
1318
+ KRB5_TKTBODY *asn1ticket = NULL;
1319
+ const unsigned char *p;
1320
+ krb5_keytab krb5keytab = NULL;
1321
+ krb5_keytab_entry kt_entry;
1322
+ krb5_principal krb5server;
1323
+ krb5_rcache rcache = NULL;
1324
+
1325
+ kssl_err_set(kssl_err, 0, "");
1326
+
1327
+ if (!kssl_ctx)
1328
+ {
1329
+ kssl_err_set(kssl_err, SSL_R_KRB5_S_INIT,
1330
+ "No kssl_ctx defined.\n");
1331
+ goto err;
1332
+ }
1333
+
1334
+ #ifdef KSSL_DEBUG
1335
+ printf("in kssl_sget_tkt(%s)\n", kstring(kssl_ctx->service_name));
1336
+ #endif /* KSSL_DEBUG */
1337
+
1338
+ if (!krb5context && (krb5rc = krb5_init_context(&krb5context)))
1339
+ {
1340
+ kssl_err_set(kssl_err, SSL_R_KRB5_S_INIT,
1341
+ "krb5_init_context() fails.\n");
1342
+ goto err;
1343
+ }
1344
+ if (krb5auth_context &&
1345
+ (krb5rc = krb5_auth_con_free(krb5context, krb5auth_context)))
1346
+ {
1347
+ kssl_err_set(kssl_err, SSL_R_KRB5_S_INIT,
1348
+ "krb5_auth_con_free() fails.\n");
1349
+ goto err;
1350
+ }
1351
+ else krb5auth_context = NULL;
1352
+ if (!krb5auth_context &&
1353
+ (krb5rc = krb5_auth_con_init(krb5context, &krb5auth_context)))
1354
+ {
1355
+ kssl_err_set(kssl_err, SSL_R_KRB5_S_INIT,
1356
+ "krb5_auth_con_init() fails.\n");
1357
+ goto err;
1358
+ }
1359
+
1360
+
1361
+ if ((krb5rc = krb5_auth_con_getrcache(krb5context, krb5auth_context,
1362
+ &rcache)))
1363
+ {
1364
+ kssl_err_set(kssl_err, SSL_R_KRB5_S_INIT,
1365
+ "krb5_auth_con_getrcache() fails.\n");
1366
+ goto err;
1367
+ }
1368
+
1369
+ if ((krb5rc = krb5_sname_to_principal(krb5context, NULL,
1370
+ (kssl_ctx->service_name)? kssl_ctx->service_name: KRB5SVC,
1371
+ KRB5_NT_SRV_HST, &krb5server)) != 0)
1372
+ {
1373
+ kssl_err_set(kssl_err, SSL_R_KRB5_S_INIT,
1374
+ "krb5_sname_to_principal() fails.\n");
1375
+ goto err;
1376
+ }
1377
+
1378
+ if (rcache == NULL)
1379
+ {
1380
+ if ((krb5rc = krb5_get_server_rcache(krb5context,
1381
+ krb5_princ_component(krb5context, krb5server, 0),
1382
+ &rcache)))
1383
+ {
1384
+ kssl_err_set(kssl_err, SSL_R_KRB5_S_INIT,
1385
+ "krb5_get_server_rcache() fails.\n");
1386
+ goto err;
1387
+ }
1388
+ }
1389
+
1390
+ if ((krb5rc = krb5_auth_con_setrcache(krb5context, krb5auth_context, rcache)))
1391
+ {
1392
+ kssl_err_set(kssl_err, SSL_R_KRB5_S_INIT,
1393
+ "krb5_auth_con_setrcache() fails.\n");
1394
+ goto err;
1395
+ }
1396
+
1397
+
1398
+ /* kssl_ctx->keytab_file == NULL ==> use Kerberos default
1399
+ */
1400
+ if (kssl_ctx->keytab_file)
1401
+ {
1402
+ krb5rc = krb5_kt_resolve(krb5context, kssl_ctx->keytab_file,
1403
+ &krb5keytab);
1404
+ if (krb5rc)
1405
+ {
1406
+ kssl_err_set(kssl_err, SSL_R_KRB5_S_INIT,
1407
+ "krb5_kt_resolve() fails.\n");
1408
+ goto err;
1409
+ }
1410
+ }
1411
+ else
1412
+ {
1413
+ krb5rc = krb5_kt_default(krb5context,&krb5keytab);
1414
+ if (krb5rc)
1415
+ {
1416
+ kssl_err_set(kssl_err, SSL_R_KRB5_S_INIT,
1417
+ "krb5_kt_default() fails.\n");
1418
+ goto err;
1419
+ }
1420
+ }
1421
+
1422
+ /* Actual Kerberos5 krb5_recvauth() has initial conversation here
1423
+ ** o check KRB5_SENDAUTH_BADAUTHVERS
1424
+ ** unless KRB5_RECVAUTH_SKIP_VERSION
1425
+ ** o check KRB5_SENDAUTH_BADAPPLVERS
1426
+ ** o send "0" msg if all OK
1427
+ */
1428
+
1429
+ /* 20010411 was using AP_REQ instead of true KerberosWrapper
1430
+ **
1431
+ ** if ((krb5rc = krb5_rd_req(krb5context, &krb5auth_context,
1432
+ ** &krb5in_data, krb5server, krb5keytab,
1433
+ ** &ap_option, &krb5ticket)) != 0) { Error }
1434
+ */
1435
+
1436
+ p = (unsigned char *)indata->data;
1437
+ if ((asn1ticket = (KRB5_TKTBODY *) d2i_KRB5_TICKET(NULL, &p,
1438
+ (long) indata->length)) == NULL)
1439
+ {
1440
+ BIO_snprintf(kssl_err->text, KSSL_ERR_MAX,
1441
+ "d2i_KRB5_TICKET() ASN.1 decode failure.\n");
1442
+ kssl_err->reason = SSL_R_KRB5_S_RD_REQ;
1443
+ goto err;
1444
+ }
1445
+
1446
+ /* Was: krb5rc = krb5_decode_ticket(krb5in_data,&krb5ticket)) != 0) */
1447
+ if ((krb5rc = kssl_TKT2tkt(krb5context, asn1ticket, &krb5ticket,
1448
+ kssl_err)) != 0)
1449
+ {
1450
+ BIO_snprintf(kssl_err->text, KSSL_ERR_MAX,
1451
+ "Error converting ASN.1 ticket to krb5_ticket.\n");
1452
+ kssl_err->reason = SSL_R_KRB5_S_RD_REQ;
1453
+ goto err;
1454
+ }
1455
+
1456
+ if (! krb5_principal_compare(krb5context, krb5server,
1457
+ krb5ticket->server)) {
1458
+ krb5rc = KRB5_PRINC_NOMATCH;
1459
+ BIO_snprintf(kssl_err->text, KSSL_ERR_MAX,
1460
+ "server principal != ticket principal\n");
1461
+ kssl_err->reason = SSL_R_KRB5_S_RD_REQ;
1462
+ goto err;
1463
+ }
1464
+ if ((krb5rc = krb5_kt_get_entry(krb5context, krb5keytab,
1465
+ krb5ticket->server, krb5ticket->enc_part.kvno,
1466
+ krb5ticket->enc_part.enctype, &kt_entry)) != 0) {
1467
+ BIO_snprintf(kssl_err->text, KSSL_ERR_MAX,
1468
+ "krb5_kt_get_entry() fails with %x.\n", krb5rc);
1469
+ kssl_err->reason = SSL_R_KRB5_S_RD_REQ;
1470
+ goto err;
1471
+ }
1472
+ if ((krb5rc = krb5_decrypt_tkt_part(krb5context, &kt_entry.key,
1473
+ krb5ticket)) != 0) {
1474
+ BIO_snprintf(kssl_err->text, KSSL_ERR_MAX,
1475
+ "krb5_decrypt_tkt_part() failed.\n");
1476
+ kssl_err->reason = SSL_R_KRB5_S_RD_REQ;
1477
+ goto err;
1478
+ }
1479
+ else {
1480
+ krb5_kt_free_entry(krb5context, &kt_entry);
1481
+ #ifdef KSSL_DEBUG
1482
+ {
1483
+ int i; krb5_address **paddr = krb5ticket->enc_part2->caddrs;
1484
+ printf("Decrypted ticket fields:\n");
1485
+ printf("\tflags: %X, transit-type: %X",
1486
+ krb5ticket->enc_part2->flags,
1487
+ krb5ticket->enc_part2->transited.tr_type);
1488
+ print_krb5_data("\ttransit-data: ",
1489
+ &(krb5ticket->enc_part2->transited.tr_contents));
1490
+ printf("\tcaddrs: %p, authdata: %p\n",
1491
+ krb5ticket->enc_part2->caddrs,
1492
+ krb5ticket->enc_part2->authorization_data);
1493
+ if (paddr)
1494
+ {
1495
+ printf("\tcaddrs:\n");
1496
+ for (i=0; paddr[i] != NULL; i++)
1497
+ {
1498
+ krb5_data d;
1499
+ d.length=paddr[i]->length;
1500
+ d.data=paddr[i]->contents;
1501
+ print_krb5_data("\t\tIP: ", &d);
1502
+ }
1503
+ }
1504
+ printf("\tstart/auth/end times: %d / %d / %d\n",
1505
+ krb5ticket->enc_part2->times.starttime,
1506
+ krb5ticket->enc_part2->times.authtime,
1507
+ krb5ticket->enc_part2->times.endtime);
1508
+ }
1509
+ #endif /* KSSL_DEBUG */
1510
+ }
1511
+
1512
+ krb5rc = KRB5_NO_TKT_SUPPLIED;
1513
+ if (!krb5ticket || !krb5ticket->enc_part2 ||
1514
+ !krb5ticket->enc_part2->client ||
1515
+ !krb5ticket->enc_part2->client->data ||
1516
+ !krb5ticket->enc_part2->session)
1517
+ {
1518
+ kssl_err_set(kssl_err, SSL_R_KRB5_S_BAD_TICKET,
1519
+ "bad ticket from krb5_rd_req.\n");
1520
+ }
1521
+ else if (kssl_ctx_setprinc(kssl_ctx, KSSL_CLIENT,
1522
+ &krb5ticket->enc_part2->client->realm,
1523
+ krb5ticket->enc_part2->client->data,
1524
+ krb5ticket->enc_part2->client->length))
1525
+ {
1526
+ kssl_err_set(kssl_err, SSL_R_KRB5_S_BAD_TICKET,
1527
+ "kssl_ctx_setprinc() fails.\n");
1528
+ }
1529
+ else if (kssl_ctx_setkey(kssl_ctx, krb5ticket->enc_part2->session))
1530
+ {
1531
+ kssl_err_set(kssl_err, SSL_R_KRB5_S_BAD_TICKET,
1532
+ "kssl_ctx_setkey() fails.\n");
1533
+ }
1534
+ else if (krb5ticket->enc_part2->flags & TKT_FLG_INVALID)
1535
+ {
1536
+ krb5rc = KRB5KRB_AP_ERR_TKT_INVALID;
1537
+ kssl_err_set(kssl_err, SSL_R_KRB5_S_BAD_TICKET,
1538
+ "invalid ticket from krb5_rd_req.\n");
1539
+ }
1540
+ else krb5rc = 0;
1541
+
1542
+ kssl_ctx->enctype = krb5ticket->enc_part.enctype;
1543
+ ttimes->authtime = krb5ticket->enc_part2->times.authtime;
1544
+ ttimes->starttime = krb5ticket->enc_part2->times.starttime;
1545
+ ttimes->endtime = krb5ticket->enc_part2->times.endtime;
1546
+ ttimes->renew_till = krb5ticket->enc_part2->times.renew_till;
1547
+
1548
+ err:
1549
+ #ifdef KSSL_DEBUG
1550
+ kssl_ctx_show(kssl_ctx);
1551
+ #endif /* KSSL_DEBUG */
1552
+
1553
+ if (asn1ticket) KRB5_TICKET_free((KRB5_TICKET *) asn1ticket);
1554
+ if (krb5keytab) krb5_kt_close(krb5context, krb5keytab);
1555
+ if (krb5ticket) krb5_free_ticket(krb5context, krb5ticket);
1556
+ if (krb5server) krb5_free_principal(krb5context, krb5server);
1557
+ return (krb5rc);
1558
+ }
1559
+
1560
+
1561
+ /* Allocate & return a new kssl_ctx struct.
1562
+ */
1563
+ KSSL_CTX *
1564
+ kssl_ctx_new(void)
1565
+ {
1566
+ return ((KSSL_CTX *) kssl_calloc(1, sizeof(KSSL_CTX)));
1567
+ }
1568
+
1569
+
1570
+ /* Frees a kssl_ctx struct and any allocated memory it holds.
1571
+ ** Returns NULL.
1572
+ */
1573
+ KSSL_CTX *
1574
+ kssl_ctx_free(KSSL_CTX *kssl_ctx)
1575
+ {
1576
+ if (kssl_ctx == NULL) return kssl_ctx;
1577
+
1578
+ if (kssl_ctx->key) OPENSSL_cleanse(kssl_ctx->key,
1579
+ kssl_ctx->length);
1580
+ if (kssl_ctx->key) kssl_free(kssl_ctx->key);
1581
+ if (kssl_ctx->client_princ) kssl_free(kssl_ctx->client_princ);
1582
+ if (kssl_ctx->service_host) kssl_free(kssl_ctx->service_host);
1583
+ if (kssl_ctx->service_name) kssl_free(kssl_ctx->service_name);
1584
+ if (kssl_ctx->keytab_file) kssl_free(kssl_ctx->keytab_file);
1585
+
1586
+ kssl_free(kssl_ctx);
1587
+ return (KSSL_CTX *) NULL;
1588
+ }
1589
+
1590
+
1591
+ /* Given an array of (krb5_data *) entity (and optional realm),
1592
+ ** set the plain (char *) client_princ or service_host member
1593
+ ** of the kssl_ctx struct.
1594
+ */
1595
+ krb5_error_code
1596
+ kssl_ctx_setprinc(KSSL_CTX *kssl_ctx, int which,
1597
+ krb5_data *realm, krb5_data *entity, int nentities)
1598
+ {
1599
+ char **princ;
1600
+ int length;
1601
+ int i;
1602
+
1603
+ if (kssl_ctx == NULL || entity == NULL) return KSSL_CTX_ERR;
1604
+
1605
+ switch (which)
1606
+ {
1607
+ case KSSL_CLIENT: princ = &kssl_ctx->client_princ; break;
1608
+ case KSSL_SERVER: princ = &kssl_ctx->service_host; break;
1609
+ default: return KSSL_CTX_ERR; break;
1610
+ }
1611
+ if (*princ) kssl_free(*princ);
1612
+
1613
+ /* Add up all the entity->lengths */
1614
+ length = 0;
1615
+ for (i=0; i < nentities; i++)
1616
+ {
1617
+ length += entity[i].length;
1618
+ }
1619
+ /* Add in space for the '/' character(s) (if any) */
1620
+ length += nentities-1;
1621
+ /* Space for the ('@'+realm+NULL | NULL) */
1622
+ length += ((realm)? realm->length + 2: 1);
1623
+
1624
+ if ((*princ = kssl_calloc(1, length)) == NULL)
1625
+ return KSSL_CTX_ERR;
1626
+ else
1627
+ {
1628
+ for (i = 0; i < nentities; i++)
1629
+ {
1630
+ strncat(*princ, entity[i].data, entity[i].length);
1631
+ if (i < nentities-1)
1632
+ {
1633
+ strcat (*princ, "/");
1634
+ }
1635
+ }
1636
+ if (realm)
1637
+ {
1638
+ strcat (*princ, "@");
1639
+ (void) strncat(*princ, realm->data, realm->length);
1640
+ }
1641
+ }
1642
+
1643
+ return KSSL_CTX_OK;
1644
+ }
1645
+
1646
+
1647
+ /* Set one of the plain (char *) string members of the kssl_ctx struct.
1648
+ ** Default values should be:
1649
+ ** which == KSSL_SERVICE => "khost" (KRB5SVC)
1650
+ ** which == KSSL_KEYTAB => "/etc/krb5.keytab" (KRB5KEYTAB)
1651
+ */
1652
+ krb5_error_code
1653
+ kssl_ctx_setstring(KSSL_CTX *kssl_ctx, int which, char *text)
1654
+ {
1655
+ char **string;
1656
+
1657
+ if (!kssl_ctx) return KSSL_CTX_ERR;
1658
+
1659
+ switch (which)
1660
+ {
1661
+ case KSSL_SERVICE: string = &kssl_ctx->service_name; break;
1662
+ case KSSL_SERVER: string = &kssl_ctx->service_host; break;
1663
+ case KSSL_CLIENT: string = &kssl_ctx->client_princ; break;
1664
+ case KSSL_KEYTAB: string = &kssl_ctx->keytab_file; break;
1665
+ default: return KSSL_CTX_ERR; break;
1666
+ }
1667
+ if (*string) kssl_free(*string);
1668
+
1669
+ if (!text)
1670
+ {
1671
+ *string = '\0';
1672
+ return KSSL_CTX_OK;
1673
+ }
1674
+
1675
+ if ((*string = kssl_calloc(1, strlen(text) + 1)) == NULL)
1676
+ return KSSL_CTX_ERR;
1677
+ else
1678
+ strcpy(*string, text);
1679
+
1680
+ return KSSL_CTX_OK;
1681
+ }
1682
+
1683
+
1684
+ /* Copy the Kerberos session key from a (krb5_keyblock *) to a kssl_ctx
1685
+ ** struct. Clear kssl_ctx->key if Kerberos session key is NULL.
1686
+ */
1687
+ krb5_error_code
1688
+ kssl_ctx_setkey(KSSL_CTX *kssl_ctx, krb5_keyblock *session)
1689
+ {
1690
+ int length;
1691
+ krb5_enctype enctype;
1692
+ krb5_octet FAR *contents = NULL;
1693
+
1694
+ if (!kssl_ctx) return KSSL_CTX_ERR;
1695
+
1696
+ if (kssl_ctx->key)
1697
+ {
1698
+ OPENSSL_cleanse(kssl_ctx->key, kssl_ctx->length);
1699
+ kssl_free(kssl_ctx->key);
1700
+ }
1701
+
1702
+ if (session)
1703
+ {
1704
+
1705
+ #ifdef KRB5_HEIMDAL
1706
+ length = session->keyvalue->length;
1707
+ enctype = session->keytype;
1708
+ contents = session->keyvalue->contents;
1709
+ #else
1710
+ length = session->length;
1711
+ enctype = session->enctype;
1712
+ contents = session->contents;
1713
+ #endif
1714
+ kssl_ctx->enctype = enctype;
1715
+ kssl_ctx->length = length;
1716
+ }
1717
+ else
1718
+ {
1719
+ kssl_ctx->enctype = ENCTYPE_UNKNOWN;
1720
+ kssl_ctx->length = 0;
1721
+ return KSSL_CTX_OK;
1722
+ }
1723
+
1724
+ if ((kssl_ctx->key =
1725
+ (krb5_octet FAR *) kssl_calloc(1, kssl_ctx->length)) == NULL)
1726
+ {
1727
+ kssl_ctx->length = 0;
1728
+ return KSSL_CTX_ERR;
1729
+ }
1730
+ else
1731
+ memcpy(kssl_ctx->key, contents, length);
1732
+
1733
+ return KSSL_CTX_OK;
1734
+ }
1735
+
1736
+
1737
+ /* Display contents of kssl_ctx struct
1738
+ */
1739
+ void
1740
+ kssl_ctx_show(KSSL_CTX *kssl_ctx)
1741
+ {
1742
+ int i;
1743
+
1744
+ printf("kssl_ctx: ");
1745
+ if (kssl_ctx == NULL)
1746
+ {
1747
+ printf("NULL\n");
1748
+ return;
1749
+ }
1750
+ else
1751
+ printf("%p\n", (void *)kssl_ctx);
1752
+
1753
+ printf("\tservice:\t%s\n",
1754
+ (kssl_ctx->service_name)? kssl_ctx->service_name: "NULL");
1755
+ printf("\tclient:\t%s\n",
1756
+ (kssl_ctx->client_princ)? kssl_ctx->client_princ: "NULL");
1757
+ printf("\tserver:\t%s\n",
1758
+ (kssl_ctx->service_host)? kssl_ctx->service_host: "NULL");
1759
+ printf("\tkeytab:\t%s\n",
1760
+ (kssl_ctx->keytab_file)? kssl_ctx->keytab_file: "NULL");
1761
+ printf("\tkey [%d:%d]:\t",
1762
+ kssl_ctx->enctype, kssl_ctx->length);
1763
+
1764
+ for (i=0; i < kssl_ctx->length && kssl_ctx->key; i++)
1765
+ {
1766
+ printf("%02x", kssl_ctx->key[i]);
1767
+ }
1768
+ printf("\n");
1769
+ return;
1770
+ }
1771
+
1772
+ int
1773
+ kssl_keytab_is_available(KSSL_CTX *kssl_ctx)
1774
+ {
1775
+ krb5_context krb5context = NULL;
1776
+ krb5_keytab krb5keytab = NULL;
1777
+ krb5_keytab_entry entry;
1778
+ krb5_principal princ = NULL;
1779
+ krb5_error_code krb5rc = KRB5KRB_ERR_GENERIC;
1780
+ int rc = 0;
1781
+
1782
+ if ((krb5rc = krb5_init_context(&krb5context)))
1783
+ return(0);
1784
+
1785
+ /* kssl_ctx->keytab_file == NULL ==> use Kerberos default
1786
+ */
1787
+ if (kssl_ctx->keytab_file)
1788
+ {
1789
+ krb5rc = krb5_kt_resolve(krb5context, kssl_ctx->keytab_file,
1790
+ &krb5keytab);
1791
+ if (krb5rc)
1792
+ goto exit;
1793
+ }
1794
+ else
1795
+ {
1796
+ krb5rc = krb5_kt_default(krb5context,&krb5keytab);
1797
+ if (krb5rc)
1798
+ goto exit;
1799
+ }
1800
+
1801
+ /* the host key we are looking for */
1802
+ krb5rc = krb5_sname_to_principal(krb5context, NULL,
1803
+ kssl_ctx->service_name ? kssl_ctx->service_name: KRB5SVC,
1804
+ KRB5_NT_SRV_HST, &princ);
1805
+
1806
+ if (krb5rc)
1807
+ goto exit;
1808
+
1809
+ krb5rc = krb5_kt_get_entry(krb5context, krb5keytab,
1810
+ princ,
1811
+ 0 /* IGNORE_VNO */,
1812
+ 0 /* IGNORE_ENCTYPE */,
1813
+ &entry);
1814
+ if ( krb5rc == KRB5_KT_NOTFOUND ) {
1815
+ rc = 1;
1816
+ goto exit;
1817
+ } else if ( krb5rc )
1818
+ goto exit;
1819
+
1820
+ krb5_kt_free_entry(krb5context, &entry);
1821
+ rc = 1;
1822
+
1823
+ exit:
1824
+ if (krb5keytab) krb5_kt_close(krb5context, krb5keytab);
1825
+ if (princ) krb5_free_principal(krb5context, princ);
1826
+ if (krb5context) krb5_free_context(krb5context);
1827
+ return(rc);
1828
+ }
1829
+
1830
+ int
1831
+ kssl_tgt_is_available(KSSL_CTX *kssl_ctx)
1832
+ {
1833
+ krb5_error_code krb5rc = KRB5KRB_ERR_GENERIC;
1834
+ krb5_context krb5context = NULL;
1835
+ krb5_ccache krb5ccdef = NULL;
1836
+ krb5_creds krb5creds, *krb5credsp = NULL;
1837
+ int rc = 0;
1838
+
1839
+ memset((char *)&krb5creds, 0, sizeof(krb5creds));
1840
+
1841
+ if (!kssl_ctx)
1842
+ return(0);
1843
+
1844
+ if (!kssl_ctx->service_host)
1845
+ return(0);
1846
+
1847
+ if ((krb5rc = krb5_init_context(&krb5context)) != 0)
1848
+ goto err;
1849
+
1850
+ if ((krb5rc = krb5_sname_to_principal(krb5context,
1851
+ kssl_ctx->service_host,
1852
+ (kssl_ctx->service_name)? kssl_ctx->service_name: KRB5SVC,
1853
+ KRB5_NT_SRV_HST, &krb5creds.server)) != 0)
1854
+ goto err;
1855
+
1856
+ if ((krb5rc = krb5_cc_default(krb5context, &krb5ccdef)) != 0)
1857
+ goto err;
1858
+
1859
+ if ((krb5rc = krb5_cc_get_principal(krb5context, krb5ccdef,
1860
+ &krb5creds.client)) != 0)
1861
+ goto err;
1862
+
1863
+ if ((krb5rc = krb5_get_credentials(krb5context, 0, krb5ccdef,
1864
+ &krb5creds, &krb5credsp)) != 0)
1865
+ goto err;
1866
+
1867
+ rc = 1;
1868
+
1869
+ err:
1870
+ #ifdef KSSL_DEBUG
1871
+ kssl_ctx_show(kssl_ctx);
1872
+ #endif /* KSSL_DEBUG */
1873
+
1874
+ if (krb5creds.client) krb5_free_principal(krb5context, krb5creds.client);
1875
+ if (krb5creds.server) krb5_free_principal(krb5context, krb5creds.server);
1876
+ if (krb5context) krb5_free_context(krb5context);
1877
+ return(rc);
1878
+ }
1879
+
1880
+ #if !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_WIN32)
1881
+ void kssl_krb5_free_data_contents(krb5_context context, krb5_data *data)
1882
+ {
1883
+ #ifdef KRB5_HEIMDAL
1884
+ data->length = 0;
1885
+ if (data->data)
1886
+ free(data->data);
1887
+ #elif defined(KRB5_MIT_OLD11)
1888
+ if (data->data) {
1889
+ krb5_xfree(data->data);
1890
+ data->data = 0;
1891
+ }
1892
+ #else
1893
+ krb5_free_data_contents(NULL, data);
1894
+ #endif
1895
+ }
1896
+ #endif /* !OPENSSL_SYS_WINDOWS && !OPENSSL_SYS_WIN32 */
1897
+
1898
+
1899
+ /* Given pointers to KerberosTime and struct tm structs, convert the
1900
+ ** KerberosTime string to struct tm. Note that KerberosTime is a
1901
+ ** ASN1_GENERALIZEDTIME value, constrained to GMT with no fractional
1902
+ ** seconds as defined in RFC 1510.
1903
+ ** Return pointer to the (partially) filled in struct tm on success,
1904
+ ** return NULL on failure.
1905
+ */
1906
+ static struct tm *k_gmtime(ASN1_GENERALIZEDTIME *gtime, struct tm *k_tm)
1907
+ {
1908
+ char c, *p;
1909
+
1910
+ if (!k_tm) return NULL;
1911
+ if (gtime == NULL || gtime->length < 14) return NULL;
1912
+ if (gtime->data == NULL) return NULL;
1913
+
1914
+ p = (char *)&gtime->data[14];
1915
+
1916
+ c = *p; *p = '\0'; p -= 2; k_tm->tm_sec = atoi(p); *(p+2) = c;
1917
+ c = *p; *p = '\0'; p -= 2; k_tm->tm_min = atoi(p); *(p+2) = c;
1918
+ c = *p; *p = '\0'; p -= 2; k_tm->tm_hour = atoi(p); *(p+2) = c;
1919
+ c = *p; *p = '\0'; p -= 2; k_tm->tm_mday = atoi(p); *(p+2) = c;
1920
+ c = *p; *p = '\0'; p -= 2; k_tm->tm_mon = atoi(p)-1; *(p+2) = c;
1921
+ c = *p; *p = '\0'; p -= 4; k_tm->tm_year = atoi(p)-1900; *(p+4) = c;
1922
+
1923
+ return k_tm;
1924
+ }
1925
+
1926
+
1927
+ /* Helper function for kssl_validate_times().
1928
+ ** We need context->clockskew, but krb5_context is an opaque struct.
1929
+ ** So we try to sneek the clockskew out through the replay cache.
1930
+ ** If that fails just return a likely default (300 seconds).
1931
+ */
1932
+ static krb5_deltat get_rc_clockskew(krb5_context context)
1933
+ {
1934
+ krb5_rcache rc;
1935
+ krb5_deltat clockskew;
1936
+
1937
+ if (krb5_rc_default(context, &rc)) return KSSL_CLOCKSKEW;
1938
+ if (krb5_rc_initialize(context, rc, 0)) return KSSL_CLOCKSKEW;
1939
+ if (krb5_rc_get_lifespan(context, rc, &clockskew)) {
1940
+ clockskew = KSSL_CLOCKSKEW;
1941
+ }
1942
+ (void) krb5_rc_destroy(context, rc);
1943
+ return clockskew;
1944
+ }
1945
+
1946
+
1947
+ /* kssl_validate_times() combines (and more importantly exposes)
1948
+ ** the MIT KRB5 internal function krb5_validate_times() and the
1949
+ ** in_clock_skew() macro. The authenticator client time is checked
1950
+ ** to be within clockskew secs of the current time and the current
1951
+ ** time is checked to be within the ticket start and expire times.
1952
+ ** Either check may be omitted by supplying a NULL value.
1953
+ ** Returns 0 for valid times, SSL_R_KRB5* error codes otherwise.
1954
+ ** See Also: (Kerberos source)/krb5/lib/krb5/krb/valid_times.c
1955
+ ** 20010420 VRS
1956
+ */
1957
+ krb5_error_code kssl_validate_times( krb5_timestamp atime,
1958
+ krb5_ticket_times *ttimes)
1959
+ {
1960
+ krb5_deltat skew;
1961
+ krb5_timestamp start, now;
1962
+ krb5_error_code rc;
1963
+ krb5_context context;
1964
+
1965
+ if ((rc = krb5_init_context(&context))) return SSL_R_KRB5_S_BAD_TICKET;
1966
+ skew = get_rc_clockskew(context);
1967
+ if ((rc = krb5_timeofday(context,&now))) return SSL_R_KRB5_S_BAD_TICKET;
1968
+ krb5_free_context(context);
1969
+
1970
+ if (atime && labs(atime - now) >= skew) return SSL_R_KRB5_S_TKT_SKEW;
1971
+
1972
+ if (! ttimes) return 0;
1973
+
1974
+ start = (ttimes->starttime != 0)? ttimes->starttime: ttimes->authtime;
1975
+ if (start - now > skew) return SSL_R_KRB5_S_TKT_NYV;
1976
+ if ((now - ttimes->endtime) > skew) return SSL_R_KRB5_S_TKT_EXPIRED;
1977
+
1978
+ #ifdef KSSL_DEBUG
1979
+ printf("kssl_validate_times: %d |<- | %d - %d | < %d ->| %d\n",
1980
+ start, atime, now, skew, ttimes->endtime);
1981
+ #endif /* KSSL_DEBUG */
1982
+
1983
+ return 0;
1984
+ }
1985
+
1986
+
1987
+ /* Decode and decrypt given DER-encoded authenticator, then pass
1988
+ ** authenticator ctime back in *atimep (or 0 if time unavailable).
1989
+ ** Returns krb5_error_code and kssl_err on error. A NULL
1990
+ ** authenticator (authentp->length == 0) is not considered an error.
1991
+ ** Note that kssl_check_authent() makes use of the KRB5 session key;
1992
+ ** you must call kssl_sget_tkt() to get the key before calling this routine.
1993
+ */
1994
+ krb5_error_code kssl_check_authent(
1995
+ /* IN */ KSSL_CTX *kssl_ctx,
1996
+ /* IN */ krb5_data *authentp,
1997
+ /* OUT */ krb5_timestamp *atimep,
1998
+ /* OUT */ KSSL_ERR *kssl_err )
1999
+ {
2000
+ krb5_error_code krb5rc = 0;
2001
+ KRB5_ENCDATA *dec_authent = NULL;
2002
+ KRB5_AUTHENTBODY *auth = NULL;
2003
+ krb5_enctype enctype;
2004
+ EVP_CIPHER_CTX ciph_ctx;
2005
+ const EVP_CIPHER *enc = NULL;
2006
+ unsigned char iv[EVP_MAX_IV_LENGTH];
2007
+ const unsigned char *p;
2008
+ unsigned char *unenc_authent;
2009
+ int outl, unencbufsize;
2010
+ struct tm tm_time, *tm_l, *tm_g;
2011
+ time_t now, tl, tg, tr, tz_offset;
2012
+
2013
+ EVP_CIPHER_CTX_init(&ciph_ctx);
2014
+ *atimep = 0;
2015
+ kssl_err_set(kssl_err, 0, "");
2016
+
2017
+ #ifndef KRB5CHECKAUTH
2018
+ authentp = NULL;
2019
+ #else
2020
+ #if KRB5CHECKAUTH == 0
2021
+ authentp = NULL;
2022
+ #endif
2023
+ #endif /* KRB5CHECKAUTH */
2024
+
2025
+ if (authentp == NULL || authentp->length == 0) return 0;
2026
+
2027
+ #ifdef KSSL_DEBUG
2028
+ {
2029
+ unsigned int ui;
2030
+ printf("kssl_check_authent: authenticator[%d]:\n",authentp->length);
2031
+ p = authentp->data;
2032
+ for (ui=0; ui < authentp->length; ui++) printf("%02x ",p[ui]);
2033
+ printf("\n");
2034
+ }
2035
+ #endif /* KSSL_DEBUG */
2036
+
2037
+ unencbufsize = 2 * authentp->length;
2038
+ if ((unenc_authent = calloc(1, unencbufsize)) == NULL)
2039
+ {
2040
+ kssl_err_set(kssl_err, SSL_R_KRB5_S_INIT,
2041
+ "Unable to allocate authenticator buffer.\n");
2042
+ krb5rc = KRB5KRB_ERR_GENERIC;
2043
+ goto err;
2044
+ }
2045
+
2046
+ p = (unsigned char *)authentp->data;
2047
+ if ((dec_authent = d2i_KRB5_ENCDATA(NULL, &p,
2048
+ (long) authentp->length)) == NULL)
2049
+ {
2050
+ kssl_err_set(kssl_err, SSL_R_KRB5_S_INIT,
2051
+ "Error decoding authenticator.\n");
2052
+ krb5rc = KRB5KRB_AP_ERR_BAD_INTEGRITY;
2053
+ goto err;
2054
+ }
2055
+
2056
+ enctype = dec_authent->etype->data[0]; /* should = kssl_ctx->enctype */
2057
+ #if !defined(KRB5_MIT_OLD11)
2058
+ switch ( enctype ) {
2059
+ case ENCTYPE_DES3_CBC_SHA1: /* EVP_des_ede3_cbc(); */
2060
+ case ENCTYPE_DES3_CBC_SHA:
2061
+ case ENCTYPE_DES3_CBC_RAW:
2062
+ krb5rc = 0; /* Skip, can't handle derived keys */
2063
+ goto err;
2064
+ }
2065
+ #endif
2066
+ enc = kssl_map_enc(enctype);
2067
+ memset(iv, 0, sizeof iv); /* per RFC 1510 */
2068
+
2069
+ if (enc == NULL)
2070
+ {
2071
+ /* Disable kssl_check_authent for ENCTYPE_DES3_CBC_SHA1.
2072
+ ** This enctype indicates the authenticator was encrypted
2073
+ ** using key-usage derived keys which openssl cannot decrypt.
2074
+ */
2075
+ goto err;
2076
+ }
2077
+
2078
+ if (!EVP_CipherInit(&ciph_ctx,enc,kssl_ctx->key,iv,0))
2079
+ {
2080
+ kssl_err_set(kssl_err, SSL_R_KRB5_S_INIT,
2081
+ "EVP_CipherInit error decrypting authenticator.\n");
2082
+ krb5rc = KRB5KRB_AP_ERR_BAD_INTEGRITY;
2083
+ goto err;
2084
+ }
2085
+ outl = dec_authent->cipher->length;
2086
+ if (!EVP_Cipher(&ciph_ctx,unenc_authent,dec_authent->cipher->data,outl))
2087
+ {
2088
+ kssl_err_set(kssl_err, SSL_R_KRB5_S_INIT,
2089
+ "EVP_Cipher error decrypting authenticator.\n");
2090
+ krb5rc = KRB5KRB_AP_ERR_BAD_INTEGRITY;
2091
+ goto err;
2092
+ }
2093
+ EVP_CIPHER_CTX_cleanup(&ciph_ctx);
2094
+
2095
+ #ifdef KSSL_DEBUG
2096
+ {
2097
+ int padl;
2098
+ printf("kssl_check_authent: decrypted authenticator[%d] =\n", outl);
2099
+ for (padl=0; padl < outl; padl++) printf("%02x ",unenc_authent[padl]);
2100
+ printf("\n");
2101
+ }
2102
+ #endif /* KSSL_DEBUG */
2103
+
2104
+ if ((p = kssl_skip_confound(enctype, unenc_authent)) == NULL)
2105
+ {
2106
+ kssl_err_set(kssl_err, SSL_R_KRB5_S_INIT,
2107
+ "confounded by authenticator.\n");
2108
+ krb5rc = KRB5KRB_AP_ERR_BAD_INTEGRITY;
2109
+ goto err;
2110
+ }
2111
+ outl -= p - unenc_authent;
2112
+
2113
+ if ((auth = (KRB5_AUTHENTBODY *) d2i_KRB5_AUTHENT(NULL, &p,
2114
+ (long) outl))==NULL)
2115
+ {
2116
+ kssl_err_set(kssl_err, SSL_R_KRB5_S_INIT,
2117
+ "Error decoding authenticator body.\n");
2118
+ krb5rc = KRB5KRB_AP_ERR_BAD_INTEGRITY;
2119
+ goto err;
2120
+ }
2121
+
2122
+ memset(&tm_time,0,sizeof(struct tm));
2123
+ if (k_gmtime(auth->ctime, &tm_time) &&
2124
+ ((tr = mktime(&tm_time)) != (time_t)(-1)))
2125
+ {
2126
+ now = time(&now);
2127
+ tm_l = localtime(&now); tl = mktime(tm_l);
2128
+ tm_g = gmtime(&now); tg = mktime(tm_g);
2129
+ tz_offset = tg - tl;
2130
+
2131
+ *atimep = (krb5_timestamp)(tr - tz_offset);
2132
+ }
2133
+
2134
+ #ifdef KSSL_DEBUG
2135
+ printf("kssl_check_authent: returns %d for client time ", *atimep);
2136
+ if (auth && auth->ctime && auth->ctime->length && auth->ctime->data)
2137
+ printf("%.*s\n", auth->ctime->length, auth->ctime->data);
2138
+ else printf("NULL\n");
2139
+ #endif /* KSSL_DEBUG */
2140
+
2141
+ err:
2142
+ if (auth) KRB5_AUTHENT_free((KRB5_AUTHENT *) auth);
2143
+ if (dec_authent) KRB5_ENCDATA_free(dec_authent);
2144
+ if (unenc_authent) free(unenc_authent);
2145
+ EVP_CIPHER_CTX_cleanup(&ciph_ctx);
2146
+ return krb5rc;
2147
+ }
2148
+
2149
+
2150
+ /* Replaces krb5_build_principal_ext(), with varargs length == 2 (svc, host),
2151
+ ** because I dont't know how to stub varargs.
2152
+ ** Returns krb5_error_code == ENOMEM on alloc error, otherwise
2153
+ ** passes back newly constructed principal, which should be freed by caller.
2154
+ */
2155
+ krb5_error_code kssl_build_principal_2(
2156
+ /* UPDATE */ krb5_context context,
2157
+ /* OUT */ krb5_principal *princ,
2158
+ /* IN */ int rlen, const char *realm,
2159
+ /* IN */ int slen, const char *svc,
2160
+ /* IN */ int hlen, const char *host)
2161
+ {
2162
+ krb5_data *p_data = NULL;
2163
+ krb5_principal new_p = NULL;
2164
+ char *new_r = NULL;
2165
+
2166
+ if ((p_data = (krb5_data *) calloc(2, sizeof(krb5_data))) == NULL ||
2167
+ (new_p = (krb5_principal) calloc(1, sizeof(krb5_principal_data)))
2168
+ == NULL) goto err;
2169
+ new_p->length = 2;
2170
+ new_p->data = p_data;
2171
+
2172
+ if ((new_r = calloc(1, rlen + 1)) == NULL) goto err;
2173
+ memcpy(new_r, realm, rlen);
2174
+ krb5_princ_set_realm_length(context, new_p, rlen);
2175
+ krb5_princ_set_realm_data(context, new_p, new_r);
2176
+
2177
+ if ((new_p->data[0].data = calloc(1, slen + 1)) == NULL) goto err;
2178
+ memcpy(new_p->data[0].data, svc, slen);
2179
+ new_p->data[0].length = slen;
2180
+
2181
+ if ((new_p->data[1].data = calloc(1, hlen + 1)) == NULL) goto err;
2182
+ memcpy(new_p->data[1].data, host, hlen);
2183
+ new_p->data[1].length = hlen;
2184
+
2185
+ krb5_princ_type(context, new_p) = KRB5_NT_UNKNOWN;
2186
+ *princ = new_p;
2187
+ return 0;
2188
+
2189
+ err:
2190
+ if (new_p && new_p[0].data) free(new_p[0].data);
2191
+ if (new_p && new_p[1].data) free(new_p[1].data);
2192
+ if (new_p) free(new_p);
2193
+ if (new_r) free(new_r);
2194
+ return ENOMEM;
2195
+ }
2196
+
2197
+ void SSL_set0_kssl_ctx(SSL *s, KSSL_CTX *kctx)
2198
+ {
2199
+ s->kssl_ctx = kctx;
2200
+ }
2201
+
2202
+ KSSL_CTX * SSL_get0_kssl_ctx(SSL *s)
2203
+ {
2204
+ return s->kssl_ctx;
2205
+ }
2206
+
2207
+ char *kssl_ctx_get0_client_princ(KSSL_CTX *kctx)
2208
+ {
2209
+ if (kctx)
2210
+ return kctx->client_princ;
2211
+ return NULL;
2212
+ }
2213
+
2214
+ #else /* !OPENSSL_NO_KRB5 */
2215
+
2216
+ #if defined(PEDANTIC) || defined(OPENSSL_SYS_VMS)
2217
+ static void *dummy=&dummy;
2218
+ #endif
2219
+
2220
+ #endif /* !OPENSSL_NO_KRB5 */
2221
+