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,70 @@
1
+ /* ssl/ssl_err2.c */
2
+ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3
+ * All rights reserved.
4
+ *
5
+ * This package is an SSL implementation written
6
+ * by Eric Young (eay@cryptsoft.com).
7
+ * The implementation was written so as to conform with Netscapes SSL.
8
+ *
9
+ * This library is free for commercial and non-commercial use as long as
10
+ * the following conditions are aheared to. The following conditions
11
+ * apply to all code found in this distribution, be it the RC4, RSA,
12
+ * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13
+ * included with this distribution is covered by the same copyright terms
14
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15
+ *
16
+ * Copyright remains Eric Young's, and as such any Copyright notices in
17
+ * the code are not to be removed.
18
+ * If this package is used in a product, Eric Young should be given attribution
19
+ * as the author of the parts of the library used.
20
+ * This can be in the form of a textual message at program startup or
21
+ * in documentation (online or textual) provided with the package.
22
+ *
23
+ * Redistribution and use in source and binary forms, with or without
24
+ * modification, are permitted provided that the following conditions
25
+ * are met:
26
+ * 1. Redistributions of source code must retain the copyright
27
+ * notice, this list of conditions and the following disclaimer.
28
+ * 2. Redistributions in binary form must reproduce the above copyright
29
+ * notice, this list of conditions and the following disclaimer in the
30
+ * documentation and/or other materials provided with the distribution.
31
+ * 3. All advertising materials mentioning features or use of this software
32
+ * must display the following acknowledgement:
33
+ * "This product includes cryptographic software written by
34
+ * Eric Young (eay@cryptsoft.com)"
35
+ * The word 'cryptographic' can be left out if the rouines from the library
36
+ * being used are not cryptographic related :-).
37
+ * 4. If you include any Windows specific code (or a derivative thereof) from
38
+ * the apps directory (application code) you must include an acknowledgement:
39
+ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40
+ *
41
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51
+ * SUCH DAMAGE.
52
+ *
53
+ * The licence and distribution terms for any publically available version or
54
+ * derivative of this code cannot be changed. i.e. this code cannot simply be
55
+ * copied and put under another distribution licence
56
+ * [including the GNU Public Licence.]
57
+ */
58
+
59
+ #include <stdio.h>
60
+ #include <openssl/err.h>
61
+ #include <openssl/ssl.h>
62
+
63
+ void SSL_load_error_strings(void)
64
+ {
65
+ #ifndef OPENSSL_NO_ERR
66
+ ERR_load_crypto_strings();
67
+ ERR_load_SSL_strings();
68
+ #endif
69
+ }
70
+
@@ -0,0 +1,3251 @@
1
+ /*! \file ssl/ssl_lib.c
2
+ * \brief Version independent SSL functions.
3
+ */
4
+ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
5
+ * All rights reserved.
6
+ *
7
+ * This package is an SSL implementation written
8
+ * by Eric Young (eay@cryptsoft.com).
9
+ * The implementation was written so as to conform with Netscapes SSL.
10
+ *
11
+ * This library is free for commercial and non-commercial use as long as
12
+ * the following conditions are aheared to. The following conditions
13
+ * apply to all code found in this distribution, be it the RC4, RSA,
14
+ * lhash, DES, etc., code; not just the SSL code. The SSL documentation
15
+ * included with this distribution is covered by the same copyright terms
16
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
17
+ *
18
+ * Copyright remains Eric Young's, and as such any Copyright notices in
19
+ * the code are not to be removed.
20
+ * If this package is used in a product, Eric Young should be given attribution
21
+ * as the author of the parts of the library used.
22
+ * This can be in the form of a textual message at program startup or
23
+ * in documentation (online or textual) provided with the package.
24
+ *
25
+ * Redistribution and use in source and binary forms, with or without
26
+ * modification, are permitted provided that the following conditions
27
+ * are met:
28
+ * 1. Redistributions of source code must retain the copyright
29
+ * notice, this list of conditions and the following disclaimer.
30
+ * 2. Redistributions in binary form must reproduce the above copyright
31
+ * notice, this list of conditions and the following disclaimer in the
32
+ * documentation and/or other materials provided with the distribution.
33
+ * 3. All advertising materials mentioning features or use of this software
34
+ * must display the following acknowledgement:
35
+ * "This product includes cryptographic software written by
36
+ * Eric Young (eay@cryptsoft.com)"
37
+ * The word 'cryptographic' can be left out if the rouines from the library
38
+ * being used are not cryptographic related :-).
39
+ * 4. If you include any Windows specific code (or a derivative thereof) from
40
+ * the apps directory (application code) you must include an acknowledgement:
41
+ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
42
+ *
43
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
44
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
45
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
46
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
47
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
48
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
49
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
50
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
51
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
52
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
53
+ * SUCH DAMAGE.
54
+ *
55
+ * The licence and distribution terms for any publically available version or
56
+ * derivative of this code cannot be changed. i.e. this code cannot simply be
57
+ * copied and put under another distribution licence
58
+ * [including the GNU Public Licence.]
59
+ */
60
+ /* ====================================================================
61
+ * Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved.
62
+ *
63
+ * Redistribution and use in source and binary forms, with or without
64
+ * modification, are permitted provided that the following conditions
65
+ * are met:
66
+ *
67
+ * 1. Redistributions of source code must retain the above copyright
68
+ * notice, this list of conditions and the following disclaimer.
69
+ *
70
+ * 2. Redistributions in binary form must reproduce the above copyright
71
+ * notice, this list of conditions and the following disclaimer in
72
+ * the documentation and/or other materials provided with the
73
+ * distribution.
74
+ *
75
+ * 3. All advertising materials mentioning features or use of this
76
+ * software must display the following acknowledgment:
77
+ * "This product includes software developed by the OpenSSL Project
78
+ * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
79
+ *
80
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
81
+ * endorse or promote products derived from this software without
82
+ * prior written permission. For written permission, please contact
83
+ * openssl-core@openssl.org.
84
+ *
85
+ * 5. Products derived from this software may not be called "OpenSSL"
86
+ * nor may "OpenSSL" appear in their names without prior written
87
+ * permission of the OpenSSL Project.
88
+ *
89
+ * 6. Redistributions of any form whatsoever must retain the following
90
+ * acknowledgment:
91
+ * "This product includes software developed by the OpenSSL Project
92
+ * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
93
+ *
94
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
95
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
96
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
97
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
98
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
99
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
100
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
101
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
102
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
103
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
104
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
105
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
106
+ * ====================================================================
107
+ *
108
+ * This product includes cryptographic software written by Eric Young
109
+ * (eay@cryptsoft.com). This product includes software written by Tim
110
+ * Hudson (tjh@cryptsoft.com).
111
+ *
112
+ */
113
+ /* ====================================================================
114
+ * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
115
+ * ECC cipher suite support in OpenSSL originally developed by
116
+ * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
117
+ */
118
+ /* ====================================================================
119
+ * Copyright 2005 Nokia. All rights reserved.
120
+ *
121
+ * The portions of the attached software ("Contribution") is developed by
122
+ * Nokia Corporation and is licensed pursuant to the OpenSSL open source
123
+ * license.
124
+ *
125
+ * The Contribution, originally written by Mika Kousa and Pasi Eronen of
126
+ * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites
127
+ * support (see RFC 4279) to OpenSSL.
128
+ *
129
+ * No patent licenses or other rights except those expressly stated in
130
+ * the OpenSSL open source license shall be deemed granted or received
131
+ * expressly, by implication, estoppel, or otherwise.
132
+ *
133
+ * No assurances are provided by Nokia that the Contribution does not
134
+ * infringe the patent or other intellectual property rights of any third
135
+ * party or that the license provides you with all the necessary rights
136
+ * to make use of the Contribution.
137
+ *
138
+ * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN
139
+ * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA
140
+ * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY
141
+ * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR
142
+ * OTHERWISE.
143
+ */
144
+
145
+ #ifdef REF_CHECK
146
+ # include <assert.h>
147
+ #endif
148
+ #include <stdio.h>
149
+ #include "ssl_locl.h"
150
+ #include "kssl_lcl.h"
151
+ #include <openssl/objects.h>
152
+ #include <openssl/lhash.h>
153
+ #include <openssl/x509v3.h>
154
+ #include <openssl/rand.h>
155
+ #include <openssl/ocsp.h>
156
+ #ifndef OPENSSL_NO_DH
157
+ #include <openssl/dh.h>
158
+ #endif
159
+ #ifndef OPENSSL_NO_ENGINE
160
+ #include <openssl/engine.h>
161
+ #endif
162
+
163
+ const char *SSL_version_str=OPENSSL_VERSION_TEXT;
164
+
165
+ SSL3_ENC_METHOD ssl3_undef_enc_method={
166
+ /* evil casts, but these functions are only called if there's a library bug */
167
+ (int (*)(SSL *,int))ssl_undefined_function,
168
+ (int (*)(SSL *, unsigned char *, int))ssl_undefined_function,
169
+ ssl_undefined_function,
170
+ (int (*)(SSL *, unsigned char *, unsigned char *, int))ssl_undefined_function,
171
+ (int (*)(SSL*, int))ssl_undefined_function,
172
+ (int (*)(SSL *, const char*, int, unsigned char *))ssl_undefined_function,
173
+ 0, /* finish_mac_length */
174
+ (int (*)(SSL *, int, unsigned char *))ssl_undefined_function,
175
+ NULL, /* client_finished_label */
176
+ 0, /* client_finished_label_len */
177
+ NULL, /* server_finished_label */
178
+ 0, /* server_finished_label_len */
179
+ (int (*)(int))ssl_undefined_function,
180
+ (int (*)(SSL *, unsigned char *, size_t, const char *,
181
+ size_t, const unsigned char *, size_t,
182
+ int use_context)) ssl_undefined_function,
183
+ };
184
+
185
+ int SSL_clear(SSL *s)
186
+ {
187
+
188
+ if (s->method == NULL)
189
+ {
190
+ SSLerr(SSL_F_SSL_CLEAR,SSL_R_NO_METHOD_SPECIFIED);
191
+ return(0);
192
+ }
193
+
194
+ if (ssl_clear_bad_session(s))
195
+ {
196
+ SSL_SESSION_free(s->session);
197
+ s->session=NULL;
198
+ }
199
+
200
+ s->error=0;
201
+ s->hit=0;
202
+ s->shutdown=0;
203
+
204
+ #if 0 /* Disabled since version 1.10 of this file (early return not
205
+ * needed because SSL_clear is not called when doing renegotiation) */
206
+ /* This is set if we are doing dynamic renegotiation so keep
207
+ * the old cipher. It is sort of a SSL_clear_lite :-) */
208
+ if (s->renegotiate) return(1);
209
+ #else
210
+ if (s->renegotiate)
211
+ {
212
+ SSLerr(SSL_F_SSL_CLEAR,ERR_R_INTERNAL_ERROR);
213
+ return 0;
214
+ }
215
+ #endif
216
+
217
+ s->type=0;
218
+
219
+ s->state=SSL_ST_BEFORE|((s->server)?SSL_ST_ACCEPT:SSL_ST_CONNECT);
220
+
221
+ s->version=s->method->version;
222
+ s->client_version=s->version;
223
+ s->rwstate=SSL_NOTHING;
224
+ s->rstate=SSL_ST_READ_HEADER;
225
+ #if 0
226
+ s->read_ahead=s->ctx->read_ahead;
227
+ #endif
228
+
229
+ if (s->init_buf != NULL)
230
+ {
231
+ BUF_MEM_free(s->init_buf);
232
+ s->init_buf=NULL;
233
+ }
234
+
235
+ ssl_clear_cipher_ctx(s);
236
+ ssl_clear_hash_ctx(&s->read_hash);
237
+ ssl_clear_hash_ctx(&s->write_hash);
238
+
239
+ s->first_packet=0;
240
+
241
+ #if 1
242
+ /* Check to see if we were changed into a different method, if
243
+ * so, revert back if we are not doing session-id reuse. */
244
+ if (!s->in_handshake && (s->session == NULL) && (s->method != s->ctx->method))
245
+ {
246
+ s->method->ssl_free(s);
247
+ s->method=s->ctx->method;
248
+ if (!s->method->ssl_new(s))
249
+ return(0);
250
+ }
251
+ else
252
+ #endif
253
+ s->method->ssl_clear(s);
254
+ return(1);
255
+ }
256
+
257
+ /** Used to change an SSL_CTXs default SSL method type */
258
+ int SSL_CTX_set_ssl_version(SSL_CTX *ctx,const SSL_METHOD *meth)
259
+ {
260
+ STACK_OF(SSL_CIPHER) *sk;
261
+
262
+ ctx->method=meth;
263
+
264
+ sk=ssl_create_cipher_list(ctx->method,&(ctx->cipher_list),
265
+ &(ctx->cipher_list_by_id),
266
+ meth->version == SSL2_VERSION ? "SSLv2" : SSL_DEFAULT_CIPHER_LIST);
267
+ if ((sk == NULL) || (sk_SSL_CIPHER_num(sk) <= 0))
268
+ {
269
+ SSLerr(SSL_F_SSL_CTX_SET_SSL_VERSION,SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS);
270
+ return(0);
271
+ }
272
+ return(1);
273
+ }
274
+
275
+ SSL *SSL_new(SSL_CTX *ctx)
276
+ {
277
+ SSL *s;
278
+
279
+ if (ctx == NULL)
280
+ {
281
+ SSLerr(SSL_F_SSL_NEW,SSL_R_NULL_SSL_CTX);
282
+ return(NULL);
283
+ }
284
+ if (ctx->method == NULL)
285
+ {
286
+ SSLerr(SSL_F_SSL_NEW,SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION);
287
+ return(NULL);
288
+ }
289
+
290
+ s=(SSL *)OPENSSL_malloc(sizeof(SSL));
291
+ if (s == NULL) goto err;
292
+ memset(s,0,sizeof(SSL));
293
+
294
+ #ifndef OPENSSL_NO_KRB5
295
+ s->kssl_ctx = kssl_ctx_new();
296
+ #endif /* OPENSSL_NO_KRB5 */
297
+
298
+ s->options=ctx->options;
299
+ s->mode=ctx->mode;
300
+ s->max_cert_list=ctx->max_cert_list;
301
+
302
+ if (ctx->cert != NULL)
303
+ {
304
+ /* Earlier library versions used to copy the pointer to
305
+ * the CERT, not its contents; only when setting new
306
+ * parameters for the per-SSL copy, ssl_cert_new would be
307
+ * called (and the direct reference to the per-SSL_CTX
308
+ * settings would be lost, but those still were indirectly
309
+ * accessed for various purposes, and for that reason they
310
+ * used to be known as s->ctx->default_cert).
311
+ * Now we don't look at the SSL_CTX's CERT after having
312
+ * duplicated it once. */
313
+
314
+ s->cert = ssl_cert_dup(ctx->cert);
315
+ if (s->cert == NULL)
316
+ goto err;
317
+ }
318
+ else
319
+ s->cert=NULL; /* Cannot really happen (see SSL_CTX_new) */
320
+
321
+ s->read_ahead=ctx->read_ahead;
322
+ s->msg_callback=ctx->msg_callback;
323
+ s->msg_callback_arg=ctx->msg_callback_arg;
324
+ s->verify_mode=ctx->verify_mode;
325
+ #if 0
326
+ s->verify_depth=ctx->verify_depth;
327
+ #endif
328
+ s->sid_ctx_length=ctx->sid_ctx_length;
329
+ OPENSSL_assert(s->sid_ctx_length <= sizeof s->sid_ctx);
330
+ memcpy(&s->sid_ctx,&ctx->sid_ctx,sizeof(s->sid_ctx));
331
+ s->verify_callback=ctx->default_verify_callback;
332
+ s->generate_session_id=ctx->generate_session_id;
333
+
334
+ s->param = X509_VERIFY_PARAM_new();
335
+ if (!s->param)
336
+ goto err;
337
+ X509_VERIFY_PARAM_inherit(s->param, ctx->param);
338
+ #if 0
339
+ s->purpose = ctx->purpose;
340
+ s->trust = ctx->trust;
341
+ #endif
342
+ s->quiet_shutdown=ctx->quiet_shutdown;
343
+ s->max_send_fragment = ctx->max_send_fragment;
344
+
345
+ CRYPTO_add(&ctx->references,1,CRYPTO_LOCK_SSL_CTX);
346
+ s->ctx=ctx;
347
+ #ifndef OPENSSL_NO_TLSEXT
348
+ s->tlsext_debug_cb = 0;
349
+ s->tlsext_debug_arg = NULL;
350
+ s->tlsext_ticket_expected = 0;
351
+ s->tlsext_status_type = -1;
352
+ s->tlsext_status_expected = 0;
353
+ s->tlsext_ocsp_ids = NULL;
354
+ s->tlsext_ocsp_exts = NULL;
355
+ s->tlsext_ocsp_resp = NULL;
356
+ s->tlsext_ocsp_resplen = -1;
357
+ CRYPTO_add(&ctx->references,1,CRYPTO_LOCK_SSL_CTX);
358
+ s->initial_ctx=ctx;
359
+ # ifndef OPENSSL_NO_NEXTPROTONEG
360
+ s->next_proto_negotiated = NULL;
361
+ # endif
362
+ #endif
363
+
364
+ s->verify_result=X509_V_OK;
365
+
366
+ s->method=ctx->method;
367
+
368
+ if (!s->method->ssl_new(s))
369
+ goto err;
370
+
371
+ s->references=1;
372
+ s->server=(ctx->method->ssl_accept == ssl_undefined_function)?0:1;
373
+
374
+ SSL_clear(s);
375
+
376
+ CRYPTO_new_ex_data(CRYPTO_EX_INDEX_SSL, s, &s->ex_data);
377
+
378
+ #ifndef OPENSSL_NO_PSK
379
+ s->psk_client_callback=ctx->psk_client_callback;
380
+ s->psk_server_callback=ctx->psk_server_callback;
381
+ #endif
382
+
383
+ return(s);
384
+ err:
385
+ if (s != NULL)
386
+ {
387
+ if (s->cert != NULL)
388
+ ssl_cert_free(s->cert);
389
+ if (s->ctx != NULL)
390
+ SSL_CTX_free(s->ctx); /* decrement reference count */
391
+ OPENSSL_free(s);
392
+ }
393
+ SSLerr(SSL_F_SSL_NEW,ERR_R_MALLOC_FAILURE);
394
+ return(NULL);
395
+ }
396
+
397
+ int SSL_CTX_set_session_id_context(SSL_CTX *ctx,const unsigned char *sid_ctx,
398
+ unsigned int sid_ctx_len)
399
+ {
400
+ if(sid_ctx_len > sizeof ctx->sid_ctx)
401
+ {
402
+ SSLerr(SSL_F_SSL_CTX_SET_SESSION_ID_CONTEXT,SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG);
403
+ return 0;
404
+ }
405
+ ctx->sid_ctx_length=sid_ctx_len;
406
+ memcpy(ctx->sid_ctx,sid_ctx,sid_ctx_len);
407
+
408
+ return 1;
409
+ }
410
+
411
+ int SSL_set_session_id_context(SSL *ssl,const unsigned char *sid_ctx,
412
+ unsigned int sid_ctx_len)
413
+ {
414
+ if(sid_ctx_len > SSL_MAX_SID_CTX_LENGTH)
415
+ {
416
+ SSLerr(SSL_F_SSL_SET_SESSION_ID_CONTEXT,SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG);
417
+ return 0;
418
+ }
419
+ ssl->sid_ctx_length=sid_ctx_len;
420
+ memcpy(ssl->sid_ctx,sid_ctx,sid_ctx_len);
421
+
422
+ return 1;
423
+ }
424
+
425
+ int SSL_CTX_set_generate_session_id(SSL_CTX *ctx, GEN_SESSION_CB cb)
426
+ {
427
+ CRYPTO_w_lock(CRYPTO_LOCK_SSL_CTX);
428
+ ctx->generate_session_id = cb;
429
+ CRYPTO_w_unlock(CRYPTO_LOCK_SSL_CTX);
430
+ return 1;
431
+ }
432
+
433
+ int SSL_set_generate_session_id(SSL *ssl, GEN_SESSION_CB cb)
434
+ {
435
+ CRYPTO_w_lock(CRYPTO_LOCK_SSL);
436
+ ssl->generate_session_id = cb;
437
+ CRYPTO_w_unlock(CRYPTO_LOCK_SSL);
438
+ return 1;
439
+ }
440
+
441
+ int SSL_has_matching_session_id(const SSL *ssl, const unsigned char *id,
442
+ unsigned int id_len)
443
+ {
444
+ /* A quick examination of SSL_SESSION_hash and SSL_SESSION_cmp shows how
445
+ * we can "construct" a session to give us the desired check - ie. to
446
+ * find if there's a session in the hash table that would conflict with
447
+ * any new session built out of this id/id_len and the ssl_version in
448
+ * use by this SSL. */
449
+ SSL_SESSION r, *p;
450
+
451
+ if(id_len > sizeof r.session_id)
452
+ return 0;
453
+
454
+ r.ssl_version = ssl->version;
455
+ r.session_id_length = id_len;
456
+ memcpy(r.session_id, id, id_len);
457
+ /* NB: SSLv2 always uses a fixed 16-byte session ID, so even if a
458
+ * callback is calling us to check the uniqueness of a shorter ID, it
459
+ * must be compared as a padded-out ID because that is what it will be
460
+ * converted to when the callback has finished choosing it. */
461
+ if((r.ssl_version == SSL2_VERSION) &&
462
+ (id_len < SSL2_SSL_SESSION_ID_LENGTH))
463
+ {
464
+ memset(r.session_id + id_len, 0,
465
+ SSL2_SSL_SESSION_ID_LENGTH - id_len);
466
+ r.session_id_length = SSL2_SSL_SESSION_ID_LENGTH;
467
+ }
468
+
469
+ CRYPTO_r_lock(CRYPTO_LOCK_SSL_CTX);
470
+ p = lh_SSL_SESSION_retrieve(ssl->ctx->sessions, &r);
471
+ CRYPTO_r_unlock(CRYPTO_LOCK_SSL_CTX);
472
+ return (p != NULL);
473
+ }
474
+
475
+ int SSL_CTX_set_purpose(SSL_CTX *s, int purpose)
476
+ {
477
+ return X509_VERIFY_PARAM_set_purpose(s->param, purpose);
478
+ }
479
+
480
+ int SSL_set_purpose(SSL *s, int purpose)
481
+ {
482
+ return X509_VERIFY_PARAM_set_purpose(s->param, purpose);
483
+ }
484
+
485
+ int SSL_CTX_set_trust(SSL_CTX *s, int trust)
486
+ {
487
+ return X509_VERIFY_PARAM_set_trust(s->param, trust);
488
+ }
489
+
490
+ int SSL_set_trust(SSL *s, int trust)
491
+ {
492
+ return X509_VERIFY_PARAM_set_trust(s->param, trust);
493
+ }
494
+
495
+ int SSL_CTX_set1_param(SSL_CTX *ctx, X509_VERIFY_PARAM *vpm)
496
+ {
497
+ return X509_VERIFY_PARAM_set1(ctx->param, vpm);
498
+ }
499
+
500
+ int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm)
501
+ {
502
+ return X509_VERIFY_PARAM_set1(ssl->param, vpm);
503
+ }
504
+
505
+ void SSL_free(SSL *s)
506
+ {
507
+ int i;
508
+
509
+ if(s == NULL)
510
+ return;
511
+
512
+ i=CRYPTO_add(&s->references,-1,CRYPTO_LOCK_SSL);
513
+ #ifdef REF_PRINT
514
+ REF_PRINT("SSL",s);
515
+ #endif
516
+ if (i > 0) return;
517
+ #ifdef REF_CHECK
518
+ if (i < 0)
519
+ {
520
+ fprintf(stderr,"SSL_free, bad reference count\n");
521
+ abort(); /* ok */
522
+ }
523
+ #endif
524
+
525
+ if (s->param)
526
+ X509_VERIFY_PARAM_free(s->param);
527
+
528
+ CRYPTO_free_ex_data(CRYPTO_EX_INDEX_SSL, s, &s->ex_data);
529
+
530
+ if (s->bbio != NULL)
531
+ {
532
+ /* If the buffering BIO is in place, pop it off */
533
+ if (s->bbio == s->wbio)
534
+ {
535
+ s->wbio=BIO_pop(s->wbio);
536
+ }
537
+ BIO_free(s->bbio);
538
+ s->bbio=NULL;
539
+ }
540
+ if (s->rbio != NULL)
541
+ BIO_free_all(s->rbio);
542
+ if ((s->wbio != NULL) && (s->wbio != s->rbio))
543
+ BIO_free_all(s->wbio);
544
+
545
+ if (s->init_buf != NULL) BUF_MEM_free(s->init_buf);
546
+
547
+ /* add extra stuff */
548
+ if (s->cipher_list != NULL) sk_SSL_CIPHER_free(s->cipher_list);
549
+ if (s->cipher_list_by_id != NULL) sk_SSL_CIPHER_free(s->cipher_list_by_id);
550
+
551
+ /* Make the next call work :-) */
552
+ if (s->session != NULL)
553
+ {
554
+ ssl_clear_bad_session(s);
555
+ SSL_SESSION_free(s->session);
556
+ }
557
+
558
+ ssl_clear_cipher_ctx(s);
559
+ ssl_clear_hash_ctx(&s->read_hash);
560
+ ssl_clear_hash_ctx(&s->write_hash);
561
+
562
+ if (s->cert != NULL) ssl_cert_free(s->cert);
563
+ /* Free up if allocated */
564
+
565
+ #ifndef OPENSSL_NO_TLSEXT
566
+ if (s->tlsext_hostname)
567
+ OPENSSL_free(s->tlsext_hostname);
568
+ if (s->initial_ctx) SSL_CTX_free(s->initial_ctx);
569
+ #ifndef OPENSSL_NO_EC
570
+ if (s->tlsext_ecpointformatlist) OPENSSL_free(s->tlsext_ecpointformatlist);
571
+ if (s->tlsext_ellipticcurvelist) OPENSSL_free(s->tlsext_ellipticcurvelist);
572
+ #endif /* OPENSSL_NO_EC */
573
+ if (s->tlsext_opaque_prf_input) OPENSSL_free(s->tlsext_opaque_prf_input);
574
+ if (s->tlsext_ocsp_exts)
575
+ sk_X509_EXTENSION_pop_free(s->tlsext_ocsp_exts,
576
+ X509_EXTENSION_free);
577
+ if (s->tlsext_ocsp_ids)
578
+ sk_OCSP_RESPID_pop_free(s->tlsext_ocsp_ids, OCSP_RESPID_free);
579
+ if (s->tlsext_ocsp_resp)
580
+ OPENSSL_free(s->tlsext_ocsp_resp);
581
+ #endif
582
+
583
+ if (s->client_CA != NULL)
584
+ sk_X509_NAME_pop_free(s->client_CA,X509_NAME_free);
585
+
586
+ if (s->method != NULL) s->method->ssl_free(s);
587
+
588
+ if (s->ctx) SSL_CTX_free(s->ctx);
589
+
590
+ #ifndef OPENSSL_NO_KRB5
591
+ if (s->kssl_ctx != NULL)
592
+ kssl_ctx_free(s->kssl_ctx);
593
+ #endif /* OPENSSL_NO_KRB5 */
594
+
595
+ #if !defined(OPENSSL_NO_TLSEXT) && !defined(OPENSSL_NO_NEXTPROTONEG)
596
+ if (s->next_proto_negotiated)
597
+ OPENSSL_free(s->next_proto_negotiated);
598
+ #endif
599
+
600
+ if (s->srtp_profiles)
601
+ sk_SRTP_PROTECTION_PROFILE_free(s->srtp_profiles);
602
+
603
+ OPENSSL_free(s);
604
+ }
605
+
606
+ void SSL_set_bio(SSL *s,BIO *rbio,BIO *wbio)
607
+ {
608
+ /* If the output buffering BIO is still in place, remove it
609
+ */
610
+ if (s->bbio != NULL)
611
+ {
612
+ if (s->wbio == s->bbio)
613
+ {
614
+ s->wbio=s->wbio->next_bio;
615
+ s->bbio->next_bio=NULL;
616
+ }
617
+ }
618
+ if ((s->rbio != NULL) && (s->rbio != rbio))
619
+ BIO_free_all(s->rbio);
620
+ if ((s->wbio != NULL) && (s->wbio != wbio) && (s->rbio != s->wbio))
621
+ BIO_free_all(s->wbio);
622
+ s->rbio=rbio;
623
+ s->wbio=wbio;
624
+ }
625
+
626
+ BIO *SSL_get_rbio(const SSL *s)
627
+ { return(s->rbio); }
628
+
629
+ BIO *SSL_get_wbio(const SSL *s)
630
+ { return(s->wbio); }
631
+
632
+ int SSL_get_fd(const SSL *s)
633
+ {
634
+ return(SSL_get_rfd(s));
635
+ }
636
+
637
+ int SSL_get_rfd(const SSL *s)
638
+ {
639
+ int ret= -1;
640
+ BIO *b,*r;
641
+
642
+ b=SSL_get_rbio(s);
643
+ r=BIO_find_type(b,BIO_TYPE_DESCRIPTOR);
644
+ if (r != NULL)
645
+ BIO_get_fd(r,&ret);
646
+ return(ret);
647
+ }
648
+
649
+ int SSL_get_wfd(const SSL *s)
650
+ {
651
+ int ret= -1;
652
+ BIO *b,*r;
653
+
654
+ b=SSL_get_wbio(s);
655
+ r=BIO_find_type(b,BIO_TYPE_DESCRIPTOR);
656
+ if (r != NULL)
657
+ BIO_get_fd(r,&ret);
658
+ return(ret);
659
+ }
660
+
661
+ #ifndef OPENSSL_NO_SOCK
662
+ int SSL_set_fd(SSL *s,int fd)
663
+ {
664
+ int ret=0;
665
+ BIO *bio=NULL;
666
+
667
+ bio=BIO_new(BIO_s_socket());
668
+
669
+ if (bio == NULL)
670
+ {
671
+ SSLerr(SSL_F_SSL_SET_FD,ERR_R_BUF_LIB);
672
+ goto err;
673
+ }
674
+ BIO_set_fd(bio,fd,BIO_NOCLOSE);
675
+ SSL_set_bio(s,bio,bio);
676
+ ret=1;
677
+ err:
678
+ return(ret);
679
+ }
680
+
681
+ int SSL_set_wfd(SSL *s,int fd)
682
+ {
683
+ int ret=0;
684
+ BIO *bio=NULL;
685
+
686
+ if ((s->rbio == NULL) || (BIO_method_type(s->rbio) != BIO_TYPE_SOCKET)
687
+ || ((int)BIO_get_fd(s->rbio,NULL) != fd))
688
+ {
689
+ bio=BIO_new(BIO_s_socket());
690
+
691
+ if (bio == NULL)
692
+ { SSLerr(SSL_F_SSL_SET_WFD,ERR_R_BUF_LIB); goto err; }
693
+ BIO_set_fd(bio,fd,BIO_NOCLOSE);
694
+ SSL_set_bio(s,SSL_get_rbio(s),bio);
695
+ }
696
+ else
697
+ SSL_set_bio(s,SSL_get_rbio(s),SSL_get_rbio(s));
698
+ ret=1;
699
+ err:
700
+ return(ret);
701
+ }
702
+
703
+ int SSL_set_rfd(SSL *s,int fd)
704
+ {
705
+ int ret=0;
706
+ BIO *bio=NULL;
707
+
708
+ if ((s->wbio == NULL) || (BIO_method_type(s->wbio) != BIO_TYPE_SOCKET)
709
+ || ((int)BIO_get_fd(s->wbio,NULL) != fd))
710
+ {
711
+ bio=BIO_new(BIO_s_socket());
712
+
713
+ if (bio == NULL)
714
+ {
715
+ SSLerr(SSL_F_SSL_SET_RFD,ERR_R_BUF_LIB);
716
+ goto err;
717
+ }
718
+ BIO_set_fd(bio,fd,BIO_NOCLOSE);
719
+ SSL_set_bio(s,bio,SSL_get_wbio(s));
720
+ }
721
+ else
722
+ SSL_set_bio(s,SSL_get_wbio(s),SSL_get_wbio(s));
723
+ ret=1;
724
+ err:
725
+ return(ret);
726
+ }
727
+ #endif
728
+
729
+
730
+ /* return length of latest Finished message we sent, copy to 'buf' */
731
+ size_t SSL_get_finished(const SSL *s, void *buf, size_t count)
732
+ {
733
+ size_t ret = 0;
734
+
735
+ if (s->s3 != NULL)
736
+ {
737
+ ret = s->s3->tmp.finish_md_len;
738
+ if (count > ret)
739
+ count = ret;
740
+ memcpy(buf, s->s3->tmp.finish_md, count);
741
+ }
742
+ return ret;
743
+ }
744
+
745
+ /* return length of latest Finished message we expected, copy to 'buf' */
746
+ size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count)
747
+ {
748
+ size_t ret = 0;
749
+
750
+ if (s->s3 != NULL)
751
+ {
752
+ ret = s->s3->tmp.peer_finish_md_len;
753
+ if (count > ret)
754
+ count = ret;
755
+ memcpy(buf, s->s3->tmp.peer_finish_md, count);
756
+ }
757
+ return ret;
758
+ }
759
+
760
+
761
+ int SSL_get_verify_mode(const SSL *s)
762
+ {
763
+ return(s->verify_mode);
764
+ }
765
+
766
+ int SSL_get_verify_depth(const SSL *s)
767
+ {
768
+ return X509_VERIFY_PARAM_get_depth(s->param);
769
+ }
770
+
771
+ int (*SSL_get_verify_callback(const SSL *s))(int,X509_STORE_CTX *)
772
+ {
773
+ return(s->verify_callback);
774
+ }
775
+
776
+ int SSL_CTX_get_verify_mode(const SSL_CTX *ctx)
777
+ {
778
+ return(ctx->verify_mode);
779
+ }
780
+
781
+ int SSL_CTX_get_verify_depth(const SSL_CTX *ctx)
782
+ {
783
+ return X509_VERIFY_PARAM_get_depth(ctx->param);
784
+ }
785
+
786
+ int (*SSL_CTX_get_verify_callback(const SSL_CTX *ctx))(int,X509_STORE_CTX *)
787
+ {
788
+ return(ctx->default_verify_callback);
789
+ }
790
+
791
+ void SSL_set_verify(SSL *s,int mode,
792
+ int (*callback)(int ok,X509_STORE_CTX *ctx))
793
+ {
794
+ s->verify_mode=mode;
795
+ if (callback != NULL)
796
+ s->verify_callback=callback;
797
+ }
798
+
799
+ void SSL_set_verify_depth(SSL *s,int depth)
800
+ {
801
+ X509_VERIFY_PARAM_set_depth(s->param, depth);
802
+ }
803
+
804
+ void SSL_set_read_ahead(SSL *s,int yes)
805
+ {
806
+ s->read_ahead=yes;
807
+ }
808
+
809
+ int SSL_get_read_ahead(const SSL *s)
810
+ {
811
+ return(s->read_ahead);
812
+ }
813
+
814
+ int SSL_pending(const SSL *s)
815
+ {
816
+ /* SSL_pending cannot work properly if read-ahead is enabled
817
+ * (SSL_[CTX_]ctrl(..., SSL_CTRL_SET_READ_AHEAD, 1, NULL)),
818
+ * and it is impossible to fix since SSL_pending cannot report
819
+ * errors that may be observed while scanning the new data.
820
+ * (Note that SSL_pending() is often used as a boolean value,
821
+ * so we'd better not return -1.)
822
+ */
823
+ return(s->method->ssl_pending(s));
824
+ }
825
+
826
+ X509 *SSL_get_peer_certificate(const SSL *s)
827
+ {
828
+ X509 *r;
829
+
830
+ if ((s == NULL) || (s->session == NULL))
831
+ r=NULL;
832
+ else
833
+ r=s->session->peer;
834
+
835
+ if (r == NULL) return(r);
836
+
837
+ CRYPTO_add(&r->references,1,CRYPTO_LOCK_X509);
838
+
839
+ return(r);
840
+ }
841
+
842
+ STACK_OF(X509) *SSL_get_peer_cert_chain(const SSL *s)
843
+ {
844
+ STACK_OF(X509) *r;
845
+
846
+ if ((s == NULL) || (s->session == NULL) || (s->session->sess_cert == NULL))
847
+ r=NULL;
848
+ else
849
+ r=s->session->sess_cert->cert_chain;
850
+
851
+ /* If we are a client, cert_chain includes the peer's own
852
+ * certificate; if we are a server, it does not. */
853
+
854
+ return(r);
855
+ }
856
+
857
+ /* Now in theory, since the calling process own 't' it should be safe to
858
+ * modify. We need to be able to read f without being hassled */
859
+ void SSL_copy_session_id(SSL *t,const SSL *f)
860
+ {
861
+ CERT *tmp;
862
+
863
+ /* Do we need to to SSL locking? */
864
+ SSL_set_session(t,SSL_get_session(f));
865
+
866
+ /* what if we are setup as SSLv2 but want to talk SSLv3 or
867
+ * vice-versa */
868
+ if (t->method != f->method)
869
+ {
870
+ t->method->ssl_free(t); /* cleanup current */
871
+ t->method=f->method; /* change method */
872
+ t->method->ssl_new(t); /* setup new */
873
+ }
874
+
875
+ tmp=t->cert;
876
+ if (f->cert != NULL)
877
+ {
878
+ CRYPTO_add(&f->cert->references,1,CRYPTO_LOCK_SSL_CERT);
879
+ t->cert=f->cert;
880
+ }
881
+ else
882
+ t->cert=NULL;
883
+ if (tmp != NULL) ssl_cert_free(tmp);
884
+ SSL_set_session_id_context(t,f->sid_ctx,f->sid_ctx_length);
885
+ }
886
+
887
+ /* Fix this so it checks all the valid key/cert options */
888
+ int SSL_CTX_check_private_key(const SSL_CTX *ctx)
889
+ {
890
+ if ( (ctx == NULL) ||
891
+ (ctx->cert == NULL) ||
892
+ (ctx->cert->key->x509 == NULL))
893
+ {
894
+ SSLerr(SSL_F_SSL_CTX_CHECK_PRIVATE_KEY,SSL_R_NO_CERTIFICATE_ASSIGNED);
895
+ return(0);
896
+ }
897
+ if (ctx->cert->key->privatekey == NULL)
898
+ {
899
+ SSLerr(SSL_F_SSL_CTX_CHECK_PRIVATE_KEY,SSL_R_NO_PRIVATE_KEY_ASSIGNED);
900
+ return(0);
901
+ }
902
+ return(X509_check_private_key(ctx->cert->key->x509, ctx->cert->key->privatekey));
903
+ }
904
+
905
+ /* Fix this function so that it takes an optional type parameter */
906
+ int SSL_check_private_key(const SSL *ssl)
907
+ {
908
+ if (ssl == NULL)
909
+ {
910
+ SSLerr(SSL_F_SSL_CHECK_PRIVATE_KEY,ERR_R_PASSED_NULL_PARAMETER);
911
+ return(0);
912
+ }
913
+ if (ssl->cert == NULL)
914
+ {
915
+ SSLerr(SSL_F_SSL_CHECK_PRIVATE_KEY,SSL_R_NO_CERTIFICATE_ASSIGNED);
916
+ return 0;
917
+ }
918
+ if (ssl->cert->key->x509 == NULL)
919
+ {
920
+ SSLerr(SSL_F_SSL_CHECK_PRIVATE_KEY,SSL_R_NO_CERTIFICATE_ASSIGNED);
921
+ return(0);
922
+ }
923
+ if (ssl->cert->key->privatekey == NULL)
924
+ {
925
+ SSLerr(SSL_F_SSL_CHECK_PRIVATE_KEY,SSL_R_NO_PRIVATE_KEY_ASSIGNED);
926
+ return(0);
927
+ }
928
+ return(X509_check_private_key(ssl->cert->key->x509,
929
+ ssl->cert->key->privatekey));
930
+ }
931
+
932
+ int SSL_accept(SSL *s)
933
+ {
934
+ if (s->handshake_func == 0)
935
+ /* Not properly initialized yet */
936
+ SSL_set_accept_state(s);
937
+
938
+ return(s->method->ssl_accept(s));
939
+ }
940
+
941
+ int SSL_connect(SSL *s)
942
+ {
943
+ if (s->handshake_func == 0)
944
+ /* Not properly initialized yet */
945
+ SSL_set_connect_state(s);
946
+
947
+ return(s->method->ssl_connect(s));
948
+ }
949
+
950
+ long SSL_get_default_timeout(const SSL *s)
951
+ {
952
+ return(s->method->get_timeout());
953
+ }
954
+
955
+ int SSL_read(SSL *s,void *buf,int num)
956
+ {
957
+ if (s->handshake_func == 0)
958
+ {
959
+ SSLerr(SSL_F_SSL_READ, SSL_R_UNINITIALIZED);
960
+ return -1;
961
+ }
962
+
963
+ if (s->shutdown & SSL_RECEIVED_SHUTDOWN)
964
+ {
965
+ s->rwstate=SSL_NOTHING;
966
+ return(0);
967
+ }
968
+ return(s->method->ssl_read(s,buf,num));
969
+ }
970
+
971
+ int SSL_peek(SSL *s,void *buf,int num)
972
+ {
973
+ if (s->handshake_func == 0)
974
+ {
975
+ SSLerr(SSL_F_SSL_PEEK, SSL_R_UNINITIALIZED);
976
+ return -1;
977
+ }
978
+
979
+ if (s->shutdown & SSL_RECEIVED_SHUTDOWN)
980
+ {
981
+ return(0);
982
+ }
983
+ return(s->method->ssl_peek(s,buf,num));
984
+ }
985
+
986
+ int SSL_write(SSL *s,const void *buf,int num)
987
+ {
988
+ if (s->handshake_func == 0)
989
+ {
990
+ SSLerr(SSL_F_SSL_WRITE, SSL_R_UNINITIALIZED);
991
+ return -1;
992
+ }
993
+
994
+ if (s->shutdown & SSL_SENT_SHUTDOWN)
995
+ {
996
+ s->rwstate=SSL_NOTHING;
997
+ SSLerr(SSL_F_SSL_WRITE,SSL_R_PROTOCOL_IS_SHUTDOWN);
998
+ return(-1);
999
+ }
1000
+ return(s->method->ssl_write(s,buf,num));
1001
+ }
1002
+
1003
+ int SSL_shutdown(SSL *s)
1004
+ {
1005
+ /* Note that this function behaves differently from what one might
1006
+ * expect. Return values are 0 for no success (yet),
1007
+ * 1 for success; but calling it once is usually not enough,
1008
+ * even if blocking I/O is used (see ssl3_shutdown).
1009
+ */
1010
+
1011
+ if (s->handshake_func == 0)
1012
+ {
1013
+ SSLerr(SSL_F_SSL_SHUTDOWN, SSL_R_UNINITIALIZED);
1014
+ return -1;
1015
+ }
1016
+
1017
+ if ((s != NULL) && !SSL_in_init(s))
1018
+ return(s->method->ssl_shutdown(s));
1019
+ else
1020
+ return(1);
1021
+ }
1022
+
1023
+ int SSL_renegotiate(SSL *s)
1024
+ {
1025
+ if (s->renegotiate == 0)
1026
+ s->renegotiate=1;
1027
+
1028
+ s->new_session=1;
1029
+
1030
+ return(s->method->ssl_renegotiate(s));
1031
+ }
1032
+
1033
+ int SSL_renegotiate_abbreviated(SSL *s)
1034
+ {
1035
+ if (s->renegotiate == 0)
1036
+ s->renegotiate=1;
1037
+
1038
+ s->new_session=0;
1039
+
1040
+ return(s->method->ssl_renegotiate(s));
1041
+ }
1042
+
1043
+ int SSL_renegotiate_pending(SSL *s)
1044
+ {
1045
+ /* becomes true when negotiation is requested;
1046
+ * false again once a handshake has finished */
1047
+ return (s->renegotiate != 0);
1048
+ }
1049
+
1050
+ long SSL_ctrl(SSL *s,int cmd,long larg,void *parg)
1051
+ {
1052
+ long l;
1053
+
1054
+ switch (cmd)
1055
+ {
1056
+ case SSL_CTRL_GET_READ_AHEAD:
1057
+ return(s->read_ahead);
1058
+ case SSL_CTRL_SET_READ_AHEAD:
1059
+ l=s->read_ahead;
1060
+ s->read_ahead=larg;
1061
+ return(l);
1062
+
1063
+ case SSL_CTRL_SET_MSG_CALLBACK_ARG:
1064
+ s->msg_callback_arg = parg;
1065
+ return 1;
1066
+
1067
+ case SSL_CTRL_OPTIONS:
1068
+ return(s->options|=larg);
1069
+ case SSL_CTRL_CLEAR_OPTIONS:
1070
+ return(s->options&=~larg);
1071
+ case SSL_CTRL_MODE:
1072
+ return(s->mode|=larg);
1073
+ case SSL_CTRL_CLEAR_MODE:
1074
+ return(s->mode &=~larg);
1075
+ case SSL_CTRL_GET_MAX_CERT_LIST:
1076
+ return(s->max_cert_list);
1077
+ case SSL_CTRL_SET_MAX_CERT_LIST:
1078
+ l=s->max_cert_list;
1079
+ s->max_cert_list=larg;
1080
+ return(l);
1081
+ case SSL_CTRL_SET_MTU:
1082
+ #ifndef OPENSSL_NO_DTLS1
1083
+ if (larg < (long)dtls1_min_mtu())
1084
+ return 0;
1085
+ #endif
1086
+
1087
+ if (SSL_version(s) == DTLS1_VERSION ||
1088
+ SSL_version(s) == DTLS1_BAD_VER)
1089
+ {
1090
+ s->d1->mtu = larg;
1091
+ return larg;
1092
+ }
1093
+ return 0;
1094
+ case SSL_CTRL_SET_MAX_SEND_FRAGMENT:
1095
+ if (larg < 512 || larg > SSL3_RT_MAX_PLAIN_LENGTH)
1096
+ return 0;
1097
+ s->max_send_fragment = larg;
1098
+ return 1;
1099
+ case SSL_CTRL_GET_RI_SUPPORT:
1100
+ if (s->s3)
1101
+ return s->s3->send_connection_binding;
1102
+ else return 0;
1103
+ default:
1104
+ return(s->method->ssl_ctrl(s,cmd,larg,parg));
1105
+ }
1106
+ }
1107
+
1108
+ long SSL_callback_ctrl(SSL *s, int cmd, void (*fp)(void))
1109
+ {
1110
+ switch(cmd)
1111
+ {
1112
+ case SSL_CTRL_SET_MSG_CALLBACK:
1113
+ s->msg_callback = (void (*)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg))(fp);
1114
+ return 1;
1115
+
1116
+ default:
1117
+ return(s->method->ssl_callback_ctrl(s,cmd,fp));
1118
+ }
1119
+ }
1120
+
1121
+ LHASH_OF(SSL_SESSION) *SSL_CTX_sessions(SSL_CTX *ctx)
1122
+ {
1123
+ return ctx->sessions;
1124
+ }
1125
+
1126
+ long SSL_CTX_ctrl(SSL_CTX *ctx,int cmd,long larg,void *parg)
1127
+ {
1128
+ long l;
1129
+
1130
+ switch (cmd)
1131
+ {
1132
+ case SSL_CTRL_GET_READ_AHEAD:
1133
+ return(ctx->read_ahead);
1134
+ case SSL_CTRL_SET_READ_AHEAD:
1135
+ l=ctx->read_ahead;
1136
+ ctx->read_ahead=larg;
1137
+ return(l);
1138
+
1139
+ case SSL_CTRL_SET_MSG_CALLBACK_ARG:
1140
+ ctx->msg_callback_arg = parg;
1141
+ return 1;
1142
+
1143
+ case SSL_CTRL_GET_MAX_CERT_LIST:
1144
+ return(ctx->max_cert_list);
1145
+ case SSL_CTRL_SET_MAX_CERT_LIST:
1146
+ l=ctx->max_cert_list;
1147
+ ctx->max_cert_list=larg;
1148
+ return(l);
1149
+
1150
+ case SSL_CTRL_SET_SESS_CACHE_SIZE:
1151
+ l=ctx->session_cache_size;
1152
+ ctx->session_cache_size=larg;
1153
+ return(l);
1154
+ case SSL_CTRL_GET_SESS_CACHE_SIZE:
1155
+ return(ctx->session_cache_size);
1156
+ case SSL_CTRL_SET_SESS_CACHE_MODE:
1157
+ l=ctx->session_cache_mode;
1158
+ ctx->session_cache_mode=larg;
1159
+ return(l);
1160
+ case SSL_CTRL_GET_SESS_CACHE_MODE:
1161
+ return(ctx->session_cache_mode);
1162
+
1163
+ case SSL_CTRL_SESS_NUMBER:
1164
+ return(lh_SSL_SESSION_num_items(ctx->sessions));
1165
+ case SSL_CTRL_SESS_CONNECT:
1166
+ return(ctx->stats.sess_connect);
1167
+ case SSL_CTRL_SESS_CONNECT_GOOD:
1168
+ return(ctx->stats.sess_connect_good);
1169
+ case SSL_CTRL_SESS_CONNECT_RENEGOTIATE:
1170
+ return(ctx->stats.sess_connect_renegotiate);
1171
+ case SSL_CTRL_SESS_ACCEPT:
1172
+ return(ctx->stats.sess_accept);
1173
+ case SSL_CTRL_SESS_ACCEPT_GOOD:
1174
+ return(ctx->stats.sess_accept_good);
1175
+ case SSL_CTRL_SESS_ACCEPT_RENEGOTIATE:
1176
+ return(ctx->stats.sess_accept_renegotiate);
1177
+ case SSL_CTRL_SESS_HIT:
1178
+ return(ctx->stats.sess_hit);
1179
+ case SSL_CTRL_SESS_CB_HIT:
1180
+ return(ctx->stats.sess_cb_hit);
1181
+ case SSL_CTRL_SESS_MISSES:
1182
+ return(ctx->stats.sess_miss);
1183
+ case SSL_CTRL_SESS_TIMEOUTS:
1184
+ return(ctx->stats.sess_timeout);
1185
+ case SSL_CTRL_SESS_CACHE_FULL:
1186
+ return(ctx->stats.sess_cache_full);
1187
+ case SSL_CTRL_OPTIONS:
1188
+ return(ctx->options|=larg);
1189
+ case SSL_CTRL_CLEAR_OPTIONS:
1190
+ return(ctx->options&=~larg);
1191
+ case SSL_CTRL_MODE:
1192
+ return(ctx->mode|=larg);
1193
+ case SSL_CTRL_CLEAR_MODE:
1194
+ return(ctx->mode&=~larg);
1195
+ case SSL_CTRL_SET_MAX_SEND_FRAGMENT:
1196
+ if (larg < 512 || larg > SSL3_RT_MAX_PLAIN_LENGTH)
1197
+ return 0;
1198
+ ctx->max_send_fragment = larg;
1199
+ return 1;
1200
+ default:
1201
+ return(ctx->method->ssl_ctx_ctrl(ctx,cmd,larg,parg));
1202
+ }
1203
+ }
1204
+
1205
+ long SSL_CTX_callback_ctrl(SSL_CTX *ctx, int cmd, void (*fp)(void))
1206
+ {
1207
+ switch(cmd)
1208
+ {
1209
+ case SSL_CTRL_SET_MSG_CALLBACK:
1210
+ ctx->msg_callback = (void (*)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg))(fp);
1211
+ return 1;
1212
+
1213
+ default:
1214
+ return(ctx->method->ssl_ctx_callback_ctrl(ctx,cmd,fp));
1215
+ }
1216
+ }
1217
+
1218
+ int ssl_cipher_id_cmp(const SSL_CIPHER *a, const SSL_CIPHER *b)
1219
+ {
1220
+ long l;
1221
+
1222
+ l=a->id-b->id;
1223
+ if (l == 0L)
1224
+ return(0);
1225
+ else
1226
+ return((l > 0)?1:-1);
1227
+ }
1228
+
1229
+ int ssl_cipher_ptr_id_cmp(const SSL_CIPHER * const *ap,
1230
+ const SSL_CIPHER * const *bp)
1231
+ {
1232
+ long l;
1233
+
1234
+ l=(*ap)->id-(*bp)->id;
1235
+ if (l == 0L)
1236
+ return(0);
1237
+ else
1238
+ return((l > 0)?1:-1);
1239
+ }
1240
+
1241
+ /** return a STACK of the ciphers available for the SSL and in order of
1242
+ * preference */
1243
+ STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL *s)
1244
+ {
1245
+ if (s != NULL)
1246
+ {
1247
+ if (s->cipher_list != NULL)
1248
+ {
1249
+ return(s->cipher_list);
1250
+ }
1251
+ else if ((s->ctx != NULL) &&
1252
+ (s->ctx->cipher_list != NULL))
1253
+ {
1254
+ return(s->ctx->cipher_list);
1255
+ }
1256
+ }
1257
+ return(NULL);
1258
+ }
1259
+
1260
+ /** return a STACK of the ciphers available for the SSL and in order of
1261
+ * algorithm id */
1262
+ STACK_OF(SSL_CIPHER) *ssl_get_ciphers_by_id(SSL *s)
1263
+ {
1264
+ if (s != NULL)
1265
+ {
1266
+ if (s->cipher_list_by_id != NULL)
1267
+ {
1268
+ return(s->cipher_list_by_id);
1269
+ }
1270
+ else if ((s->ctx != NULL) &&
1271
+ (s->ctx->cipher_list_by_id != NULL))
1272
+ {
1273
+ return(s->ctx->cipher_list_by_id);
1274
+ }
1275
+ }
1276
+ return(NULL);
1277
+ }
1278
+
1279
+ /** The old interface to get the same thing as SSL_get_ciphers() */
1280
+ const char *SSL_get_cipher_list(const SSL *s,int n)
1281
+ {
1282
+ SSL_CIPHER *c;
1283
+ STACK_OF(SSL_CIPHER) *sk;
1284
+
1285
+ if (s == NULL) return(NULL);
1286
+ sk=SSL_get_ciphers(s);
1287
+ if ((sk == NULL) || (sk_SSL_CIPHER_num(sk) <= n))
1288
+ return(NULL);
1289
+ c=sk_SSL_CIPHER_value(sk,n);
1290
+ if (c == NULL) return(NULL);
1291
+ return(c->name);
1292
+ }
1293
+
1294
+ /** specify the ciphers to be used by default by the SSL_CTX */
1295
+ int SSL_CTX_set_cipher_list(SSL_CTX *ctx, const char *str)
1296
+ {
1297
+ STACK_OF(SSL_CIPHER) *sk;
1298
+
1299
+ sk=ssl_create_cipher_list(ctx->method,&ctx->cipher_list,
1300
+ &ctx->cipher_list_by_id,str);
1301
+ /* ssl_create_cipher_list may return an empty stack if it
1302
+ * was unable to find a cipher matching the given rule string
1303
+ * (for example if the rule string specifies a cipher which
1304
+ * has been disabled). This is not an error as far as
1305
+ * ssl_create_cipher_list is concerned, and hence
1306
+ * ctx->cipher_list and ctx->cipher_list_by_id has been
1307
+ * updated. */
1308
+ if (sk == NULL)
1309
+ return 0;
1310
+ else if (sk_SSL_CIPHER_num(sk) == 0)
1311
+ {
1312
+ SSLerr(SSL_F_SSL_CTX_SET_CIPHER_LIST, SSL_R_NO_CIPHER_MATCH);
1313
+ return 0;
1314
+ }
1315
+ return 1;
1316
+ }
1317
+
1318
+ /** specify the ciphers to be used by the SSL */
1319
+ int SSL_set_cipher_list(SSL *s,const char *str)
1320
+ {
1321
+ STACK_OF(SSL_CIPHER) *sk;
1322
+
1323
+ sk=ssl_create_cipher_list(s->ctx->method,&s->cipher_list,
1324
+ &s->cipher_list_by_id,str);
1325
+ /* see comment in SSL_CTX_set_cipher_list */
1326
+ if (sk == NULL)
1327
+ return 0;
1328
+ else if (sk_SSL_CIPHER_num(sk) == 0)
1329
+ {
1330
+ SSLerr(SSL_F_SSL_SET_CIPHER_LIST, SSL_R_NO_CIPHER_MATCH);
1331
+ return 0;
1332
+ }
1333
+ return 1;
1334
+ }
1335
+
1336
+ /* works well for SSLv2, not so good for SSLv3 */
1337
+ char *SSL_get_shared_ciphers(const SSL *s,char *buf,int len)
1338
+ {
1339
+ char *p;
1340
+ STACK_OF(SSL_CIPHER) *sk;
1341
+ SSL_CIPHER *c;
1342
+ int i;
1343
+
1344
+ if ((s->session == NULL) || (s->session->ciphers == NULL) ||
1345
+ (len < 2))
1346
+ return(NULL);
1347
+
1348
+ p=buf;
1349
+ sk=s->session->ciphers;
1350
+ for (i=0; i<sk_SSL_CIPHER_num(sk); i++)
1351
+ {
1352
+ int n;
1353
+
1354
+ c=sk_SSL_CIPHER_value(sk,i);
1355
+ n=strlen(c->name);
1356
+ if (n+1 > len)
1357
+ {
1358
+ if (p != buf)
1359
+ --p;
1360
+ *p='\0';
1361
+ return buf;
1362
+ }
1363
+ strcpy(p,c->name);
1364
+ p+=n;
1365
+ *(p++)=':';
1366
+ len-=n+1;
1367
+ }
1368
+ p[-1]='\0';
1369
+ return(buf);
1370
+ }
1371
+
1372
+ int ssl_cipher_list_to_bytes(SSL *s,STACK_OF(SSL_CIPHER) *sk,unsigned char *p,
1373
+ int (*put_cb)(const SSL_CIPHER *, unsigned char *))
1374
+ {
1375
+ int i,j=0;
1376
+ SSL_CIPHER *c;
1377
+ unsigned char *q;
1378
+ #ifndef OPENSSL_NO_KRB5
1379
+ int nokrb5 = !kssl_tgt_is_available(s->kssl_ctx);
1380
+ #endif /* OPENSSL_NO_KRB5 */
1381
+
1382
+ if (sk == NULL) return(0);
1383
+ q=p;
1384
+
1385
+ for (i=0; i<sk_SSL_CIPHER_num(sk); i++)
1386
+ {
1387
+ c=sk_SSL_CIPHER_value(sk,i);
1388
+ /* Skip TLS v1.2 only ciphersuites if lower than v1.2 */
1389
+ if ((c->algorithm_ssl & SSL_TLSV1_2) &&
1390
+ (TLS1_get_client_version(s) < TLS1_2_VERSION))
1391
+ continue;
1392
+ #ifndef OPENSSL_NO_KRB5
1393
+ if (((c->algorithm_mkey & SSL_kKRB5) || (c->algorithm_auth & SSL_aKRB5)) &&
1394
+ nokrb5)
1395
+ continue;
1396
+ #endif /* OPENSSL_NO_KRB5 */
1397
+ #ifndef OPENSSL_NO_PSK
1398
+ /* with PSK there must be client callback set */
1399
+ if (((c->algorithm_mkey & SSL_kPSK) || (c->algorithm_auth & SSL_aPSK)) &&
1400
+ s->psk_client_callback == NULL)
1401
+ continue;
1402
+ #endif /* OPENSSL_NO_PSK */
1403
+ j = put_cb ? put_cb(c,p) : ssl_put_cipher_by_char(s,c,p);
1404
+ p+=j;
1405
+ }
1406
+ /* If p == q, no ciphers and caller indicates an error. Otherwise
1407
+ * add SCSV if not renegotiating.
1408
+ */
1409
+ if (p != q && !s->renegotiate)
1410
+ {
1411
+ static SSL_CIPHER scsv =
1412
+ {
1413
+ 0, NULL, SSL3_CK_SCSV, 0, 0, 0, 0, 0, 0, 0, 0, 0
1414
+ };
1415
+ j = put_cb ? put_cb(&scsv,p) : ssl_put_cipher_by_char(s,&scsv,p);
1416
+ p+=j;
1417
+ #ifdef OPENSSL_RI_DEBUG
1418
+ fprintf(stderr, "SCSV sent by client\n");
1419
+ #endif
1420
+ }
1421
+
1422
+ return(p-q);
1423
+ }
1424
+
1425
+ STACK_OF(SSL_CIPHER) *ssl_bytes_to_cipher_list(SSL *s,unsigned char *p,int num,
1426
+ STACK_OF(SSL_CIPHER) **skp)
1427
+ {
1428
+ const SSL_CIPHER *c;
1429
+ STACK_OF(SSL_CIPHER) *sk;
1430
+ int i,n;
1431
+ if (s->s3)
1432
+ s->s3->send_connection_binding = 0;
1433
+
1434
+ n=ssl_put_cipher_by_char(s,NULL,NULL);
1435
+ if ((num%n) != 0)
1436
+ {
1437
+ SSLerr(SSL_F_SSL_BYTES_TO_CIPHER_LIST,SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST);
1438
+ return(NULL);
1439
+ }
1440
+ if ((skp == NULL) || (*skp == NULL))
1441
+ sk=sk_SSL_CIPHER_new_null(); /* change perhaps later */
1442
+ else
1443
+ {
1444
+ sk= *skp;
1445
+ sk_SSL_CIPHER_zero(sk);
1446
+ }
1447
+
1448
+ for (i=0; i<num; i+=n)
1449
+ {
1450
+ /* Check for SCSV */
1451
+ if (s->s3 && (n != 3 || !p[0]) &&
1452
+ (p[n-2] == ((SSL3_CK_SCSV >> 8) & 0xff)) &&
1453
+ (p[n-1] == (SSL3_CK_SCSV & 0xff)))
1454
+ {
1455
+ /* SCSV fatal if renegotiating */
1456
+ if (s->renegotiate)
1457
+ {
1458
+ SSLerr(SSL_F_SSL_BYTES_TO_CIPHER_LIST,SSL_R_SCSV_RECEIVED_WHEN_RENEGOTIATING);
1459
+ ssl3_send_alert(s,SSL3_AL_FATAL,SSL_AD_HANDSHAKE_FAILURE);
1460
+ goto err;
1461
+ }
1462
+ s->s3->send_connection_binding = 1;
1463
+ p += n;
1464
+ #ifdef OPENSSL_RI_DEBUG
1465
+ fprintf(stderr, "SCSV received by server\n");
1466
+ #endif
1467
+ continue;
1468
+ }
1469
+
1470
+ c=ssl_get_cipher_by_char(s,p);
1471
+ p+=n;
1472
+ if (c != NULL)
1473
+ {
1474
+ if (!sk_SSL_CIPHER_push(sk,c))
1475
+ {
1476
+ SSLerr(SSL_F_SSL_BYTES_TO_CIPHER_LIST,ERR_R_MALLOC_FAILURE);
1477
+ goto err;
1478
+ }
1479
+ }
1480
+ }
1481
+
1482
+ if (skp != NULL)
1483
+ *skp=sk;
1484
+ return(sk);
1485
+ err:
1486
+ if ((skp == NULL) || (*skp == NULL))
1487
+ sk_SSL_CIPHER_free(sk);
1488
+ return(NULL);
1489
+ }
1490
+
1491
+
1492
+ #ifndef OPENSSL_NO_TLSEXT
1493
+ /** return a servername extension value if provided in Client Hello, or NULL.
1494
+ * So far, only host_name types are defined (RFC 3546).
1495
+ */
1496
+
1497
+ const char *SSL_get_servername(const SSL *s, const int type)
1498
+ {
1499
+ if (type != TLSEXT_NAMETYPE_host_name)
1500
+ return NULL;
1501
+
1502
+ return s->session && !s->tlsext_hostname ?
1503
+ s->session->tlsext_hostname :
1504
+ s->tlsext_hostname;
1505
+ }
1506
+
1507
+ int SSL_get_servername_type(const SSL *s)
1508
+ {
1509
+ if (s->session && (!s->tlsext_hostname ? s->session->tlsext_hostname : s->tlsext_hostname))
1510
+ return TLSEXT_NAMETYPE_host_name;
1511
+ return -1;
1512
+ }
1513
+
1514
+ # ifndef OPENSSL_NO_NEXTPROTONEG
1515
+ /* SSL_select_next_proto implements the standard protocol selection. It is
1516
+ * expected that this function is called from the callback set by
1517
+ * SSL_CTX_set_next_proto_select_cb.
1518
+ *
1519
+ * The protocol data is assumed to be a vector of 8-bit, length prefixed byte
1520
+ * strings. The length byte itself is not included in the length. A byte
1521
+ * string of length 0 is invalid. No byte string may be truncated.
1522
+ *
1523
+ * The current, but experimental algorithm for selecting the protocol is:
1524
+ *
1525
+ * 1) If the server doesn't support NPN then this is indicated to the
1526
+ * callback. In this case, the client application has to abort the connection
1527
+ * or have a default application level protocol.
1528
+ *
1529
+ * 2) If the server supports NPN, but advertises an empty list then the
1530
+ * client selects the first protcol in its list, but indicates via the
1531
+ * API that this fallback case was enacted.
1532
+ *
1533
+ * 3) Otherwise, the client finds the first protocol in the server's list
1534
+ * that it supports and selects this protocol. This is because it's
1535
+ * assumed that the server has better information about which protocol
1536
+ * a client should use.
1537
+ *
1538
+ * 4) If the client doesn't support any of the server's advertised
1539
+ * protocols, then this is treated the same as case 2.
1540
+ *
1541
+ * It returns either
1542
+ * OPENSSL_NPN_NEGOTIATED if a common protocol was found, or
1543
+ * OPENSSL_NPN_NO_OVERLAP if the fallback case was reached.
1544
+ */
1545
+ int SSL_select_next_proto(unsigned char **out, unsigned char *outlen, const unsigned char *server, unsigned int server_len, const unsigned char *client, unsigned int client_len)
1546
+ {
1547
+ unsigned int i, j;
1548
+ const unsigned char *result;
1549
+ int status = OPENSSL_NPN_UNSUPPORTED;
1550
+
1551
+ /* For each protocol in server preference order, see if we support it. */
1552
+ for (i = 0; i < server_len; )
1553
+ {
1554
+ for (j = 0; j < client_len; )
1555
+ {
1556
+ if (server[i] == client[j] &&
1557
+ memcmp(&server[i+1], &client[j+1], server[i]) == 0)
1558
+ {
1559
+ /* We found a match */
1560
+ result = &server[i];
1561
+ status = OPENSSL_NPN_NEGOTIATED;
1562
+ goto found;
1563
+ }
1564
+ j += client[j];
1565
+ j++;
1566
+ }
1567
+ i += server[i];
1568
+ i++;
1569
+ }
1570
+
1571
+ /* There's no overlap between our protocols and the server's list. */
1572
+ result = client;
1573
+ status = OPENSSL_NPN_NO_OVERLAP;
1574
+
1575
+ found:
1576
+ *out = (unsigned char *) result + 1;
1577
+ *outlen = result[0];
1578
+ return status;
1579
+ }
1580
+
1581
+ /* SSL_get0_next_proto_negotiated sets *data and *len to point to the client's
1582
+ * requested protocol for this connection and returns 0. If the client didn't
1583
+ * request any protocol, then *data is set to NULL.
1584
+ *
1585
+ * Note that the client can request any protocol it chooses. The value returned
1586
+ * from this function need not be a member of the list of supported protocols
1587
+ * provided by the callback.
1588
+ */
1589
+ void SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data, unsigned *len)
1590
+ {
1591
+ *data = s->next_proto_negotiated;
1592
+ if (!*data) {
1593
+ *len = 0;
1594
+ } else {
1595
+ *len = s->next_proto_negotiated_len;
1596
+ }
1597
+ }
1598
+
1599
+ /* SSL_CTX_set_next_protos_advertised_cb sets a callback that is called when a
1600
+ * TLS server needs a list of supported protocols for Next Protocol
1601
+ * Negotiation. The returned list must be in wire format. The list is returned
1602
+ * by setting |out| to point to it and |outlen| to its length. This memory will
1603
+ * not be modified, but one should assume that the SSL* keeps a reference to
1604
+ * it.
1605
+ *
1606
+ * The callback should return SSL_TLSEXT_ERR_OK if it wishes to advertise. Otherwise, no
1607
+ * such extension will be included in the ServerHello. */
1608
+ void SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *ctx, int (*cb) (SSL *ssl, const unsigned char **out, unsigned int *outlen, void *arg), void *arg)
1609
+ {
1610
+ ctx->next_protos_advertised_cb = cb;
1611
+ ctx->next_protos_advertised_cb_arg = arg;
1612
+ }
1613
+
1614
+ /* SSL_CTX_set_next_proto_select_cb sets a callback that is called when a
1615
+ * client needs to select a protocol from the server's provided list. |out|
1616
+ * must be set to point to the selected protocol (which may be within |in|).
1617
+ * The length of the protocol name must be written into |outlen|. The server's
1618
+ * advertised protocols are provided in |in| and |inlen|. The callback can
1619
+ * assume that |in| is syntactically valid.
1620
+ *
1621
+ * The client must select a protocol. It is fatal to the connection if this
1622
+ * callback returns a value other than SSL_TLSEXT_ERR_OK.
1623
+ */
1624
+ void SSL_CTX_set_next_proto_select_cb(SSL_CTX *ctx, int (*cb) (SSL *s, unsigned char **out, unsigned char *outlen, const unsigned char *in, unsigned int inlen, void *arg), void *arg)
1625
+ {
1626
+ ctx->next_proto_select_cb = cb;
1627
+ ctx->next_proto_select_cb_arg = arg;
1628
+ }
1629
+ # endif
1630
+ #endif
1631
+
1632
+ int SSL_export_keying_material(SSL *s, unsigned char *out, size_t olen,
1633
+ const char *label, size_t llen, const unsigned char *p, size_t plen,
1634
+ int use_context)
1635
+ {
1636
+ if (s->version < TLS1_VERSION)
1637
+ return -1;
1638
+
1639
+ return s->method->ssl3_enc->export_keying_material(s, out, olen, label,
1640
+ llen, p, plen,
1641
+ use_context);
1642
+ }
1643
+
1644
+ static unsigned long ssl_session_hash(const SSL_SESSION *a)
1645
+ {
1646
+ unsigned long l;
1647
+
1648
+ l=(unsigned long)
1649
+ ((unsigned int) a->session_id[0] )|
1650
+ ((unsigned int) a->session_id[1]<< 8L)|
1651
+ ((unsigned long)a->session_id[2]<<16L)|
1652
+ ((unsigned long)a->session_id[3]<<24L);
1653
+ return(l);
1654
+ }
1655
+
1656
+ /* NB: If this function (or indeed the hash function which uses a sort of
1657
+ * coarser function than this one) is changed, ensure
1658
+ * SSL_CTX_has_matching_session_id() is checked accordingly. It relies on being
1659
+ * able to construct an SSL_SESSION that will collide with any existing session
1660
+ * with a matching session ID. */
1661
+ static int ssl_session_cmp(const SSL_SESSION *a,const SSL_SESSION *b)
1662
+ {
1663
+ if (a->ssl_version != b->ssl_version)
1664
+ return(1);
1665
+ if (a->session_id_length != b->session_id_length)
1666
+ return(1);
1667
+ return(memcmp(a->session_id,b->session_id,a->session_id_length));
1668
+ }
1669
+
1670
+ /* These wrapper functions should remain rather than redeclaring
1671
+ * SSL_SESSION_hash and SSL_SESSION_cmp for void* types and casting each
1672
+ * variable. The reason is that the functions aren't static, they're exposed via
1673
+ * ssl.h. */
1674
+ static IMPLEMENT_LHASH_HASH_FN(ssl_session, SSL_SESSION)
1675
+ static IMPLEMENT_LHASH_COMP_FN(ssl_session, SSL_SESSION)
1676
+
1677
+ SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth)
1678
+ {
1679
+ SSL_CTX *ret=NULL;
1680
+
1681
+ if (meth == NULL)
1682
+ {
1683
+ SSLerr(SSL_F_SSL_CTX_NEW,SSL_R_NULL_SSL_METHOD_PASSED);
1684
+ return(NULL);
1685
+ }
1686
+
1687
+ #ifdef OPENSSL_FIPS
1688
+ if (FIPS_mode() && (meth->version < TLS1_VERSION))
1689
+ {
1690
+ SSLerr(SSL_F_SSL_CTX_NEW, SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE);
1691
+ return NULL;
1692
+ }
1693
+ #endif
1694
+
1695
+ if (SSL_get_ex_data_X509_STORE_CTX_idx() < 0)
1696
+ {
1697
+ SSLerr(SSL_F_SSL_CTX_NEW,SSL_R_X509_VERIFICATION_SETUP_PROBLEMS);
1698
+ goto err;
1699
+ }
1700
+ ret=(SSL_CTX *)OPENSSL_malloc(sizeof(SSL_CTX));
1701
+ if (ret == NULL)
1702
+ goto err;
1703
+
1704
+ memset(ret,0,sizeof(SSL_CTX));
1705
+
1706
+ ret->method=meth;
1707
+
1708
+ ret->cert_store=NULL;
1709
+ ret->session_cache_mode=SSL_SESS_CACHE_SERVER;
1710
+ ret->session_cache_size=SSL_SESSION_CACHE_MAX_SIZE_DEFAULT;
1711
+ ret->session_cache_head=NULL;
1712
+ ret->session_cache_tail=NULL;
1713
+
1714
+ /* We take the system default */
1715
+ ret->session_timeout=meth->get_timeout();
1716
+
1717
+ ret->new_session_cb=0;
1718
+ ret->remove_session_cb=0;
1719
+ ret->get_session_cb=0;
1720
+ ret->generate_session_id=0;
1721
+
1722
+ memset((char *)&ret->stats,0,sizeof(ret->stats));
1723
+
1724
+ ret->references=1;
1725
+ ret->quiet_shutdown=0;
1726
+
1727
+ /* ret->cipher=NULL;*/
1728
+ /* ret->s2->challenge=NULL;
1729
+ ret->master_key=NULL;
1730
+ ret->key_arg=NULL;
1731
+ ret->s2->conn_id=NULL; */
1732
+
1733
+ ret->info_callback=NULL;
1734
+
1735
+ ret->app_verify_callback=0;
1736
+ ret->app_verify_arg=NULL;
1737
+
1738
+ ret->max_cert_list=SSL_MAX_CERT_LIST_DEFAULT;
1739
+ ret->read_ahead=0;
1740
+ ret->msg_callback=0;
1741
+ ret->msg_callback_arg=NULL;
1742
+ ret->verify_mode=SSL_VERIFY_NONE;
1743
+ #if 0
1744
+ ret->verify_depth=-1; /* Don't impose a limit (but x509_lu.c does) */
1745
+ #endif
1746
+ ret->sid_ctx_length=0;
1747
+ ret->default_verify_callback=NULL;
1748
+ if ((ret->cert=ssl_cert_new()) == NULL)
1749
+ goto err;
1750
+
1751
+ ret->default_passwd_callback=0;
1752
+ ret->default_passwd_callback_userdata=NULL;
1753
+ ret->client_cert_cb=0;
1754
+ ret->app_gen_cookie_cb=0;
1755
+ ret->app_verify_cookie_cb=0;
1756
+
1757
+ ret->sessions=lh_SSL_SESSION_new();
1758
+ if (ret->sessions == NULL) goto err;
1759
+ ret->cert_store=X509_STORE_new();
1760
+ if (ret->cert_store == NULL) goto err;
1761
+
1762
+ ssl_create_cipher_list(ret->method,
1763
+ &ret->cipher_list,&ret->cipher_list_by_id,
1764
+ meth->version == SSL2_VERSION ? "SSLv2" : SSL_DEFAULT_CIPHER_LIST);
1765
+ if (ret->cipher_list == NULL
1766
+ || sk_SSL_CIPHER_num(ret->cipher_list) <= 0)
1767
+ {
1768
+ SSLerr(SSL_F_SSL_CTX_NEW,SSL_R_LIBRARY_HAS_NO_CIPHERS);
1769
+ goto err2;
1770
+ }
1771
+
1772
+ ret->param = X509_VERIFY_PARAM_new();
1773
+ if (!ret->param)
1774
+ goto err;
1775
+
1776
+ if ((ret->rsa_md5=EVP_get_digestbyname("ssl2-md5")) == NULL)
1777
+ {
1778
+ SSLerr(SSL_F_SSL_CTX_NEW,SSL_R_UNABLE_TO_LOAD_SSL2_MD5_ROUTINES);
1779
+ goto err2;
1780
+ }
1781
+ if ((ret->md5=EVP_get_digestbyname("ssl3-md5")) == NULL)
1782
+ {
1783
+ SSLerr(SSL_F_SSL_CTX_NEW,SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES);
1784
+ goto err2;
1785
+ }
1786
+ if ((ret->sha1=EVP_get_digestbyname("ssl3-sha1")) == NULL)
1787
+ {
1788
+ SSLerr(SSL_F_SSL_CTX_NEW,SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES);
1789
+ goto err2;
1790
+ }
1791
+
1792
+ if ((ret->client_CA=sk_X509_NAME_new_null()) == NULL)
1793
+ goto err;
1794
+
1795
+ CRYPTO_new_ex_data(CRYPTO_EX_INDEX_SSL_CTX, ret, &ret->ex_data);
1796
+
1797
+ ret->extra_certs=NULL;
1798
+ ret->comp_methods=SSL_COMP_get_compression_methods();
1799
+
1800
+ ret->max_send_fragment = SSL3_RT_MAX_PLAIN_LENGTH;
1801
+
1802
+ #ifndef OPENSSL_NO_TLSEXT
1803
+ ret->tlsext_servername_callback = 0;
1804
+ ret->tlsext_servername_arg = NULL;
1805
+ /* Setup RFC4507 ticket keys */
1806
+ if ((RAND_pseudo_bytes(ret->tlsext_tick_key_name, 16) <= 0)
1807
+ || (RAND_bytes(ret->tlsext_tick_hmac_key, 16) <= 0)
1808
+ || (RAND_bytes(ret->tlsext_tick_aes_key, 16) <= 0))
1809
+ ret->options |= SSL_OP_NO_TICKET;
1810
+
1811
+ ret->tlsext_status_cb = 0;
1812
+ ret->tlsext_status_arg = NULL;
1813
+
1814
+ # ifndef OPENSSL_NO_NEXTPROTONEG
1815
+ ret->next_protos_advertised_cb = 0;
1816
+ ret->next_proto_select_cb = 0;
1817
+ # endif
1818
+ #endif
1819
+ #ifndef OPENSSL_NO_PSK
1820
+ ret->psk_identity_hint=NULL;
1821
+ ret->psk_client_callback=NULL;
1822
+ ret->psk_server_callback=NULL;
1823
+ #endif
1824
+ #ifndef OPENSSL_NO_SRP
1825
+ SSL_CTX_SRP_CTX_init(ret);
1826
+ #endif
1827
+ #ifndef OPENSSL_NO_BUF_FREELISTS
1828
+ ret->freelist_max_len = SSL_MAX_BUF_FREELIST_LEN_DEFAULT;
1829
+ ret->rbuf_freelist = OPENSSL_malloc(sizeof(SSL3_BUF_FREELIST));
1830
+ if (!ret->rbuf_freelist)
1831
+ goto err;
1832
+ ret->rbuf_freelist->chunklen = 0;
1833
+ ret->rbuf_freelist->len = 0;
1834
+ ret->rbuf_freelist->head = NULL;
1835
+ ret->wbuf_freelist = OPENSSL_malloc(sizeof(SSL3_BUF_FREELIST));
1836
+ if (!ret->wbuf_freelist)
1837
+ {
1838
+ OPENSSL_free(ret->rbuf_freelist);
1839
+ goto err;
1840
+ }
1841
+ ret->wbuf_freelist->chunklen = 0;
1842
+ ret->wbuf_freelist->len = 0;
1843
+ ret->wbuf_freelist->head = NULL;
1844
+ #endif
1845
+ #ifndef OPENSSL_NO_ENGINE
1846
+ ret->client_cert_engine = NULL;
1847
+ #ifdef OPENSSL_SSL_CLIENT_ENGINE_AUTO
1848
+ #define eng_strx(x) #x
1849
+ #define eng_str(x) eng_strx(x)
1850
+ /* Use specific client engine automatically... ignore errors */
1851
+ {
1852
+ ENGINE *eng;
1853
+ eng = ENGINE_by_id(eng_str(OPENSSL_SSL_CLIENT_ENGINE_AUTO));
1854
+ if (!eng)
1855
+ {
1856
+ ERR_clear_error();
1857
+ ENGINE_load_builtin_engines();
1858
+ eng = ENGINE_by_id(eng_str(OPENSSL_SSL_CLIENT_ENGINE_AUTO));
1859
+ }
1860
+ if (!eng || !SSL_CTX_set_client_cert_engine(ret, eng))
1861
+ ERR_clear_error();
1862
+ }
1863
+ #endif
1864
+ #endif
1865
+ /* Default is to connect to non-RI servers. When RI is more widely
1866
+ * deployed might change this.
1867
+ */
1868
+ ret->options |= SSL_OP_LEGACY_SERVER_CONNECT;
1869
+
1870
+ return(ret);
1871
+ err:
1872
+ SSLerr(SSL_F_SSL_CTX_NEW,ERR_R_MALLOC_FAILURE);
1873
+ err2:
1874
+ if (ret != NULL) SSL_CTX_free(ret);
1875
+ return(NULL);
1876
+ }
1877
+
1878
+ #if 0
1879
+ static void SSL_COMP_free(SSL_COMP *comp)
1880
+ { OPENSSL_free(comp); }
1881
+ #endif
1882
+
1883
+ #ifndef OPENSSL_NO_BUF_FREELISTS
1884
+ static void
1885
+ ssl_buf_freelist_free(SSL3_BUF_FREELIST *list)
1886
+ {
1887
+ SSL3_BUF_FREELIST_ENTRY *ent, *next;
1888
+ for (ent = list->head; ent; ent = next)
1889
+ {
1890
+ next = ent->next;
1891
+ OPENSSL_free(ent);
1892
+ }
1893
+ OPENSSL_free(list);
1894
+ }
1895
+ #endif
1896
+
1897
+ void SSL_CTX_free(SSL_CTX *a)
1898
+ {
1899
+ int i;
1900
+
1901
+ if (a == NULL) return;
1902
+
1903
+ i=CRYPTO_add(&a->references,-1,CRYPTO_LOCK_SSL_CTX);
1904
+ #ifdef REF_PRINT
1905
+ REF_PRINT("SSL_CTX",a);
1906
+ #endif
1907
+ if (i > 0) return;
1908
+ #ifdef REF_CHECK
1909
+ if (i < 0)
1910
+ {
1911
+ fprintf(stderr,"SSL_CTX_free, bad reference count\n");
1912
+ abort(); /* ok */
1913
+ }
1914
+ #endif
1915
+
1916
+ if (a->param)
1917
+ X509_VERIFY_PARAM_free(a->param);
1918
+
1919
+ /*
1920
+ * Free internal session cache. However: the remove_cb() may reference
1921
+ * the ex_data of SSL_CTX, thus the ex_data store can only be removed
1922
+ * after the sessions were flushed.
1923
+ * As the ex_data handling routines might also touch the session cache,
1924
+ * the most secure solution seems to be: empty (flush) the cache, then
1925
+ * free ex_data, then finally free the cache.
1926
+ * (See ticket [openssl.org #212].)
1927
+ */
1928
+ if (a->sessions != NULL)
1929
+ SSL_CTX_flush_sessions(a,0);
1930
+
1931
+ CRYPTO_free_ex_data(CRYPTO_EX_INDEX_SSL_CTX, a, &a->ex_data);
1932
+
1933
+ if (a->sessions != NULL)
1934
+ lh_SSL_SESSION_free(a->sessions);
1935
+
1936
+ if (a->cert_store != NULL)
1937
+ X509_STORE_free(a->cert_store);
1938
+ if (a->cipher_list != NULL)
1939
+ sk_SSL_CIPHER_free(a->cipher_list);
1940
+ if (a->cipher_list_by_id != NULL)
1941
+ sk_SSL_CIPHER_free(a->cipher_list_by_id);
1942
+ if (a->cert != NULL)
1943
+ ssl_cert_free(a->cert);
1944
+ if (a->client_CA != NULL)
1945
+ sk_X509_NAME_pop_free(a->client_CA,X509_NAME_free);
1946
+ if (a->extra_certs != NULL)
1947
+ sk_X509_pop_free(a->extra_certs,X509_free);
1948
+ #if 0 /* This should never be done, since it removes a global database */
1949
+ if (a->comp_methods != NULL)
1950
+ sk_SSL_COMP_pop_free(a->comp_methods,SSL_COMP_free);
1951
+ #else
1952
+ a->comp_methods = NULL;
1953
+ #endif
1954
+
1955
+ if (a->srtp_profiles)
1956
+ sk_SRTP_PROTECTION_PROFILE_free(a->srtp_profiles);
1957
+
1958
+ #ifndef OPENSSL_NO_PSK
1959
+ if (a->psk_identity_hint)
1960
+ OPENSSL_free(a->psk_identity_hint);
1961
+ #endif
1962
+ #ifndef OPENSSL_NO_SRP
1963
+ SSL_CTX_SRP_CTX_free(a);
1964
+ #endif
1965
+ #ifndef OPENSSL_NO_ENGINE
1966
+ if (a->client_cert_engine)
1967
+ ENGINE_finish(a->client_cert_engine);
1968
+ #endif
1969
+
1970
+ #ifndef OPENSSL_NO_BUF_FREELISTS
1971
+ if (a->wbuf_freelist)
1972
+ ssl_buf_freelist_free(a->wbuf_freelist);
1973
+ if (a->rbuf_freelist)
1974
+ ssl_buf_freelist_free(a->rbuf_freelist);
1975
+ #endif
1976
+
1977
+ OPENSSL_free(a);
1978
+ }
1979
+
1980
+ void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb)
1981
+ {
1982
+ ctx->default_passwd_callback=cb;
1983
+ }
1984
+
1985
+ void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx,void *u)
1986
+ {
1987
+ ctx->default_passwd_callback_userdata=u;
1988
+ }
1989
+
1990
+ void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx, int (*cb)(X509_STORE_CTX *,void *), void *arg)
1991
+ {
1992
+ ctx->app_verify_callback=cb;
1993
+ ctx->app_verify_arg=arg;
1994
+ }
1995
+
1996
+ void SSL_CTX_set_verify(SSL_CTX *ctx,int mode,int (*cb)(int, X509_STORE_CTX *))
1997
+ {
1998
+ ctx->verify_mode=mode;
1999
+ ctx->default_verify_callback=cb;
2000
+ }
2001
+
2002
+ void SSL_CTX_set_verify_depth(SSL_CTX *ctx,int depth)
2003
+ {
2004
+ X509_VERIFY_PARAM_set_depth(ctx->param, depth);
2005
+ }
2006
+
2007
+ void ssl_set_cert_masks(CERT *c, const SSL_CIPHER *cipher)
2008
+ {
2009
+ CERT_PKEY *cpk;
2010
+ int rsa_enc,rsa_tmp,rsa_sign,dh_tmp,dh_rsa,dh_dsa,dsa_sign;
2011
+ int rsa_enc_export,dh_rsa_export,dh_dsa_export;
2012
+ int rsa_tmp_export,dh_tmp_export,kl;
2013
+ unsigned long mask_k,mask_a,emask_k,emask_a;
2014
+ int have_ecc_cert, ecdh_ok, ecdsa_ok, ecc_pkey_size;
2015
+ #ifndef OPENSSL_NO_ECDH
2016
+ int have_ecdh_tmp;
2017
+ #endif
2018
+ X509 *x = NULL;
2019
+ EVP_PKEY *ecc_pkey = NULL;
2020
+ int signature_nid = 0, pk_nid = 0, md_nid = 0;
2021
+
2022
+ if (c == NULL) return;
2023
+
2024
+ kl=SSL_C_EXPORT_PKEYLENGTH(cipher);
2025
+
2026
+ #ifndef OPENSSL_NO_RSA
2027
+ rsa_tmp=(c->rsa_tmp != NULL || c->rsa_tmp_cb != NULL);
2028
+ rsa_tmp_export=(c->rsa_tmp_cb != NULL ||
2029
+ (rsa_tmp && RSA_size(c->rsa_tmp)*8 <= kl));
2030
+ #else
2031
+ rsa_tmp=rsa_tmp_export=0;
2032
+ #endif
2033
+ #ifndef OPENSSL_NO_DH
2034
+ dh_tmp=(c->dh_tmp != NULL || c->dh_tmp_cb != NULL);
2035
+ dh_tmp_export=(c->dh_tmp_cb != NULL ||
2036
+ (dh_tmp && DH_size(c->dh_tmp)*8 <= kl));
2037
+ #else
2038
+ dh_tmp=dh_tmp_export=0;
2039
+ #endif
2040
+
2041
+ #ifndef OPENSSL_NO_ECDH
2042
+ have_ecdh_tmp=(c->ecdh_tmp != NULL || c->ecdh_tmp_cb != NULL);
2043
+ #endif
2044
+ cpk= &(c->pkeys[SSL_PKEY_RSA_ENC]);
2045
+ rsa_enc= (cpk->x509 != NULL && cpk->privatekey != NULL);
2046
+ rsa_enc_export=(rsa_enc && EVP_PKEY_size(cpk->privatekey)*8 <= kl);
2047
+ cpk= &(c->pkeys[SSL_PKEY_RSA_SIGN]);
2048
+ rsa_sign=(cpk->x509 != NULL && cpk->privatekey != NULL);
2049
+ cpk= &(c->pkeys[SSL_PKEY_DSA_SIGN]);
2050
+ dsa_sign=(cpk->x509 != NULL && cpk->privatekey != NULL);
2051
+ cpk= &(c->pkeys[SSL_PKEY_DH_RSA]);
2052
+ dh_rsa= (cpk->x509 != NULL && cpk->privatekey != NULL);
2053
+ dh_rsa_export=(dh_rsa && EVP_PKEY_size(cpk->privatekey)*8 <= kl);
2054
+ cpk= &(c->pkeys[SSL_PKEY_DH_DSA]);
2055
+ /* FIX THIS EAY EAY EAY */
2056
+ dh_dsa= (cpk->x509 != NULL && cpk->privatekey != NULL);
2057
+ dh_dsa_export=(dh_dsa && EVP_PKEY_size(cpk->privatekey)*8 <= kl);
2058
+ cpk= &(c->pkeys[SSL_PKEY_ECC]);
2059
+ have_ecc_cert= (cpk->x509 != NULL && cpk->privatekey != NULL);
2060
+ mask_k=0;
2061
+ mask_a=0;
2062
+ emask_k=0;
2063
+ emask_a=0;
2064
+
2065
+
2066
+
2067
+ #ifdef CIPHER_DEBUG
2068
+ printf("rt=%d rte=%d dht=%d ecdht=%d re=%d ree=%d rs=%d ds=%d dhr=%d dhd=%d\n",
2069
+ rsa_tmp,rsa_tmp_export,dh_tmp,have_ecdh_tmp,
2070
+ rsa_enc,rsa_enc_export,rsa_sign,dsa_sign,dh_rsa,dh_dsa);
2071
+ #endif
2072
+
2073
+ cpk = &(c->pkeys[SSL_PKEY_GOST01]);
2074
+ if (cpk->x509 != NULL && cpk->privatekey !=NULL) {
2075
+ mask_k |= SSL_kGOST;
2076
+ mask_a |= SSL_aGOST01;
2077
+ }
2078
+ cpk = &(c->pkeys[SSL_PKEY_GOST94]);
2079
+ if (cpk->x509 != NULL && cpk->privatekey !=NULL) {
2080
+ mask_k |= SSL_kGOST;
2081
+ mask_a |= SSL_aGOST94;
2082
+ }
2083
+
2084
+ if (rsa_enc || (rsa_tmp && rsa_sign))
2085
+ mask_k|=SSL_kRSA;
2086
+ if (rsa_enc_export || (rsa_tmp_export && (rsa_sign || rsa_enc)))
2087
+ emask_k|=SSL_kRSA;
2088
+
2089
+ #if 0
2090
+ /* The match needs to be both kEDH and aRSA or aDSA, so don't worry */
2091
+ if ( (dh_tmp || dh_rsa || dh_dsa) &&
2092
+ (rsa_enc || rsa_sign || dsa_sign))
2093
+ mask_k|=SSL_kEDH;
2094
+ if ((dh_tmp_export || dh_rsa_export || dh_dsa_export) &&
2095
+ (rsa_enc || rsa_sign || dsa_sign))
2096
+ emask_k|=SSL_kEDH;
2097
+ #endif
2098
+
2099
+ if (dh_tmp_export)
2100
+ emask_k|=SSL_kEDH;
2101
+
2102
+ if (dh_tmp)
2103
+ mask_k|=SSL_kEDH;
2104
+
2105
+ if (dh_rsa) mask_k|=SSL_kDHr;
2106
+ if (dh_rsa_export) emask_k|=SSL_kDHr;
2107
+
2108
+ if (dh_dsa) mask_k|=SSL_kDHd;
2109
+ if (dh_dsa_export) emask_k|=SSL_kDHd;
2110
+
2111
+ if (rsa_enc || rsa_sign)
2112
+ {
2113
+ mask_a|=SSL_aRSA;
2114
+ emask_a|=SSL_aRSA;
2115
+ }
2116
+
2117
+ if (dsa_sign)
2118
+ {
2119
+ mask_a|=SSL_aDSS;
2120
+ emask_a|=SSL_aDSS;
2121
+ }
2122
+
2123
+ mask_a|=SSL_aNULL;
2124
+ emask_a|=SSL_aNULL;
2125
+
2126
+ #ifndef OPENSSL_NO_KRB5
2127
+ mask_k|=SSL_kKRB5;
2128
+ mask_a|=SSL_aKRB5;
2129
+ emask_k|=SSL_kKRB5;
2130
+ emask_a|=SSL_aKRB5;
2131
+ #endif
2132
+
2133
+ /* An ECC certificate may be usable for ECDH and/or
2134
+ * ECDSA cipher suites depending on the key usage extension.
2135
+ */
2136
+ if (have_ecc_cert)
2137
+ {
2138
+ /* This call populates extension flags (ex_flags) */
2139
+ x = (c->pkeys[SSL_PKEY_ECC]).x509;
2140
+ X509_check_purpose(x, -1, 0);
2141
+ ecdh_ok = (x->ex_flags & EXFLAG_KUSAGE) ?
2142
+ (x->ex_kusage & X509v3_KU_KEY_AGREEMENT) : 1;
2143
+ ecdsa_ok = (x->ex_flags & EXFLAG_KUSAGE) ?
2144
+ (x->ex_kusage & X509v3_KU_DIGITAL_SIGNATURE) : 1;
2145
+ ecc_pkey = X509_get_pubkey(x);
2146
+ ecc_pkey_size = (ecc_pkey != NULL) ?
2147
+ EVP_PKEY_bits(ecc_pkey) : 0;
2148
+ EVP_PKEY_free(ecc_pkey);
2149
+ if ((x->sig_alg) && (x->sig_alg->algorithm))
2150
+ {
2151
+ signature_nid = OBJ_obj2nid(x->sig_alg->algorithm);
2152
+ OBJ_find_sigid_algs(signature_nid, &md_nid, &pk_nid);
2153
+ }
2154
+ #ifndef OPENSSL_NO_ECDH
2155
+ if (ecdh_ok)
2156
+ {
2157
+
2158
+ if (pk_nid == NID_rsaEncryption || pk_nid == NID_rsa)
2159
+ {
2160
+ mask_k|=SSL_kECDHr;
2161
+ mask_a|=SSL_aECDH;
2162
+ if (ecc_pkey_size <= 163)
2163
+ {
2164
+ emask_k|=SSL_kECDHr;
2165
+ emask_a|=SSL_aECDH;
2166
+ }
2167
+ }
2168
+
2169
+ if (pk_nid == NID_X9_62_id_ecPublicKey)
2170
+ {
2171
+ mask_k|=SSL_kECDHe;
2172
+ mask_a|=SSL_aECDH;
2173
+ if (ecc_pkey_size <= 163)
2174
+ {
2175
+ emask_k|=SSL_kECDHe;
2176
+ emask_a|=SSL_aECDH;
2177
+ }
2178
+ }
2179
+ }
2180
+ #endif
2181
+ #ifndef OPENSSL_NO_ECDSA
2182
+ if (ecdsa_ok)
2183
+ {
2184
+ mask_a|=SSL_aECDSA;
2185
+ emask_a|=SSL_aECDSA;
2186
+ }
2187
+ #endif
2188
+ }
2189
+
2190
+ #ifndef OPENSSL_NO_ECDH
2191
+ if (have_ecdh_tmp)
2192
+ {
2193
+ mask_k|=SSL_kEECDH;
2194
+ emask_k|=SSL_kEECDH;
2195
+ }
2196
+ #endif
2197
+
2198
+ #ifndef OPENSSL_NO_PSK
2199
+ mask_k |= SSL_kPSK;
2200
+ mask_a |= SSL_aPSK;
2201
+ emask_k |= SSL_kPSK;
2202
+ emask_a |= SSL_aPSK;
2203
+ #endif
2204
+
2205
+ c->mask_k=mask_k;
2206
+ c->mask_a=mask_a;
2207
+ c->export_mask_k=emask_k;
2208
+ c->export_mask_a=emask_a;
2209
+ c->valid=1;
2210
+ }
2211
+
2212
+ /* This handy macro borrowed from crypto/x509v3/v3_purp.c */
2213
+ #define ku_reject(x, usage) \
2214
+ (((x)->ex_flags & EXFLAG_KUSAGE) && !((x)->ex_kusage & (usage)))
2215
+
2216
+ #ifndef OPENSSL_NO_EC
2217
+
2218
+ int ssl_check_srvr_ecc_cert_and_alg(X509 *x, SSL *s)
2219
+ {
2220
+ unsigned long alg_k, alg_a;
2221
+ EVP_PKEY *pkey = NULL;
2222
+ int keysize = 0;
2223
+ int signature_nid = 0, md_nid = 0, pk_nid = 0;
2224
+ const SSL_CIPHER *cs = s->s3->tmp.new_cipher;
2225
+
2226
+ alg_k = cs->algorithm_mkey;
2227
+ alg_a = cs->algorithm_auth;
2228
+
2229
+ if (SSL_C_IS_EXPORT(cs))
2230
+ {
2231
+ /* ECDH key length in export ciphers must be <= 163 bits */
2232
+ pkey = X509_get_pubkey(x);
2233
+ if (pkey == NULL) return 0;
2234
+ keysize = EVP_PKEY_bits(pkey);
2235
+ EVP_PKEY_free(pkey);
2236
+ if (keysize > 163) return 0;
2237
+ }
2238
+
2239
+ /* This call populates the ex_flags field correctly */
2240
+ X509_check_purpose(x, -1, 0);
2241
+ if ((x->sig_alg) && (x->sig_alg->algorithm))
2242
+ {
2243
+ signature_nid = OBJ_obj2nid(x->sig_alg->algorithm);
2244
+ OBJ_find_sigid_algs(signature_nid, &md_nid, &pk_nid);
2245
+ }
2246
+ if (alg_k & SSL_kECDHe || alg_k & SSL_kECDHr)
2247
+ {
2248
+ /* key usage, if present, must allow key agreement */
2249
+ if (ku_reject(x, X509v3_KU_KEY_AGREEMENT))
2250
+ {
2251
+ SSLerr(SSL_F_SSL_CHECK_SRVR_ECC_CERT_AND_ALG, SSL_R_ECC_CERT_NOT_FOR_KEY_AGREEMENT);
2252
+ return 0;
2253
+ }
2254
+ if ((alg_k & SSL_kECDHe) && TLS1_get_version(s) < TLS1_2_VERSION)
2255
+ {
2256
+ /* signature alg must be ECDSA */
2257
+ if (pk_nid != NID_X9_62_id_ecPublicKey)
2258
+ {
2259
+ SSLerr(SSL_F_SSL_CHECK_SRVR_ECC_CERT_AND_ALG, SSL_R_ECC_CERT_SHOULD_HAVE_SHA1_SIGNATURE);
2260
+ return 0;
2261
+ }
2262
+ }
2263
+ if ((alg_k & SSL_kECDHr) && TLS1_get_version(s) < TLS1_2_VERSION)
2264
+ {
2265
+ /* signature alg must be RSA */
2266
+
2267
+ if (pk_nid != NID_rsaEncryption && pk_nid != NID_rsa)
2268
+ {
2269
+ SSLerr(SSL_F_SSL_CHECK_SRVR_ECC_CERT_AND_ALG, SSL_R_ECC_CERT_SHOULD_HAVE_RSA_SIGNATURE);
2270
+ return 0;
2271
+ }
2272
+ }
2273
+ }
2274
+ if (alg_a & SSL_aECDSA)
2275
+ {
2276
+ /* key usage, if present, must allow signing */
2277
+ if (ku_reject(x, X509v3_KU_DIGITAL_SIGNATURE))
2278
+ {
2279
+ SSLerr(SSL_F_SSL_CHECK_SRVR_ECC_CERT_AND_ALG, SSL_R_ECC_CERT_NOT_FOR_SIGNING);
2280
+ return 0;
2281
+ }
2282
+ }
2283
+
2284
+ return 1; /* all checks are ok */
2285
+ }
2286
+
2287
+ #endif
2288
+
2289
+ /* THIS NEEDS CLEANING UP */
2290
+ X509 *ssl_get_server_send_cert(SSL *s)
2291
+ {
2292
+ unsigned long alg_k,alg_a;
2293
+ CERT *c;
2294
+ int i;
2295
+
2296
+ c=s->cert;
2297
+ ssl_set_cert_masks(c, s->s3->tmp.new_cipher);
2298
+
2299
+ alg_k = s->s3->tmp.new_cipher->algorithm_mkey;
2300
+ alg_a = s->s3->tmp.new_cipher->algorithm_auth;
2301
+
2302
+ if (alg_k & (SSL_kECDHr|SSL_kECDHe))
2303
+ {
2304
+ /* we don't need to look at SSL_kEECDH
2305
+ * since no certificate is needed for
2306
+ * anon ECDH and for authenticated
2307
+ * EECDH, the check for the auth
2308
+ * algorithm will set i correctly
2309
+ * NOTE: For ECDH-RSA, we need an ECC
2310
+ * not an RSA cert but for EECDH-RSA
2311
+ * we need an RSA cert. Placing the
2312
+ * checks for SSL_kECDH before RSA
2313
+ * checks ensures the correct cert is chosen.
2314
+ */
2315
+ i=SSL_PKEY_ECC;
2316
+ }
2317
+ else if (alg_a & SSL_aECDSA)
2318
+ {
2319
+ i=SSL_PKEY_ECC;
2320
+ }
2321
+ else if (alg_k & SSL_kDHr)
2322
+ i=SSL_PKEY_DH_RSA;
2323
+ else if (alg_k & SSL_kDHd)
2324
+ i=SSL_PKEY_DH_DSA;
2325
+ else if (alg_a & SSL_aDSS)
2326
+ i=SSL_PKEY_DSA_SIGN;
2327
+ else if (alg_a & SSL_aRSA)
2328
+ {
2329
+ if (c->pkeys[SSL_PKEY_RSA_ENC].x509 == NULL)
2330
+ i=SSL_PKEY_RSA_SIGN;
2331
+ else
2332
+ i=SSL_PKEY_RSA_ENC;
2333
+ }
2334
+ else if (alg_a & SSL_aKRB5)
2335
+ {
2336
+ /* VRS something else here? */
2337
+ return(NULL);
2338
+ }
2339
+ else if (alg_a & SSL_aGOST94)
2340
+ i=SSL_PKEY_GOST94;
2341
+ else if (alg_a & SSL_aGOST01)
2342
+ i=SSL_PKEY_GOST01;
2343
+ else /* if (alg_a & SSL_aNULL) */
2344
+ {
2345
+ SSLerr(SSL_F_SSL_GET_SERVER_SEND_CERT,ERR_R_INTERNAL_ERROR);
2346
+ return(NULL);
2347
+ }
2348
+ if (c->pkeys[i].x509 == NULL) return(NULL);
2349
+
2350
+ return(c->pkeys[i].x509);
2351
+ }
2352
+
2353
+ EVP_PKEY *ssl_get_sign_pkey(SSL *s,const SSL_CIPHER *cipher, const EVP_MD **pmd)
2354
+ {
2355
+ unsigned long alg_a;
2356
+ CERT *c;
2357
+ int idx = -1;
2358
+
2359
+ alg_a = cipher->algorithm_auth;
2360
+ c=s->cert;
2361
+
2362
+ if ((alg_a & SSL_aDSS) &&
2363
+ (c->pkeys[SSL_PKEY_DSA_SIGN].privatekey != NULL))
2364
+ idx = SSL_PKEY_DSA_SIGN;
2365
+ else if (alg_a & SSL_aRSA)
2366
+ {
2367
+ if (c->pkeys[SSL_PKEY_RSA_SIGN].privatekey != NULL)
2368
+ idx = SSL_PKEY_RSA_SIGN;
2369
+ else if (c->pkeys[SSL_PKEY_RSA_ENC].privatekey != NULL)
2370
+ idx = SSL_PKEY_RSA_ENC;
2371
+ }
2372
+ else if ((alg_a & SSL_aECDSA) &&
2373
+ (c->pkeys[SSL_PKEY_ECC].privatekey != NULL))
2374
+ idx = SSL_PKEY_ECC;
2375
+ if (idx == -1)
2376
+ {
2377
+ SSLerr(SSL_F_SSL_GET_SIGN_PKEY,ERR_R_INTERNAL_ERROR);
2378
+ return(NULL);
2379
+ }
2380
+ if (pmd)
2381
+ *pmd = c->pkeys[idx].digest;
2382
+ return c->pkeys[idx].privatekey;
2383
+ }
2384
+
2385
+ void ssl_update_cache(SSL *s,int mode)
2386
+ {
2387
+ int i;
2388
+
2389
+ /* If the session_id_length is 0, we are not supposed to cache it,
2390
+ * and it would be rather hard to do anyway :-) */
2391
+ if (s->session->session_id_length == 0) return;
2392
+
2393
+ i=s->session_ctx->session_cache_mode;
2394
+ if ((i & mode) && (!s->hit)
2395
+ && ((i & SSL_SESS_CACHE_NO_INTERNAL_STORE)
2396
+ || SSL_CTX_add_session(s->session_ctx,s->session))
2397
+ && (s->session_ctx->new_session_cb != NULL))
2398
+ {
2399
+ CRYPTO_add(&s->session->references,1,CRYPTO_LOCK_SSL_SESSION);
2400
+ if (!s->session_ctx->new_session_cb(s,s->session))
2401
+ SSL_SESSION_free(s->session);
2402
+ }
2403
+
2404
+ /* auto flush every 255 connections */
2405
+ if ((!(i & SSL_SESS_CACHE_NO_AUTO_CLEAR)) &&
2406
+ ((i & mode) == mode))
2407
+ {
2408
+ if ( (((mode & SSL_SESS_CACHE_CLIENT)
2409
+ ?s->session_ctx->stats.sess_connect_good
2410
+ :s->session_ctx->stats.sess_accept_good) & 0xff) == 0xff)
2411
+ {
2412
+ SSL_CTX_flush_sessions(s->session_ctx,(unsigned long)time(NULL));
2413
+ }
2414
+ }
2415
+ }
2416
+
2417
+ const SSL_METHOD *SSL_get_ssl_method(SSL *s)
2418
+ {
2419
+ return(s->method);
2420
+ }
2421
+
2422
+ int SSL_set_ssl_method(SSL *s, const SSL_METHOD *meth)
2423
+ {
2424
+ int conn= -1;
2425
+ int ret=1;
2426
+
2427
+ if (s->method != meth)
2428
+ {
2429
+ if (s->handshake_func != NULL)
2430
+ conn=(s->handshake_func == s->method->ssl_connect);
2431
+
2432
+ if (s->method->version == meth->version)
2433
+ s->method=meth;
2434
+ else
2435
+ {
2436
+ s->method->ssl_free(s);
2437
+ s->method=meth;
2438
+ ret=s->method->ssl_new(s);
2439
+ }
2440
+
2441
+ if (conn == 1)
2442
+ s->handshake_func=meth->ssl_connect;
2443
+ else if (conn == 0)
2444
+ s->handshake_func=meth->ssl_accept;
2445
+ }
2446
+ return(ret);
2447
+ }
2448
+
2449
+ int SSL_get_error(const SSL *s,int i)
2450
+ {
2451
+ int reason;
2452
+ unsigned long l;
2453
+ BIO *bio;
2454
+
2455
+ if (i > 0) return(SSL_ERROR_NONE);
2456
+
2457
+ /* Make things return SSL_ERROR_SYSCALL when doing SSL_do_handshake
2458
+ * etc, where we do encode the error */
2459
+ if ((l=ERR_peek_error()) != 0)
2460
+ {
2461
+ if (ERR_GET_LIB(l) == ERR_LIB_SYS)
2462
+ return(SSL_ERROR_SYSCALL);
2463
+ else
2464
+ return(SSL_ERROR_SSL);
2465
+ }
2466
+
2467
+ if ((i < 0) && SSL_want_read(s))
2468
+ {
2469
+ bio=SSL_get_rbio(s);
2470
+ if (BIO_should_read(bio))
2471
+ return(SSL_ERROR_WANT_READ);
2472
+ else if (BIO_should_write(bio))
2473
+ /* This one doesn't make too much sense ... We never try
2474
+ * to write to the rbio, and an application program where
2475
+ * rbio and wbio are separate couldn't even know what it
2476
+ * should wait for.
2477
+ * However if we ever set s->rwstate incorrectly
2478
+ * (so that we have SSL_want_read(s) instead of
2479
+ * SSL_want_write(s)) and rbio and wbio *are* the same,
2480
+ * this test works around that bug; so it might be safer
2481
+ * to keep it. */
2482
+ return(SSL_ERROR_WANT_WRITE);
2483
+ else if (BIO_should_io_special(bio))
2484
+ {
2485
+ reason=BIO_get_retry_reason(bio);
2486
+ if (reason == BIO_RR_CONNECT)
2487
+ return(SSL_ERROR_WANT_CONNECT);
2488
+ else if (reason == BIO_RR_ACCEPT)
2489
+ return(SSL_ERROR_WANT_ACCEPT);
2490
+ else
2491
+ return(SSL_ERROR_SYSCALL); /* unknown */
2492
+ }
2493
+ }
2494
+
2495
+ if ((i < 0) && SSL_want_write(s))
2496
+ {
2497
+ bio=SSL_get_wbio(s);
2498
+ if (BIO_should_write(bio))
2499
+ return(SSL_ERROR_WANT_WRITE);
2500
+ else if (BIO_should_read(bio))
2501
+ /* See above (SSL_want_read(s) with BIO_should_write(bio)) */
2502
+ return(SSL_ERROR_WANT_READ);
2503
+ else if (BIO_should_io_special(bio))
2504
+ {
2505
+ reason=BIO_get_retry_reason(bio);
2506
+ if (reason == BIO_RR_CONNECT)
2507
+ return(SSL_ERROR_WANT_CONNECT);
2508
+ else if (reason == BIO_RR_ACCEPT)
2509
+ return(SSL_ERROR_WANT_ACCEPT);
2510
+ else
2511
+ return(SSL_ERROR_SYSCALL);
2512
+ }
2513
+ }
2514
+ if ((i < 0) && SSL_want_x509_lookup(s))
2515
+ {
2516
+ return(SSL_ERROR_WANT_X509_LOOKUP);
2517
+ }
2518
+
2519
+ if (i == 0)
2520
+ {
2521
+ if (s->version == SSL2_VERSION)
2522
+ {
2523
+ /* assume it is the socket being closed */
2524
+ return(SSL_ERROR_ZERO_RETURN);
2525
+ }
2526
+ else
2527
+ {
2528
+ if ((s->shutdown & SSL_RECEIVED_SHUTDOWN) &&
2529
+ (s->s3->warn_alert == SSL_AD_CLOSE_NOTIFY))
2530
+ return(SSL_ERROR_ZERO_RETURN);
2531
+ }
2532
+ }
2533
+ return(SSL_ERROR_SYSCALL);
2534
+ }
2535
+
2536
+ int SSL_do_handshake(SSL *s)
2537
+ {
2538
+ int ret=1;
2539
+
2540
+ if (s->handshake_func == NULL)
2541
+ {
2542
+ SSLerr(SSL_F_SSL_DO_HANDSHAKE,SSL_R_CONNECTION_TYPE_NOT_SET);
2543
+ return(-1);
2544
+ }
2545
+
2546
+ s->method->ssl_renegotiate_check(s);
2547
+
2548
+ if (SSL_in_init(s) || SSL_in_before(s))
2549
+ {
2550
+ ret=s->handshake_func(s);
2551
+ }
2552
+ return(ret);
2553
+ }
2554
+
2555
+ /* For the next 2 functions, SSL_clear() sets shutdown and so
2556
+ * one of these calls will reset it */
2557
+ void SSL_set_accept_state(SSL *s)
2558
+ {
2559
+ s->server=1;
2560
+ s->shutdown=0;
2561
+ s->state=SSL_ST_ACCEPT|SSL_ST_BEFORE;
2562
+ s->handshake_func=s->method->ssl_accept;
2563
+ /* clear the current cipher */
2564
+ ssl_clear_cipher_ctx(s);
2565
+ ssl_clear_hash_ctx(&s->read_hash);
2566
+ ssl_clear_hash_ctx(&s->write_hash);
2567
+ }
2568
+
2569
+ void SSL_set_connect_state(SSL *s)
2570
+ {
2571
+ s->server=0;
2572
+ s->shutdown=0;
2573
+ s->state=SSL_ST_CONNECT|SSL_ST_BEFORE;
2574
+ s->handshake_func=s->method->ssl_connect;
2575
+ /* clear the current cipher */
2576
+ ssl_clear_cipher_ctx(s);
2577
+ ssl_clear_hash_ctx(&s->read_hash);
2578
+ ssl_clear_hash_ctx(&s->write_hash);
2579
+ }
2580
+
2581
+ int ssl_undefined_function(SSL *s)
2582
+ {
2583
+ SSLerr(SSL_F_SSL_UNDEFINED_FUNCTION,ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
2584
+ return(0);
2585
+ }
2586
+
2587
+ int ssl_undefined_void_function(void)
2588
+ {
2589
+ SSLerr(SSL_F_SSL_UNDEFINED_VOID_FUNCTION,ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
2590
+ return(0);
2591
+ }
2592
+
2593
+ int ssl_undefined_const_function(const SSL *s)
2594
+ {
2595
+ SSLerr(SSL_F_SSL_UNDEFINED_CONST_FUNCTION,ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
2596
+ return(0);
2597
+ }
2598
+
2599
+ SSL_METHOD *ssl_bad_method(int ver)
2600
+ {
2601
+ SSLerr(SSL_F_SSL_BAD_METHOD,ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
2602
+ return(NULL);
2603
+ }
2604
+
2605
+ const char *SSL_get_version(const SSL *s)
2606
+ {
2607
+ if (s->version == TLS1_2_VERSION)
2608
+ return("TLSv1.2");
2609
+ else if (s->version == TLS1_1_VERSION)
2610
+ return("TLSv1.1");
2611
+ if (s->version == TLS1_VERSION)
2612
+ return("TLSv1");
2613
+ else if (s->version == SSL3_VERSION)
2614
+ return("SSLv3");
2615
+ else if (s->version == SSL2_VERSION)
2616
+ return("SSLv2");
2617
+ else
2618
+ return("unknown");
2619
+ }
2620
+
2621
+ SSL *SSL_dup(SSL *s)
2622
+ {
2623
+ STACK_OF(X509_NAME) *sk;
2624
+ X509_NAME *xn;
2625
+ SSL *ret;
2626
+ int i;
2627
+
2628
+ if ((ret=SSL_new(SSL_get_SSL_CTX(s))) == NULL)
2629
+ return(NULL);
2630
+
2631
+ ret->version = s->version;
2632
+ ret->type = s->type;
2633
+ ret->method = s->method;
2634
+
2635
+ if (s->session != NULL)
2636
+ {
2637
+ /* This copies session-id, SSL_METHOD, sid_ctx, and 'cert' */
2638
+ SSL_copy_session_id(ret,s);
2639
+ }
2640
+ else
2641
+ {
2642
+ /* No session has been established yet, so we have to expect
2643
+ * that s->cert or ret->cert will be changed later --
2644
+ * they should not both point to the same object,
2645
+ * and thus we can't use SSL_copy_session_id. */
2646
+
2647
+ ret->method->ssl_free(ret);
2648
+ ret->method = s->method;
2649
+ ret->method->ssl_new(ret);
2650
+
2651
+ if (s->cert != NULL)
2652
+ {
2653
+ if (ret->cert != NULL)
2654
+ {
2655
+ ssl_cert_free(ret->cert);
2656
+ }
2657
+ ret->cert = ssl_cert_dup(s->cert);
2658
+ if (ret->cert == NULL)
2659
+ goto err;
2660
+ }
2661
+
2662
+ SSL_set_session_id_context(ret,
2663
+ s->sid_ctx, s->sid_ctx_length);
2664
+ }
2665
+
2666
+ ret->options=s->options;
2667
+ ret->mode=s->mode;
2668
+ SSL_set_max_cert_list(ret,SSL_get_max_cert_list(s));
2669
+ SSL_set_read_ahead(ret,SSL_get_read_ahead(s));
2670
+ ret->msg_callback = s->msg_callback;
2671
+ ret->msg_callback_arg = s->msg_callback_arg;
2672
+ SSL_set_verify(ret,SSL_get_verify_mode(s),
2673
+ SSL_get_verify_callback(s));
2674
+ SSL_set_verify_depth(ret,SSL_get_verify_depth(s));
2675
+ ret->generate_session_id = s->generate_session_id;
2676
+
2677
+ SSL_set_info_callback(ret,SSL_get_info_callback(s));
2678
+
2679
+ ret->debug=s->debug;
2680
+
2681
+ /* copy app data, a little dangerous perhaps */
2682
+ if (!CRYPTO_dup_ex_data(CRYPTO_EX_INDEX_SSL, &ret->ex_data, &s->ex_data))
2683
+ goto err;
2684
+
2685
+ /* setup rbio, and wbio */
2686
+ if (s->rbio != NULL)
2687
+ {
2688
+ if (!BIO_dup_state(s->rbio,(char *)&ret->rbio))
2689
+ goto err;
2690
+ }
2691
+ if (s->wbio != NULL)
2692
+ {
2693
+ if (s->wbio != s->rbio)
2694
+ {
2695
+ if (!BIO_dup_state(s->wbio,(char *)&ret->wbio))
2696
+ goto err;
2697
+ }
2698
+ else
2699
+ ret->wbio=ret->rbio;
2700
+ }
2701
+ ret->rwstate = s->rwstate;
2702
+ ret->in_handshake = s->in_handshake;
2703
+ ret->handshake_func = s->handshake_func;
2704
+ ret->server = s->server;
2705
+ ret->renegotiate = s->renegotiate;
2706
+ ret->new_session = s->new_session;
2707
+ ret->quiet_shutdown = s->quiet_shutdown;
2708
+ ret->shutdown=s->shutdown;
2709
+ ret->state=s->state; /* SSL_dup does not really work at any state, though */
2710
+ ret->rstate=s->rstate;
2711
+ ret->init_num = 0; /* would have to copy ret->init_buf, ret->init_msg, ret->init_num, ret->init_off */
2712
+ ret->hit=s->hit;
2713
+
2714
+ X509_VERIFY_PARAM_inherit(ret->param, s->param);
2715
+
2716
+ /* dup the cipher_list and cipher_list_by_id stacks */
2717
+ if (s->cipher_list != NULL)
2718
+ {
2719
+ if ((ret->cipher_list=sk_SSL_CIPHER_dup(s->cipher_list)) == NULL)
2720
+ goto err;
2721
+ }
2722
+ if (s->cipher_list_by_id != NULL)
2723
+ if ((ret->cipher_list_by_id=sk_SSL_CIPHER_dup(s->cipher_list_by_id))
2724
+ == NULL)
2725
+ goto err;
2726
+
2727
+ /* Dup the client_CA list */
2728
+ if (s->client_CA != NULL)
2729
+ {
2730
+ if ((sk=sk_X509_NAME_dup(s->client_CA)) == NULL) goto err;
2731
+ ret->client_CA=sk;
2732
+ for (i=0; i<sk_X509_NAME_num(sk); i++)
2733
+ {
2734
+ xn=sk_X509_NAME_value(sk,i);
2735
+ if (sk_X509_NAME_set(sk,i,X509_NAME_dup(xn)) == NULL)
2736
+ {
2737
+ X509_NAME_free(xn);
2738
+ goto err;
2739
+ }
2740
+ }
2741
+ }
2742
+
2743
+ if (0)
2744
+ {
2745
+ err:
2746
+ if (ret != NULL) SSL_free(ret);
2747
+ ret=NULL;
2748
+ }
2749
+ return(ret);
2750
+ }
2751
+
2752
+ void ssl_clear_cipher_ctx(SSL *s)
2753
+ {
2754
+ if (s->enc_read_ctx != NULL)
2755
+ {
2756
+ EVP_CIPHER_CTX_cleanup(s->enc_read_ctx);
2757
+ OPENSSL_free(s->enc_read_ctx);
2758
+ s->enc_read_ctx=NULL;
2759
+ }
2760
+ if (s->enc_write_ctx != NULL)
2761
+ {
2762
+ EVP_CIPHER_CTX_cleanup(s->enc_write_ctx);
2763
+ OPENSSL_free(s->enc_write_ctx);
2764
+ s->enc_write_ctx=NULL;
2765
+ }
2766
+ #ifndef OPENSSL_NO_COMP
2767
+ if (s->expand != NULL)
2768
+ {
2769
+ COMP_CTX_free(s->expand);
2770
+ s->expand=NULL;
2771
+ }
2772
+ if (s->compress != NULL)
2773
+ {
2774
+ COMP_CTX_free(s->compress);
2775
+ s->compress=NULL;
2776
+ }
2777
+ #endif
2778
+ }
2779
+
2780
+ /* Fix this function so that it takes an optional type parameter */
2781
+ X509 *SSL_get_certificate(const SSL *s)
2782
+ {
2783
+ if (s->cert != NULL)
2784
+ return(s->cert->key->x509);
2785
+ else
2786
+ return(NULL);
2787
+ }
2788
+
2789
+ /* Fix this function so that it takes an optional type parameter */
2790
+ EVP_PKEY *SSL_get_privatekey(SSL *s)
2791
+ {
2792
+ if (s->cert != NULL)
2793
+ return(s->cert->key->privatekey);
2794
+ else
2795
+ return(NULL);
2796
+ }
2797
+
2798
+ const SSL_CIPHER *SSL_get_current_cipher(const SSL *s)
2799
+ {
2800
+ if ((s->session != NULL) && (s->session->cipher != NULL))
2801
+ return(s->session->cipher);
2802
+ return(NULL);
2803
+ }
2804
+ #ifdef OPENSSL_NO_COMP
2805
+ const void *SSL_get_current_compression(SSL *s)
2806
+ {
2807
+ return NULL;
2808
+ }
2809
+ const void *SSL_get_current_expansion(SSL *s)
2810
+ {
2811
+ return NULL;
2812
+ }
2813
+ #else
2814
+
2815
+ const COMP_METHOD *SSL_get_current_compression(SSL *s)
2816
+ {
2817
+ if (s->compress != NULL)
2818
+ return(s->compress->meth);
2819
+ return(NULL);
2820
+ }
2821
+
2822
+ const COMP_METHOD *SSL_get_current_expansion(SSL *s)
2823
+ {
2824
+ if (s->expand != NULL)
2825
+ return(s->expand->meth);
2826
+ return(NULL);
2827
+ }
2828
+ #endif
2829
+
2830
+ int ssl_init_wbio_buffer(SSL *s,int push)
2831
+ {
2832
+ BIO *bbio;
2833
+
2834
+ if (s->bbio == NULL)
2835
+ {
2836
+ bbio=BIO_new(BIO_f_buffer());
2837
+ if (bbio == NULL) return(0);
2838
+ s->bbio=bbio;
2839
+ }
2840
+ else
2841
+ {
2842
+ bbio=s->bbio;
2843
+ if (s->bbio == s->wbio)
2844
+ s->wbio=BIO_pop(s->wbio);
2845
+ }
2846
+ (void)BIO_reset(bbio);
2847
+ /* if (!BIO_set_write_buffer_size(bbio,16*1024)) */
2848
+ if (!BIO_set_read_buffer_size(bbio,1))
2849
+ {
2850
+ SSLerr(SSL_F_SSL_INIT_WBIO_BUFFER,ERR_R_BUF_LIB);
2851
+ return(0);
2852
+ }
2853
+ if (push)
2854
+ {
2855
+ if (s->wbio != bbio)
2856
+ s->wbio=BIO_push(bbio,s->wbio);
2857
+ }
2858
+ else
2859
+ {
2860
+ if (s->wbio == bbio)
2861
+ s->wbio=BIO_pop(bbio);
2862
+ }
2863
+ return(1);
2864
+ }
2865
+
2866
+ void ssl_free_wbio_buffer(SSL *s)
2867
+ {
2868
+ if (s->bbio == NULL) return;
2869
+
2870
+ if (s->bbio == s->wbio)
2871
+ {
2872
+ /* remove buffering */
2873
+ s->wbio=BIO_pop(s->wbio);
2874
+ #ifdef REF_CHECK /* not the usual REF_CHECK, but this avoids adding one more preprocessor symbol */
2875
+ assert(s->wbio != NULL);
2876
+ #endif
2877
+ }
2878
+ BIO_free(s->bbio);
2879
+ s->bbio=NULL;
2880
+ }
2881
+
2882
+ void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx,int mode)
2883
+ {
2884
+ ctx->quiet_shutdown=mode;
2885
+ }
2886
+
2887
+ int SSL_CTX_get_quiet_shutdown(const SSL_CTX *ctx)
2888
+ {
2889
+ return(ctx->quiet_shutdown);
2890
+ }
2891
+
2892
+ void SSL_set_quiet_shutdown(SSL *s,int mode)
2893
+ {
2894
+ s->quiet_shutdown=mode;
2895
+ }
2896
+
2897
+ int SSL_get_quiet_shutdown(const SSL *s)
2898
+ {
2899
+ return(s->quiet_shutdown);
2900
+ }
2901
+
2902
+ void SSL_set_shutdown(SSL *s,int mode)
2903
+ {
2904
+ s->shutdown=mode;
2905
+ }
2906
+
2907
+ int SSL_get_shutdown(const SSL *s)
2908
+ {
2909
+ return(s->shutdown);
2910
+ }
2911
+
2912
+ int SSL_version(const SSL *s)
2913
+ {
2914
+ return(s->version);
2915
+ }
2916
+
2917
+ SSL_CTX *SSL_get_SSL_CTX(const SSL *ssl)
2918
+ {
2919
+ return(ssl->ctx);
2920
+ }
2921
+
2922
+ SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX* ctx)
2923
+ {
2924
+ if (ssl->ctx == ctx)
2925
+ return ssl->ctx;
2926
+ #ifndef OPENSSL_NO_TLSEXT
2927
+ if (ctx == NULL)
2928
+ ctx = ssl->initial_ctx;
2929
+ #endif
2930
+ if (ssl->cert != NULL)
2931
+ ssl_cert_free(ssl->cert);
2932
+ ssl->cert = ssl_cert_dup(ctx->cert);
2933
+ CRYPTO_add(&ctx->references,1,CRYPTO_LOCK_SSL_CTX);
2934
+ if (ssl->ctx != NULL)
2935
+ SSL_CTX_free(ssl->ctx); /* decrement reference count */
2936
+ ssl->ctx = ctx;
2937
+ return(ssl->ctx);
2938
+ }
2939
+
2940
+ #ifndef OPENSSL_NO_STDIO
2941
+ int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx)
2942
+ {
2943
+ return(X509_STORE_set_default_paths(ctx->cert_store));
2944
+ }
2945
+
2946
+ int SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile,
2947
+ const char *CApath)
2948
+ {
2949
+ return(X509_STORE_load_locations(ctx->cert_store,CAfile,CApath));
2950
+ }
2951
+ #endif
2952
+
2953
+ void SSL_set_info_callback(SSL *ssl,
2954
+ void (*cb)(const SSL *ssl,int type,int val))
2955
+ {
2956
+ ssl->info_callback=cb;
2957
+ }
2958
+
2959
+ /* One compiler (Diab DCC) doesn't like argument names in returned
2960
+ function pointer. */
2961
+ void (*SSL_get_info_callback(const SSL *ssl))(const SSL * /*ssl*/,int /*type*/,int /*val*/)
2962
+ {
2963
+ return ssl->info_callback;
2964
+ }
2965
+
2966
+ int SSL_state(const SSL *ssl)
2967
+ {
2968
+ return(ssl->state);
2969
+ }
2970
+
2971
+ void SSL_set_state(SSL *ssl, int state)
2972
+ {
2973
+ ssl->state = state;
2974
+ }
2975
+
2976
+ void SSL_set_verify_result(SSL *ssl,long arg)
2977
+ {
2978
+ ssl->verify_result=arg;
2979
+ }
2980
+
2981
+ long SSL_get_verify_result(const SSL *ssl)
2982
+ {
2983
+ return(ssl->verify_result);
2984
+ }
2985
+
2986
+ int SSL_get_ex_new_index(long argl,void *argp,CRYPTO_EX_new *new_func,
2987
+ CRYPTO_EX_dup *dup_func,CRYPTO_EX_free *free_func)
2988
+ {
2989
+ return CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL, argl, argp,
2990
+ new_func, dup_func, free_func);
2991
+ }
2992
+
2993
+ int SSL_set_ex_data(SSL *s,int idx,void *arg)
2994
+ {
2995
+ return(CRYPTO_set_ex_data(&s->ex_data,idx,arg));
2996
+ }
2997
+
2998
+ void *SSL_get_ex_data(const SSL *s,int idx)
2999
+ {
3000
+ return(CRYPTO_get_ex_data(&s->ex_data,idx));
3001
+ }
3002
+
3003
+ int SSL_CTX_get_ex_new_index(long argl,void *argp,CRYPTO_EX_new *new_func,
3004
+ CRYPTO_EX_dup *dup_func,CRYPTO_EX_free *free_func)
3005
+ {
3006
+ return CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_CTX, argl, argp,
3007
+ new_func, dup_func, free_func);
3008
+ }
3009
+
3010
+ int SSL_CTX_set_ex_data(SSL_CTX *s,int idx,void *arg)
3011
+ {
3012
+ return(CRYPTO_set_ex_data(&s->ex_data,idx,arg));
3013
+ }
3014
+
3015
+ void *SSL_CTX_get_ex_data(const SSL_CTX *s,int idx)
3016
+ {
3017
+ return(CRYPTO_get_ex_data(&s->ex_data,idx));
3018
+ }
3019
+
3020
+ int ssl_ok(SSL *s)
3021
+ {
3022
+ return(1);
3023
+ }
3024
+
3025
+ X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *ctx)
3026
+ {
3027
+ return(ctx->cert_store);
3028
+ }
3029
+
3030
+ void SSL_CTX_set_cert_store(SSL_CTX *ctx,X509_STORE *store)
3031
+ {
3032
+ if (ctx->cert_store != NULL)
3033
+ X509_STORE_free(ctx->cert_store);
3034
+ ctx->cert_store=store;
3035
+ }
3036
+
3037
+ int SSL_want(const SSL *s)
3038
+ {
3039
+ return(s->rwstate);
3040
+ }
3041
+
3042
+ /*!
3043
+ * \brief Set the callback for generating temporary RSA keys.
3044
+ * \param ctx the SSL context.
3045
+ * \param cb the callback
3046
+ */
3047
+
3048
+ #ifndef OPENSSL_NO_RSA
3049
+ void SSL_CTX_set_tmp_rsa_callback(SSL_CTX *ctx,RSA *(*cb)(SSL *ssl,
3050
+ int is_export,
3051
+ int keylength))
3052
+ {
3053
+ SSL_CTX_callback_ctrl(ctx,SSL_CTRL_SET_TMP_RSA_CB,(void (*)(void))cb);
3054
+ }
3055
+
3056
+ void SSL_set_tmp_rsa_callback(SSL *ssl,RSA *(*cb)(SSL *ssl,
3057
+ int is_export,
3058
+ int keylength))
3059
+ {
3060
+ SSL_callback_ctrl(ssl,SSL_CTRL_SET_TMP_RSA_CB,(void (*)(void))cb);
3061
+ }
3062
+ #endif
3063
+
3064
+ #ifdef DOXYGEN
3065
+ /*!
3066
+ * \brief The RSA temporary key callback function.
3067
+ * \param ssl the SSL session.
3068
+ * \param is_export \c TRUE if the temp RSA key is for an export ciphersuite.
3069
+ * \param keylength if \c is_export is \c TRUE, then \c keylength is the size
3070
+ * of the required key in bits.
3071
+ * \return the temporary RSA key.
3072
+ * \sa SSL_CTX_set_tmp_rsa_callback, SSL_set_tmp_rsa_callback
3073
+ */
3074
+
3075
+ RSA *cb(SSL *ssl,int is_export,int keylength)
3076
+ {}
3077
+ #endif
3078
+
3079
+ /*!
3080
+ * \brief Set the callback for generating temporary DH keys.
3081
+ * \param ctx the SSL context.
3082
+ * \param dh the callback
3083
+ */
3084
+
3085
+ #ifndef OPENSSL_NO_DH
3086
+ void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx,DH *(*dh)(SSL *ssl,int is_export,
3087
+ int keylength))
3088
+ {
3089
+ SSL_CTX_callback_ctrl(ctx,SSL_CTRL_SET_TMP_DH_CB,(void (*)(void))dh);
3090
+ }
3091
+
3092
+ void SSL_set_tmp_dh_callback(SSL *ssl,DH *(*dh)(SSL *ssl,int is_export,
3093
+ int keylength))
3094
+ {
3095
+ SSL_callback_ctrl(ssl,SSL_CTRL_SET_TMP_DH_CB,(void (*)(void))dh);
3096
+ }
3097
+ #endif
3098
+
3099
+ #ifndef OPENSSL_NO_ECDH
3100
+ void SSL_CTX_set_tmp_ecdh_callback(SSL_CTX *ctx,EC_KEY *(*ecdh)(SSL *ssl,int is_export,
3101
+ int keylength))
3102
+ {
3103
+ SSL_CTX_callback_ctrl(ctx,SSL_CTRL_SET_TMP_ECDH_CB,(void (*)(void))ecdh);
3104
+ }
3105
+
3106
+ void SSL_set_tmp_ecdh_callback(SSL *ssl,EC_KEY *(*ecdh)(SSL *ssl,int is_export,
3107
+ int keylength))
3108
+ {
3109
+ SSL_callback_ctrl(ssl,SSL_CTRL_SET_TMP_ECDH_CB,(void (*)(void))ecdh);
3110
+ }
3111
+ #endif
3112
+
3113
+ #ifndef OPENSSL_NO_PSK
3114
+ int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *identity_hint)
3115
+ {
3116
+ if (identity_hint != NULL && strlen(identity_hint) > PSK_MAX_IDENTITY_LEN)
3117
+ {
3118
+ SSLerr(SSL_F_SSL_CTX_USE_PSK_IDENTITY_HINT, SSL_R_DATA_LENGTH_TOO_LONG);
3119
+ return 0;
3120
+ }
3121
+ if (ctx->psk_identity_hint != NULL)
3122
+ OPENSSL_free(ctx->psk_identity_hint);
3123
+ if (identity_hint != NULL)
3124
+ {
3125
+ ctx->psk_identity_hint = BUF_strdup(identity_hint);
3126
+ if (ctx->psk_identity_hint == NULL)
3127
+ return 0;
3128
+ }
3129
+ else
3130
+ ctx->psk_identity_hint = NULL;
3131
+ return 1;
3132
+ }
3133
+
3134
+ int SSL_use_psk_identity_hint(SSL *s, const char *identity_hint)
3135
+ {
3136
+ if (s == NULL)
3137
+ return 0;
3138
+
3139
+ if (s->session == NULL)
3140
+ return 1; /* session not created yet, ignored */
3141
+
3142
+ if (identity_hint != NULL && strlen(identity_hint) > PSK_MAX_IDENTITY_LEN)
3143
+ {
3144
+ SSLerr(SSL_F_SSL_USE_PSK_IDENTITY_HINT, SSL_R_DATA_LENGTH_TOO_LONG);
3145
+ return 0;
3146
+ }
3147
+ if (s->session->psk_identity_hint != NULL)
3148
+ OPENSSL_free(s->session->psk_identity_hint);
3149
+ if (identity_hint != NULL)
3150
+ {
3151
+ s->session->psk_identity_hint = BUF_strdup(identity_hint);
3152
+ if (s->session->psk_identity_hint == NULL)
3153
+ return 0;
3154
+ }
3155
+ else
3156
+ s->session->psk_identity_hint = NULL;
3157
+ return 1;
3158
+ }
3159
+
3160
+ const char *SSL_get_psk_identity_hint(const SSL *s)
3161
+ {
3162
+ if (s == NULL || s->session == NULL)
3163
+ return NULL;
3164
+ return(s->session->psk_identity_hint);
3165
+ }
3166
+
3167
+ const char *SSL_get_psk_identity(const SSL *s)
3168
+ {
3169
+ if (s == NULL || s->session == NULL)
3170
+ return NULL;
3171
+ return(s->session->psk_identity);
3172
+ }
3173
+
3174
+ void SSL_set_psk_client_callback(SSL *s,
3175
+ unsigned int (*cb)(SSL *ssl, const char *hint,
3176
+ char *identity, unsigned int max_identity_len, unsigned char *psk,
3177
+ unsigned int max_psk_len))
3178
+ {
3179
+ s->psk_client_callback = cb;
3180
+ }
3181
+
3182
+ void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx,
3183
+ unsigned int (*cb)(SSL *ssl, const char *hint,
3184
+ char *identity, unsigned int max_identity_len, unsigned char *psk,
3185
+ unsigned int max_psk_len))
3186
+ {
3187
+ ctx->psk_client_callback = cb;
3188
+ }
3189
+
3190
+ void SSL_set_psk_server_callback(SSL *s,
3191
+ unsigned int (*cb)(SSL *ssl, const char *identity,
3192
+ unsigned char *psk, unsigned int max_psk_len))
3193
+ {
3194
+ s->psk_server_callback = cb;
3195
+ }
3196
+
3197
+ void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx,
3198
+ unsigned int (*cb)(SSL *ssl, const char *identity,
3199
+ unsigned char *psk, unsigned int max_psk_len))
3200
+ {
3201
+ ctx->psk_server_callback = cb;
3202
+ }
3203
+ #endif
3204
+
3205
+ void SSL_CTX_set_msg_callback(SSL_CTX *ctx, void (*cb)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg))
3206
+ {
3207
+ SSL_CTX_callback_ctrl(ctx, SSL_CTRL_SET_MSG_CALLBACK, (void (*)(void))cb);
3208
+ }
3209
+ void SSL_set_msg_callback(SSL *ssl, void (*cb)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg))
3210
+ {
3211
+ SSL_callback_ctrl(ssl, SSL_CTRL_SET_MSG_CALLBACK, (void (*)(void))cb);
3212
+ }
3213
+
3214
+ /* Allocates new EVP_MD_CTX and sets pointer to it into given pointer
3215
+ * vairable, freeing EVP_MD_CTX previously stored in that variable, if
3216
+ * any. If EVP_MD pointer is passed, initializes ctx with this md
3217
+ * Returns newly allocated ctx;
3218
+ */
3219
+
3220
+ EVP_MD_CTX *ssl_replace_hash(EVP_MD_CTX **hash,const EVP_MD *md)
3221
+ {
3222
+ ssl_clear_hash_ctx(hash);
3223
+ *hash = EVP_MD_CTX_create();
3224
+ if (md) EVP_DigestInit_ex(*hash,md,NULL);
3225
+ return *hash;
3226
+ }
3227
+ void ssl_clear_hash_ctx(EVP_MD_CTX **hash)
3228
+ {
3229
+
3230
+ if (*hash) EVP_MD_CTX_destroy(*hash);
3231
+ *hash=NULL;
3232
+ }
3233
+
3234
+ void SSL_set_debug(SSL *s, int debug)
3235
+ {
3236
+ s->debug = debug;
3237
+ }
3238
+
3239
+ int SSL_cache_hit(SSL *s)
3240
+ {
3241
+ return s->hit;
3242
+ }
3243
+
3244
+ #if defined(_WINDLL) && defined(OPENSSL_SYS_WIN16)
3245
+ #include "../crypto/bio/bss_file.c"
3246
+ #endif
3247
+
3248
+ IMPLEMENT_STACK_OF(SSL_CIPHER)
3249
+ IMPLEMENT_STACK_OF(SSL_COMP)
3250
+ IMPLEMENT_OBJ_BSEARCH_GLOBAL_CMP_FN(SSL_CIPHER, SSL_CIPHER,
3251
+ ssl_cipher_id);