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,77 @@
1
+ /* ssl/d1_meth.h */
2
+ /*
3
+ * DTLS implementation written by Nagendra Modadugu
4
+ * (nagendra@cs.stanford.edu) for the OpenSSL project 2005.
5
+ */
6
+ /* ====================================================================
7
+ * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved.
8
+ *
9
+ * Redistribution and use in source and binary forms, with or without
10
+ * modification, are permitted provided that the following conditions
11
+ * are met:
12
+ *
13
+ * 1. Redistributions of source code must retain the above copyright
14
+ * notice, this list of conditions and the following disclaimer.
15
+ *
16
+ * 2. Redistributions in binary form must reproduce the above copyright
17
+ * notice, this list of conditions and the following disclaimer in
18
+ * the documentation and/or other materials provided with the
19
+ * distribution.
20
+ *
21
+ * 3. All advertising materials mentioning features or use of this
22
+ * software must display the following acknowledgment:
23
+ * "This product includes software developed by the OpenSSL Project
24
+ * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
25
+ *
26
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
27
+ * endorse or promote products derived from this software without
28
+ * prior written permission. For written permission, please contact
29
+ * openssl-core@OpenSSL.org.
30
+ *
31
+ * 5. Products derived from this software may not be called "OpenSSL"
32
+ * nor may "OpenSSL" appear in their names without prior written
33
+ * permission of the OpenSSL Project.
34
+ *
35
+ * 6. Redistributions of any form whatsoever must retain the following
36
+ * acknowledgment:
37
+ * "This product includes software developed by the OpenSSL Project
38
+ * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
39
+ *
40
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
41
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
42
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
43
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
44
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
45
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
46
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
47
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
49
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
50
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
51
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
52
+ * ====================================================================
53
+ *
54
+ * This product includes cryptographic software written by Eric Young
55
+ * (eay@cryptsoft.com). This product includes software written by Tim
56
+ * Hudson (tjh@cryptsoft.com).
57
+ *
58
+ */
59
+
60
+ #include <stdio.h>
61
+ #include <openssl/objects.h>
62
+ #include "ssl_locl.h"
63
+
64
+ static const SSL_METHOD *dtls1_get_method(int ver);
65
+ static const SSL_METHOD *dtls1_get_method(int ver)
66
+ {
67
+ if (ver == DTLS1_VERSION)
68
+ return(DTLSv1_method());
69
+ else
70
+ return(NULL);
71
+ }
72
+
73
+ IMPLEMENT_dtls1_meth_func(DTLSv1_method,
74
+ dtls1_accept,
75
+ dtls1_connect,
76
+ dtls1_get_method)
77
+
@@ -0,0 +1,1876 @@
1
+ /* ssl/d1_pkt.c */
2
+ /*
3
+ * DTLS implementation written by Nagendra Modadugu
4
+ * (nagendra@cs.stanford.edu) for the OpenSSL project 2005.
5
+ */
6
+ /* ====================================================================
7
+ * Copyright (c) 1998-2005 The OpenSSL Project. All rights reserved.
8
+ *
9
+ * Redistribution and use in source and binary forms, with or without
10
+ * modification, are permitted provided that the following conditions
11
+ * are met:
12
+ *
13
+ * 1. Redistributions of source code must retain the above copyright
14
+ * notice, this list of conditions and the following disclaimer.
15
+ *
16
+ * 2. Redistributions in binary form must reproduce the above copyright
17
+ * notice, this list of conditions and the following disclaimer in
18
+ * the documentation and/or other materials provided with the
19
+ * distribution.
20
+ *
21
+ * 3. All advertising materials mentioning features or use of this
22
+ * software must display the following acknowledgment:
23
+ * "This product includes software developed by the OpenSSL Project
24
+ * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
25
+ *
26
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
27
+ * endorse or promote products derived from this software without
28
+ * prior written permission. For written permission, please contact
29
+ * openssl-core@openssl.org.
30
+ *
31
+ * 5. Products derived from this software may not be called "OpenSSL"
32
+ * nor may "OpenSSL" appear in their names without prior written
33
+ * permission of the OpenSSL Project.
34
+ *
35
+ * 6. Redistributions of any form whatsoever must retain the following
36
+ * acknowledgment:
37
+ * "This product includes software developed by the OpenSSL Project
38
+ * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
39
+ *
40
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
41
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
42
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
43
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
44
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
45
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
46
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
47
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
49
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
50
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
51
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
52
+ * ====================================================================
53
+ *
54
+ * This product includes cryptographic software written by Eric Young
55
+ * (eay@cryptsoft.com). This product includes software written by Tim
56
+ * Hudson (tjh@cryptsoft.com).
57
+ *
58
+ */
59
+ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
60
+ * All rights reserved.
61
+ *
62
+ * This package is an SSL implementation written
63
+ * by Eric Young (eay@cryptsoft.com).
64
+ * The implementation was written so as to conform with Netscapes SSL.
65
+ *
66
+ * This library is free for commercial and non-commercial use as long as
67
+ * the following conditions are aheared to. The following conditions
68
+ * apply to all code found in this distribution, be it the RC4, RSA,
69
+ * lhash, DES, etc., code; not just the SSL code. The SSL documentation
70
+ * included with this distribution is covered by the same copyright terms
71
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
72
+ *
73
+ * Copyright remains Eric Young's, and as such any Copyright notices in
74
+ * the code are not to be removed.
75
+ * If this package is used in a product, Eric Young should be given attribution
76
+ * as the author of the parts of the library used.
77
+ * This can be in the form of a textual message at program startup or
78
+ * in documentation (online or textual) provided with the package.
79
+ *
80
+ * Redistribution and use in source and binary forms, with or without
81
+ * modification, are permitted provided that the following conditions
82
+ * are met:
83
+ * 1. Redistributions of source code must retain the copyright
84
+ * notice, this list of conditions and the following disclaimer.
85
+ * 2. Redistributions in binary form must reproduce the above copyright
86
+ * notice, this list of conditions and the following disclaimer in the
87
+ * documentation and/or other materials provided with the distribution.
88
+ * 3. All advertising materials mentioning features or use of this software
89
+ * must display the following acknowledgement:
90
+ * "This product includes cryptographic software written by
91
+ * Eric Young (eay@cryptsoft.com)"
92
+ * The word 'cryptographic' can be left out if the rouines from the library
93
+ * being used are not cryptographic related :-).
94
+ * 4. If you include any Windows specific code (or a derivative thereof) from
95
+ * the apps directory (application code) you must include an acknowledgement:
96
+ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
97
+ *
98
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
99
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
100
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
101
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
102
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
103
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
104
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
105
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
106
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
107
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
108
+ * SUCH DAMAGE.
109
+ *
110
+ * The licence and distribution terms for any publically available version or
111
+ * derivative of this code cannot be changed. i.e. this code cannot simply be
112
+ * copied and put under another distribution licence
113
+ * [including the GNU Public Licence.]
114
+ */
115
+
116
+ #include <stdio.h>
117
+ #include <errno.h>
118
+ #define USE_SOCKETS
119
+ #include "ssl_locl.h"
120
+ #include <openssl/evp.h>
121
+ #include <openssl/buffer.h>
122
+ #include <openssl/pqueue.h>
123
+ #include <openssl/rand.h>
124
+
125
+ /* mod 128 saturating subtract of two 64-bit values in big-endian order */
126
+ static int satsub64be(const unsigned char *v1,const unsigned char *v2)
127
+ { int ret,sat,brw,i;
128
+
129
+ if (sizeof(long) == 8) do
130
+ { const union { long one; char little; } is_endian = {1};
131
+ long l;
132
+
133
+ if (is_endian.little) break;
134
+ /* not reached on little-endians */
135
+ /* following test is redundant, because input is
136
+ * always aligned, but I take no chances... */
137
+ if (((size_t)v1|(size_t)v2)&0x7) break;
138
+
139
+ l = *((long *)v1);
140
+ l -= *((long *)v2);
141
+ if (l>128) return 128;
142
+ else if (l<-128) return -128;
143
+ else return (int)l;
144
+ } while (0);
145
+
146
+ ret = (int)v1[7]-(int)v2[7];
147
+ sat = 0;
148
+ brw = ret>>8; /* brw is either 0 or -1 */
149
+ if (ret & 0x80)
150
+ { for (i=6;i>=0;i--)
151
+ { brw += (int)v1[i]-(int)v2[i];
152
+ sat |= ~brw;
153
+ brw >>= 8;
154
+ }
155
+ }
156
+ else
157
+ { for (i=6;i>=0;i--)
158
+ { brw += (int)v1[i]-(int)v2[i];
159
+ sat |= brw;
160
+ brw >>= 8;
161
+ }
162
+ }
163
+ brw <<= 8; /* brw is either 0 or -256 */
164
+
165
+ if (sat&0xff) return brw | 0x80;
166
+ else return brw + (ret&0xFF);
167
+ }
168
+
169
+ static int have_handshake_fragment(SSL *s, int type, unsigned char *buf,
170
+ int len, int peek);
171
+ static int dtls1_record_replay_check(SSL *s, DTLS1_BITMAP *bitmap);
172
+ static void dtls1_record_bitmap_update(SSL *s, DTLS1_BITMAP *bitmap);
173
+ static DTLS1_BITMAP *dtls1_get_bitmap(SSL *s, SSL3_RECORD *rr,
174
+ unsigned int *is_next_epoch);
175
+ #if 0
176
+ static int dtls1_record_needs_buffering(SSL *s, SSL3_RECORD *rr,
177
+ unsigned short *priority, unsigned long *offset);
178
+ #endif
179
+ static int dtls1_buffer_record(SSL *s, record_pqueue *q,
180
+ unsigned char *priority);
181
+ static int dtls1_process_record(SSL *s);
182
+
183
+ /* copy buffered record into SSL structure */
184
+ static int
185
+ dtls1_copy_record(SSL *s, pitem *item)
186
+ {
187
+ DTLS1_RECORD_DATA *rdata;
188
+
189
+ rdata = (DTLS1_RECORD_DATA *)item->data;
190
+
191
+ if (s->s3->rbuf.buf != NULL)
192
+ OPENSSL_free(s->s3->rbuf.buf);
193
+
194
+ s->packet = rdata->packet;
195
+ s->packet_length = rdata->packet_length;
196
+ memcpy(&(s->s3->rbuf), &(rdata->rbuf), sizeof(SSL3_BUFFER));
197
+ memcpy(&(s->s3->rrec), &(rdata->rrec), sizeof(SSL3_RECORD));
198
+
199
+ /* Set proper sequence number for mac calculation */
200
+ memcpy(&(s->s3->read_sequence[2]), &(rdata->packet[5]), 6);
201
+
202
+ return(1);
203
+ }
204
+
205
+
206
+ static int
207
+ dtls1_buffer_record(SSL *s, record_pqueue *queue, unsigned char *priority)
208
+ {
209
+ DTLS1_RECORD_DATA *rdata;
210
+ pitem *item;
211
+
212
+ /* Limit the size of the queue to prevent DOS attacks */
213
+ if (pqueue_size(queue->q) >= 100)
214
+ return 0;
215
+
216
+ rdata = OPENSSL_malloc(sizeof(DTLS1_RECORD_DATA));
217
+ item = pitem_new(priority, rdata);
218
+ if (rdata == NULL || item == NULL)
219
+ {
220
+ if (rdata != NULL) OPENSSL_free(rdata);
221
+ if (item != NULL) pitem_free(item);
222
+
223
+ SSLerr(SSL_F_DTLS1_BUFFER_RECORD, ERR_R_INTERNAL_ERROR);
224
+ return(0);
225
+ }
226
+
227
+ rdata->packet = s->packet;
228
+ rdata->packet_length = s->packet_length;
229
+ memcpy(&(rdata->rbuf), &(s->s3->rbuf), sizeof(SSL3_BUFFER));
230
+ memcpy(&(rdata->rrec), &(s->s3->rrec), sizeof(SSL3_RECORD));
231
+
232
+ item->data = rdata;
233
+
234
+ #ifndef OPENSSL_NO_SCTP
235
+ /* Store bio_dgram_sctp_rcvinfo struct */
236
+ if (BIO_dgram_is_sctp(SSL_get_rbio(s)) &&
237
+ (s->state == SSL3_ST_SR_FINISHED_A || s->state == SSL3_ST_CR_FINISHED_A)) {
238
+ BIO_ctrl(SSL_get_rbio(s), BIO_CTRL_DGRAM_SCTP_GET_RCVINFO, sizeof(rdata->recordinfo), &rdata->recordinfo);
239
+ }
240
+ #endif
241
+
242
+ /* insert should not fail, since duplicates are dropped */
243
+ if (pqueue_insert(queue->q, item) == NULL)
244
+ {
245
+ OPENSSL_free(rdata);
246
+ pitem_free(item);
247
+ return(0);
248
+ }
249
+
250
+ s->packet = NULL;
251
+ s->packet_length = 0;
252
+ memset(&(s->s3->rbuf), 0, sizeof(SSL3_BUFFER));
253
+ memset(&(s->s3->rrec), 0, sizeof(SSL3_RECORD));
254
+
255
+ if (!ssl3_setup_buffers(s))
256
+ {
257
+ SSLerr(SSL_F_DTLS1_BUFFER_RECORD, ERR_R_INTERNAL_ERROR);
258
+ OPENSSL_free(rdata);
259
+ pitem_free(item);
260
+ return(0);
261
+ }
262
+
263
+ return(1);
264
+ }
265
+
266
+
267
+ static int
268
+ dtls1_retrieve_buffered_record(SSL *s, record_pqueue *queue)
269
+ {
270
+ pitem *item;
271
+
272
+ item = pqueue_pop(queue->q);
273
+ if (item)
274
+ {
275
+ dtls1_copy_record(s, item);
276
+
277
+ OPENSSL_free(item->data);
278
+ pitem_free(item);
279
+
280
+ return(1);
281
+ }
282
+
283
+ return(0);
284
+ }
285
+
286
+
287
+ /* retrieve a buffered record that belongs to the new epoch, i.e., not processed
288
+ * yet */
289
+ #define dtls1_get_unprocessed_record(s) \
290
+ dtls1_retrieve_buffered_record((s), \
291
+ &((s)->d1->unprocessed_rcds))
292
+
293
+ /* retrieve a buffered record that belongs to the current epoch, ie, processed */
294
+ #define dtls1_get_processed_record(s) \
295
+ dtls1_retrieve_buffered_record((s), \
296
+ &((s)->d1->processed_rcds))
297
+
298
+ static int
299
+ dtls1_process_buffered_records(SSL *s)
300
+ {
301
+ pitem *item;
302
+
303
+ item = pqueue_peek(s->d1->unprocessed_rcds.q);
304
+ if (item)
305
+ {
306
+ /* Check if epoch is current. */
307
+ if (s->d1->unprocessed_rcds.epoch != s->d1->r_epoch)
308
+ return(1); /* Nothing to do. */
309
+
310
+ /* Process all the records. */
311
+ while (pqueue_peek(s->d1->unprocessed_rcds.q))
312
+ {
313
+ dtls1_get_unprocessed_record(s);
314
+ if ( ! dtls1_process_record(s))
315
+ return(0);
316
+ dtls1_buffer_record(s, &(s->d1->processed_rcds),
317
+ s->s3->rrec.seq_num);
318
+ }
319
+ }
320
+
321
+ /* sync epoch numbers once all the unprocessed records
322
+ * have been processed */
323
+ s->d1->processed_rcds.epoch = s->d1->r_epoch;
324
+ s->d1->unprocessed_rcds.epoch = s->d1->r_epoch + 1;
325
+
326
+ return(1);
327
+ }
328
+
329
+
330
+ #if 0
331
+
332
+ static int
333
+ dtls1_get_buffered_record(SSL *s)
334
+ {
335
+ pitem *item;
336
+ PQ_64BIT priority =
337
+ (((PQ_64BIT)s->d1->handshake_read_seq) << 32) |
338
+ ((PQ_64BIT)s->d1->r_msg_hdr.frag_off);
339
+
340
+ if ( ! SSL_in_init(s)) /* if we're not (re)negotiating,
341
+ nothing buffered */
342
+ return 0;
343
+
344
+
345
+ item = pqueue_peek(s->d1->rcvd_records);
346
+ if (item && item->priority == priority)
347
+ {
348
+ /* Check if we've received the record of interest. It must be
349
+ * a handshake record, since data records as passed up without
350
+ * buffering */
351
+ DTLS1_RECORD_DATA *rdata;
352
+ item = pqueue_pop(s->d1->rcvd_records);
353
+ rdata = (DTLS1_RECORD_DATA *)item->data;
354
+
355
+ if (s->s3->rbuf.buf != NULL)
356
+ OPENSSL_free(s->s3->rbuf.buf);
357
+
358
+ s->packet = rdata->packet;
359
+ s->packet_length = rdata->packet_length;
360
+ memcpy(&(s->s3->rbuf), &(rdata->rbuf), sizeof(SSL3_BUFFER));
361
+ memcpy(&(s->s3->rrec), &(rdata->rrec), sizeof(SSL3_RECORD));
362
+
363
+ OPENSSL_free(item->data);
364
+ pitem_free(item);
365
+
366
+ /* s->d1->next_expected_seq_num++; */
367
+ return(1);
368
+ }
369
+
370
+ return 0;
371
+ }
372
+
373
+ #endif
374
+
375
+ static int
376
+ dtls1_process_record(SSL *s)
377
+ {
378
+ int i,al;
379
+ int clear=0;
380
+ int enc_err;
381
+ SSL_SESSION *sess;
382
+ SSL3_RECORD *rr;
383
+ unsigned int mac_size;
384
+ unsigned char md[EVP_MAX_MD_SIZE];
385
+ int decryption_failed_or_bad_record_mac = 0;
386
+ unsigned char *mac = NULL;
387
+
388
+
389
+ rr= &(s->s3->rrec);
390
+ sess = s->session;
391
+
392
+ /* At this point, s->packet_length == SSL3_RT_HEADER_LNGTH + rr->length,
393
+ * and we have that many bytes in s->packet
394
+ */
395
+ rr->input= &(s->packet[DTLS1_RT_HEADER_LENGTH]);
396
+
397
+ /* ok, we can now read from 's->packet' data into 'rr'
398
+ * rr->input points at rr->length bytes, which
399
+ * need to be copied into rr->data by either
400
+ * the decryption or by the decompression
401
+ * When the data is 'copied' into the rr->data buffer,
402
+ * rr->input will be pointed at the new buffer */
403
+
404
+ /* We now have - encrypted [ MAC [ compressed [ plain ] ] ]
405
+ * rr->length bytes of encrypted compressed stuff. */
406
+
407
+ /* check is not needed I believe */
408
+ if (rr->length > SSL3_RT_MAX_ENCRYPTED_LENGTH)
409
+ {
410
+ al=SSL_AD_RECORD_OVERFLOW;
411
+ SSLerr(SSL_F_DTLS1_PROCESS_RECORD,SSL_R_ENCRYPTED_LENGTH_TOO_LONG);
412
+ goto f_err;
413
+ }
414
+
415
+ /* decrypt in place in 'rr->input' */
416
+ rr->data=rr->input;
417
+
418
+ enc_err = s->method->ssl3_enc->enc(s,0);
419
+ if (enc_err <= 0)
420
+ {
421
+ /* To minimize information leaked via timing, we will always
422
+ * perform all computations before discarding the message.
423
+ */
424
+ decryption_failed_or_bad_record_mac = 1;
425
+ }
426
+
427
+ #ifdef TLS_DEBUG
428
+ printf("dec %d\n",rr->length);
429
+ { unsigned int z; for (z=0; z<rr->length; z++) printf("%02X%c",rr->data[z],((z+1)%16)?' ':'\n'); }
430
+ printf("\n");
431
+ #endif
432
+
433
+ /* r->length is now the compressed data plus mac */
434
+ if ( (sess == NULL) ||
435
+ (s->enc_read_ctx == NULL) ||
436
+ (s->read_hash == NULL))
437
+ clear=1;
438
+
439
+ if (!clear)
440
+ {
441
+ /* !clear => s->read_hash != NULL => mac_size != -1 */
442
+ int t;
443
+ t=EVP_MD_CTX_size(s->read_hash);
444
+ OPENSSL_assert(t >= 0);
445
+ mac_size=t;
446
+
447
+ if (rr->length > SSL3_RT_MAX_COMPRESSED_LENGTH+mac_size)
448
+ {
449
+ #if 0 /* OK only for stream ciphers (then rr->length is visible from ciphertext anyway) */
450
+ al=SSL_AD_RECORD_OVERFLOW;
451
+ SSLerr(SSL_F_DTLS1_PROCESS_RECORD,SSL_R_PRE_MAC_LENGTH_TOO_LONG);
452
+ goto f_err;
453
+ #else
454
+ decryption_failed_or_bad_record_mac = 1;
455
+ #endif
456
+ }
457
+ /* check the MAC for rr->input (it's in mac_size bytes at the tail) */
458
+ if (rr->length >= mac_size)
459
+ {
460
+ rr->length -= mac_size;
461
+ mac = &rr->data[rr->length];
462
+ }
463
+ else
464
+ rr->length = 0;
465
+ i=s->method->ssl3_enc->mac(s,md,0);
466
+ if (i < 0 || mac == NULL || memcmp(md, mac, mac_size) != 0)
467
+ {
468
+ decryption_failed_or_bad_record_mac = 1;
469
+ }
470
+ }
471
+
472
+ if (decryption_failed_or_bad_record_mac)
473
+ {
474
+ /* decryption failed, silently discard message */
475
+ rr->length = 0;
476
+ s->packet_length = 0;
477
+ goto err;
478
+ }
479
+
480
+ /* r->length is now just compressed */
481
+ if (s->expand != NULL)
482
+ {
483
+ if (rr->length > SSL3_RT_MAX_COMPRESSED_LENGTH)
484
+ {
485
+ al=SSL_AD_RECORD_OVERFLOW;
486
+ SSLerr(SSL_F_DTLS1_PROCESS_RECORD,SSL_R_COMPRESSED_LENGTH_TOO_LONG);
487
+ goto f_err;
488
+ }
489
+ if (!ssl3_do_uncompress(s))
490
+ {
491
+ al=SSL_AD_DECOMPRESSION_FAILURE;
492
+ SSLerr(SSL_F_DTLS1_PROCESS_RECORD,SSL_R_BAD_DECOMPRESSION);
493
+ goto f_err;
494
+ }
495
+ }
496
+
497
+ if (rr->length > SSL3_RT_MAX_PLAIN_LENGTH)
498
+ {
499
+ al=SSL_AD_RECORD_OVERFLOW;
500
+ SSLerr(SSL_F_DTLS1_PROCESS_RECORD,SSL_R_DATA_LENGTH_TOO_LONG);
501
+ goto f_err;
502
+ }
503
+
504
+ rr->off=0;
505
+ /* So at this point the following is true
506
+ * ssl->s3->rrec.type is the type of record
507
+ * ssl->s3->rrec.length == number of bytes in record
508
+ * ssl->s3->rrec.off == offset to first valid byte
509
+ * ssl->s3->rrec.data == where to take bytes from, increment
510
+ * after use :-).
511
+ */
512
+
513
+ /* we have pulled in a full packet so zero things */
514
+ s->packet_length=0;
515
+ dtls1_record_bitmap_update(s, &(s->d1->bitmap));/* Mark receipt of record. */
516
+ return(1);
517
+
518
+ f_err:
519
+ ssl3_send_alert(s,SSL3_AL_FATAL,al);
520
+ err:
521
+ return(0);
522
+ }
523
+
524
+
525
+ /* Call this to get a new input record.
526
+ * It will return <= 0 if more data is needed, normally due to an error
527
+ * or non-blocking IO.
528
+ * When it finishes, one packet has been decoded and can be found in
529
+ * ssl->s3->rrec.type - is the type of record
530
+ * ssl->s3->rrec.data, - data
531
+ * ssl->s3->rrec.length, - number of bytes
532
+ */
533
+ /* used only by dtls1_read_bytes */
534
+ int dtls1_get_record(SSL *s)
535
+ {
536
+ int ssl_major,ssl_minor;
537
+ int i,n;
538
+ SSL3_RECORD *rr;
539
+ unsigned char *p = NULL;
540
+ unsigned short version;
541
+ DTLS1_BITMAP *bitmap;
542
+ unsigned int is_next_epoch;
543
+
544
+ rr= &(s->s3->rrec);
545
+
546
+ /* The epoch may have changed. If so, process all the
547
+ * pending records. This is a non-blocking operation. */
548
+ dtls1_process_buffered_records(s);
549
+
550
+ /* if we're renegotiating, then there may be buffered records */
551
+ if (dtls1_get_processed_record(s))
552
+ return 1;
553
+
554
+ /* get something from the wire */
555
+ again:
556
+ /* check if we have the header */
557
+ if ( (s->rstate != SSL_ST_READ_BODY) ||
558
+ (s->packet_length < DTLS1_RT_HEADER_LENGTH))
559
+ {
560
+ n=ssl3_read_n(s, DTLS1_RT_HEADER_LENGTH, s->s3->rbuf.len, 0);
561
+ /* read timeout is handled by dtls1_read_bytes */
562
+ if (n <= 0) return(n); /* error or non-blocking */
563
+
564
+ /* this packet contained a partial record, dump it */
565
+ if (s->packet_length != DTLS1_RT_HEADER_LENGTH)
566
+ {
567
+ s->packet_length = 0;
568
+ goto again;
569
+ }
570
+
571
+ s->rstate=SSL_ST_READ_BODY;
572
+
573
+ p=s->packet;
574
+
575
+ /* Pull apart the header into the DTLS1_RECORD */
576
+ rr->type= *(p++);
577
+ ssl_major= *(p++);
578
+ ssl_minor= *(p++);
579
+ version=(ssl_major<<8)|ssl_minor;
580
+
581
+ /* sequence number is 64 bits, with top 2 bytes = epoch */
582
+ n2s(p,rr->epoch);
583
+
584
+ memcpy(&(s->s3->read_sequence[2]), p, 6);
585
+ p+=6;
586
+
587
+ n2s(p,rr->length);
588
+
589
+ /* Lets check version */
590
+ if (!s->first_packet)
591
+ {
592
+ if (version != s->version)
593
+ {
594
+ /* unexpected version, silently discard */
595
+ rr->length = 0;
596
+ s->packet_length = 0;
597
+ goto again;
598
+ }
599
+ }
600
+
601
+ if ((version & 0xff00) != (s->version & 0xff00))
602
+ {
603
+ /* wrong version, silently discard record */
604
+ rr->length = 0;
605
+ s->packet_length = 0;
606
+ goto again;
607
+ }
608
+
609
+ if (rr->length > SSL3_RT_MAX_ENCRYPTED_LENGTH)
610
+ {
611
+ /* record too long, silently discard it */
612
+ rr->length = 0;
613
+ s->packet_length = 0;
614
+ goto again;
615
+ }
616
+
617
+ /* now s->rstate == SSL_ST_READ_BODY */
618
+ }
619
+
620
+ /* s->rstate == SSL_ST_READ_BODY, get and decode the data */
621
+
622
+ if (rr->length > s->packet_length-DTLS1_RT_HEADER_LENGTH)
623
+ {
624
+ /* now s->packet_length == DTLS1_RT_HEADER_LENGTH */
625
+ i=rr->length;
626
+ n=ssl3_read_n(s,i,i,1);
627
+ if (n <= 0) return(n); /* error or non-blocking io */
628
+
629
+ /* this packet contained a partial record, dump it */
630
+ if ( n != i)
631
+ {
632
+ rr->length = 0;
633
+ s->packet_length = 0;
634
+ goto again;
635
+ }
636
+
637
+ /* now n == rr->length,
638
+ * and s->packet_length == DTLS1_RT_HEADER_LENGTH + rr->length */
639
+ }
640
+ s->rstate=SSL_ST_READ_HEADER; /* set state for later operations */
641
+
642
+ /* match epochs. NULL means the packet is dropped on the floor */
643
+ bitmap = dtls1_get_bitmap(s, rr, &is_next_epoch);
644
+ if ( bitmap == NULL)
645
+ {
646
+ rr->length = 0;
647
+ s->packet_length = 0; /* dump this record */
648
+ goto again; /* get another record */
649
+ }
650
+
651
+ #ifndef OPENSSL_NO_SCTP
652
+ /* Only do replay check if no SCTP bio */
653
+ if (!BIO_dgram_is_sctp(SSL_get_rbio(s)))
654
+ {
655
+ #endif
656
+ /* Check whether this is a repeat, or aged record.
657
+ * Don't check if we're listening and this message is
658
+ * a ClientHello. They can look as if they're replayed,
659
+ * since they arrive from different connections and
660
+ * would be dropped unnecessarily.
661
+ */
662
+ if (!(s->d1->listen && rr->type == SSL3_RT_HANDSHAKE &&
663
+ *p == SSL3_MT_CLIENT_HELLO) &&
664
+ !dtls1_record_replay_check(s, bitmap))
665
+ {
666
+ rr->length = 0;
667
+ s->packet_length=0; /* dump this record */
668
+ goto again; /* get another record */
669
+ }
670
+ #ifndef OPENSSL_NO_SCTP
671
+ }
672
+ #endif
673
+
674
+ /* just read a 0 length packet */
675
+ if (rr->length == 0) goto again;
676
+
677
+ /* If this record is from the next epoch (either HM or ALERT),
678
+ * and a handshake is currently in progress, buffer it since it
679
+ * cannot be processed at this time. However, do not buffer
680
+ * anything while listening.
681
+ */
682
+ if (is_next_epoch)
683
+ {
684
+ if ((SSL_in_init(s) || s->in_handshake) && !s->d1->listen)
685
+ {
686
+ dtls1_buffer_record(s, &(s->d1->unprocessed_rcds), rr->seq_num);
687
+ }
688
+ rr->length = 0;
689
+ s->packet_length = 0;
690
+ goto again;
691
+ }
692
+
693
+ if (!dtls1_process_record(s))
694
+ {
695
+ rr->length = 0;
696
+ s->packet_length = 0; /* dump this record */
697
+ goto again; /* get another record */
698
+ }
699
+
700
+ return(1);
701
+
702
+ }
703
+
704
+ /* Return up to 'len' payload bytes received in 'type' records.
705
+ * 'type' is one of the following:
706
+ *
707
+ * - SSL3_RT_HANDSHAKE (when ssl3_get_message calls us)
708
+ * - SSL3_RT_APPLICATION_DATA (when ssl3_read calls us)
709
+ * - 0 (during a shutdown, no data has to be returned)
710
+ *
711
+ * If we don't have stored data to work from, read a SSL/TLS record first
712
+ * (possibly multiple records if we still don't have anything to return).
713
+ *
714
+ * This function must handle any surprises the peer may have for us, such as
715
+ * Alert records (e.g. close_notify), ChangeCipherSpec records (not really
716
+ * a surprise, but handled as if it were), or renegotiation requests.
717
+ * Also if record payloads contain fragments too small to process, we store
718
+ * them until there is enough for the respective protocol (the record protocol
719
+ * may use arbitrary fragmentation and even interleaving):
720
+ * Change cipher spec protocol
721
+ * just 1 byte needed, no need for keeping anything stored
722
+ * Alert protocol
723
+ * 2 bytes needed (AlertLevel, AlertDescription)
724
+ * Handshake protocol
725
+ * 4 bytes needed (HandshakeType, uint24 length) -- we just have
726
+ * to detect unexpected Client Hello and Hello Request messages
727
+ * here, anything else is handled by higher layers
728
+ * Application data protocol
729
+ * none of our business
730
+ */
731
+ int dtls1_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek)
732
+ {
733
+ int al,i,j,ret;
734
+ unsigned int n;
735
+ SSL3_RECORD *rr;
736
+ void (*cb)(const SSL *ssl,int type2,int val)=NULL;
737
+
738
+ if (s->s3->rbuf.buf == NULL) /* Not initialized yet */
739
+ if (!ssl3_setup_buffers(s))
740
+ return(-1);
741
+
742
+ /* XXX: check what the second '&& type' is about */
743
+ if ((type && (type != SSL3_RT_APPLICATION_DATA) &&
744
+ (type != SSL3_RT_HANDSHAKE) && type) ||
745
+ (peek && (type != SSL3_RT_APPLICATION_DATA)))
746
+ {
747
+ SSLerr(SSL_F_DTLS1_READ_BYTES, ERR_R_INTERNAL_ERROR);
748
+ return -1;
749
+ }
750
+
751
+ /* check whether there's a handshake message (client hello?) waiting */
752
+ if ( (ret = have_handshake_fragment(s, type, buf, len, peek)))
753
+ return ret;
754
+
755
+ /* Now s->d1->handshake_fragment_len == 0 if type == SSL3_RT_HANDSHAKE. */
756
+
757
+ #ifndef OPENSSL_NO_SCTP
758
+ /* Continue handshake if it had to be interrupted to read
759
+ * app data with SCTP.
760
+ */
761
+ if ((!s->in_handshake && SSL_in_init(s)) ||
762
+ (BIO_dgram_is_sctp(SSL_get_rbio(s)) &&
763
+ (s->state == DTLS1_SCTP_ST_SR_READ_SOCK || s->state == DTLS1_SCTP_ST_CR_READ_SOCK) &&
764
+ s->s3->in_read_app_data != 2))
765
+ #else
766
+ if (!s->in_handshake && SSL_in_init(s))
767
+ #endif
768
+ {
769
+ /* type == SSL3_RT_APPLICATION_DATA */
770
+ i=s->handshake_func(s);
771
+ if (i < 0) return(i);
772
+ if (i == 0)
773
+ {
774
+ SSLerr(SSL_F_DTLS1_READ_BYTES,SSL_R_SSL_HANDSHAKE_FAILURE);
775
+ return(-1);
776
+ }
777
+ }
778
+
779
+ start:
780
+ s->rwstate=SSL_NOTHING;
781
+
782
+ /* s->s3->rrec.type - is the type of record
783
+ * s->s3->rrec.data, - data
784
+ * s->s3->rrec.off, - offset into 'data' for next read
785
+ * s->s3->rrec.length, - number of bytes. */
786
+ rr = &(s->s3->rrec);
787
+
788
+ /* We are not handshaking and have no data yet,
789
+ * so process data buffered during the last handshake
790
+ * in advance, if any.
791
+ */
792
+ if (s->state == SSL_ST_OK && rr->length == 0)
793
+ {
794
+ pitem *item;
795
+ item = pqueue_pop(s->d1->buffered_app_data.q);
796
+ if (item)
797
+ {
798
+ #ifndef OPENSSL_NO_SCTP
799
+ /* Restore bio_dgram_sctp_rcvinfo struct */
800
+ if (BIO_dgram_is_sctp(SSL_get_rbio(s)))
801
+ {
802
+ DTLS1_RECORD_DATA *rdata = (DTLS1_RECORD_DATA *) item->data;
803
+ BIO_ctrl(SSL_get_rbio(s), BIO_CTRL_DGRAM_SCTP_SET_RCVINFO, sizeof(rdata->recordinfo), &rdata->recordinfo);
804
+ }
805
+ #endif
806
+
807
+ dtls1_copy_record(s, item);
808
+
809
+ OPENSSL_free(item->data);
810
+ pitem_free(item);
811
+ }
812
+ }
813
+
814
+ /* Check for timeout */
815
+ if (dtls1_handle_timeout(s) > 0)
816
+ goto start;
817
+
818
+ /* get new packet if necessary */
819
+ if ((rr->length == 0) || (s->rstate == SSL_ST_READ_BODY))
820
+ {
821
+ ret=dtls1_get_record(s);
822
+ if (ret <= 0)
823
+ {
824
+ ret = dtls1_read_failed(s, ret);
825
+ /* anything other than a timeout is an error */
826
+ if (ret <= 0)
827
+ return(ret);
828
+ else
829
+ goto start;
830
+ }
831
+ }
832
+
833
+ /* we now have a packet which can be read and processed */
834
+
835
+ if (s->s3->change_cipher_spec /* set when we receive ChangeCipherSpec,
836
+ * reset by ssl3_get_finished */
837
+ && (rr->type != SSL3_RT_HANDSHAKE))
838
+ {
839
+ /* We now have application data between CCS and Finished.
840
+ * Most likely the packets were reordered on their way, so
841
+ * buffer the application data for later processing rather
842
+ * than dropping the connection.
843
+ */
844
+ dtls1_buffer_record(s, &(s->d1->buffered_app_data), rr->seq_num);
845
+ rr->length = 0;
846
+ goto start;
847
+ }
848
+
849
+ /* If the other end has shut down, throw anything we read away
850
+ * (even in 'peek' mode) */
851
+ if (s->shutdown & SSL_RECEIVED_SHUTDOWN)
852
+ {
853
+ rr->length=0;
854
+ s->rwstate=SSL_NOTHING;
855
+ return(0);
856
+ }
857
+
858
+
859
+ if (type == rr->type) /* SSL3_RT_APPLICATION_DATA or SSL3_RT_HANDSHAKE */
860
+ {
861
+ /* make sure that we are not getting application data when we
862
+ * are doing a handshake for the first time */
863
+ if (SSL_in_init(s) && (type == SSL3_RT_APPLICATION_DATA) &&
864
+ (s->enc_read_ctx == NULL))
865
+ {
866
+ al=SSL_AD_UNEXPECTED_MESSAGE;
867
+ SSLerr(SSL_F_DTLS1_READ_BYTES,SSL_R_APP_DATA_IN_HANDSHAKE);
868
+ goto f_err;
869
+ }
870
+
871
+ if (len <= 0) return(len);
872
+
873
+ if ((unsigned int)len > rr->length)
874
+ n = rr->length;
875
+ else
876
+ n = (unsigned int)len;
877
+
878
+ memcpy(buf,&(rr->data[rr->off]),n);
879
+ if (!peek)
880
+ {
881
+ rr->length-=n;
882
+ rr->off+=n;
883
+ if (rr->length == 0)
884
+ {
885
+ s->rstate=SSL_ST_READ_HEADER;
886
+ rr->off=0;
887
+ }
888
+ }
889
+
890
+ #ifndef OPENSSL_NO_SCTP
891
+ /* We were about to renegotiate but had to read
892
+ * belated application data first, so retry.
893
+ */
894
+ if (BIO_dgram_is_sctp(SSL_get_rbio(s)) &&
895
+ rr->type == SSL3_RT_APPLICATION_DATA &&
896
+ (s->state == DTLS1_SCTP_ST_SR_READ_SOCK || s->state == DTLS1_SCTP_ST_CR_READ_SOCK))
897
+ {
898
+ s->rwstate=SSL_READING;
899
+ BIO_clear_retry_flags(SSL_get_rbio(s));
900
+ BIO_set_retry_read(SSL_get_rbio(s));
901
+ }
902
+
903
+ /* We might had to delay a close_notify alert because
904
+ * of reordered app data. If there was an alert and there
905
+ * is no message to read anymore, finally set shutdown.
906
+ */
907
+ if (BIO_dgram_is_sctp(SSL_get_rbio(s)) &&
908
+ s->d1->shutdown_received && !BIO_dgram_sctp_msg_waiting(SSL_get_rbio(s)))
909
+ {
910
+ s->shutdown |= SSL_RECEIVED_SHUTDOWN;
911
+ return(0);
912
+ }
913
+ #endif
914
+ return(n);
915
+ }
916
+
917
+
918
+ /* If we get here, then type != rr->type; if we have a handshake
919
+ * message, then it was unexpected (Hello Request or Client Hello). */
920
+
921
+ /* In case of record types for which we have 'fragment' storage,
922
+ * fill that so that we can process the data at a fixed place.
923
+ */
924
+ {
925
+ unsigned int k, dest_maxlen = 0;
926
+ unsigned char *dest = NULL;
927
+ unsigned int *dest_len = NULL;
928
+
929
+ if (rr->type == SSL3_RT_HANDSHAKE)
930
+ {
931
+ dest_maxlen = sizeof s->d1->handshake_fragment;
932
+ dest = s->d1->handshake_fragment;
933
+ dest_len = &s->d1->handshake_fragment_len;
934
+ }
935
+ else if (rr->type == SSL3_RT_ALERT)
936
+ {
937
+ dest_maxlen = sizeof(s->d1->alert_fragment);
938
+ dest = s->d1->alert_fragment;
939
+ dest_len = &s->d1->alert_fragment_len;
940
+ }
941
+ #ifndef OPENSSL_NO_HEARTBEATS
942
+ else if (rr->type == TLS1_RT_HEARTBEAT)
943
+ {
944
+ dtls1_process_heartbeat(s);
945
+
946
+ /* Exit and notify application to read again */
947
+ rr->length = 0;
948
+ s->rwstate=SSL_READING;
949
+ BIO_clear_retry_flags(SSL_get_rbio(s));
950
+ BIO_set_retry_read(SSL_get_rbio(s));
951
+ return(-1);
952
+ }
953
+ #endif
954
+ /* else it's a CCS message, or application data or wrong */
955
+ else if (rr->type != SSL3_RT_CHANGE_CIPHER_SPEC)
956
+ {
957
+ /* Application data while renegotiating
958
+ * is allowed. Try again reading.
959
+ */
960
+ if (rr->type == SSL3_RT_APPLICATION_DATA)
961
+ {
962
+ BIO *bio;
963
+ s->s3->in_read_app_data=2;
964
+ bio=SSL_get_rbio(s);
965
+ s->rwstate=SSL_READING;
966
+ BIO_clear_retry_flags(bio);
967
+ BIO_set_retry_read(bio);
968
+ return(-1);
969
+ }
970
+
971
+ /* Not certain if this is the right error handling */
972
+ al=SSL_AD_UNEXPECTED_MESSAGE;
973
+ SSLerr(SSL_F_DTLS1_READ_BYTES,SSL_R_UNEXPECTED_RECORD);
974
+ goto f_err;
975
+ }
976
+
977
+ if (dest_maxlen > 0)
978
+ {
979
+ /* XDTLS: In a pathalogical case, the Client Hello
980
+ * may be fragmented--don't always expect dest_maxlen bytes */
981
+ if ( rr->length < dest_maxlen)
982
+ {
983
+ #ifdef DTLS1_AD_MISSING_HANDSHAKE_MESSAGE
984
+ /*
985
+ * for normal alerts rr->length is 2, while
986
+ * dest_maxlen is 7 if we were to handle this
987
+ * non-existing alert...
988
+ */
989
+ FIX ME
990
+ #endif
991
+ s->rstate=SSL_ST_READ_HEADER;
992
+ rr->length = 0;
993
+ goto start;
994
+ }
995
+
996
+ /* now move 'n' bytes: */
997
+ for ( k = 0; k < dest_maxlen; k++)
998
+ {
999
+ dest[k] = rr->data[rr->off++];
1000
+ rr->length--;
1001
+ }
1002
+ *dest_len = dest_maxlen;
1003
+ }
1004
+ }
1005
+
1006
+ /* s->d1->handshake_fragment_len == 12 iff rr->type == SSL3_RT_HANDSHAKE;
1007
+ * s->d1->alert_fragment_len == 7 iff rr->type == SSL3_RT_ALERT.
1008
+ * (Possibly rr is 'empty' now, i.e. rr->length may be 0.) */
1009
+
1010
+ /* If we are a client, check for an incoming 'Hello Request': */
1011
+ if ((!s->server) &&
1012
+ (s->d1->handshake_fragment_len >= DTLS1_HM_HEADER_LENGTH) &&
1013
+ (s->d1->handshake_fragment[0] == SSL3_MT_HELLO_REQUEST) &&
1014
+ (s->session != NULL) && (s->session->cipher != NULL))
1015
+ {
1016
+ s->d1->handshake_fragment_len = 0;
1017
+
1018
+ if ((s->d1->handshake_fragment[1] != 0) ||
1019
+ (s->d1->handshake_fragment[2] != 0) ||
1020
+ (s->d1->handshake_fragment[3] != 0))
1021
+ {
1022
+ al=SSL_AD_DECODE_ERROR;
1023
+ SSLerr(SSL_F_DTLS1_READ_BYTES,SSL_R_BAD_HELLO_REQUEST);
1024
+ goto err;
1025
+ }
1026
+
1027
+ /* no need to check sequence number on HELLO REQUEST messages */
1028
+
1029
+ if (s->msg_callback)
1030
+ s->msg_callback(0, s->version, SSL3_RT_HANDSHAKE,
1031
+ s->d1->handshake_fragment, 4, s, s->msg_callback_arg);
1032
+
1033
+ if (SSL_is_init_finished(s) &&
1034
+ !(s->s3->flags & SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS) &&
1035
+ !s->s3->renegotiate)
1036
+ {
1037
+ s->new_session = 1;
1038
+ ssl3_renegotiate(s);
1039
+ if (ssl3_renegotiate_check(s))
1040
+ {
1041
+ i=s->handshake_func(s);
1042
+ if (i < 0) return(i);
1043
+ if (i == 0)
1044
+ {
1045
+ SSLerr(SSL_F_DTLS1_READ_BYTES,SSL_R_SSL_HANDSHAKE_FAILURE);
1046
+ return(-1);
1047
+ }
1048
+
1049
+ if (!(s->mode & SSL_MODE_AUTO_RETRY))
1050
+ {
1051
+ if (s->s3->rbuf.left == 0) /* no read-ahead left? */
1052
+ {
1053
+ BIO *bio;
1054
+ /* In the case where we try to read application data,
1055
+ * but we trigger an SSL handshake, we return -1 with
1056
+ * the retry option set. Otherwise renegotiation may
1057
+ * cause nasty problems in the blocking world */
1058
+ s->rwstate=SSL_READING;
1059
+ bio=SSL_get_rbio(s);
1060
+ BIO_clear_retry_flags(bio);
1061
+ BIO_set_retry_read(bio);
1062
+ return(-1);
1063
+ }
1064
+ }
1065
+ }
1066
+ }
1067
+ /* we either finished a handshake or ignored the request,
1068
+ * now try again to obtain the (application) data we were asked for */
1069
+ goto start;
1070
+ }
1071
+
1072
+ if (s->d1->alert_fragment_len >= DTLS1_AL_HEADER_LENGTH)
1073
+ {
1074
+ int alert_level = s->d1->alert_fragment[0];
1075
+ int alert_descr = s->d1->alert_fragment[1];
1076
+
1077
+ s->d1->alert_fragment_len = 0;
1078
+
1079
+ if (s->msg_callback)
1080
+ s->msg_callback(0, s->version, SSL3_RT_ALERT,
1081
+ s->d1->alert_fragment, 2, s, s->msg_callback_arg);
1082
+
1083
+ if (s->info_callback != NULL)
1084
+ cb=s->info_callback;
1085
+ else if (s->ctx->info_callback != NULL)
1086
+ cb=s->ctx->info_callback;
1087
+
1088
+ if (cb != NULL)
1089
+ {
1090
+ j = (alert_level << 8) | alert_descr;
1091
+ cb(s, SSL_CB_READ_ALERT, j);
1092
+ }
1093
+
1094
+ if (alert_level == 1) /* warning */
1095
+ {
1096
+ s->s3->warn_alert = alert_descr;
1097
+ if (alert_descr == SSL_AD_CLOSE_NOTIFY)
1098
+ {
1099
+ #ifndef OPENSSL_NO_SCTP
1100
+ /* With SCTP and streams the socket may deliver app data
1101
+ * after a close_notify alert. We have to check this
1102
+ * first so that nothing gets discarded.
1103
+ */
1104
+ if (BIO_dgram_is_sctp(SSL_get_rbio(s)) &&
1105
+ BIO_dgram_sctp_msg_waiting(SSL_get_rbio(s)))
1106
+ {
1107
+ s->d1->shutdown_received = 1;
1108
+ s->rwstate=SSL_READING;
1109
+ BIO_clear_retry_flags(SSL_get_rbio(s));
1110
+ BIO_set_retry_read(SSL_get_rbio(s));
1111
+ return -1;
1112
+ }
1113
+ #endif
1114
+ s->shutdown |= SSL_RECEIVED_SHUTDOWN;
1115
+ return(0);
1116
+ }
1117
+ #if 0
1118
+ /* XXX: this is a possible improvement in the future */
1119
+ /* now check if it's a missing record */
1120
+ if (alert_descr == DTLS1_AD_MISSING_HANDSHAKE_MESSAGE)
1121
+ {
1122
+ unsigned short seq;
1123
+ unsigned int frag_off;
1124
+ unsigned char *p = &(s->d1->alert_fragment[2]);
1125
+
1126
+ n2s(p, seq);
1127
+ n2l3(p, frag_off);
1128
+
1129
+ dtls1_retransmit_message(s,
1130
+ dtls1_get_queue_priority(frag->msg_header.seq, 0),
1131
+ frag_off, &found);
1132
+ if ( ! found && SSL_in_init(s))
1133
+ {
1134
+ /* fprintf( stderr,"in init = %d\n", SSL_in_init(s)); */
1135
+ /* requested a message not yet sent,
1136
+ send an alert ourselves */
1137
+ ssl3_send_alert(s,SSL3_AL_WARNING,
1138
+ DTLS1_AD_MISSING_HANDSHAKE_MESSAGE);
1139
+ }
1140
+ }
1141
+ #endif
1142
+ }
1143
+ else if (alert_level == 2) /* fatal */
1144
+ {
1145
+ char tmp[16];
1146
+
1147
+ s->rwstate=SSL_NOTHING;
1148
+ s->s3->fatal_alert = alert_descr;
1149
+ SSLerr(SSL_F_DTLS1_READ_BYTES, SSL_AD_REASON_OFFSET + alert_descr);
1150
+ BIO_snprintf(tmp,sizeof tmp,"%d",alert_descr);
1151
+ ERR_add_error_data(2,"SSL alert number ",tmp);
1152
+ s->shutdown|=SSL_RECEIVED_SHUTDOWN;
1153
+ SSL_CTX_remove_session(s->ctx,s->session);
1154
+ return(0);
1155
+ }
1156
+ else
1157
+ {
1158
+ al=SSL_AD_ILLEGAL_PARAMETER;
1159
+ SSLerr(SSL_F_DTLS1_READ_BYTES,SSL_R_UNKNOWN_ALERT_TYPE);
1160
+ goto f_err;
1161
+ }
1162
+
1163
+ goto start;
1164
+ }
1165
+
1166
+ if (s->shutdown & SSL_SENT_SHUTDOWN) /* but we have not received a shutdown */
1167
+ {
1168
+ s->rwstate=SSL_NOTHING;
1169
+ rr->length=0;
1170
+ return(0);
1171
+ }
1172
+
1173
+ if (rr->type == SSL3_RT_CHANGE_CIPHER_SPEC)
1174
+ {
1175
+ struct ccs_header_st ccs_hdr;
1176
+ unsigned int ccs_hdr_len = DTLS1_CCS_HEADER_LENGTH;
1177
+
1178
+ dtls1_get_ccs_header(rr->data, &ccs_hdr);
1179
+
1180
+ if (s->version == DTLS1_BAD_VER)
1181
+ ccs_hdr_len = 3;
1182
+
1183
+ /* 'Change Cipher Spec' is just a single byte, so we know
1184
+ * exactly what the record payload has to look like */
1185
+ /* XDTLS: check that epoch is consistent */
1186
+ if ( (rr->length != ccs_hdr_len) ||
1187
+ (rr->off != 0) || (rr->data[0] != SSL3_MT_CCS))
1188
+ {
1189
+ i=SSL_AD_ILLEGAL_PARAMETER;
1190
+ SSLerr(SSL_F_DTLS1_READ_BYTES,SSL_R_BAD_CHANGE_CIPHER_SPEC);
1191
+ goto err;
1192
+ }
1193
+
1194
+ rr->length=0;
1195
+
1196
+ if (s->msg_callback)
1197
+ s->msg_callback(0, s->version, SSL3_RT_CHANGE_CIPHER_SPEC,
1198
+ rr->data, 1, s, s->msg_callback_arg);
1199
+
1200
+ /* We can't process a CCS now, because previous handshake
1201
+ * messages are still missing, so just drop it.
1202
+ */
1203
+ if (!s->d1->change_cipher_spec_ok)
1204
+ {
1205
+ goto start;
1206
+ }
1207
+
1208
+ s->d1->change_cipher_spec_ok = 0;
1209
+
1210
+ s->s3->change_cipher_spec=1;
1211
+ if (!ssl3_do_change_cipher_spec(s))
1212
+ goto err;
1213
+
1214
+ /* do this whenever CCS is processed */
1215
+ dtls1_reset_seq_numbers(s, SSL3_CC_READ);
1216
+
1217
+ if (s->version == DTLS1_BAD_VER)
1218
+ s->d1->handshake_read_seq++;
1219
+
1220
+ #ifndef OPENSSL_NO_SCTP
1221
+ /* Remember that a CCS has been received,
1222
+ * so that an old key of SCTP-Auth can be
1223
+ * deleted when a CCS is sent. Will be ignored
1224
+ * if no SCTP is used
1225
+ */
1226
+ BIO_ctrl(SSL_get_wbio(s), BIO_CTRL_DGRAM_SCTP_AUTH_CCS_RCVD, 1, NULL);
1227
+ #endif
1228
+
1229
+ goto start;
1230
+ }
1231
+
1232
+ /* Unexpected handshake message (Client Hello, or protocol violation) */
1233
+ if ((s->d1->handshake_fragment_len >= DTLS1_HM_HEADER_LENGTH) &&
1234
+ !s->in_handshake)
1235
+ {
1236
+ struct hm_header_st msg_hdr;
1237
+
1238
+ /* this may just be a stale retransmit */
1239
+ dtls1_get_message_header(rr->data, &msg_hdr);
1240
+ if( rr->epoch != s->d1->r_epoch)
1241
+ {
1242
+ rr->length = 0;
1243
+ goto start;
1244
+ }
1245
+
1246
+ /* If we are server, we may have a repeated FINISHED of the
1247
+ * client here, then retransmit our CCS and FINISHED.
1248
+ */
1249
+ if (msg_hdr.type == SSL3_MT_FINISHED)
1250
+ {
1251
+ if (dtls1_check_timeout_num(s) < 0)
1252
+ return -1;
1253
+
1254
+ dtls1_retransmit_buffered_messages(s);
1255
+ rr->length = 0;
1256
+ goto start;
1257
+ }
1258
+
1259
+ if (((s->state&SSL_ST_MASK) == SSL_ST_OK) &&
1260
+ !(s->s3->flags & SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS))
1261
+ {
1262
+ #if 0 /* worked only because C operator preferences are not as expected (and
1263
+ * because this is not really needed for clients except for detecting
1264
+ * protocol violations): */
1265
+ s->state=SSL_ST_BEFORE|(s->server)
1266
+ ?SSL_ST_ACCEPT
1267
+ :SSL_ST_CONNECT;
1268
+ #else
1269
+ s->state = s->server ? SSL_ST_ACCEPT : SSL_ST_CONNECT;
1270
+ #endif
1271
+ s->renegotiate=1;
1272
+ s->new_session=1;
1273
+ }
1274
+ i=s->handshake_func(s);
1275
+ if (i < 0) return(i);
1276
+ if (i == 0)
1277
+ {
1278
+ SSLerr(SSL_F_DTLS1_READ_BYTES,SSL_R_SSL_HANDSHAKE_FAILURE);
1279
+ return(-1);
1280
+ }
1281
+
1282
+ if (!(s->mode & SSL_MODE_AUTO_RETRY))
1283
+ {
1284
+ if (s->s3->rbuf.left == 0) /* no read-ahead left? */
1285
+ {
1286
+ BIO *bio;
1287
+ /* In the case where we try to read application data,
1288
+ * but we trigger an SSL handshake, we return -1 with
1289
+ * the retry option set. Otherwise renegotiation may
1290
+ * cause nasty problems in the blocking world */
1291
+ s->rwstate=SSL_READING;
1292
+ bio=SSL_get_rbio(s);
1293
+ BIO_clear_retry_flags(bio);
1294
+ BIO_set_retry_read(bio);
1295
+ return(-1);
1296
+ }
1297
+ }
1298
+ goto start;
1299
+ }
1300
+
1301
+ switch (rr->type)
1302
+ {
1303
+ default:
1304
+ #ifndef OPENSSL_NO_TLS
1305
+ /* TLS just ignores unknown message types */
1306
+ if (s->version == TLS1_VERSION)
1307
+ {
1308
+ rr->length = 0;
1309
+ goto start;
1310
+ }
1311
+ #endif
1312
+ al=SSL_AD_UNEXPECTED_MESSAGE;
1313
+ SSLerr(SSL_F_DTLS1_READ_BYTES,SSL_R_UNEXPECTED_RECORD);
1314
+ goto f_err;
1315
+ case SSL3_RT_CHANGE_CIPHER_SPEC:
1316
+ case SSL3_RT_ALERT:
1317
+ case SSL3_RT_HANDSHAKE:
1318
+ /* we already handled all of these, with the possible exception
1319
+ * of SSL3_RT_HANDSHAKE when s->in_handshake is set, but that
1320
+ * should not happen when type != rr->type */
1321
+ al=SSL_AD_UNEXPECTED_MESSAGE;
1322
+ SSLerr(SSL_F_DTLS1_READ_BYTES,ERR_R_INTERNAL_ERROR);
1323
+ goto f_err;
1324
+ case SSL3_RT_APPLICATION_DATA:
1325
+ /* At this point, we were expecting handshake data,
1326
+ * but have application data. If the library was
1327
+ * running inside ssl3_read() (i.e. in_read_app_data
1328
+ * is set) and it makes sense to read application data
1329
+ * at this point (session renegotiation not yet started),
1330
+ * we will indulge it.
1331
+ */
1332
+ if (s->s3->in_read_app_data &&
1333
+ (s->s3->total_renegotiations != 0) &&
1334
+ ((
1335
+ (s->state & SSL_ST_CONNECT) &&
1336
+ (s->state >= SSL3_ST_CW_CLNT_HELLO_A) &&
1337
+ (s->state <= SSL3_ST_CR_SRVR_HELLO_A)
1338
+ ) || (
1339
+ (s->state & SSL_ST_ACCEPT) &&
1340
+ (s->state <= SSL3_ST_SW_HELLO_REQ_A) &&
1341
+ (s->state >= SSL3_ST_SR_CLNT_HELLO_A)
1342
+ )
1343
+ ))
1344
+ {
1345
+ s->s3->in_read_app_data=2;
1346
+ return(-1);
1347
+ }
1348
+ else
1349
+ {
1350
+ al=SSL_AD_UNEXPECTED_MESSAGE;
1351
+ SSLerr(SSL_F_DTLS1_READ_BYTES,SSL_R_UNEXPECTED_RECORD);
1352
+ goto f_err;
1353
+ }
1354
+ }
1355
+ /* not reached */
1356
+
1357
+ f_err:
1358
+ ssl3_send_alert(s,SSL3_AL_FATAL,al);
1359
+ err:
1360
+ return(-1);
1361
+ }
1362
+
1363
+ int
1364
+ dtls1_write_app_data_bytes(SSL *s, int type, const void *buf_, int len)
1365
+ {
1366
+ int i;
1367
+
1368
+ #ifndef OPENSSL_NO_SCTP
1369
+ /* Check if we have to continue an interrupted handshake
1370
+ * for reading belated app data with SCTP.
1371
+ */
1372
+ if ((SSL_in_init(s) && !s->in_handshake) ||
1373
+ (BIO_dgram_is_sctp(SSL_get_wbio(s)) &&
1374
+ (s->state == DTLS1_SCTP_ST_SR_READ_SOCK || s->state == DTLS1_SCTP_ST_CR_READ_SOCK)))
1375
+ #else
1376
+ if (SSL_in_init(s) && !s->in_handshake)
1377
+ #endif
1378
+ {
1379
+ i=s->handshake_func(s);
1380
+ if (i < 0) return(i);
1381
+ if (i == 0)
1382
+ {
1383
+ SSLerr(SSL_F_DTLS1_WRITE_APP_DATA_BYTES,SSL_R_SSL_HANDSHAKE_FAILURE);
1384
+ return -1;
1385
+ }
1386
+ }
1387
+
1388
+ if (len > SSL3_RT_MAX_PLAIN_LENGTH)
1389
+ {
1390
+ SSLerr(SSL_F_DTLS1_WRITE_APP_DATA_BYTES,SSL_R_DTLS_MESSAGE_TOO_BIG);
1391
+ return -1;
1392
+ }
1393
+
1394
+ i = dtls1_write_bytes(s, type, buf_, len);
1395
+ return i;
1396
+ }
1397
+
1398
+
1399
+ /* this only happens when a client hello is received and a handshake
1400
+ * is started. */
1401
+ static int
1402
+ have_handshake_fragment(SSL *s, int type, unsigned char *buf,
1403
+ int len, int peek)
1404
+ {
1405
+
1406
+ if ((type == SSL3_RT_HANDSHAKE) && (s->d1->handshake_fragment_len > 0))
1407
+ /* (partially) satisfy request from storage */
1408
+ {
1409
+ unsigned char *src = s->d1->handshake_fragment;
1410
+ unsigned char *dst = buf;
1411
+ unsigned int k,n;
1412
+
1413
+ /* peek == 0 */
1414
+ n = 0;
1415
+ while ((len > 0) && (s->d1->handshake_fragment_len > 0))
1416
+ {
1417
+ *dst++ = *src++;
1418
+ len--; s->d1->handshake_fragment_len--;
1419
+ n++;
1420
+ }
1421
+ /* move any remaining fragment bytes: */
1422
+ for (k = 0; k < s->d1->handshake_fragment_len; k++)
1423
+ s->d1->handshake_fragment[k] = *src++;
1424
+ return n;
1425
+ }
1426
+
1427
+ return 0;
1428
+ }
1429
+
1430
+
1431
+
1432
+
1433
+ /* Call this to write data in records of type 'type'
1434
+ * It will return <= 0 if not all data has been sent or non-blocking IO.
1435
+ */
1436
+ int dtls1_write_bytes(SSL *s, int type, const void *buf, int len)
1437
+ {
1438
+ int i;
1439
+
1440
+ OPENSSL_assert(len <= SSL3_RT_MAX_PLAIN_LENGTH);
1441
+ s->rwstate=SSL_NOTHING;
1442
+ i=do_dtls1_write(s, type, buf, len, 0);
1443
+ return i;
1444
+ }
1445
+
1446
+ int do_dtls1_write(SSL *s, int type, const unsigned char *buf, unsigned int len, int create_empty_fragment)
1447
+ {
1448
+ unsigned char *p,*pseq;
1449
+ int i,mac_size,clear=0;
1450
+ int prefix_len = 0;
1451
+ SSL3_RECORD *wr;
1452
+ SSL3_BUFFER *wb;
1453
+ SSL_SESSION *sess;
1454
+ int bs;
1455
+
1456
+ /* first check if there is a SSL3_BUFFER still being written
1457
+ * out. This will happen with non blocking IO */
1458
+ if (s->s3->wbuf.left != 0)
1459
+ {
1460
+ OPENSSL_assert(0); /* XDTLS: want to see if we ever get here */
1461
+ return(ssl3_write_pending(s,type,buf,len));
1462
+ }
1463
+
1464
+ /* If we have an alert to send, lets send it */
1465
+ if (s->s3->alert_dispatch)
1466
+ {
1467
+ i=s->method->ssl_dispatch_alert(s);
1468
+ if (i <= 0)
1469
+ return(i);
1470
+ /* if it went, fall through and send more stuff */
1471
+ }
1472
+
1473
+ if (len == 0 && !create_empty_fragment)
1474
+ return 0;
1475
+
1476
+ wr= &(s->s3->wrec);
1477
+ wb= &(s->s3->wbuf);
1478
+ sess=s->session;
1479
+
1480
+ if ( (sess == NULL) ||
1481
+ (s->enc_write_ctx == NULL) ||
1482
+ (EVP_MD_CTX_md(s->write_hash) == NULL))
1483
+ clear=1;
1484
+
1485
+ if (clear)
1486
+ mac_size=0;
1487
+ else
1488
+ {
1489
+ mac_size=EVP_MD_CTX_size(s->write_hash);
1490
+ if (mac_size < 0)
1491
+ goto err;
1492
+ }
1493
+
1494
+ /* DTLS implements explicit IV, so no need for empty fragments */
1495
+ #if 0
1496
+ /* 'create_empty_fragment' is true only when this function calls itself */
1497
+ if (!clear && !create_empty_fragment && !s->s3->empty_fragment_done
1498
+ && SSL_version(s) != DTLS1_VERSION && SSL_version(s) != DTLS1_BAD_VER)
1499
+ {
1500
+ /* countermeasure against known-IV weakness in CBC ciphersuites
1501
+ * (see http://www.openssl.org/~bodo/tls-cbc.txt)
1502
+ */
1503
+
1504
+ if (s->s3->need_empty_fragments && type == SSL3_RT_APPLICATION_DATA)
1505
+ {
1506
+ /* recursive function call with 'create_empty_fragment' set;
1507
+ * this prepares and buffers the data for an empty fragment
1508
+ * (these 'prefix_len' bytes are sent out later
1509
+ * together with the actual payload) */
1510
+ prefix_len = s->method->do_ssl_write(s, type, buf, 0, 1);
1511
+ if (prefix_len <= 0)
1512
+ goto err;
1513
+
1514
+ if (s->s3->wbuf.len < (size_t)prefix_len + SSL3_RT_MAX_PACKET_SIZE)
1515
+ {
1516
+ /* insufficient space */
1517
+ SSLerr(SSL_F_DO_DTLS1_WRITE, ERR_R_INTERNAL_ERROR);
1518
+ goto err;
1519
+ }
1520
+ }
1521
+
1522
+ s->s3->empty_fragment_done = 1;
1523
+ }
1524
+ #endif
1525
+ p = wb->buf + prefix_len;
1526
+
1527
+ /* write the header */
1528
+
1529
+ *(p++)=type&0xff;
1530
+ wr->type=type;
1531
+
1532
+ *(p++)=(s->version>>8);
1533
+ *(p++)=s->version&0xff;
1534
+
1535
+ /* field where we are to write out packet epoch, seq num and len */
1536
+ pseq=p;
1537
+ p+=10;
1538
+
1539
+ /* lets setup the record stuff. */
1540
+
1541
+ /* Make space for the explicit IV in case of CBC.
1542
+ * (this is a bit of a boundary violation, but what the heck).
1543
+ */
1544
+ if ( s->enc_write_ctx &&
1545
+ (EVP_CIPHER_mode( s->enc_write_ctx->cipher ) & EVP_CIPH_CBC_MODE))
1546
+ bs = EVP_CIPHER_block_size(s->enc_write_ctx->cipher);
1547
+ else
1548
+ bs = 0;
1549
+
1550
+ wr->data=p + bs; /* make room for IV in case of CBC */
1551
+ wr->length=(int)len;
1552
+ wr->input=(unsigned char *)buf;
1553
+
1554
+ /* we now 'read' from wr->input, wr->length bytes into
1555
+ * wr->data */
1556
+
1557
+ /* first we compress */
1558
+ if (s->compress != NULL)
1559
+ {
1560
+ if (!ssl3_do_compress(s))
1561
+ {
1562
+ SSLerr(SSL_F_DO_DTLS1_WRITE,SSL_R_COMPRESSION_FAILURE);
1563
+ goto err;
1564
+ }
1565
+ }
1566
+ else
1567
+ {
1568
+ memcpy(wr->data,wr->input,wr->length);
1569
+ wr->input=wr->data;
1570
+ }
1571
+
1572
+ /* we should still have the output to wr->data and the input
1573
+ * from wr->input. Length should be wr->length.
1574
+ * wr->data still points in the wb->buf */
1575
+
1576
+ if (mac_size != 0)
1577
+ {
1578
+ if(s->method->ssl3_enc->mac(s,&(p[wr->length + bs]),1) < 0)
1579
+ goto err;
1580
+ wr->length+=mac_size;
1581
+ }
1582
+
1583
+ /* this is true regardless of mac size */
1584
+ wr->input=p;
1585
+ wr->data=p;
1586
+
1587
+
1588
+ /* ssl3_enc can only have an error on read */
1589
+ if (bs) /* bs != 0 in case of CBC */
1590
+ {
1591
+ RAND_pseudo_bytes(p,bs);
1592
+ /* master IV and last CBC residue stand for
1593
+ * the rest of randomness */
1594
+ wr->length += bs;
1595
+ }
1596
+
1597
+ s->method->ssl3_enc->enc(s,1);
1598
+
1599
+ /* record length after mac and block padding */
1600
+ /* if (type == SSL3_RT_APPLICATION_DATA ||
1601
+ (type == SSL3_RT_ALERT && ! SSL_in_init(s))) */
1602
+
1603
+ /* there's only one epoch between handshake and app data */
1604
+
1605
+ s2n(s->d1->w_epoch, pseq);
1606
+
1607
+ /* XDTLS: ?? */
1608
+ /* else
1609
+ s2n(s->d1->handshake_epoch, pseq); */
1610
+
1611
+ memcpy(pseq, &(s->s3->write_sequence[2]), 6);
1612
+ pseq+=6;
1613
+ s2n(wr->length,pseq);
1614
+
1615
+ /* we should now have
1616
+ * wr->data pointing to the encrypted data, which is
1617
+ * wr->length long */
1618
+ wr->type=type; /* not needed but helps for debugging */
1619
+ wr->length+=DTLS1_RT_HEADER_LENGTH;
1620
+
1621
+ #if 0 /* this is now done at the message layer */
1622
+ /* buffer the record, making it easy to handle retransmits */
1623
+ if ( type == SSL3_RT_HANDSHAKE || type == SSL3_RT_CHANGE_CIPHER_SPEC)
1624
+ dtls1_buffer_record(s, wr->data, wr->length,
1625
+ *((PQ_64BIT *)&(s->s3->write_sequence[0])));
1626
+ #endif
1627
+
1628
+ ssl3_record_sequence_update(&(s->s3->write_sequence[0]));
1629
+
1630
+ if (create_empty_fragment)
1631
+ {
1632
+ /* we are in a recursive call;
1633
+ * just return the length, don't write out anything here
1634
+ */
1635
+ return wr->length;
1636
+ }
1637
+
1638
+ /* now let's set up wb */
1639
+ wb->left = prefix_len + wr->length;
1640
+ wb->offset = 0;
1641
+
1642
+ /* memorize arguments so that ssl3_write_pending can detect bad write retries later */
1643
+ s->s3->wpend_tot=len;
1644
+ s->s3->wpend_buf=buf;
1645
+ s->s3->wpend_type=type;
1646
+ s->s3->wpend_ret=len;
1647
+
1648
+ /* we now just need to write the buffer */
1649
+ return ssl3_write_pending(s,type,buf,len);
1650
+ err:
1651
+ return -1;
1652
+ }
1653
+
1654
+
1655
+
1656
+ static int dtls1_record_replay_check(SSL *s, DTLS1_BITMAP *bitmap)
1657
+ {
1658
+ int cmp;
1659
+ unsigned int shift;
1660
+ const unsigned char *seq = s->s3->read_sequence;
1661
+
1662
+ cmp = satsub64be(seq,bitmap->max_seq_num);
1663
+ if (cmp > 0)
1664
+ {
1665
+ memcpy (s->s3->rrec.seq_num,seq,8);
1666
+ return 1; /* this record in new */
1667
+ }
1668
+ shift = -cmp;
1669
+ if (shift >= sizeof(bitmap->map)*8)
1670
+ return 0; /* stale, outside the window */
1671
+ else if (bitmap->map & (1UL<<shift))
1672
+ return 0; /* record previously received */
1673
+
1674
+ memcpy (s->s3->rrec.seq_num,seq,8);
1675
+ return 1;
1676
+ }
1677
+
1678
+
1679
+ static void dtls1_record_bitmap_update(SSL *s, DTLS1_BITMAP *bitmap)
1680
+ {
1681
+ int cmp;
1682
+ unsigned int shift;
1683
+ const unsigned char *seq = s->s3->read_sequence;
1684
+
1685
+ cmp = satsub64be(seq,bitmap->max_seq_num);
1686
+ if (cmp > 0)
1687
+ {
1688
+ shift = cmp;
1689
+ if (shift < sizeof(bitmap->map)*8)
1690
+ bitmap->map <<= shift, bitmap->map |= 1UL;
1691
+ else
1692
+ bitmap->map = 1UL;
1693
+ memcpy(bitmap->max_seq_num,seq,8);
1694
+ }
1695
+ else {
1696
+ shift = -cmp;
1697
+ if (shift < sizeof(bitmap->map)*8)
1698
+ bitmap->map |= 1UL<<shift;
1699
+ }
1700
+ }
1701
+
1702
+
1703
+ int dtls1_dispatch_alert(SSL *s)
1704
+ {
1705
+ int i,j;
1706
+ void (*cb)(const SSL *ssl,int type,int val)=NULL;
1707
+ unsigned char buf[DTLS1_AL_HEADER_LENGTH];
1708
+ unsigned char *ptr = &buf[0];
1709
+
1710
+ s->s3->alert_dispatch=0;
1711
+
1712
+ memset(buf, 0x00, sizeof(buf));
1713
+ *ptr++ = s->s3->send_alert[0];
1714
+ *ptr++ = s->s3->send_alert[1];
1715
+
1716
+ #ifdef DTLS1_AD_MISSING_HANDSHAKE_MESSAGE
1717
+ if (s->s3->send_alert[1] == DTLS1_AD_MISSING_HANDSHAKE_MESSAGE)
1718
+ {
1719
+ s2n(s->d1->handshake_read_seq, ptr);
1720
+ #if 0
1721
+ if ( s->d1->r_msg_hdr.frag_off == 0) /* waiting for a new msg */
1722
+
1723
+ else
1724
+ s2n(s->d1->r_msg_hdr.seq, ptr); /* partial msg read */
1725
+ #endif
1726
+
1727
+ #if 0
1728
+ fprintf(stderr, "s->d1->handshake_read_seq = %d, s->d1->r_msg_hdr.seq = %d\n",s->d1->handshake_read_seq,s->d1->r_msg_hdr.seq);
1729
+ #endif
1730
+ l2n3(s->d1->r_msg_hdr.frag_off, ptr);
1731
+ }
1732
+ #endif
1733
+
1734
+ i = do_dtls1_write(s, SSL3_RT_ALERT, &buf[0], sizeof(buf), 0);
1735
+ if (i <= 0)
1736
+ {
1737
+ s->s3->alert_dispatch=1;
1738
+ /* fprintf( stderr, "not done with alert\n" ); */
1739
+ }
1740
+ else
1741
+ {
1742
+ if (s->s3->send_alert[0] == SSL3_AL_FATAL
1743
+ #ifdef DTLS1_AD_MISSING_HANDSHAKE_MESSAGE
1744
+ || s->s3->send_alert[1] == DTLS1_AD_MISSING_HANDSHAKE_MESSAGE
1745
+ #endif
1746
+ )
1747
+ (void)BIO_flush(s->wbio);
1748
+
1749
+ if (s->msg_callback)
1750
+ s->msg_callback(1, s->version, SSL3_RT_ALERT, s->s3->send_alert,
1751
+ 2, s, s->msg_callback_arg);
1752
+
1753
+ if (s->info_callback != NULL)
1754
+ cb=s->info_callback;
1755
+ else if (s->ctx->info_callback != NULL)
1756
+ cb=s->ctx->info_callback;
1757
+
1758
+ if (cb != NULL)
1759
+ {
1760
+ j=(s->s3->send_alert[0]<<8)|s->s3->send_alert[1];
1761
+ cb(s,SSL_CB_WRITE_ALERT,j);
1762
+ }
1763
+ }
1764
+ return(i);
1765
+ }
1766
+
1767
+
1768
+ static DTLS1_BITMAP *
1769
+ dtls1_get_bitmap(SSL *s, SSL3_RECORD *rr, unsigned int *is_next_epoch)
1770
+ {
1771
+
1772
+ *is_next_epoch = 0;
1773
+
1774
+ /* In current epoch, accept HM, CCS, DATA, & ALERT */
1775
+ if (rr->epoch == s->d1->r_epoch)
1776
+ return &s->d1->bitmap;
1777
+
1778
+ /* Only HM and ALERT messages can be from the next epoch */
1779
+ else if (rr->epoch == (unsigned long)(s->d1->r_epoch + 1) &&
1780
+ (rr->type == SSL3_RT_HANDSHAKE ||
1781
+ rr->type == SSL3_RT_ALERT))
1782
+ {
1783
+ *is_next_epoch = 1;
1784
+ return &s->d1->next_bitmap;
1785
+ }
1786
+
1787
+ return NULL;
1788
+ }
1789
+
1790
+ #if 0
1791
+ static int
1792
+ dtls1_record_needs_buffering(SSL *s, SSL3_RECORD *rr, unsigned short *priority,
1793
+ unsigned long *offset)
1794
+ {
1795
+
1796
+ /* alerts are passed up immediately */
1797
+ if ( rr->type == SSL3_RT_APPLICATION_DATA ||
1798
+ rr->type == SSL3_RT_ALERT)
1799
+ return 0;
1800
+
1801
+ /* Only need to buffer if a handshake is underway.
1802
+ * (this implies that Hello Request and Client Hello are passed up
1803
+ * immediately) */
1804
+ if ( SSL_in_init(s))
1805
+ {
1806
+ unsigned char *data = rr->data;
1807
+ /* need to extract the HM/CCS sequence number here */
1808
+ if ( rr->type == SSL3_RT_HANDSHAKE ||
1809
+ rr->type == SSL3_RT_CHANGE_CIPHER_SPEC)
1810
+ {
1811
+ unsigned short seq_num;
1812
+ struct hm_header_st msg_hdr;
1813
+ struct ccs_header_st ccs_hdr;
1814
+
1815
+ if ( rr->type == SSL3_RT_HANDSHAKE)
1816
+ {
1817
+ dtls1_get_message_header(data, &msg_hdr);
1818
+ seq_num = msg_hdr.seq;
1819
+ *offset = msg_hdr.frag_off;
1820
+ }
1821
+ else
1822
+ {
1823
+ dtls1_get_ccs_header(data, &ccs_hdr);
1824
+ seq_num = ccs_hdr.seq;
1825
+ *offset = 0;
1826
+ }
1827
+
1828
+ /* this is either a record we're waiting for, or a
1829
+ * retransmit of something we happened to previously
1830
+ * receive (higher layers will drop the repeat silently */
1831
+ if ( seq_num < s->d1->handshake_read_seq)
1832
+ return 0;
1833
+ if (rr->type == SSL3_RT_HANDSHAKE &&
1834
+ seq_num == s->d1->handshake_read_seq &&
1835
+ msg_hdr.frag_off < s->d1->r_msg_hdr.frag_off)
1836
+ return 0;
1837
+ else if ( seq_num == s->d1->handshake_read_seq &&
1838
+ (rr->type == SSL3_RT_CHANGE_CIPHER_SPEC ||
1839
+ msg_hdr.frag_off == s->d1->r_msg_hdr.frag_off))
1840
+ return 0;
1841
+ else
1842
+ {
1843
+ *priority = seq_num;
1844
+ return 1;
1845
+ }
1846
+ }
1847
+ else /* unknown record type */
1848
+ return 0;
1849
+ }
1850
+
1851
+ return 0;
1852
+ }
1853
+ #endif
1854
+
1855
+ void
1856
+ dtls1_reset_seq_numbers(SSL *s, int rw)
1857
+ {
1858
+ unsigned char *seq;
1859
+ unsigned int seq_bytes = sizeof(s->s3->read_sequence);
1860
+
1861
+ if ( rw & SSL3_CC_READ)
1862
+ {
1863
+ seq = s->s3->read_sequence;
1864
+ s->d1->r_epoch++;
1865
+ memcpy(&(s->d1->bitmap), &(s->d1->next_bitmap), sizeof(DTLS1_BITMAP));
1866
+ memset(&(s->d1->next_bitmap), 0x00, sizeof(DTLS1_BITMAP));
1867
+ }
1868
+ else
1869
+ {
1870
+ seq = s->s3->write_sequence;
1871
+ memcpy(s->d1->last_write_sequence, seq, sizeof(s->s3->write_sequence));
1872
+ s->d1->w_epoch++;
1873
+ }
1874
+
1875
+ memset(seq, 0x00, seq_bytes);
1876
+ }