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,274 @@
1
+ /* crypto/x509/x509_v3.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/stack.h>
61
+ #include "cryptlib.h"
62
+ #include <openssl/asn1.h>
63
+ #include <openssl/objects.h>
64
+ #include <openssl/evp.h>
65
+ #include <openssl/x509.h>
66
+ #include <openssl/x509v3.h>
67
+
68
+ int X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x)
69
+ {
70
+ if (x == NULL) return(0);
71
+ return(sk_X509_EXTENSION_num(x));
72
+ }
73
+
74
+ int X509v3_get_ext_by_NID(const STACK_OF(X509_EXTENSION) *x, int nid,
75
+ int lastpos)
76
+ {
77
+ ASN1_OBJECT *obj;
78
+
79
+ obj=OBJ_nid2obj(nid);
80
+ if (obj == NULL) return(-2);
81
+ return(X509v3_get_ext_by_OBJ(x,obj,lastpos));
82
+ }
83
+
84
+ int X509v3_get_ext_by_OBJ(const STACK_OF(X509_EXTENSION) *sk, ASN1_OBJECT *obj,
85
+ int lastpos)
86
+ {
87
+ int n;
88
+ X509_EXTENSION *ex;
89
+
90
+ if (sk == NULL) return(-1);
91
+ lastpos++;
92
+ if (lastpos < 0)
93
+ lastpos=0;
94
+ n=sk_X509_EXTENSION_num(sk);
95
+ for ( ; lastpos < n; lastpos++)
96
+ {
97
+ ex=sk_X509_EXTENSION_value(sk,lastpos);
98
+ if (OBJ_cmp(ex->object,obj) == 0)
99
+ return(lastpos);
100
+ }
101
+ return(-1);
102
+ }
103
+
104
+ int X509v3_get_ext_by_critical(const STACK_OF(X509_EXTENSION) *sk, int crit,
105
+ int lastpos)
106
+ {
107
+ int n;
108
+ X509_EXTENSION *ex;
109
+
110
+ if (sk == NULL) return(-1);
111
+ lastpos++;
112
+ if (lastpos < 0)
113
+ lastpos=0;
114
+ n=sk_X509_EXTENSION_num(sk);
115
+ for ( ; lastpos < n; lastpos++)
116
+ {
117
+ ex=sk_X509_EXTENSION_value(sk,lastpos);
118
+ if ( ((ex->critical > 0) && crit) ||
119
+ ((ex->critical <= 0) && !crit))
120
+ return(lastpos);
121
+ }
122
+ return(-1);
123
+ }
124
+
125
+ X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc)
126
+ {
127
+ if (x == NULL || sk_X509_EXTENSION_num(x) <= loc || loc < 0)
128
+ return NULL;
129
+ else
130
+ return sk_X509_EXTENSION_value(x,loc);
131
+ }
132
+
133
+ X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc)
134
+ {
135
+ X509_EXTENSION *ret;
136
+
137
+ if (x == NULL || sk_X509_EXTENSION_num(x) <= loc || loc < 0)
138
+ return(NULL);
139
+ ret=sk_X509_EXTENSION_delete(x,loc);
140
+ return(ret);
141
+ }
142
+
143
+ STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x,
144
+ X509_EXTENSION *ex, int loc)
145
+ {
146
+ X509_EXTENSION *new_ex=NULL;
147
+ int n;
148
+ STACK_OF(X509_EXTENSION) *sk=NULL;
149
+
150
+ if (x == NULL)
151
+ {
152
+ X509err(X509_F_X509V3_ADD_EXT,ERR_R_PASSED_NULL_PARAMETER);
153
+ goto err2;
154
+ }
155
+
156
+ if (*x == NULL)
157
+ {
158
+ if ((sk=sk_X509_EXTENSION_new_null()) == NULL)
159
+ goto err;
160
+ }
161
+ else
162
+ sk= *x;
163
+
164
+ n=sk_X509_EXTENSION_num(sk);
165
+ if (loc > n) loc=n;
166
+ else if (loc < 0) loc=n;
167
+
168
+ if ((new_ex=X509_EXTENSION_dup(ex)) == NULL)
169
+ goto err2;
170
+ if (!sk_X509_EXTENSION_insert(sk,new_ex,loc))
171
+ goto err;
172
+ if (*x == NULL)
173
+ *x=sk;
174
+ return(sk);
175
+ err:
176
+ X509err(X509_F_X509V3_ADD_EXT,ERR_R_MALLOC_FAILURE);
177
+ err2:
178
+ if (new_ex != NULL) X509_EXTENSION_free(new_ex);
179
+ if (sk != NULL) sk_X509_EXTENSION_free(sk);
180
+ return(NULL);
181
+ }
182
+
183
+ X509_EXTENSION *X509_EXTENSION_create_by_NID(X509_EXTENSION **ex, int nid,
184
+ int crit, ASN1_OCTET_STRING *data)
185
+ {
186
+ ASN1_OBJECT *obj;
187
+ X509_EXTENSION *ret;
188
+
189
+ obj=OBJ_nid2obj(nid);
190
+ if (obj == NULL)
191
+ {
192
+ X509err(X509_F_X509_EXTENSION_CREATE_BY_NID,X509_R_UNKNOWN_NID);
193
+ return(NULL);
194
+ }
195
+ ret=X509_EXTENSION_create_by_OBJ(ex,obj,crit,data);
196
+ if (ret == NULL) ASN1_OBJECT_free(obj);
197
+ return(ret);
198
+ }
199
+
200
+ X509_EXTENSION *X509_EXTENSION_create_by_OBJ(X509_EXTENSION **ex,
201
+ ASN1_OBJECT *obj, int crit, ASN1_OCTET_STRING *data)
202
+ {
203
+ X509_EXTENSION *ret;
204
+
205
+ if ((ex == NULL) || (*ex == NULL))
206
+ {
207
+ if ((ret=X509_EXTENSION_new()) == NULL)
208
+ {
209
+ X509err(X509_F_X509_EXTENSION_CREATE_BY_OBJ,ERR_R_MALLOC_FAILURE);
210
+ return(NULL);
211
+ }
212
+ }
213
+ else
214
+ ret= *ex;
215
+
216
+ if (!X509_EXTENSION_set_object(ret,obj))
217
+ goto err;
218
+ if (!X509_EXTENSION_set_critical(ret,crit))
219
+ goto err;
220
+ if (!X509_EXTENSION_set_data(ret,data))
221
+ goto err;
222
+
223
+ if ((ex != NULL) && (*ex == NULL)) *ex=ret;
224
+ return(ret);
225
+ err:
226
+ if ((ex == NULL) || (ret != *ex))
227
+ X509_EXTENSION_free(ret);
228
+ return(NULL);
229
+ }
230
+
231
+ int X509_EXTENSION_set_object(X509_EXTENSION *ex, ASN1_OBJECT *obj)
232
+ {
233
+ if ((ex == NULL) || (obj == NULL))
234
+ return(0);
235
+ ASN1_OBJECT_free(ex->object);
236
+ ex->object=OBJ_dup(obj);
237
+ return(1);
238
+ }
239
+
240
+ int X509_EXTENSION_set_critical(X509_EXTENSION *ex, int crit)
241
+ {
242
+ if (ex == NULL) return(0);
243
+ ex->critical=(crit)?0xFF:-1;
244
+ return(1);
245
+ }
246
+
247
+ int X509_EXTENSION_set_data(X509_EXTENSION *ex, ASN1_OCTET_STRING *data)
248
+ {
249
+ int i;
250
+
251
+ if (ex == NULL) return(0);
252
+ i=M_ASN1_OCTET_STRING_set(ex->value,data->data,data->length);
253
+ if (!i) return(0);
254
+ return(1);
255
+ }
256
+
257
+ ASN1_OBJECT *X509_EXTENSION_get_object(X509_EXTENSION *ex)
258
+ {
259
+ if (ex == NULL) return(NULL);
260
+ return(ex->object);
261
+ }
262
+
263
+ ASN1_OCTET_STRING *X509_EXTENSION_get_data(X509_EXTENSION *ex)
264
+ {
265
+ if (ex == NULL) return(NULL);
266
+ return(ex->value);
267
+ }
268
+
269
+ int X509_EXTENSION_get_critical(X509_EXTENSION *ex)
270
+ {
271
+ if (ex == NULL) return(0);
272
+ if(ex->critical > 0) return 1;
273
+ return 0;
274
+ }
@@ -0,0 +1,2214 @@
1
+ /* crypto/x509/x509_vfy.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 <time.h>
61
+ #include <errno.h>
62
+
63
+ #include "cryptlib.h"
64
+ #include <openssl/crypto.h>
65
+ #include <openssl/lhash.h>
66
+ #include <openssl/buffer.h>
67
+ #include <openssl/evp.h>
68
+ #include <openssl/asn1.h>
69
+ #include <openssl/x509.h>
70
+ #include <openssl/x509v3.h>
71
+ #include <openssl/objects.h>
72
+
73
+ /* CRL score values */
74
+
75
+ /* No unhandled critical extensions */
76
+
77
+ #define CRL_SCORE_NOCRITICAL 0x100
78
+
79
+ /* certificate is within CRL scope */
80
+
81
+ #define CRL_SCORE_SCOPE 0x080
82
+
83
+ /* CRL times valid */
84
+
85
+ #define CRL_SCORE_TIME 0x040
86
+
87
+ /* Issuer name matches certificate */
88
+
89
+ #define CRL_SCORE_ISSUER_NAME 0x020
90
+
91
+ /* If this score or above CRL is probably valid */
92
+
93
+ #define CRL_SCORE_VALID (CRL_SCORE_NOCRITICAL|CRL_SCORE_TIME|CRL_SCORE_SCOPE)
94
+
95
+ /* CRL issuer is certificate issuer */
96
+
97
+ #define CRL_SCORE_ISSUER_CERT 0x018
98
+
99
+ /* CRL issuer is on certificate path */
100
+
101
+ #define CRL_SCORE_SAME_PATH 0x008
102
+
103
+ /* CRL issuer matches CRL AKID */
104
+
105
+ #define CRL_SCORE_AKID 0x004
106
+
107
+ /* Have a delta CRL with valid times */
108
+
109
+ #define CRL_SCORE_TIME_DELTA 0x002
110
+
111
+ static int null_callback(int ok,X509_STORE_CTX *e);
112
+ static int check_issued(X509_STORE_CTX *ctx, X509 *x, X509 *issuer);
113
+ static X509 *find_issuer(X509_STORE_CTX *ctx, STACK_OF(X509) *sk, X509 *x);
114
+ static int check_chain_extensions(X509_STORE_CTX *ctx);
115
+ static int check_name_constraints(X509_STORE_CTX *ctx);
116
+ static int check_trust(X509_STORE_CTX *ctx);
117
+ static int check_revocation(X509_STORE_CTX *ctx);
118
+ static int check_cert(X509_STORE_CTX *ctx);
119
+ static int check_policy(X509_STORE_CTX *ctx);
120
+
121
+ static int get_crl_score(X509_STORE_CTX *ctx, X509 **pissuer,
122
+ unsigned int *preasons,
123
+ X509_CRL *crl, X509 *x);
124
+ static int get_crl_delta(X509_STORE_CTX *ctx,
125
+ X509_CRL **pcrl, X509_CRL **pdcrl, X509 *x);
126
+ static void get_delta_sk(X509_STORE_CTX *ctx, X509_CRL **dcrl, int *pcrl_score,
127
+ X509_CRL *base, STACK_OF(X509_CRL) *crls);
128
+ static void crl_akid_check(X509_STORE_CTX *ctx, X509_CRL *crl,
129
+ X509 **pissuer, int *pcrl_score);
130
+ static int crl_crldp_check(X509 *x, X509_CRL *crl, int crl_score,
131
+ unsigned int *preasons);
132
+ static int check_crl_path(X509_STORE_CTX *ctx, X509 *x);
133
+ static int check_crl_chain(X509_STORE_CTX *ctx,
134
+ STACK_OF(X509) *cert_path,
135
+ STACK_OF(X509) *crl_path);
136
+
137
+ static int internal_verify(X509_STORE_CTX *ctx);
138
+ const char X509_version[]="X.509" OPENSSL_VERSION_PTEXT;
139
+
140
+
141
+ static int null_callback(int ok, X509_STORE_CTX *e)
142
+ {
143
+ return ok;
144
+ }
145
+
146
+ #if 0
147
+ static int x509_subject_cmp(X509 **a, X509 **b)
148
+ {
149
+ return X509_subject_name_cmp(*a,*b);
150
+ }
151
+ #endif
152
+
153
+ int X509_verify_cert(X509_STORE_CTX *ctx)
154
+ {
155
+ X509 *x,*xtmp,*chain_ss=NULL;
156
+ int bad_chain = 0;
157
+ X509_VERIFY_PARAM *param = ctx->param;
158
+ int depth,i,ok=0;
159
+ int num;
160
+ int (*cb)(int xok,X509_STORE_CTX *xctx);
161
+ STACK_OF(X509) *sktmp=NULL;
162
+ if (ctx->cert == NULL)
163
+ {
164
+ X509err(X509_F_X509_VERIFY_CERT,X509_R_NO_CERT_SET_FOR_US_TO_VERIFY);
165
+ return -1;
166
+ }
167
+
168
+ cb=ctx->verify_cb;
169
+
170
+ /* first we make sure the chain we are going to build is
171
+ * present and that the first entry is in place */
172
+ if (ctx->chain == NULL)
173
+ {
174
+ if ( ((ctx->chain=sk_X509_new_null()) == NULL) ||
175
+ (!sk_X509_push(ctx->chain,ctx->cert)))
176
+ {
177
+ X509err(X509_F_X509_VERIFY_CERT,ERR_R_MALLOC_FAILURE);
178
+ goto end;
179
+ }
180
+ CRYPTO_add(&ctx->cert->references,1,CRYPTO_LOCK_X509);
181
+ ctx->last_untrusted=1;
182
+ }
183
+
184
+ /* We use a temporary STACK so we can chop and hack at it */
185
+ if (ctx->untrusted != NULL
186
+ && (sktmp=sk_X509_dup(ctx->untrusted)) == NULL)
187
+ {
188
+ X509err(X509_F_X509_VERIFY_CERT,ERR_R_MALLOC_FAILURE);
189
+ goto end;
190
+ }
191
+
192
+ num=sk_X509_num(ctx->chain);
193
+ x=sk_X509_value(ctx->chain,num-1);
194
+ depth=param->depth;
195
+
196
+
197
+ for (;;)
198
+ {
199
+ /* If we have enough, we break */
200
+ if (depth < num) break; /* FIXME: If this happens, we should take
201
+ * note of it and, if appropriate, use the
202
+ * X509_V_ERR_CERT_CHAIN_TOO_LONG error
203
+ * code later.
204
+ */
205
+
206
+ /* If we are self signed, we break */
207
+ if (ctx->check_issued(ctx, x,x)) break;
208
+
209
+ /* If we were passed a cert chain, use it first */
210
+ if (ctx->untrusted != NULL)
211
+ {
212
+ xtmp=find_issuer(ctx, sktmp,x);
213
+ if (xtmp != NULL)
214
+ {
215
+ if (!sk_X509_push(ctx->chain,xtmp))
216
+ {
217
+ X509err(X509_F_X509_VERIFY_CERT,ERR_R_MALLOC_FAILURE);
218
+ goto end;
219
+ }
220
+ CRYPTO_add(&xtmp->references,1,CRYPTO_LOCK_X509);
221
+ (void)sk_X509_delete_ptr(sktmp,xtmp);
222
+ ctx->last_untrusted++;
223
+ x=xtmp;
224
+ num++;
225
+ /* reparse the full chain for
226
+ * the next one */
227
+ continue;
228
+ }
229
+ }
230
+ break;
231
+ }
232
+
233
+ /* at this point, chain should contain a list of untrusted
234
+ * certificates. We now need to add at least one trusted one,
235
+ * if possible, otherwise we complain. */
236
+
237
+ /* Examine last certificate in chain and see if it
238
+ * is self signed.
239
+ */
240
+
241
+ i=sk_X509_num(ctx->chain);
242
+ x=sk_X509_value(ctx->chain,i-1);
243
+ if (ctx->check_issued(ctx, x, x))
244
+ {
245
+ /* we have a self signed certificate */
246
+ if (sk_X509_num(ctx->chain) == 1)
247
+ {
248
+ /* We have a single self signed certificate: see if
249
+ * we can find it in the store. We must have an exact
250
+ * match to avoid possible impersonation.
251
+ */
252
+ ok = ctx->get_issuer(&xtmp, ctx, x);
253
+ if ((ok <= 0) || X509_cmp(x, xtmp))
254
+ {
255
+ ctx->error=X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT;
256
+ ctx->current_cert=x;
257
+ ctx->error_depth=i-1;
258
+ if (ok == 1) X509_free(xtmp);
259
+ bad_chain = 1;
260
+ ok=cb(0,ctx);
261
+ if (!ok) goto end;
262
+ }
263
+ else
264
+ {
265
+ /* We have a match: replace certificate with store version
266
+ * so we get any trust settings.
267
+ */
268
+ X509_free(x);
269
+ x = xtmp;
270
+ (void)sk_X509_set(ctx->chain, i - 1, x);
271
+ ctx->last_untrusted=0;
272
+ }
273
+ }
274
+ else
275
+ {
276
+ /* extract and save self signed certificate for later use */
277
+ chain_ss=sk_X509_pop(ctx->chain);
278
+ ctx->last_untrusted--;
279
+ num--;
280
+ x=sk_X509_value(ctx->chain,num-1);
281
+ }
282
+ }
283
+
284
+ /* We now lookup certs from the certificate store */
285
+ for (;;)
286
+ {
287
+ /* If we have enough, we break */
288
+ if (depth < num) break;
289
+
290
+ /* If we are self signed, we break */
291
+ if (ctx->check_issued(ctx,x,x)) break;
292
+
293
+ ok = ctx->get_issuer(&xtmp, ctx, x);
294
+
295
+ if (ok < 0) return ok;
296
+ if (ok == 0) break;
297
+
298
+ x = xtmp;
299
+ if (!sk_X509_push(ctx->chain,x))
300
+ {
301
+ X509_free(xtmp);
302
+ X509err(X509_F_X509_VERIFY_CERT,ERR_R_MALLOC_FAILURE);
303
+ return 0;
304
+ }
305
+ num++;
306
+ }
307
+
308
+ /* we now have our chain, lets check it... */
309
+
310
+ /* Is last certificate looked up self signed? */
311
+ if (!ctx->check_issued(ctx,x,x))
312
+ {
313
+ if ((chain_ss == NULL) || !ctx->check_issued(ctx, x, chain_ss))
314
+ {
315
+ if (ctx->last_untrusted >= num)
316
+ ctx->error=X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY;
317
+ else
318
+ ctx->error=X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT;
319
+ ctx->current_cert=x;
320
+ }
321
+ else
322
+ {
323
+
324
+ sk_X509_push(ctx->chain,chain_ss);
325
+ num++;
326
+ ctx->last_untrusted=num;
327
+ ctx->current_cert=chain_ss;
328
+ ctx->error=X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN;
329
+ chain_ss=NULL;
330
+ }
331
+
332
+ ctx->error_depth=num-1;
333
+ bad_chain = 1;
334
+ ok=cb(0,ctx);
335
+ if (!ok) goto end;
336
+ }
337
+
338
+ /* We have the chain complete: now we need to check its purpose */
339
+ ok = check_chain_extensions(ctx);
340
+
341
+ if (!ok) goto end;
342
+
343
+ /* Check name constraints */
344
+
345
+ ok = check_name_constraints(ctx);
346
+
347
+ if (!ok) goto end;
348
+
349
+ /* The chain extensions are OK: check trust */
350
+
351
+ if (param->trust > 0) ok = check_trust(ctx);
352
+
353
+ if (!ok) goto end;
354
+
355
+ /* We may as well copy down any DSA parameters that are required */
356
+ X509_get_pubkey_parameters(NULL,ctx->chain);
357
+
358
+ /* Check revocation status: we do this after copying parameters
359
+ * because they may be needed for CRL signature verification.
360
+ */
361
+
362
+ ok = ctx->check_revocation(ctx);
363
+ if(!ok) goto end;
364
+
365
+ /* At this point, we have a chain and need to verify it */
366
+ if (ctx->verify != NULL)
367
+ ok=ctx->verify(ctx);
368
+ else
369
+ ok=internal_verify(ctx);
370
+ if(!ok) goto end;
371
+
372
+ #ifndef OPENSSL_NO_RFC3779
373
+ /* RFC 3779 path validation, now that CRL check has been done */
374
+ ok = v3_asid_validate_path(ctx);
375
+ if (!ok) goto end;
376
+ ok = v3_addr_validate_path(ctx);
377
+ if (!ok) goto end;
378
+ #endif
379
+
380
+ /* If we get this far evaluate policies */
381
+ if (!bad_chain && (ctx->param->flags & X509_V_FLAG_POLICY_CHECK))
382
+ ok = ctx->check_policy(ctx);
383
+ if(!ok) goto end;
384
+ if (0)
385
+ {
386
+ end:
387
+ X509_get_pubkey_parameters(NULL,ctx->chain);
388
+ }
389
+ if (sktmp != NULL) sk_X509_free(sktmp);
390
+ if (chain_ss != NULL) X509_free(chain_ss);
391
+ return ok;
392
+ }
393
+
394
+
395
+ /* Given a STACK_OF(X509) find the issuer of cert (if any)
396
+ */
397
+
398
+ static X509 *find_issuer(X509_STORE_CTX *ctx, STACK_OF(X509) *sk, X509 *x)
399
+ {
400
+ int i;
401
+ X509 *issuer;
402
+ for (i = 0; i < sk_X509_num(sk); i++)
403
+ {
404
+ issuer = sk_X509_value(sk, i);
405
+ if (ctx->check_issued(ctx, x, issuer))
406
+ return issuer;
407
+ }
408
+ return NULL;
409
+ }
410
+
411
+ /* Given a possible certificate and issuer check them */
412
+
413
+ static int check_issued(X509_STORE_CTX *ctx, X509 *x, X509 *issuer)
414
+ {
415
+ int ret;
416
+ ret = X509_check_issued(issuer, x);
417
+ if (ret == X509_V_OK)
418
+ return 1;
419
+ /* If we haven't asked for issuer errors don't set ctx */
420
+ if (!(ctx->param->flags & X509_V_FLAG_CB_ISSUER_CHECK))
421
+ return 0;
422
+
423
+ ctx->error = ret;
424
+ ctx->current_cert = x;
425
+ ctx->current_issuer = issuer;
426
+ return ctx->verify_cb(0, ctx);
427
+ return 0;
428
+ }
429
+
430
+ /* Alternative lookup method: look from a STACK stored in other_ctx */
431
+
432
+ static int get_issuer_sk(X509 **issuer, X509_STORE_CTX *ctx, X509 *x)
433
+ {
434
+ *issuer = find_issuer(ctx, ctx->other_ctx, x);
435
+ if (*issuer)
436
+ {
437
+ CRYPTO_add(&(*issuer)->references,1,CRYPTO_LOCK_X509);
438
+ return 1;
439
+ }
440
+ else
441
+ return 0;
442
+ }
443
+
444
+
445
+ /* Check a certificate chains extensions for consistency
446
+ * with the supplied purpose
447
+ */
448
+
449
+ static int check_chain_extensions(X509_STORE_CTX *ctx)
450
+ {
451
+ #ifdef OPENSSL_NO_CHAIN_VERIFY
452
+ return 1;
453
+ #else
454
+ int i, ok=0, must_be_ca, plen = 0;
455
+ X509 *x;
456
+ int (*cb)(int xok,X509_STORE_CTX *xctx);
457
+ int proxy_path_length = 0;
458
+ int purpose;
459
+ int allow_proxy_certs;
460
+ cb=ctx->verify_cb;
461
+
462
+ /* must_be_ca can have 1 of 3 values:
463
+ -1: we accept both CA and non-CA certificates, to allow direct
464
+ use of self-signed certificates (which are marked as CA).
465
+ 0: we only accept non-CA certificates. This is currently not
466
+ used, but the possibility is present for future extensions.
467
+ 1: we only accept CA certificates. This is currently used for
468
+ all certificates in the chain except the leaf certificate.
469
+ */
470
+ must_be_ca = -1;
471
+
472
+ /* CRL path validation */
473
+ if (ctx->parent)
474
+ {
475
+ allow_proxy_certs = 0;
476
+ purpose = X509_PURPOSE_CRL_SIGN;
477
+ }
478
+ else
479
+ {
480
+ allow_proxy_certs =
481
+ !!(ctx->param->flags & X509_V_FLAG_ALLOW_PROXY_CERTS);
482
+ /* A hack to keep people who don't want to modify their
483
+ software happy */
484
+ if (getenv("OPENSSL_ALLOW_PROXY_CERTS"))
485
+ allow_proxy_certs = 1;
486
+ purpose = ctx->param->purpose;
487
+ }
488
+
489
+ /* Check all untrusted certificates */
490
+ for (i = 0; i < ctx->last_untrusted; i++)
491
+ {
492
+ int ret;
493
+ x = sk_X509_value(ctx->chain, i);
494
+ if (!(ctx->param->flags & X509_V_FLAG_IGNORE_CRITICAL)
495
+ && (x->ex_flags & EXFLAG_CRITICAL))
496
+ {
497
+ ctx->error = X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION;
498
+ ctx->error_depth = i;
499
+ ctx->current_cert = x;
500
+ ok=cb(0,ctx);
501
+ if (!ok) goto end;
502
+ }
503
+ if (!allow_proxy_certs && (x->ex_flags & EXFLAG_PROXY))
504
+ {
505
+ ctx->error = X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED;
506
+ ctx->error_depth = i;
507
+ ctx->current_cert = x;
508
+ ok=cb(0,ctx);
509
+ if (!ok) goto end;
510
+ }
511
+ ret = X509_check_ca(x);
512
+ switch(must_be_ca)
513
+ {
514
+ case -1:
515
+ if ((ctx->param->flags & X509_V_FLAG_X509_STRICT)
516
+ && (ret != 1) && (ret != 0))
517
+ {
518
+ ret = 0;
519
+ ctx->error = X509_V_ERR_INVALID_CA;
520
+ }
521
+ else
522
+ ret = 1;
523
+ break;
524
+ case 0:
525
+ if (ret != 0)
526
+ {
527
+ ret = 0;
528
+ ctx->error = X509_V_ERR_INVALID_NON_CA;
529
+ }
530
+ else
531
+ ret = 1;
532
+ break;
533
+ default:
534
+ if ((ret == 0)
535
+ || ((ctx->param->flags & X509_V_FLAG_X509_STRICT)
536
+ && (ret != 1)))
537
+ {
538
+ ret = 0;
539
+ ctx->error = X509_V_ERR_INVALID_CA;
540
+ }
541
+ else
542
+ ret = 1;
543
+ break;
544
+ }
545
+ if (ret == 0)
546
+ {
547
+ ctx->error_depth = i;
548
+ ctx->current_cert = x;
549
+ ok=cb(0,ctx);
550
+ if (!ok) goto end;
551
+ }
552
+ if (ctx->param->purpose > 0)
553
+ {
554
+ ret = X509_check_purpose(x, purpose, must_be_ca > 0);
555
+ if ((ret == 0)
556
+ || ((ctx->param->flags & X509_V_FLAG_X509_STRICT)
557
+ && (ret != 1)))
558
+ {
559
+ ctx->error = X509_V_ERR_INVALID_PURPOSE;
560
+ ctx->error_depth = i;
561
+ ctx->current_cert = x;
562
+ ok=cb(0,ctx);
563
+ if (!ok) goto end;
564
+ }
565
+ }
566
+ /* Check pathlen if not self issued */
567
+ if ((i > 1) && !(x->ex_flags & EXFLAG_SI)
568
+ && (x->ex_pathlen != -1)
569
+ && (plen > (x->ex_pathlen + proxy_path_length + 1)))
570
+ {
571
+ ctx->error = X509_V_ERR_PATH_LENGTH_EXCEEDED;
572
+ ctx->error_depth = i;
573
+ ctx->current_cert = x;
574
+ ok=cb(0,ctx);
575
+ if (!ok) goto end;
576
+ }
577
+ /* Increment path length if not self issued */
578
+ if (!(x->ex_flags & EXFLAG_SI))
579
+ plen++;
580
+ /* If this certificate is a proxy certificate, the next
581
+ certificate must be another proxy certificate or a EE
582
+ certificate. If not, the next certificate must be a
583
+ CA certificate. */
584
+ if (x->ex_flags & EXFLAG_PROXY)
585
+ {
586
+ if (x->ex_pcpathlen != -1 && i > x->ex_pcpathlen)
587
+ {
588
+ ctx->error =
589
+ X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED;
590
+ ctx->error_depth = i;
591
+ ctx->current_cert = x;
592
+ ok=cb(0,ctx);
593
+ if (!ok) goto end;
594
+ }
595
+ proxy_path_length++;
596
+ must_be_ca = 0;
597
+ }
598
+ else
599
+ must_be_ca = 1;
600
+ }
601
+ ok = 1;
602
+ end:
603
+ return ok;
604
+ #endif
605
+ }
606
+
607
+ static int check_name_constraints(X509_STORE_CTX *ctx)
608
+ {
609
+ X509 *x;
610
+ int i, j, rv;
611
+ /* Check name constraints for all certificates */
612
+ for (i = sk_X509_num(ctx->chain) - 1; i >= 0; i--)
613
+ {
614
+ x = sk_X509_value(ctx->chain, i);
615
+ /* Ignore self issued certs unless last in chain */
616
+ if (i && (x->ex_flags & EXFLAG_SI))
617
+ continue;
618
+ /* Check against constraints for all certificates higher in
619
+ * chain including trust anchor. Trust anchor not strictly
620
+ * speaking needed but if it includes constraints it is to be
621
+ * assumed it expects them to be obeyed.
622
+ */
623
+ for (j = sk_X509_num(ctx->chain) - 1; j > i; j--)
624
+ {
625
+ NAME_CONSTRAINTS *nc = sk_X509_value(ctx->chain, j)->nc;
626
+ if (nc)
627
+ {
628
+ rv = NAME_CONSTRAINTS_check(x, nc);
629
+ if (rv != X509_V_OK)
630
+ {
631
+ ctx->error = rv;
632
+ ctx->error_depth = i;
633
+ ctx->current_cert = x;
634
+ if (!ctx->verify_cb(0,ctx))
635
+ return 0;
636
+ }
637
+ }
638
+ }
639
+ }
640
+ return 1;
641
+ }
642
+
643
+ static int check_trust(X509_STORE_CTX *ctx)
644
+ {
645
+ #ifdef OPENSSL_NO_CHAIN_VERIFY
646
+ return 1;
647
+ #else
648
+ int i, ok;
649
+ X509 *x;
650
+ int (*cb)(int xok,X509_STORE_CTX *xctx);
651
+ cb=ctx->verify_cb;
652
+ /* For now just check the last certificate in the chain */
653
+ i = sk_X509_num(ctx->chain) - 1;
654
+ x = sk_X509_value(ctx->chain, i);
655
+ ok = X509_check_trust(x, ctx->param->trust, 0);
656
+ if (ok == X509_TRUST_TRUSTED)
657
+ return 1;
658
+ ctx->error_depth = i;
659
+ ctx->current_cert = x;
660
+ if (ok == X509_TRUST_REJECTED)
661
+ ctx->error = X509_V_ERR_CERT_REJECTED;
662
+ else
663
+ ctx->error = X509_V_ERR_CERT_UNTRUSTED;
664
+ ok = cb(0, ctx);
665
+ return ok;
666
+ #endif
667
+ }
668
+
669
+ static int check_revocation(X509_STORE_CTX *ctx)
670
+ {
671
+ int i, last, ok;
672
+ if (!(ctx->param->flags & X509_V_FLAG_CRL_CHECK))
673
+ return 1;
674
+ if (ctx->param->flags & X509_V_FLAG_CRL_CHECK_ALL)
675
+ last = sk_X509_num(ctx->chain) - 1;
676
+ else
677
+ {
678
+ /* If checking CRL paths this isn't the EE certificate */
679
+ if (ctx->parent)
680
+ return 1;
681
+ last = 0;
682
+ }
683
+ for(i = 0; i <= last; i++)
684
+ {
685
+ ctx->error_depth = i;
686
+ ok = check_cert(ctx);
687
+ if (!ok) return ok;
688
+ }
689
+ return 1;
690
+ }
691
+
692
+ static int check_cert(X509_STORE_CTX *ctx)
693
+ {
694
+ X509_CRL *crl = NULL, *dcrl = NULL;
695
+ X509 *x;
696
+ int ok, cnum;
697
+ cnum = ctx->error_depth;
698
+ x = sk_X509_value(ctx->chain, cnum);
699
+ ctx->current_cert = x;
700
+ ctx->current_issuer = NULL;
701
+ ctx->current_crl_score = 0;
702
+ ctx->current_reasons = 0;
703
+ while (ctx->current_reasons != CRLDP_ALL_REASONS)
704
+ {
705
+ /* Try to retrieve relevant CRL */
706
+ if (ctx->get_crl)
707
+ ok = ctx->get_crl(ctx, &crl, x);
708
+ else
709
+ ok = get_crl_delta(ctx, &crl, &dcrl, x);
710
+ /* If error looking up CRL, nothing we can do except
711
+ * notify callback
712
+ */
713
+ if(!ok)
714
+ {
715
+ ctx->error = X509_V_ERR_UNABLE_TO_GET_CRL;
716
+ ok = ctx->verify_cb(0, ctx);
717
+ goto err;
718
+ }
719
+ ctx->current_crl = crl;
720
+ ok = ctx->check_crl(ctx, crl);
721
+ if (!ok)
722
+ goto err;
723
+
724
+ if (dcrl)
725
+ {
726
+ ok = ctx->check_crl(ctx, dcrl);
727
+ if (!ok)
728
+ goto err;
729
+ ok = ctx->cert_crl(ctx, dcrl, x);
730
+ if (!ok)
731
+ goto err;
732
+ }
733
+ else
734
+ ok = 1;
735
+
736
+ /* Don't look in full CRL if delta reason is removefromCRL */
737
+ if (ok != 2)
738
+ {
739
+ ok = ctx->cert_crl(ctx, crl, x);
740
+ if (!ok)
741
+ goto err;
742
+ }
743
+
744
+ X509_CRL_free(crl);
745
+ X509_CRL_free(dcrl);
746
+ crl = NULL;
747
+ dcrl = NULL;
748
+ }
749
+ err:
750
+ X509_CRL_free(crl);
751
+ X509_CRL_free(dcrl);
752
+
753
+ ctx->current_crl = NULL;
754
+ return ok;
755
+
756
+ }
757
+
758
+ /* Check CRL times against values in X509_STORE_CTX */
759
+
760
+ static int check_crl_time(X509_STORE_CTX *ctx, X509_CRL *crl, int notify)
761
+ {
762
+ time_t *ptime;
763
+ int i;
764
+ if (notify)
765
+ ctx->current_crl = crl;
766
+ if (ctx->param->flags & X509_V_FLAG_USE_CHECK_TIME)
767
+ ptime = &ctx->param->check_time;
768
+ else
769
+ ptime = NULL;
770
+
771
+ i=X509_cmp_time(X509_CRL_get_lastUpdate(crl), ptime);
772
+ if (i == 0)
773
+ {
774
+ if (!notify)
775
+ return 0;
776
+ ctx->error=X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD;
777
+ if (!ctx->verify_cb(0, ctx))
778
+ return 0;
779
+ }
780
+
781
+ if (i > 0)
782
+ {
783
+ if (!notify)
784
+ return 0;
785
+ ctx->error=X509_V_ERR_CRL_NOT_YET_VALID;
786
+ if (!ctx->verify_cb(0, ctx))
787
+ return 0;
788
+ }
789
+
790
+ if(X509_CRL_get_nextUpdate(crl))
791
+ {
792
+ i=X509_cmp_time(X509_CRL_get_nextUpdate(crl), ptime);
793
+
794
+ if (i == 0)
795
+ {
796
+ if (!notify)
797
+ return 0;
798
+ ctx->error=X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD;
799
+ if (!ctx->verify_cb(0, ctx))
800
+ return 0;
801
+ }
802
+ /* Ignore expiry of base CRL is delta is valid */
803
+ if ((i < 0) && !(ctx->current_crl_score & CRL_SCORE_TIME_DELTA))
804
+ {
805
+ if (!notify)
806
+ return 0;
807
+ ctx->error=X509_V_ERR_CRL_HAS_EXPIRED;
808
+ if (!ctx->verify_cb(0, ctx))
809
+ return 0;
810
+ }
811
+ }
812
+
813
+ if (notify)
814
+ ctx->current_crl = NULL;
815
+
816
+ return 1;
817
+ }
818
+
819
+ static int get_crl_sk(X509_STORE_CTX *ctx, X509_CRL **pcrl, X509_CRL **pdcrl,
820
+ X509 **pissuer, int *pscore, unsigned int *preasons,
821
+ STACK_OF(X509_CRL) *crls)
822
+ {
823
+ int i, crl_score, best_score = *pscore;
824
+ unsigned int reasons, best_reasons = 0;
825
+ X509 *x = ctx->current_cert;
826
+ X509_CRL *crl, *best_crl = NULL;
827
+ X509 *crl_issuer = NULL, *best_crl_issuer = NULL;
828
+
829
+ for (i = 0; i < sk_X509_CRL_num(crls); i++)
830
+ {
831
+ crl = sk_X509_CRL_value(crls, i);
832
+ reasons = *preasons;
833
+ crl_score = get_crl_score(ctx, &crl_issuer, &reasons, crl, x);
834
+
835
+ if (crl_score > best_score)
836
+ {
837
+ best_crl = crl;
838
+ best_crl_issuer = crl_issuer;
839
+ best_score = crl_score;
840
+ best_reasons = reasons;
841
+ }
842
+ }
843
+
844
+ if (best_crl)
845
+ {
846
+ if (*pcrl)
847
+ X509_CRL_free(*pcrl);
848
+ *pcrl = best_crl;
849
+ *pissuer = best_crl_issuer;
850
+ *pscore = best_score;
851
+ *preasons = best_reasons;
852
+ CRYPTO_add(&best_crl->references, 1, CRYPTO_LOCK_X509_CRL);
853
+ if (*pdcrl)
854
+ {
855
+ X509_CRL_free(*pdcrl);
856
+ *pdcrl = NULL;
857
+ }
858
+ get_delta_sk(ctx, pdcrl, pscore, best_crl, crls);
859
+ }
860
+
861
+ if (best_score >= CRL_SCORE_VALID)
862
+ return 1;
863
+
864
+ return 0;
865
+ }
866
+
867
+ /* Compare two CRL extensions for delta checking purposes. They should be
868
+ * both present or both absent. If both present all fields must be identical.
869
+ */
870
+
871
+ static int crl_extension_match(X509_CRL *a, X509_CRL *b, int nid)
872
+ {
873
+ ASN1_OCTET_STRING *exta, *extb;
874
+ int i;
875
+ i = X509_CRL_get_ext_by_NID(a, nid, 0);
876
+ if (i >= 0)
877
+ {
878
+ /* Can't have multiple occurrences */
879
+ if (X509_CRL_get_ext_by_NID(a, nid, i) != -1)
880
+ return 0;
881
+ exta = X509_EXTENSION_get_data(X509_CRL_get_ext(a, i));
882
+ }
883
+ else
884
+ exta = NULL;
885
+
886
+ i = X509_CRL_get_ext_by_NID(b, nid, 0);
887
+
888
+ if (i >= 0)
889
+ {
890
+
891
+ if (X509_CRL_get_ext_by_NID(b, nid, i) != -1)
892
+ return 0;
893
+ extb = X509_EXTENSION_get_data(X509_CRL_get_ext(b, i));
894
+ }
895
+ else
896
+ extb = NULL;
897
+
898
+ if (!exta && !extb)
899
+ return 1;
900
+
901
+ if (!exta || !extb)
902
+ return 0;
903
+
904
+
905
+ if (ASN1_OCTET_STRING_cmp(exta, extb))
906
+ return 0;
907
+
908
+ return 1;
909
+ }
910
+
911
+ /* See if a base and delta are compatible */
912
+
913
+ static int check_delta_base(X509_CRL *delta, X509_CRL *base)
914
+ {
915
+ /* Delta CRL must be a delta */
916
+ if (!delta->base_crl_number)
917
+ return 0;
918
+ /* Base must have a CRL number */
919
+ if (!base->crl_number)
920
+ return 0;
921
+ /* Issuer names must match */
922
+ if (X509_NAME_cmp(X509_CRL_get_issuer(base),
923
+ X509_CRL_get_issuer(delta)))
924
+ return 0;
925
+ /* AKID and IDP must match */
926
+ if (!crl_extension_match(delta, base, NID_authority_key_identifier))
927
+ return 0;
928
+ if (!crl_extension_match(delta, base, NID_issuing_distribution_point))
929
+ return 0;
930
+ /* Delta CRL base number must not exceed Full CRL number. */
931
+ if (ASN1_INTEGER_cmp(delta->base_crl_number, base->crl_number) > 0)
932
+ return 0;
933
+ /* Delta CRL number must exceed full CRL number */
934
+ if (ASN1_INTEGER_cmp(delta->crl_number, base->crl_number) > 0)
935
+ return 1;
936
+ return 0;
937
+ }
938
+
939
+ /* For a given base CRL find a delta... maybe extend to delta scoring
940
+ * or retrieve a chain of deltas...
941
+ */
942
+
943
+ static void get_delta_sk(X509_STORE_CTX *ctx, X509_CRL **dcrl, int *pscore,
944
+ X509_CRL *base, STACK_OF(X509_CRL) *crls)
945
+ {
946
+ X509_CRL *delta;
947
+ int i;
948
+ if (!(ctx->param->flags & X509_V_FLAG_USE_DELTAS))
949
+ return;
950
+ if (!((ctx->current_cert->ex_flags | base->flags) & EXFLAG_FRESHEST))
951
+ return;
952
+ for (i = 0; i < sk_X509_CRL_num(crls); i++)
953
+ {
954
+ delta = sk_X509_CRL_value(crls, i);
955
+ if (check_delta_base(delta, base))
956
+ {
957
+ if (check_crl_time(ctx, delta, 0))
958
+ *pscore |= CRL_SCORE_TIME_DELTA;
959
+ CRYPTO_add(&delta->references, 1, CRYPTO_LOCK_X509_CRL);
960
+ *dcrl = delta;
961
+ return;
962
+ }
963
+ }
964
+ *dcrl = NULL;
965
+ }
966
+
967
+ /* For a given CRL return how suitable it is for the supplied certificate 'x'.
968
+ * The return value is a mask of several criteria.
969
+ * If the issuer is not the certificate issuer this is returned in *pissuer.
970
+ * The reasons mask is also used to determine if the CRL is suitable: if
971
+ * no new reasons the CRL is rejected, otherwise reasons is updated.
972
+ */
973
+
974
+ static int get_crl_score(X509_STORE_CTX *ctx, X509 **pissuer,
975
+ unsigned int *preasons,
976
+ X509_CRL *crl, X509 *x)
977
+ {
978
+
979
+ int crl_score = 0;
980
+ unsigned int tmp_reasons = *preasons, crl_reasons;
981
+
982
+ /* First see if we can reject CRL straight away */
983
+
984
+ /* Invalid IDP cannot be processed */
985
+ if (crl->idp_flags & IDP_INVALID)
986
+ return 0;
987
+ /* Reason codes or indirect CRLs need extended CRL support */
988
+ if (!(ctx->param->flags & X509_V_FLAG_EXTENDED_CRL_SUPPORT))
989
+ {
990
+ if (crl->idp_flags & (IDP_INDIRECT | IDP_REASONS))
991
+ return 0;
992
+ }
993
+ else if (crl->idp_flags & IDP_REASONS)
994
+ {
995
+ /* If no new reasons reject */
996
+ if (!(crl->idp_reasons & ~tmp_reasons))
997
+ return 0;
998
+ }
999
+ /* Don't process deltas at this stage */
1000
+ else if (crl->base_crl_number)
1001
+ return 0;
1002
+ /* If issuer name doesn't match certificate need indirect CRL */
1003
+ if (X509_NAME_cmp(X509_get_issuer_name(x), X509_CRL_get_issuer(crl)))
1004
+ {
1005
+ if (!(crl->idp_flags & IDP_INDIRECT))
1006
+ return 0;
1007
+ }
1008
+ else
1009
+ crl_score |= CRL_SCORE_ISSUER_NAME;
1010
+
1011
+ if (!(crl->flags & EXFLAG_CRITICAL))
1012
+ crl_score |= CRL_SCORE_NOCRITICAL;
1013
+
1014
+ /* Check expiry */
1015
+ if (check_crl_time(ctx, crl, 0))
1016
+ crl_score |= CRL_SCORE_TIME;
1017
+
1018
+ /* Check authority key ID and locate certificate issuer */
1019
+ crl_akid_check(ctx, crl, pissuer, &crl_score);
1020
+
1021
+ /* If we can't locate certificate issuer at this point forget it */
1022
+
1023
+ if (!(crl_score & CRL_SCORE_AKID))
1024
+ return 0;
1025
+
1026
+ /* Check cert for matching CRL distribution points */
1027
+
1028
+ if (crl_crldp_check(x, crl, crl_score, &crl_reasons))
1029
+ {
1030
+ /* If no new reasons reject */
1031
+ if (!(crl_reasons & ~tmp_reasons))
1032
+ return 0;
1033
+ tmp_reasons |= crl_reasons;
1034
+ crl_score |= CRL_SCORE_SCOPE;
1035
+ }
1036
+
1037
+ *preasons = tmp_reasons;
1038
+
1039
+ return crl_score;
1040
+
1041
+ }
1042
+
1043
+ static void crl_akid_check(X509_STORE_CTX *ctx, X509_CRL *crl,
1044
+ X509 **pissuer, int *pcrl_score)
1045
+ {
1046
+ X509 *crl_issuer = NULL;
1047
+ X509_NAME *cnm = X509_CRL_get_issuer(crl);
1048
+ int cidx = ctx->error_depth;
1049
+ int i;
1050
+
1051
+ if (cidx != sk_X509_num(ctx->chain) - 1)
1052
+ cidx++;
1053
+
1054
+ crl_issuer = sk_X509_value(ctx->chain, cidx);
1055
+
1056
+ if (X509_check_akid(crl_issuer, crl->akid) == X509_V_OK)
1057
+ {
1058
+ if (*pcrl_score & CRL_SCORE_ISSUER_NAME)
1059
+ {
1060
+ *pcrl_score |= CRL_SCORE_AKID|CRL_SCORE_ISSUER_CERT;
1061
+ *pissuer = crl_issuer;
1062
+ return;
1063
+ }
1064
+ }
1065
+
1066
+ for (cidx++; cidx < sk_X509_num(ctx->chain); cidx++)
1067
+ {
1068
+ crl_issuer = sk_X509_value(ctx->chain, cidx);
1069
+ if (X509_NAME_cmp(X509_get_subject_name(crl_issuer), cnm))
1070
+ continue;
1071
+ if (X509_check_akid(crl_issuer, crl->akid) == X509_V_OK)
1072
+ {
1073
+ *pcrl_score |= CRL_SCORE_AKID|CRL_SCORE_SAME_PATH;
1074
+ *pissuer = crl_issuer;
1075
+ return;
1076
+ }
1077
+ }
1078
+
1079
+ /* Anything else needs extended CRL support */
1080
+
1081
+ if (!(ctx->param->flags & X509_V_FLAG_EXTENDED_CRL_SUPPORT))
1082
+ return;
1083
+
1084
+ /* Otherwise the CRL issuer is not on the path. Look for it in the
1085
+ * set of untrusted certificates.
1086
+ */
1087
+ for (i = 0; i < sk_X509_num(ctx->untrusted); i++)
1088
+ {
1089
+ crl_issuer = sk_X509_value(ctx->untrusted, i);
1090
+ if (X509_NAME_cmp(X509_get_subject_name(crl_issuer), cnm))
1091
+ continue;
1092
+ if (X509_check_akid(crl_issuer, crl->akid) == X509_V_OK)
1093
+ {
1094
+ *pissuer = crl_issuer;
1095
+ *pcrl_score |= CRL_SCORE_AKID;
1096
+ return;
1097
+ }
1098
+ }
1099
+ }
1100
+
1101
+ /* Check the path of a CRL issuer certificate. This creates a new
1102
+ * X509_STORE_CTX and populates it with most of the parameters from the
1103
+ * parent. This could be optimised somewhat since a lot of path checking
1104
+ * will be duplicated by the parent, but this will rarely be used in
1105
+ * practice.
1106
+ */
1107
+
1108
+ static int check_crl_path(X509_STORE_CTX *ctx, X509 *x)
1109
+ {
1110
+ X509_STORE_CTX crl_ctx;
1111
+ int ret;
1112
+ /* Don't allow recursive CRL path validation */
1113
+ if (ctx->parent)
1114
+ return 0;
1115
+ if (!X509_STORE_CTX_init(&crl_ctx, ctx->ctx, x, ctx->untrusted))
1116
+ return -1;
1117
+
1118
+ crl_ctx.crls = ctx->crls;
1119
+ /* Copy verify params across */
1120
+ X509_STORE_CTX_set0_param(&crl_ctx, ctx->param);
1121
+
1122
+ crl_ctx.parent = ctx;
1123
+ crl_ctx.verify_cb = ctx->verify_cb;
1124
+
1125
+ /* Verify CRL issuer */
1126
+ ret = X509_verify_cert(&crl_ctx);
1127
+
1128
+ if (ret <= 0)
1129
+ goto err;
1130
+
1131
+ /* Check chain is acceptable */
1132
+
1133
+ ret = check_crl_chain(ctx, ctx->chain, crl_ctx.chain);
1134
+ err:
1135
+ X509_STORE_CTX_cleanup(&crl_ctx);
1136
+ return ret;
1137
+ }
1138
+
1139
+ /* RFC3280 says nothing about the relationship between CRL path
1140
+ * and certificate path, which could lead to situations where a
1141
+ * certificate could be revoked or validated by a CA not authorised
1142
+ * to do so. RFC5280 is more strict and states that the two paths must
1143
+ * end in the same trust anchor, though some discussions remain...
1144
+ * until this is resolved we use the RFC5280 version
1145
+ */
1146
+
1147
+ static int check_crl_chain(X509_STORE_CTX *ctx,
1148
+ STACK_OF(X509) *cert_path,
1149
+ STACK_OF(X509) *crl_path)
1150
+ {
1151
+ X509 *cert_ta, *crl_ta;
1152
+ cert_ta = sk_X509_value(cert_path, sk_X509_num(cert_path) - 1);
1153
+ crl_ta = sk_X509_value(crl_path, sk_X509_num(crl_path) - 1);
1154
+ if (!X509_cmp(cert_ta, crl_ta))
1155
+ return 1;
1156
+ return 0;
1157
+ }
1158
+
1159
+ /* Check for match between two dist point names: three separate cases.
1160
+ * 1. Both are relative names and compare X509_NAME types.
1161
+ * 2. One full, one relative. Compare X509_NAME to GENERAL_NAMES.
1162
+ * 3. Both are full names and compare two GENERAL_NAMES.
1163
+ * 4. One is NULL: automatic match.
1164
+ */
1165
+
1166
+
1167
+ static int idp_check_dp(DIST_POINT_NAME *a, DIST_POINT_NAME *b)
1168
+ {
1169
+ X509_NAME *nm = NULL;
1170
+ GENERAL_NAMES *gens = NULL;
1171
+ GENERAL_NAME *gena, *genb;
1172
+ int i, j;
1173
+ if (!a || !b)
1174
+ return 1;
1175
+ if (a->type == 1)
1176
+ {
1177
+ if (!a->dpname)
1178
+ return 0;
1179
+ /* Case 1: two X509_NAME */
1180
+ if (b->type == 1)
1181
+ {
1182
+ if (!b->dpname)
1183
+ return 0;
1184
+ if (!X509_NAME_cmp(a->dpname, b->dpname))
1185
+ return 1;
1186
+ else
1187
+ return 0;
1188
+ }
1189
+ /* Case 2: set name and GENERAL_NAMES appropriately */
1190
+ nm = a->dpname;
1191
+ gens = b->name.fullname;
1192
+ }
1193
+ else if (b->type == 1)
1194
+ {
1195
+ if (!b->dpname)
1196
+ return 0;
1197
+ /* Case 2: set name and GENERAL_NAMES appropriately */
1198
+ gens = a->name.fullname;
1199
+ nm = b->dpname;
1200
+ }
1201
+
1202
+ /* Handle case 2 with one GENERAL_NAMES and one X509_NAME */
1203
+ if (nm)
1204
+ {
1205
+ for (i = 0; i < sk_GENERAL_NAME_num(gens); i++)
1206
+ {
1207
+ gena = sk_GENERAL_NAME_value(gens, i);
1208
+ if (gena->type != GEN_DIRNAME)
1209
+ continue;
1210
+ if (!X509_NAME_cmp(nm, gena->d.directoryName))
1211
+ return 1;
1212
+ }
1213
+ return 0;
1214
+ }
1215
+
1216
+ /* Else case 3: two GENERAL_NAMES */
1217
+
1218
+ for (i = 0; i < sk_GENERAL_NAME_num(a->name.fullname); i++)
1219
+ {
1220
+ gena = sk_GENERAL_NAME_value(a->name.fullname, i);
1221
+ for (j = 0; j < sk_GENERAL_NAME_num(b->name.fullname); j++)
1222
+ {
1223
+ genb = sk_GENERAL_NAME_value(b->name.fullname, j);
1224
+ if (!GENERAL_NAME_cmp(gena, genb))
1225
+ return 1;
1226
+ }
1227
+ }
1228
+
1229
+ return 0;
1230
+
1231
+ }
1232
+
1233
+ static int crldp_check_crlissuer(DIST_POINT *dp, X509_CRL *crl, int crl_score)
1234
+ {
1235
+ int i;
1236
+ X509_NAME *nm = X509_CRL_get_issuer(crl);
1237
+ /* If no CRLissuer return is successful iff don't need a match */
1238
+ if (!dp->CRLissuer)
1239
+ return !!(crl_score & CRL_SCORE_ISSUER_NAME);
1240
+ for (i = 0; i < sk_GENERAL_NAME_num(dp->CRLissuer); i++)
1241
+ {
1242
+ GENERAL_NAME *gen = sk_GENERAL_NAME_value(dp->CRLissuer, i);
1243
+ if (gen->type != GEN_DIRNAME)
1244
+ continue;
1245
+ if (!X509_NAME_cmp(gen->d.directoryName, nm))
1246
+ return 1;
1247
+ }
1248
+ return 0;
1249
+ }
1250
+
1251
+ /* Check CRLDP and IDP */
1252
+
1253
+ static int crl_crldp_check(X509 *x, X509_CRL *crl, int crl_score,
1254
+ unsigned int *preasons)
1255
+ {
1256
+ int i;
1257
+ if (crl->idp_flags & IDP_ONLYATTR)
1258
+ return 0;
1259
+ if (x->ex_flags & EXFLAG_CA)
1260
+ {
1261
+ if (crl->idp_flags & IDP_ONLYUSER)
1262
+ return 0;
1263
+ }
1264
+ else
1265
+ {
1266
+ if (crl->idp_flags & IDP_ONLYCA)
1267
+ return 0;
1268
+ }
1269
+ *preasons = crl->idp_reasons;
1270
+ for (i = 0; i < sk_DIST_POINT_num(x->crldp); i++)
1271
+ {
1272
+ DIST_POINT *dp = sk_DIST_POINT_value(x->crldp, i);
1273
+ if (crldp_check_crlissuer(dp, crl, crl_score))
1274
+ {
1275
+ if (!crl->idp ||
1276
+ idp_check_dp(dp->distpoint, crl->idp->distpoint))
1277
+ {
1278
+ *preasons &= dp->dp_reasons;
1279
+ return 1;
1280
+ }
1281
+ }
1282
+ }
1283
+ if ((!crl->idp || !crl->idp->distpoint) && (crl_score & CRL_SCORE_ISSUER_NAME))
1284
+ return 1;
1285
+ return 0;
1286
+ }
1287
+
1288
+ /* Retrieve CRL corresponding to current certificate.
1289
+ * If deltas enabled try to find a delta CRL too
1290
+ */
1291
+
1292
+ static int get_crl_delta(X509_STORE_CTX *ctx,
1293
+ X509_CRL **pcrl, X509_CRL **pdcrl, X509 *x)
1294
+ {
1295
+ int ok;
1296
+ X509 *issuer = NULL;
1297
+ int crl_score = 0;
1298
+ unsigned int reasons;
1299
+ X509_CRL *crl = NULL, *dcrl = NULL;
1300
+ STACK_OF(X509_CRL) *skcrl;
1301
+ X509_NAME *nm = X509_get_issuer_name(x);
1302
+ reasons = ctx->current_reasons;
1303
+ ok = get_crl_sk(ctx, &crl, &dcrl,
1304
+ &issuer, &crl_score, &reasons, ctx->crls);
1305
+
1306
+ if (ok)
1307
+ goto done;
1308
+
1309
+ /* Lookup CRLs from store */
1310
+
1311
+ skcrl = ctx->lookup_crls(ctx, nm);
1312
+
1313
+ /* If no CRLs found and a near match from get_crl_sk use that */
1314
+ if (!skcrl && crl)
1315
+ goto done;
1316
+
1317
+ get_crl_sk(ctx, &crl, &dcrl, &issuer, &crl_score, &reasons, skcrl);
1318
+
1319
+ sk_X509_CRL_pop_free(skcrl, X509_CRL_free);
1320
+
1321
+ done:
1322
+
1323
+ /* If we got any kind of CRL use it and return success */
1324
+ if (crl)
1325
+ {
1326
+ ctx->current_issuer = issuer;
1327
+ ctx->current_crl_score = crl_score;
1328
+ ctx->current_reasons = reasons;
1329
+ *pcrl = crl;
1330
+ *pdcrl = dcrl;
1331
+ return 1;
1332
+ }
1333
+
1334
+ return 0;
1335
+ }
1336
+
1337
+ /* Check CRL validity */
1338
+ static int check_crl(X509_STORE_CTX *ctx, X509_CRL *crl)
1339
+ {
1340
+ X509 *issuer = NULL;
1341
+ EVP_PKEY *ikey = NULL;
1342
+ int ok = 0, chnum, cnum;
1343
+ cnum = ctx->error_depth;
1344
+ chnum = sk_X509_num(ctx->chain) - 1;
1345
+ /* if we have an alternative CRL issuer cert use that */
1346
+ if (ctx->current_issuer)
1347
+ issuer = ctx->current_issuer;
1348
+
1349
+ /* Else find CRL issuer: if not last certificate then issuer
1350
+ * is next certificate in chain.
1351
+ */
1352
+ else if (cnum < chnum)
1353
+ issuer = sk_X509_value(ctx->chain, cnum + 1);
1354
+ else
1355
+ {
1356
+ issuer = sk_X509_value(ctx->chain, chnum);
1357
+ /* If not self signed, can't check signature */
1358
+ if(!ctx->check_issued(ctx, issuer, issuer))
1359
+ {
1360
+ ctx->error = X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER;
1361
+ ok = ctx->verify_cb(0, ctx);
1362
+ if(!ok) goto err;
1363
+ }
1364
+ }
1365
+
1366
+ if(issuer)
1367
+ {
1368
+ /* Skip most tests for deltas because they have already
1369
+ * been done
1370
+ */
1371
+ if (!crl->base_crl_number)
1372
+ {
1373
+ /* Check for cRLSign bit if keyUsage present */
1374
+ if ((issuer->ex_flags & EXFLAG_KUSAGE) &&
1375
+ !(issuer->ex_kusage & KU_CRL_SIGN))
1376
+ {
1377
+ ctx->error = X509_V_ERR_KEYUSAGE_NO_CRL_SIGN;
1378
+ ok = ctx->verify_cb(0, ctx);
1379
+ if(!ok) goto err;
1380
+ }
1381
+
1382
+ if (!(ctx->current_crl_score & CRL_SCORE_SCOPE))
1383
+ {
1384
+ ctx->error = X509_V_ERR_DIFFERENT_CRL_SCOPE;
1385
+ ok = ctx->verify_cb(0, ctx);
1386
+ if(!ok) goto err;
1387
+ }
1388
+
1389
+ if (!(ctx->current_crl_score & CRL_SCORE_SAME_PATH))
1390
+ {
1391
+ if (check_crl_path(ctx, ctx->current_issuer) <= 0)
1392
+ {
1393
+ ctx->error = X509_V_ERR_CRL_PATH_VALIDATION_ERROR;
1394
+ ok = ctx->verify_cb(0, ctx);
1395
+ if(!ok) goto err;
1396
+ }
1397
+ }
1398
+
1399
+ if (crl->idp_flags & IDP_INVALID)
1400
+ {
1401
+ ctx->error = X509_V_ERR_INVALID_EXTENSION;
1402
+ ok = ctx->verify_cb(0, ctx);
1403
+ if(!ok) goto err;
1404
+ }
1405
+
1406
+
1407
+ }
1408
+
1409
+ if (!(ctx->current_crl_score & CRL_SCORE_TIME))
1410
+ {
1411
+ ok = check_crl_time(ctx, crl, 1);
1412
+ if (!ok)
1413
+ goto err;
1414
+ }
1415
+
1416
+ /* Attempt to get issuer certificate public key */
1417
+ ikey = X509_get_pubkey(issuer);
1418
+
1419
+ if(!ikey)
1420
+ {
1421
+ ctx->error=X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY;
1422
+ ok = ctx->verify_cb(0, ctx);
1423
+ if (!ok) goto err;
1424
+ }
1425
+ else
1426
+ {
1427
+ /* Verify CRL signature */
1428
+ if(X509_CRL_verify(crl, ikey) <= 0)
1429
+ {
1430
+ ctx->error=X509_V_ERR_CRL_SIGNATURE_FAILURE;
1431
+ ok = ctx->verify_cb(0, ctx);
1432
+ if (!ok) goto err;
1433
+ }
1434
+ }
1435
+ }
1436
+
1437
+ ok = 1;
1438
+
1439
+ err:
1440
+ EVP_PKEY_free(ikey);
1441
+ return ok;
1442
+ }
1443
+
1444
+ /* Check certificate against CRL */
1445
+ static int cert_crl(X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x)
1446
+ {
1447
+ int ok;
1448
+ X509_REVOKED *rev;
1449
+ /* The rules changed for this... previously if a CRL contained
1450
+ * unhandled critical extensions it could still be used to indicate
1451
+ * a certificate was revoked. This has since been changed since
1452
+ * critical extension can change the meaning of CRL entries.
1453
+ */
1454
+ if (crl->flags & EXFLAG_CRITICAL)
1455
+ {
1456
+ if (ctx->param->flags & X509_V_FLAG_IGNORE_CRITICAL)
1457
+ return 1;
1458
+ ctx->error = X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION;
1459
+ ok = ctx->verify_cb(0, ctx);
1460
+ if(!ok)
1461
+ return 0;
1462
+ }
1463
+ /* Look for serial number of certificate in CRL
1464
+ * If found make sure reason is not removeFromCRL.
1465
+ */
1466
+ if (X509_CRL_get0_by_cert(crl, &rev, x))
1467
+ {
1468
+ if (rev->reason == CRL_REASON_REMOVE_FROM_CRL)
1469
+ return 2;
1470
+ ctx->error = X509_V_ERR_CERT_REVOKED;
1471
+ ok = ctx->verify_cb(0, ctx);
1472
+ if (!ok)
1473
+ return 0;
1474
+ }
1475
+
1476
+ return 1;
1477
+ }
1478
+
1479
+ static int check_policy(X509_STORE_CTX *ctx)
1480
+ {
1481
+ int ret;
1482
+ if (ctx->parent)
1483
+ return 1;
1484
+ ret = X509_policy_check(&ctx->tree, &ctx->explicit_policy, ctx->chain,
1485
+ ctx->param->policies, ctx->param->flags);
1486
+ if (ret == 0)
1487
+ {
1488
+ X509err(X509_F_CHECK_POLICY,ERR_R_MALLOC_FAILURE);
1489
+ return 0;
1490
+ }
1491
+ /* Invalid or inconsistent extensions */
1492
+ if (ret == -1)
1493
+ {
1494
+ /* Locate certificates with bad extensions and notify
1495
+ * callback.
1496
+ */
1497
+ X509 *x;
1498
+ int i;
1499
+ for (i = 1; i < sk_X509_num(ctx->chain); i++)
1500
+ {
1501
+ x = sk_X509_value(ctx->chain, i);
1502
+ if (!(x->ex_flags & EXFLAG_INVALID_POLICY))
1503
+ continue;
1504
+ ctx->current_cert = x;
1505
+ ctx->error = X509_V_ERR_INVALID_POLICY_EXTENSION;
1506
+ if(!ctx->verify_cb(0, ctx))
1507
+ return 0;
1508
+ }
1509
+ return 1;
1510
+ }
1511
+ if (ret == -2)
1512
+ {
1513
+ ctx->current_cert = NULL;
1514
+ ctx->error = X509_V_ERR_NO_EXPLICIT_POLICY;
1515
+ return ctx->verify_cb(0, ctx);
1516
+ }
1517
+
1518
+ if (ctx->param->flags & X509_V_FLAG_NOTIFY_POLICY)
1519
+ {
1520
+ ctx->current_cert = NULL;
1521
+ ctx->error = X509_V_OK;
1522
+ if (!ctx->verify_cb(2, ctx))
1523
+ return 0;
1524
+ }
1525
+
1526
+ return 1;
1527
+ }
1528
+
1529
+ static int check_cert_time(X509_STORE_CTX *ctx, X509 *x)
1530
+ {
1531
+ time_t *ptime;
1532
+ int i;
1533
+
1534
+ if (ctx->param->flags & X509_V_FLAG_USE_CHECK_TIME)
1535
+ ptime = &ctx->param->check_time;
1536
+ else
1537
+ ptime = NULL;
1538
+
1539
+ i=X509_cmp_time(X509_get_notBefore(x), ptime);
1540
+ if (i == 0)
1541
+ {
1542
+ ctx->error=X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD;
1543
+ ctx->current_cert=x;
1544
+ if (!ctx->verify_cb(0, ctx))
1545
+ return 0;
1546
+ }
1547
+
1548
+ if (i > 0)
1549
+ {
1550
+ ctx->error=X509_V_ERR_CERT_NOT_YET_VALID;
1551
+ ctx->current_cert=x;
1552
+ if (!ctx->verify_cb(0, ctx))
1553
+ return 0;
1554
+ }
1555
+
1556
+ i=X509_cmp_time(X509_get_notAfter(x), ptime);
1557
+ if (i == 0)
1558
+ {
1559
+ ctx->error=X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD;
1560
+ ctx->current_cert=x;
1561
+ if (!ctx->verify_cb(0, ctx))
1562
+ return 0;
1563
+ }
1564
+
1565
+ if (i < 0)
1566
+ {
1567
+ ctx->error=X509_V_ERR_CERT_HAS_EXPIRED;
1568
+ ctx->current_cert=x;
1569
+ if (!ctx->verify_cb(0, ctx))
1570
+ return 0;
1571
+ }
1572
+
1573
+ return 1;
1574
+ }
1575
+
1576
+ static int internal_verify(X509_STORE_CTX *ctx)
1577
+ {
1578
+ int ok=0,n;
1579
+ X509 *xs,*xi;
1580
+ EVP_PKEY *pkey=NULL;
1581
+ int (*cb)(int xok,X509_STORE_CTX *xctx);
1582
+
1583
+ cb=ctx->verify_cb;
1584
+
1585
+ n=sk_X509_num(ctx->chain);
1586
+ ctx->error_depth=n-1;
1587
+ n--;
1588
+ xi=sk_X509_value(ctx->chain,n);
1589
+
1590
+ if (ctx->check_issued(ctx, xi, xi))
1591
+ xs=xi;
1592
+ else
1593
+ {
1594
+ if (n <= 0)
1595
+ {
1596
+ ctx->error=X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE;
1597
+ ctx->current_cert=xi;
1598
+ ok=cb(0,ctx);
1599
+ goto end;
1600
+ }
1601
+ else
1602
+ {
1603
+ n--;
1604
+ ctx->error_depth=n;
1605
+ xs=sk_X509_value(ctx->chain,n);
1606
+ }
1607
+ }
1608
+
1609
+ /* ctx->error=0; not needed */
1610
+ while (n >= 0)
1611
+ {
1612
+ ctx->error_depth=n;
1613
+
1614
+ /* Skip signature check for self signed certificates unless
1615
+ * explicitly asked for. It doesn't add any security and
1616
+ * just wastes time.
1617
+ */
1618
+ if (!xs->valid && (xs != xi || (ctx->param->flags & X509_V_FLAG_CHECK_SS_SIGNATURE)))
1619
+ {
1620
+ if ((pkey=X509_get_pubkey(xi)) == NULL)
1621
+ {
1622
+ ctx->error=X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY;
1623
+ ctx->current_cert=xi;
1624
+ ok=(*cb)(0,ctx);
1625
+ if (!ok) goto end;
1626
+ }
1627
+ else if (X509_verify(xs,pkey) <= 0)
1628
+ {
1629
+ ctx->error=X509_V_ERR_CERT_SIGNATURE_FAILURE;
1630
+ ctx->current_cert=xs;
1631
+ ok=(*cb)(0,ctx);
1632
+ if (!ok)
1633
+ {
1634
+ EVP_PKEY_free(pkey);
1635
+ goto end;
1636
+ }
1637
+ }
1638
+ EVP_PKEY_free(pkey);
1639
+ pkey=NULL;
1640
+ }
1641
+
1642
+ xs->valid = 1;
1643
+
1644
+ ok = check_cert_time(ctx, xs);
1645
+ if (!ok)
1646
+ goto end;
1647
+
1648
+ /* The last error (if any) is still in the error value */
1649
+ ctx->current_issuer=xi;
1650
+ ctx->current_cert=xs;
1651
+ ok=(*cb)(1,ctx);
1652
+ if (!ok) goto end;
1653
+
1654
+ n--;
1655
+ if (n >= 0)
1656
+ {
1657
+ xi=xs;
1658
+ xs=sk_X509_value(ctx->chain,n);
1659
+ }
1660
+ }
1661
+ ok=1;
1662
+ end:
1663
+ return ok;
1664
+ }
1665
+
1666
+ int X509_cmp_current_time(const ASN1_TIME *ctm)
1667
+ {
1668
+ return X509_cmp_time(ctm, NULL);
1669
+ }
1670
+
1671
+ int X509_cmp_time(const ASN1_TIME *ctm, time_t *cmp_time)
1672
+ {
1673
+ char *str;
1674
+ ASN1_TIME atm;
1675
+ long offset;
1676
+ char buff1[24],buff2[24],*p;
1677
+ int i,j;
1678
+
1679
+ p=buff1;
1680
+ i=ctm->length;
1681
+ str=(char *)ctm->data;
1682
+ if (ctm->type == V_ASN1_UTCTIME)
1683
+ {
1684
+ if ((i < 11) || (i > 17)) return 0;
1685
+ memcpy(p,str,10);
1686
+ p+=10;
1687
+ str+=10;
1688
+ }
1689
+ else
1690
+ {
1691
+ if (i < 13) return 0;
1692
+ memcpy(p,str,12);
1693
+ p+=12;
1694
+ str+=12;
1695
+ }
1696
+
1697
+ if ((*str == 'Z') || (*str == '-') || (*str == '+'))
1698
+ { *(p++)='0'; *(p++)='0'; }
1699
+ else
1700
+ {
1701
+ *(p++)= *(str++);
1702
+ *(p++)= *(str++);
1703
+ /* Skip any fractional seconds... */
1704
+ if (*str == '.')
1705
+ {
1706
+ str++;
1707
+ while ((*str >= '0') && (*str <= '9')) str++;
1708
+ }
1709
+
1710
+ }
1711
+ *(p++)='Z';
1712
+ *(p++)='\0';
1713
+
1714
+ if (*str == 'Z')
1715
+ offset=0;
1716
+ else
1717
+ {
1718
+ if ((*str != '+') && (*str != '-'))
1719
+ return 0;
1720
+ offset=((str[1]-'0')*10+(str[2]-'0'))*60;
1721
+ offset+=(str[3]-'0')*10+(str[4]-'0');
1722
+ if (*str == '-')
1723
+ offset= -offset;
1724
+ }
1725
+ atm.type=ctm->type;
1726
+ atm.flags = 0;
1727
+ atm.length=sizeof(buff2);
1728
+ atm.data=(unsigned char *)buff2;
1729
+
1730
+ if (X509_time_adj(&atm, offset*60, cmp_time) == NULL)
1731
+ return 0;
1732
+
1733
+ if (ctm->type == V_ASN1_UTCTIME)
1734
+ {
1735
+ i=(buff1[0]-'0')*10+(buff1[1]-'0');
1736
+ if (i < 50) i+=100; /* cf. RFC 2459 */
1737
+ j=(buff2[0]-'0')*10+(buff2[1]-'0');
1738
+ if (j < 50) j+=100;
1739
+
1740
+ if (i < j) return -1;
1741
+ if (i > j) return 1;
1742
+ }
1743
+ i=strcmp(buff1,buff2);
1744
+ if (i == 0) /* wait a second then return younger :-) */
1745
+ return -1;
1746
+ else
1747
+ return i;
1748
+ }
1749
+
1750
+ ASN1_TIME *X509_gmtime_adj(ASN1_TIME *s, long adj)
1751
+ {
1752
+ return X509_time_adj(s, adj, NULL);
1753
+ }
1754
+
1755
+ ASN1_TIME *X509_time_adj(ASN1_TIME *s, long offset_sec, time_t *in_tm)
1756
+ {
1757
+ return X509_time_adj_ex(s, 0, offset_sec, in_tm);
1758
+ }
1759
+
1760
+ ASN1_TIME *X509_time_adj_ex(ASN1_TIME *s,
1761
+ int offset_day, long offset_sec, time_t *in_tm)
1762
+ {
1763
+ time_t t;
1764
+
1765
+ if (in_tm) t = *in_tm;
1766
+ else time(&t);
1767
+
1768
+ if (s && !(s->flags & ASN1_STRING_FLAG_MSTRING))
1769
+ {
1770
+ if (s->type == V_ASN1_UTCTIME)
1771
+ return ASN1_UTCTIME_adj(s,t, offset_day, offset_sec);
1772
+ if (s->type == V_ASN1_GENERALIZEDTIME)
1773
+ return ASN1_GENERALIZEDTIME_adj(s, t, offset_day,
1774
+ offset_sec);
1775
+ }
1776
+ return ASN1_TIME_adj(s, t, offset_day, offset_sec);
1777
+ }
1778
+
1779
+ int X509_get_pubkey_parameters(EVP_PKEY *pkey, STACK_OF(X509) *chain)
1780
+ {
1781
+ EVP_PKEY *ktmp=NULL,*ktmp2;
1782
+ int i,j;
1783
+
1784
+ if ((pkey != NULL) && !EVP_PKEY_missing_parameters(pkey)) return 1;
1785
+
1786
+ for (i=0; i<sk_X509_num(chain); i++)
1787
+ {
1788
+ ktmp=X509_get_pubkey(sk_X509_value(chain,i));
1789
+ if (ktmp == NULL)
1790
+ {
1791
+ X509err(X509_F_X509_GET_PUBKEY_PARAMETERS,X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY);
1792
+ return 0;
1793
+ }
1794
+ if (!EVP_PKEY_missing_parameters(ktmp))
1795
+ break;
1796
+ else
1797
+ {
1798
+ EVP_PKEY_free(ktmp);
1799
+ ktmp=NULL;
1800
+ }
1801
+ }
1802
+ if (ktmp == NULL)
1803
+ {
1804
+ X509err(X509_F_X509_GET_PUBKEY_PARAMETERS,X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN);
1805
+ return 0;
1806
+ }
1807
+
1808
+ /* first, populate the other certs */
1809
+ for (j=i-1; j >= 0; j--)
1810
+ {
1811
+ ktmp2=X509_get_pubkey(sk_X509_value(chain,j));
1812
+ EVP_PKEY_copy_parameters(ktmp2,ktmp);
1813
+ EVP_PKEY_free(ktmp2);
1814
+ }
1815
+
1816
+ if (pkey != NULL) EVP_PKEY_copy_parameters(pkey,ktmp);
1817
+ EVP_PKEY_free(ktmp);
1818
+ return 1;
1819
+ }
1820
+
1821
+ int X509_STORE_CTX_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
1822
+ CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func)
1823
+ {
1824
+ /* This function is (usually) called only once, by
1825
+ * SSL_get_ex_data_X509_STORE_CTX_idx (ssl/ssl_cert.c). */
1826
+ return CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, argl, argp,
1827
+ new_func, dup_func, free_func);
1828
+ }
1829
+
1830
+ int X509_STORE_CTX_set_ex_data(X509_STORE_CTX *ctx, int idx, void *data)
1831
+ {
1832
+ return CRYPTO_set_ex_data(&ctx->ex_data,idx,data);
1833
+ }
1834
+
1835
+ void *X509_STORE_CTX_get_ex_data(X509_STORE_CTX *ctx, int idx)
1836
+ {
1837
+ return CRYPTO_get_ex_data(&ctx->ex_data,idx);
1838
+ }
1839
+
1840
+ int X509_STORE_CTX_get_error(X509_STORE_CTX *ctx)
1841
+ {
1842
+ return ctx->error;
1843
+ }
1844
+
1845
+ void X509_STORE_CTX_set_error(X509_STORE_CTX *ctx, int err)
1846
+ {
1847
+ ctx->error=err;
1848
+ }
1849
+
1850
+ int X509_STORE_CTX_get_error_depth(X509_STORE_CTX *ctx)
1851
+ {
1852
+ return ctx->error_depth;
1853
+ }
1854
+
1855
+ X509 *X509_STORE_CTX_get_current_cert(X509_STORE_CTX *ctx)
1856
+ {
1857
+ return ctx->current_cert;
1858
+ }
1859
+
1860
+ STACK_OF(X509) *X509_STORE_CTX_get_chain(X509_STORE_CTX *ctx)
1861
+ {
1862
+ return ctx->chain;
1863
+ }
1864
+
1865
+ STACK_OF(X509) *X509_STORE_CTX_get1_chain(X509_STORE_CTX *ctx)
1866
+ {
1867
+ int i;
1868
+ X509 *x;
1869
+ STACK_OF(X509) *chain;
1870
+ if (!ctx->chain || !(chain = sk_X509_dup(ctx->chain))) return NULL;
1871
+ for (i = 0; i < sk_X509_num(chain); i++)
1872
+ {
1873
+ x = sk_X509_value(chain, i);
1874
+ CRYPTO_add(&x->references, 1, CRYPTO_LOCK_X509);
1875
+ }
1876
+ return chain;
1877
+ }
1878
+
1879
+ X509 *X509_STORE_CTX_get0_current_issuer(X509_STORE_CTX *ctx)
1880
+ {
1881
+ return ctx->current_issuer;
1882
+ }
1883
+
1884
+ X509_CRL *X509_STORE_CTX_get0_current_crl(X509_STORE_CTX *ctx)
1885
+ {
1886
+ return ctx->current_crl;
1887
+ }
1888
+
1889
+ X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(X509_STORE_CTX *ctx)
1890
+ {
1891
+ return ctx->parent;
1892
+ }
1893
+
1894
+ void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *x)
1895
+ {
1896
+ ctx->cert=x;
1897
+ }
1898
+
1899
+ void X509_STORE_CTX_set_chain(X509_STORE_CTX *ctx, STACK_OF(X509) *sk)
1900
+ {
1901
+ ctx->untrusted=sk;
1902
+ }
1903
+
1904
+ void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, STACK_OF(X509_CRL) *sk)
1905
+ {
1906
+ ctx->crls=sk;
1907
+ }
1908
+
1909
+ int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose)
1910
+ {
1911
+ return X509_STORE_CTX_purpose_inherit(ctx, 0, purpose, 0);
1912
+ }
1913
+
1914
+ int X509_STORE_CTX_set_trust(X509_STORE_CTX *ctx, int trust)
1915
+ {
1916
+ return X509_STORE_CTX_purpose_inherit(ctx, 0, 0, trust);
1917
+ }
1918
+
1919
+ /* This function is used to set the X509_STORE_CTX purpose and trust
1920
+ * values. This is intended to be used when another structure has its
1921
+ * own trust and purpose values which (if set) will be inherited by
1922
+ * the ctx. If they aren't set then we will usually have a default
1923
+ * purpose in mind which should then be used to set the trust value.
1924
+ * An example of this is SSL use: an SSL structure will have its own
1925
+ * purpose and trust settings which the application can set: if they
1926
+ * aren't set then we use the default of SSL client/server.
1927
+ */
1928
+
1929
+ int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose,
1930
+ int purpose, int trust)
1931
+ {
1932
+ int idx;
1933
+ /* If purpose not set use default */
1934
+ if (!purpose) purpose = def_purpose;
1935
+ /* If we have a purpose then check it is valid */
1936
+ if (purpose)
1937
+ {
1938
+ X509_PURPOSE *ptmp;
1939
+ idx = X509_PURPOSE_get_by_id(purpose);
1940
+ if (idx == -1)
1941
+ {
1942
+ X509err(X509_F_X509_STORE_CTX_PURPOSE_INHERIT,
1943
+ X509_R_UNKNOWN_PURPOSE_ID);
1944
+ return 0;
1945
+ }
1946
+ ptmp = X509_PURPOSE_get0(idx);
1947
+ if (ptmp->trust == X509_TRUST_DEFAULT)
1948
+ {
1949
+ idx = X509_PURPOSE_get_by_id(def_purpose);
1950
+ if (idx == -1)
1951
+ {
1952
+ X509err(X509_F_X509_STORE_CTX_PURPOSE_INHERIT,
1953
+ X509_R_UNKNOWN_PURPOSE_ID);
1954
+ return 0;
1955
+ }
1956
+ ptmp = X509_PURPOSE_get0(idx);
1957
+ }
1958
+ /* If trust not set then get from purpose default */
1959
+ if (!trust) trust = ptmp->trust;
1960
+ }
1961
+ if (trust)
1962
+ {
1963
+ idx = X509_TRUST_get_by_id(trust);
1964
+ if (idx == -1)
1965
+ {
1966
+ X509err(X509_F_X509_STORE_CTX_PURPOSE_INHERIT,
1967
+ X509_R_UNKNOWN_TRUST_ID);
1968
+ return 0;
1969
+ }
1970
+ }
1971
+
1972
+ if (purpose && !ctx->param->purpose) ctx->param->purpose = purpose;
1973
+ if (trust && !ctx->param->trust) ctx->param->trust = trust;
1974
+ return 1;
1975
+ }
1976
+
1977
+ X509_STORE_CTX *X509_STORE_CTX_new(void)
1978
+ {
1979
+ X509_STORE_CTX *ctx;
1980
+ ctx = (X509_STORE_CTX *)OPENSSL_malloc(sizeof(X509_STORE_CTX));
1981
+ if (!ctx)
1982
+ {
1983
+ X509err(X509_F_X509_STORE_CTX_NEW,ERR_R_MALLOC_FAILURE);
1984
+ return NULL;
1985
+ }
1986
+ memset(ctx, 0, sizeof(X509_STORE_CTX));
1987
+ return ctx;
1988
+ }
1989
+
1990
+ void X509_STORE_CTX_free(X509_STORE_CTX *ctx)
1991
+ {
1992
+ X509_STORE_CTX_cleanup(ctx);
1993
+ OPENSSL_free(ctx);
1994
+ }
1995
+
1996
+ int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store, X509 *x509,
1997
+ STACK_OF(X509) *chain)
1998
+ {
1999
+ int ret = 1;
2000
+ ctx->ctx=store;
2001
+ ctx->current_method=0;
2002
+ ctx->cert=x509;
2003
+ ctx->untrusted=chain;
2004
+ ctx->crls = NULL;
2005
+ ctx->last_untrusted=0;
2006
+ ctx->other_ctx=NULL;
2007
+ ctx->valid=0;
2008
+ ctx->chain=NULL;
2009
+ ctx->error=0;
2010
+ ctx->explicit_policy=0;
2011
+ ctx->error_depth=0;
2012
+ ctx->current_cert=NULL;
2013
+ ctx->current_issuer=NULL;
2014
+ ctx->current_crl=NULL;
2015
+ ctx->current_crl_score=0;
2016
+ ctx->current_reasons=0;
2017
+ ctx->tree = NULL;
2018
+ ctx->parent = NULL;
2019
+
2020
+ ctx->param = X509_VERIFY_PARAM_new();
2021
+
2022
+ if (!ctx->param)
2023
+ {
2024
+ X509err(X509_F_X509_STORE_CTX_INIT,ERR_R_MALLOC_FAILURE);
2025
+ return 0;
2026
+ }
2027
+
2028
+ /* Inherit callbacks and flags from X509_STORE if not set
2029
+ * use defaults.
2030
+ */
2031
+
2032
+
2033
+ if (store)
2034
+ ret = X509_VERIFY_PARAM_inherit(ctx->param, store->param);
2035
+ else
2036
+ ctx->param->inh_flags |= X509_VP_FLAG_DEFAULT|X509_VP_FLAG_ONCE;
2037
+
2038
+ if (store)
2039
+ {
2040
+ ctx->verify_cb = store->verify_cb;
2041
+ ctx->cleanup = store->cleanup;
2042
+ }
2043
+ else
2044
+ ctx->cleanup = 0;
2045
+
2046
+ if (ret)
2047
+ ret = X509_VERIFY_PARAM_inherit(ctx->param,
2048
+ X509_VERIFY_PARAM_lookup("default"));
2049
+
2050
+ if (ret == 0)
2051
+ {
2052
+ X509err(X509_F_X509_STORE_CTX_INIT,ERR_R_MALLOC_FAILURE);
2053
+ return 0;
2054
+ }
2055
+
2056
+ if (store && store->check_issued)
2057
+ ctx->check_issued = store->check_issued;
2058
+ else
2059
+ ctx->check_issued = check_issued;
2060
+
2061
+ if (store && store->get_issuer)
2062
+ ctx->get_issuer = store->get_issuer;
2063
+ else
2064
+ ctx->get_issuer = X509_STORE_CTX_get1_issuer;
2065
+
2066
+ if (store && store->verify_cb)
2067
+ ctx->verify_cb = store->verify_cb;
2068
+ else
2069
+ ctx->verify_cb = null_callback;
2070
+
2071
+ if (store && store->verify)
2072
+ ctx->verify = store->verify;
2073
+ else
2074
+ ctx->verify = internal_verify;
2075
+
2076
+ if (store && store->check_revocation)
2077
+ ctx->check_revocation = store->check_revocation;
2078
+ else
2079
+ ctx->check_revocation = check_revocation;
2080
+
2081
+ if (store && store->get_crl)
2082
+ ctx->get_crl = store->get_crl;
2083
+ else
2084
+ ctx->get_crl = NULL;
2085
+
2086
+ if (store && store->check_crl)
2087
+ ctx->check_crl = store->check_crl;
2088
+ else
2089
+ ctx->check_crl = check_crl;
2090
+
2091
+ if (store && store->cert_crl)
2092
+ ctx->cert_crl = store->cert_crl;
2093
+ else
2094
+ ctx->cert_crl = cert_crl;
2095
+
2096
+ if (store && store->lookup_certs)
2097
+ ctx->lookup_certs = store->lookup_certs;
2098
+ else
2099
+ ctx->lookup_certs = X509_STORE_get1_certs;
2100
+
2101
+ if (store && store->lookup_crls)
2102
+ ctx->lookup_crls = store->lookup_crls;
2103
+ else
2104
+ ctx->lookup_crls = X509_STORE_get1_crls;
2105
+
2106
+ ctx->check_policy = check_policy;
2107
+
2108
+
2109
+ /* This memset() can't make any sense anyway, so it's removed. As
2110
+ * X509_STORE_CTX_cleanup does a proper "free" on the ex_data, we put a
2111
+ * corresponding "new" here and remove this bogus initialisation. */
2112
+ /* memset(&(ctx->ex_data),0,sizeof(CRYPTO_EX_DATA)); */
2113
+ if(!CRYPTO_new_ex_data(CRYPTO_EX_INDEX_X509_STORE_CTX, ctx,
2114
+ &(ctx->ex_data)))
2115
+ {
2116
+ OPENSSL_free(ctx);
2117
+ X509err(X509_F_X509_STORE_CTX_INIT,ERR_R_MALLOC_FAILURE);
2118
+ return 0;
2119
+ }
2120
+ return 1;
2121
+ }
2122
+
2123
+ /* Set alternative lookup method: just a STACK of trusted certificates.
2124
+ * This avoids X509_STORE nastiness where it isn't needed.
2125
+ */
2126
+
2127
+ void X509_STORE_CTX_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk)
2128
+ {
2129
+ ctx->other_ctx = sk;
2130
+ ctx->get_issuer = get_issuer_sk;
2131
+ }
2132
+
2133
+ void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx)
2134
+ {
2135
+ if (ctx->cleanup) ctx->cleanup(ctx);
2136
+ if (ctx->param != NULL)
2137
+ {
2138
+ if (ctx->parent == NULL)
2139
+ X509_VERIFY_PARAM_free(ctx->param);
2140
+ ctx->param=NULL;
2141
+ }
2142
+ if (ctx->tree != NULL)
2143
+ {
2144
+ X509_policy_tree_free(ctx->tree);
2145
+ ctx->tree=NULL;
2146
+ }
2147
+ if (ctx->chain != NULL)
2148
+ {
2149
+ sk_X509_pop_free(ctx->chain,X509_free);
2150
+ ctx->chain=NULL;
2151
+ }
2152
+ CRYPTO_free_ex_data(CRYPTO_EX_INDEX_X509_STORE_CTX, ctx, &(ctx->ex_data));
2153
+ memset(&ctx->ex_data,0,sizeof(CRYPTO_EX_DATA));
2154
+ }
2155
+
2156
+ void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth)
2157
+ {
2158
+ X509_VERIFY_PARAM_set_depth(ctx->param, depth);
2159
+ }
2160
+
2161
+ void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags)
2162
+ {
2163
+ X509_VERIFY_PARAM_set_flags(ctx->param, flags);
2164
+ }
2165
+
2166
+ void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, time_t t)
2167
+ {
2168
+ X509_VERIFY_PARAM_set_time(ctx->param, t);
2169
+ }
2170
+
2171
+ void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx,
2172
+ int (*verify_cb)(int, X509_STORE_CTX *))
2173
+ {
2174
+ ctx->verify_cb=verify_cb;
2175
+ }
2176
+
2177
+ X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(X509_STORE_CTX *ctx)
2178
+ {
2179
+ return ctx->tree;
2180
+ }
2181
+
2182
+ int X509_STORE_CTX_get_explicit_policy(X509_STORE_CTX *ctx)
2183
+ {
2184
+ return ctx->explicit_policy;
2185
+ }
2186
+
2187
+ int X509_STORE_CTX_set_default(X509_STORE_CTX *ctx, const char *name)
2188
+ {
2189
+ const X509_VERIFY_PARAM *param;
2190
+ param = X509_VERIFY_PARAM_lookup(name);
2191
+ if (!param)
2192
+ return 0;
2193
+ return X509_VERIFY_PARAM_inherit(ctx->param, param);
2194
+ }
2195
+
2196
+ X509_VERIFY_PARAM *X509_STORE_CTX_get0_param(X509_STORE_CTX *ctx)
2197
+ {
2198
+ return ctx->param;
2199
+ }
2200
+
2201
+ void X509_STORE_CTX_set0_param(X509_STORE_CTX *ctx, X509_VERIFY_PARAM *param)
2202
+ {
2203
+ if (ctx->param)
2204
+ X509_VERIFY_PARAM_free(ctx->param);
2205
+ ctx->param = param;
2206
+ }
2207
+
2208
+ IMPLEMENT_STACK_OF(X509)
2209
+ IMPLEMENT_ASN1_SET_OF(X509)
2210
+
2211
+ IMPLEMENT_STACK_OF(X509_NAME)
2212
+
2213
+ IMPLEMENT_STACK_OF(X509_ATTRIBUTE)
2214
+ IMPLEMENT_ASN1_SET_OF(X509_ATTRIBUTE)