grpc 0.12.0 → 0.13.0.pre1.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (673) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +5707 -22222
  3. data/include/grpc/byte_buffer.h +2 -83
  4. data/include/grpc/census.h +191 -121
  5. data/include/grpc/compression.h +14 -38
  6. data/include/grpc/grpc.h +88 -434
  7. data/include/grpc/grpc_security.h +76 -46
  8. data/include/grpc/grpc_zookeeper.h +1 -1
  9. data/include/grpc/impl/codegen/alloc.h +74 -0
  10. data/include/grpc/impl/codegen/atm.h +92 -0
  11. data/include/grpc/impl/codegen/atm_gcc_atomic.h +72 -0
  12. data/include/grpc/impl/codegen/atm_gcc_sync.h +87 -0
  13. data/include/grpc/impl/codegen/atm_win32.h +125 -0
  14. data/include/grpc/impl/codegen/byte_buffer.h +121 -0
  15. data/include/grpc/impl/codegen/compression_types.h +73 -0
  16. data/include/grpc/impl/codegen/connectivity_state.h +59 -0
  17. data/include/grpc/impl/codegen/grpc_types.h +373 -0
  18. data/include/grpc/impl/codegen/log.h +110 -0
  19. data/include/grpc/impl/codegen/port_platform.h +362 -0
  20. data/include/grpc/impl/codegen/propagation_bits.h +67 -0
  21. data/include/grpc/impl/codegen/slice.h +182 -0
  22. data/include/grpc/impl/codegen/slice_buffer.h +105 -0
  23. data/include/grpc/impl/codegen/status.h +163 -0
  24. data/include/grpc/impl/codegen/sync.h +316 -0
  25. data/include/grpc/impl/codegen/sync_generic.h +55 -0
  26. data/{src/core/census/context.h → include/grpc/impl/codegen/sync_posix.h} +11 -11
  27. data/include/grpc/impl/codegen/sync_win32.h +49 -0
  28. data/include/grpc/impl/codegen/time.h +132 -0
  29. data/include/grpc/status.h +2 -126
  30. data/include/grpc/support/alloc.h +2 -35
  31. data/include/grpc/support/atm.h +2 -55
  32. data/include/grpc/support/atm_gcc_atomic.h +5 -38
  33. data/include/grpc/support/atm_gcc_sync.h +2 -50
  34. data/include/grpc/support/atm_win32.h +2 -88
  35. data/include/grpc/support/avl.h +7 -7
  36. data/include/grpc/support/cmdline.h +15 -13
  37. data/include/grpc/support/cpu.h +5 -3
  38. data/include/grpc/support/histogram.h +23 -20
  39. data/include/grpc/support/host_port.h +5 -3
  40. data/include/grpc/support/log.h +2 -71
  41. data/include/grpc/support/log_win32.h +2 -2
  42. data/include/grpc/support/port_platform.h +2 -319
  43. data/include/grpc/support/slice.h +2 -145
  44. data/include/grpc/support/slice_buffer.h +2 -65
  45. data/include/grpc/support/string_util.h +3 -3
  46. data/include/grpc/support/subprocess.h +8 -6
  47. data/include/grpc/support/sync.h +2 -278
  48. data/include/grpc/support/sync_generic.h +2 -18
  49. data/include/grpc/support/sync_posix.h +2 -10
  50. data/include/grpc/support/sync_win32.h +2 -12
  51. data/include/grpc/support/thd.h +11 -11
  52. data/include/grpc/support/time.h +2 -91
  53. data/include/grpc/support/tls.h +1 -1
  54. data/include/grpc/support/tls_gcc.h +1 -1
  55. data/include/grpc/support/tls_msvc.h +1 -1
  56. data/include/grpc/support/tls_pthread.h +2 -2
  57. data/src/boringssl/err_data.c +1252 -0
  58. data/src/core/census/context.c +492 -8
  59. data/src/core/census/grpc_filter.c +3 -3
  60. data/src/core/census/initialize.c +4 -7
  61. data/src/core/census/operation.c +2 -2
  62. data/src/core/census/placeholders.c +109 -0
  63. data/src/core/census/rpc_metric_id.h +6 -6
  64. data/src/core/census/tracing.c +1 -1
  65. data/src/core/channel/channel_args.c +4 -3
  66. data/src/core/channel/channel_stack.c +1 -1
  67. data/src/core/channel/client_channel.c +18 -14
  68. data/src/core/channel/client_uchannel.c +3 -3
  69. data/src/core/channel/compress_filter.c +8 -8
  70. data/src/core/channel/http_client_filter.c +2 -2
  71. data/src/core/channel/http_server_filter.c +9 -9
  72. data/src/core/channel/subchannel_call_holder.c +12 -10
  73. data/src/core/client_config/lb_policies/pick_first.c +49 -31
  74. data/src/core/client_config/lb_policies/round_robin.c +7 -7
  75. data/src/core/client_config/resolvers/dns_resolver.c +3 -3
  76. data/src/core/client_config/resolvers/sockaddr_resolver.c +5 -5
  77. data/src/core/client_config/subchannel.c +36 -25
  78. data/src/core/compression/algorithm.c +3 -3
  79. data/src/core/httpcli/format_request.c +1 -1
  80. data/src/core/httpcli/httpcli.c +5 -5
  81. data/src/core/httpcli/httpcli_security_connector.c +2 -3
  82. data/src/core/httpcli/parser.c +7 -7
  83. data/src/core/httpcli/parser.h +1 -1
  84. data/src/core/iomgr/closure.c +7 -7
  85. data/src/core/iomgr/closure.h +6 -5
  86. data/src/core/iomgr/exec_ctx.c +12 -8
  87. data/src/core/iomgr/exec_ctx.h +12 -5
  88. data/src/core/iomgr/executor.c +4 -4
  89. data/src/core/iomgr/executor.h +2 -2
  90. data/src/core/iomgr/fd_posix.c +28 -17
  91. data/src/core/iomgr/fd_posix.h +7 -4
  92. data/src/core/iomgr/iocp_windows.c +6 -8
  93. data/src/core/iomgr/pollset_multipoller_with_epoll.c +70 -5
  94. data/src/core/iomgr/pollset_multipoller_with_poll_posix.c +4 -2
  95. data/src/core/iomgr/pollset_posix.c +15 -15
  96. data/src/core/iomgr/pollset_posix.h +4 -2
  97. data/src/core/iomgr/pollset_windows.c +3 -12
  98. data/src/core/iomgr/resolve_address_posix.c +2 -2
  99. data/src/core/iomgr/resolve_address_windows.c +2 -2
  100. data/src/core/iomgr/sockaddr_utils.c +6 -6
  101. data/src/core/iomgr/sockaddr_win32.h +1 -6
  102. data/src/core/iomgr/tcp_client_posix.c +7 -7
  103. data/src/core/iomgr/tcp_client_windows.c +4 -4
  104. data/src/core/iomgr/tcp_posix.c +14 -8
  105. data/src/core/iomgr/tcp_posix.h +7 -1
  106. data/src/core/iomgr/tcp_server.h +40 -20
  107. data/src/core/iomgr/tcp_server_posix.c +106 -49
  108. data/src/core/iomgr/tcp_server_windows.c +98 -49
  109. data/src/core/iomgr/tcp_windows.c +11 -15
  110. data/src/core/iomgr/timer.c +8 -8
  111. data/src/core/iomgr/timer.h +1 -1
  112. data/src/core/iomgr/timer_heap.c +10 -10
  113. data/src/core/iomgr/timer_heap.h +2 -2
  114. data/src/core/iomgr/udp_server.c +2 -12
  115. data/src/core/iomgr/udp_server.h +1 -9
  116. data/src/core/iomgr/workqueue.h +2 -4
  117. data/src/core/iomgr/workqueue_posix.c +3 -3
  118. data/src/core/json/json_reader.c +11 -12
  119. data/src/core/json/json_reader.h +4 -4
  120. data/src/core/json/json_string.c +19 -19
  121. data/src/core/json/json_writer.c +7 -9
  122. data/src/core/profiling/basic_timers.c +1 -1
  123. data/src/core/security/base64.c +9 -9
  124. data/src/core/security/client_auth_filter.c +4 -4
  125. data/src/core/security/credentials.c +5 -5
  126. data/src/core/security/google_default_credentials.c +3 -3
  127. data/src/core/security/handshake.c +6 -5
  128. data/src/core/security/json_token.c +13 -7
  129. data/src/core/security/jwt_verifier.c +3 -2
  130. data/src/core/security/secure_endpoint.c +16 -16
  131. data/src/core/security/security_connector.c +47 -17
  132. data/src/core/security/security_connector.h +5 -5
  133. data/src/core/security/server_auth_filter.c +3 -3
  134. data/src/core/security/server_secure_chttp2.c +30 -31
  135. data/src/core/statistics/census_interface.h +2 -2
  136. data/src/core/statistics/census_rpc_stats.h +3 -3
  137. data/src/core/support/alloc.c +1 -1
  138. data/src/core/support/cpu_posix.c +2 -2
  139. data/src/core/support/env_linux.c +12 -2
  140. data/src/core/support/env_win32.c +15 -7
  141. data/src/core/support/histogram.c +5 -5
  142. data/src/core/support/log_posix.c +1 -1
  143. data/src/core/support/log_win32.c +4 -3
  144. data/src/core/support/murmur_hash.c +11 -11
  145. data/src/core/support/murmur_hash.h +1 -1
  146. data/src/core/support/slice.c +11 -11
  147. data/src/core/support/slice_buffer.c +6 -6
  148. data/src/core/support/stack_lockfree.c +20 -10
  149. data/src/core/support/string.c +15 -15
  150. data/src/core/support/string.h +5 -5
  151. data/src/core/support/string_win32.c +5 -5
  152. data/src/core/support/subprocess_windows.c +141 -0
  153. data/src/core/support/sync.c +4 -4
  154. data/src/core/support/sync_posix.c +2 -2
  155. data/src/core/support/sync_win32.c +10 -5
  156. data/src/core/support/time.c +29 -29
  157. data/src/core/support/time_posix.c +15 -6
  158. data/src/core/support/time_precise.c +2 -2
  159. data/src/core/support/time_win32.c +18 -9
  160. data/src/core/support/tls_pthread.c +1 -1
  161. data/src/core/support/wrap_memcpy.c +53 -0
  162. data/src/core/surface/alarm.c +83 -0
  163. data/src/core/surface/byte_buffer_reader.c +1 -1
  164. data/src/core/surface/call.c +78 -69
  165. data/src/core/surface/call.h +2 -2
  166. data/src/core/surface/call_test_only.h +2 -2
  167. data/src/core/surface/channel.c +9 -9
  168. data/src/core/surface/channel.h +1 -1
  169. data/src/core/surface/channel_connectivity.c +3 -3
  170. data/src/core/surface/channel_create.c +3 -3
  171. data/src/core/surface/channel_ping.c +2 -2
  172. data/src/core/surface/completion_queue.c +11 -12
  173. data/src/core/surface/completion_queue.h +1 -1
  174. data/src/core/surface/init.c +7 -5
  175. data/src/core/surface/lame_client.c +3 -3
  176. data/src/core/surface/secure_channel_create.c +3 -3
  177. data/src/core/surface/server.c +28 -28
  178. data/src/core/surface/server_chttp2.c +8 -8
  179. data/src/core/surface/server_create.c +1 -4
  180. data/src/core/surface/validate_metadata.c +3 -3
  181. data/src/core/surface/version.c +2 -2
  182. data/src/core/transport/byte_stream.c +8 -6
  183. data/src/core/transport/byte_stream.h +6 -5
  184. data/src/core/transport/chttp2/bin_encoder.c +29 -29
  185. data/src/core/transport/chttp2/frame_data.c +29 -26
  186. data/src/core/transport/chttp2/frame_data.h +6 -6
  187. data/src/core/transport/chttp2/frame_goaway.c +30 -30
  188. data/src/core/transport/chttp2/frame_goaway.h +6 -6
  189. data/src/core/transport/chttp2/frame_ping.c +6 -6
  190. data/src/core/transport/chttp2/frame_ping.h +5 -5
  191. data/src/core/transport/chttp2/frame_rst_stream.c +18 -19
  192. data/src/core/transport/chttp2/frame_rst_stream.h +4 -4
  193. data/src/core/transport/chttp2/frame_settings.c +30 -30
  194. data/src/core/transport/chttp2/frame_settings.h +13 -13
  195. data/src/core/transport/chttp2/frame_window_update.c +17 -18
  196. data/src/core/transport/chttp2/frame_window_update.h +5 -7
  197. data/src/core/transport/chttp2/hpack_encoder.c +69 -73
  198. data/src/core/transport/chttp2/hpack_encoder.h +16 -16
  199. data/src/core/transport/chttp2/hpack_parser.c +167 -167
  200. data/src/core/transport/chttp2/hpack_parser.h +16 -16
  201. data/src/core/transport/chttp2/hpack_table.c +13 -13
  202. data/src/core/transport/chttp2/hpack_table.h +11 -11
  203. data/src/core/transport/chttp2/internal.h +97 -86
  204. data/src/core/transport/chttp2/parsing.c +25 -25
  205. data/src/core/transport/chttp2/stream_lists.c +26 -3
  206. data/src/core/transport/chttp2/stream_map.c +13 -14
  207. data/src/core/transport/chttp2/stream_map.h +6 -7
  208. data/src/core/transport/chttp2/timeout_encoding.c +19 -16
  209. data/src/core/transport/chttp2/varint.c +8 -9
  210. data/src/core/transport/chttp2/varint.h +7 -8
  211. data/src/core/transport/chttp2/writing.c +26 -23
  212. data/src/core/transport/chttp2_transport.c +133 -92
  213. data/src/core/transport/connectivity_state.c +6 -6
  214. data/src/core/transport/metadata.c +18 -18
  215. data/src/core/transport/metadata.h +5 -5
  216. data/src/core/transport/static_metadata.c +15 -16
  217. data/src/core/transport/static_metadata.h +5 -5
  218. data/src/core/transport/transport.c +5 -5
  219. data/src/core/transport/transport.h +14 -1
  220. data/src/core/tsi/fake_transport_security.c +7 -7
  221. data/src/core/tsi/ssl_transport_security.c +6 -4
  222. data/src/core/tsi/ssl_types.h +55 -0
  223. data/src/ruby/ext/grpc/extconf.rb +51 -14
  224. data/src/ruby/ext/grpc/rb_byte_buffer.c +3 -1
  225. data/src/ruby/ext/grpc/rb_call.c +6 -3
  226. data/src/ruby/ext/grpc/rb_call_credentials.c +4 -0
  227. data/src/ruby/ext/grpc/rb_channel.c +4 -2
  228. data/src/ruby/ext/grpc/rb_channel_args.c +3 -1
  229. data/src/ruby/ext/grpc/rb_channel_credentials.c +3 -1
  230. data/src/ruby/ext/grpc/rb_completion_queue.c +3 -1
  231. data/src/ruby/ext/grpc/rb_event_thread.c +5 -0
  232. data/src/ruby/ext/grpc/rb_grpc.c +11 -3
  233. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +560 -0
  234. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +843 -0
  235. data/src/ruby/ext/grpc/rb_loader.c +72 -0
  236. data/src/ruby/ext/grpc/rb_loader.h +40 -0
  237. data/src/ruby/ext/grpc/rb_server.c +3 -1
  238. data/src/ruby/ext/grpc/rb_server_credentials.c +4 -2
  239. data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
  240. data/src/ruby/lib/grpc/generic/rpc_desc.rb +1 -1
  241. data/src/ruby/lib/grpc/generic/rpc_server.rb +1 -1
  242. data/src/ruby/lib/grpc/grpc.rb +34 -0
  243. data/src/ruby/lib/grpc/version.rb +1 -1
  244. data/src/ruby/spec/pb/health/checker_spec.rb +1 -1
  245. data/third_party/boringssl/crypto/aes/aes.c +1142 -0
  246. data/third_party/boringssl/crypto/aes/internal.h +87 -0
  247. data/third_party/boringssl/crypto/aes/mode_wrappers.c +108 -0
  248. data/third_party/boringssl/crypto/asn1/a_bitstr.c +255 -0
  249. data/third_party/boringssl/crypto/asn1/a_bool.c +112 -0
  250. data/third_party/boringssl/crypto/asn1/a_bytes.c +317 -0
  251. data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +286 -0
  252. data/third_party/boringssl/crypto/asn1/a_dup.c +103 -0
  253. data/third_party/boringssl/crypto/asn1/a_enum.c +183 -0
  254. data/third_party/boringssl/crypto/asn1/a_gentm.c +255 -0
  255. data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +154 -0
  256. data/third_party/boringssl/crypto/asn1/a_int.c +456 -0
  257. data/third_party/boringssl/crypto/asn1/a_mbstr.c +390 -0
  258. data/third_party/boringssl/crypto/asn1/a_object.c +412 -0
  259. data/third_party/boringssl/crypto/asn1/a_octet.c +70 -0
  260. data/third_party/boringssl/crypto/asn1/a_print.c +119 -0
  261. data/third_party/boringssl/crypto/asn1/a_strnid.c +286 -0
  262. data/third_party/boringssl/crypto/asn1/a_time.c +221 -0
  263. data/third_party/boringssl/crypto/asn1/a_type.c +160 -0
  264. data/third_party/boringssl/crypto/asn1/a_utctm.c +342 -0
  265. data/third_party/boringssl/crypto/asn1/a_utf8.c +210 -0
  266. data/third_party/boringssl/crypto/asn1/asn1_lib.c +510 -0
  267. data/third_party/boringssl/crypto/asn1/asn1_locl.h +73 -0
  268. data/third_party/boringssl/crypto/asn1/asn1_par.c +444 -0
  269. data/third_party/boringssl/crypto/asn1/asn_pack.c +104 -0
  270. data/third_party/boringssl/crypto/asn1/bio_asn1.c +496 -0
  271. data/third_party/boringssl/crypto/asn1/bio_ndef.c +254 -0
  272. data/third_party/boringssl/crypto/asn1/f_enum.c +206 -0
  273. data/third_party/boringssl/crypto/asn1/f_int.c +210 -0
  274. data/third_party/boringssl/crypto/asn1/f_string.c +204 -0
  275. data/third_party/boringssl/crypto/asn1/t_bitst.c +102 -0
  276. data/third_party/boringssl/crypto/asn1/t_pkey.c +112 -0
  277. data/third_party/boringssl/crypto/asn1/tasn_dec.c +1342 -0
  278. data/third_party/boringssl/crypto/asn1/tasn_enc.c +695 -0
  279. data/third_party/boringssl/crypto/asn1/tasn_fre.c +264 -0
  280. data/third_party/boringssl/crypto/asn1/tasn_new.c +398 -0
  281. data/third_party/boringssl/crypto/asn1/tasn_prn.c +642 -0
  282. data/third_party/boringssl/crypto/asn1/tasn_typ.c +137 -0
  283. data/third_party/boringssl/crypto/asn1/tasn_utl.c +266 -0
  284. data/third_party/boringssl/crypto/asn1/x_bignum.c +143 -0
  285. data/third_party/boringssl/crypto/asn1/x_long.c +182 -0
  286. data/third_party/boringssl/crypto/base64/base64.c +478 -0
  287. data/third_party/boringssl/crypto/bio/bio.c +608 -0
  288. data/third_party/boringssl/crypto/bio/bio_mem.c +327 -0
  289. data/third_party/boringssl/crypto/bio/buffer.c +496 -0
  290. data/third_party/boringssl/crypto/bio/connect.c +544 -0
  291. data/third_party/boringssl/crypto/bio/fd.c +270 -0
  292. data/third_party/boringssl/crypto/bio/file.c +349 -0
  293. data/third_party/boringssl/crypto/bio/hexdump.c +192 -0
  294. data/third_party/boringssl/crypto/bio/internal.h +108 -0
  295. data/third_party/boringssl/crypto/bio/pair.c +803 -0
  296. data/third_party/boringssl/crypto/bio/printf.c +119 -0
  297. data/third_party/boringssl/crypto/bio/socket.c +195 -0
  298. data/third_party/boringssl/crypto/bio/socket_helper.c +113 -0
  299. data/third_party/boringssl/crypto/bn/add.c +377 -0
  300. data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +599 -0
  301. data/third_party/boringssl/crypto/bn/bn.c +341 -0
  302. data/third_party/boringssl/crypto/bn/bn_asn1.c +93 -0
  303. data/third_party/boringssl/crypto/bn/cmp.c +200 -0
  304. data/third_party/boringssl/crypto/bn/convert.c +597 -0
  305. data/third_party/boringssl/crypto/bn/ctx.c +311 -0
  306. data/third_party/boringssl/crypto/bn/div.c +625 -0
  307. data/third_party/boringssl/crypto/bn/exponentiation.c +1544 -0
  308. data/third_party/boringssl/crypto/bn/gcd.c +711 -0
  309. data/third_party/boringssl/crypto/bn/generic.c +1019 -0
  310. data/third_party/boringssl/crypto/bn/internal.h +294 -0
  311. data/third_party/boringssl/crypto/bn/kronecker.c +175 -0
  312. data/third_party/boringssl/crypto/bn/montgomery.c +561 -0
  313. data/third_party/boringssl/crypto/bn/mul.c +888 -0
  314. data/third_party/boringssl/crypto/bn/prime.c +845 -0
  315. data/third_party/boringssl/crypto/bn/random.c +326 -0
  316. data/third_party/boringssl/crypto/bn/rsaz_exp.c +326 -0
  317. data/third_party/boringssl/crypto/bn/rsaz_exp.h +56 -0
  318. data/third_party/boringssl/crypto/bn/shift.c +299 -0
  319. data/third_party/boringssl/crypto/bn/sqrt.c +505 -0
  320. data/third_party/boringssl/crypto/buf/buf.c +235 -0
  321. data/third_party/boringssl/crypto/bytestring/ber.c +221 -0
  322. data/third_party/boringssl/crypto/bytestring/cbb.c +411 -0
  323. data/third_party/boringssl/crypto/bytestring/cbs.c +415 -0
  324. data/third_party/boringssl/crypto/bytestring/internal.h +46 -0
  325. data/third_party/boringssl/crypto/chacha/chacha_generic.c +140 -0
  326. data/third_party/boringssl/crypto/chacha/chacha_vec.c +323 -0
  327. data/third_party/boringssl/crypto/cipher/aead.c +167 -0
  328. data/third_party/boringssl/crypto/cipher/cipher.c +652 -0
  329. data/third_party/boringssl/crypto/cipher/derive_key.c +154 -0
  330. data/third_party/boringssl/crypto/cipher/e_aes.c +1767 -0
  331. data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +311 -0
  332. data/third_party/boringssl/crypto/cipher/e_des.c +207 -0
  333. data/third_party/boringssl/crypto/cipher/e_null.c +85 -0
  334. data/third_party/boringssl/crypto/cipher/e_rc2.c +443 -0
  335. data/third_party/boringssl/crypto/cipher/e_rc4.c +87 -0
  336. data/third_party/boringssl/crypto/cipher/e_ssl3.c +463 -0
  337. data/third_party/boringssl/crypto/cipher/e_tls.c +673 -0
  338. data/third_party/boringssl/crypto/cipher/internal.h +164 -0
  339. data/third_party/boringssl/crypto/cipher/tls_cbc.c +495 -0
  340. data/third_party/boringssl/crypto/cmac/cmac.c +239 -0
  341. data/third_party/boringssl/crypto/conf/conf.c +778 -0
  342. data/third_party/boringssl/crypto/conf/conf_def.h +127 -0
  343. data/third_party/boringssl/crypto/conf/internal.h +31 -0
  344. data/third_party/boringssl/crypto/cpu-arm.c +199 -0
  345. data/third_party/boringssl/crypto/cpu-intel.c +261 -0
  346. data/third_party/boringssl/crypto/crypto.c +140 -0
  347. data/third_party/boringssl/crypto/curve25519/curve25519.c +4897 -0
  348. data/third_party/boringssl/crypto/des/des.c +771 -0
  349. data/third_party/boringssl/crypto/des/internal.h +212 -0
  350. data/third_party/boringssl/crypto/dh/check.c +180 -0
  351. data/third_party/boringssl/crypto/dh/dh.c +463 -0
  352. data/third_party/boringssl/crypto/dh/dh_asn1.c +84 -0
  353. data/third_party/boringssl/crypto/dh/internal.h +80 -0
  354. data/third_party/boringssl/crypto/dh/params.c +301 -0
  355. data/third_party/boringssl/crypto/digest/digest.c +248 -0
  356. data/third_party/boringssl/crypto/digest/digests.c +321 -0
  357. data/third_party/boringssl/crypto/digest/internal.h +112 -0
  358. data/third_party/boringssl/crypto/digest/md32_common.h +322 -0
  359. data/third_party/boringssl/crypto/directory.h +66 -0
  360. data/third_party/boringssl/crypto/directory_posix.c +108 -0
  361. data/third_party/boringssl/crypto/directory_win.c +144 -0
  362. data/third_party/boringssl/crypto/dsa/dsa.c +908 -0
  363. data/third_party/boringssl/crypto/dsa/dsa_asn1.c +150 -0
  364. data/third_party/boringssl/crypto/dsa/internal.h +78 -0
  365. data/third_party/boringssl/crypto/ec/ec.c +889 -0
  366. data/third_party/boringssl/crypto/ec/ec_asn1.c +586 -0
  367. data/third_party/boringssl/crypto/ec/ec_key.c +482 -0
  368. data/third_party/boringssl/crypto/ec/ec_montgomery.c +280 -0
  369. data/third_party/boringssl/crypto/ec/internal.h +318 -0
  370. data/third_party/boringssl/crypto/ec/oct.c +416 -0
  371. data/third_party/boringssl/crypto/ec/p224-64.c +1305 -0
  372. data/third_party/boringssl/crypto/ec/p256-64.c +1878 -0
  373. data/third_party/boringssl/crypto/ec/p256-x86_64-table.h +9548 -0
  374. data/third_party/boringssl/crypto/ec/p256-x86_64.c +596 -0
  375. data/third_party/boringssl/crypto/ec/simple.c +1313 -0
  376. data/third_party/boringssl/crypto/ec/util-64.c +183 -0
  377. data/third_party/boringssl/crypto/ec/wnaf.c +449 -0
  378. data/third_party/boringssl/crypto/ecdh/ecdh.c +153 -0
  379. data/third_party/boringssl/crypto/ecdsa/ecdsa.c +496 -0
  380. data/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c +240 -0
  381. data/third_party/boringssl/crypto/engine/engine.c +96 -0
  382. data/third_party/boringssl/crypto/err/err.c +756 -0
  383. data/third_party/boringssl/crypto/evp/algorithm.c +153 -0
  384. data/third_party/boringssl/crypto/evp/digestsign.c +159 -0
  385. data/third_party/boringssl/crypto/evp/evp.c +411 -0
  386. data/third_party/boringssl/crypto/evp/evp_asn1.c +179 -0
  387. data/third_party/boringssl/crypto/evp/evp_ctx.c +477 -0
  388. data/third_party/boringssl/crypto/evp/internal.h +278 -0
  389. data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +588 -0
  390. data/third_party/boringssl/crypto/evp/p_ec.c +283 -0
  391. data/third_party/boringssl/crypto/evp/p_ec_asn1.c +562 -0
  392. data/third_party/boringssl/crypto/evp/p_rsa.c +596 -0
  393. data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +737 -0
  394. data/third_party/boringssl/crypto/evp/pbkdf.c +151 -0
  395. data/third_party/boringssl/crypto/evp/sign.c +151 -0
  396. data/third_party/boringssl/crypto/ex_data.c +294 -0
  397. data/third_party/boringssl/crypto/hkdf/hkdf.c +89 -0
  398. data/third_party/boringssl/crypto/hmac/hmac.c +213 -0
  399. data/third_party/boringssl/crypto/internal.h +532 -0
  400. data/third_party/boringssl/crypto/lhash/lhash.c +346 -0
  401. data/third_party/boringssl/crypto/md4/md4.c +225 -0
  402. data/third_party/boringssl/crypto/md5/md5.c +275 -0
  403. data/third_party/boringssl/crypto/mem.c +200 -0
  404. data/third_party/boringssl/crypto/modes/cbc.c +216 -0
  405. data/third_party/boringssl/crypto/modes/cfb.c +231 -0
  406. data/third_party/boringssl/crypto/modes/ctr.c +226 -0
  407. data/third_party/boringssl/crypto/modes/gcm.c +1252 -0
  408. data/third_party/boringssl/crypto/modes/internal.h +370 -0
  409. data/third_party/boringssl/crypto/modes/ofb.c +108 -0
  410. data/third_party/boringssl/crypto/obj/obj.c +664 -0
  411. data/third_party/boringssl/crypto/obj/obj_dat.h +5257 -0
  412. data/third_party/boringssl/crypto/obj/obj_xref.c +124 -0
  413. data/third_party/boringssl/crypto/obj/obj_xref.h +96 -0
  414. data/third_party/boringssl/crypto/pem/pem_all.c +281 -0
  415. data/third_party/boringssl/crypto/pem/pem_info.c +404 -0
  416. data/third_party/boringssl/crypto/pem/pem_lib.c +835 -0
  417. data/third_party/boringssl/crypto/pem/pem_oth.c +89 -0
  418. data/third_party/boringssl/crypto/pem/pem_pk8.c +244 -0
  419. data/third_party/boringssl/crypto/pem/pem_pkey.c +312 -0
  420. data/third_party/boringssl/crypto/pem/pem_x509.c +65 -0
  421. data/third_party/boringssl/crypto/pem/pem_xaux.c +66 -0
  422. data/third_party/boringssl/crypto/pkcs8/internal.h +83 -0
  423. data/third_party/boringssl/crypto/pkcs8/p5_pbe.c +150 -0
  424. data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +440 -0
  425. data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +85 -0
  426. data/third_party/boringssl/crypto/pkcs8/pkcs8.c +1217 -0
  427. data/third_party/boringssl/crypto/poly1305/poly1305.c +331 -0
  428. data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +301 -0
  429. data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +892 -0
  430. data/third_party/boringssl/crypto/rand/internal.h +32 -0
  431. data/third_party/boringssl/crypto/rand/rand.c +239 -0
  432. data/third_party/boringssl/crypto/rand/urandom.c +223 -0
  433. data/third_party/boringssl/crypto/rand/windows.c +56 -0
  434. data/third_party/boringssl/crypto/rc4/rc4.c +283 -0
  435. data/third_party/boringssl/crypto/refcount_c11.c +67 -0
  436. data/third_party/boringssl/crypto/refcount_lock.c +53 -0
  437. data/third_party/boringssl/crypto/rsa/blinding.c +462 -0
  438. data/third_party/boringssl/crypto/rsa/internal.h +164 -0
  439. data/third_party/boringssl/crypto/rsa/padding.c +711 -0
  440. data/third_party/boringssl/crypto/rsa/rsa.c +808 -0
  441. data/third_party/boringssl/crypto/rsa/rsa_asn1.c +473 -0
  442. data/third_party/boringssl/crypto/rsa/rsa_impl.c +1138 -0
  443. data/third_party/boringssl/crypto/sha/sha1.c +337 -0
  444. data/third_party/boringssl/crypto/sha/sha256.c +327 -0
  445. data/third_party/boringssl/crypto/sha/sha512.c +607 -0
  446. data/third_party/boringssl/crypto/stack/stack.c +386 -0
  447. data/third_party/boringssl/crypto/test/scoped_types.h +137 -0
  448. data/third_party/boringssl/crypto/test/test_util.h +35 -0
  449. data/third_party/boringssl/crypto/thread.c +101 -0
  450. data/third_party/boringssl/crypto/thread_none.c +55 -0
  451. data/third_party/boringssl/crypto/thread_pthread.c +167 -0
  452. data/third_party/boringssl/crypto/thread_win.c +282 -0
  453. data/third_party/boringssl/crypto/time_support.c +212 -0
  454. data/third_party/boringssl/crypto/x509/a_digest.c +97 -0
  455. data/third_party/boringssl/crypto/x509/a_sign.c +136 -0
  456. data/third_party/boringssl/crypto/x509/a_strex.c +564 -0
  457. data/third_party/boringssl/crypto/x509/a_verify.c +133 -0
  458. data/third_party/boringssl/crypto/x509/asn1_gen.c +873 -0
  459. data/third_party/boringssl/crypto/x509/by_dir.c +491 -0
  460. data/third_party/boringssl/crypto/x509/by_file.c +295 -0
  461. data/third_party/boringssl/crypto/x509/charmap.h +15 -0
  462. data/third_party/boringssl/crypto/x509/i2d_pr.c +84 -0
  463. data/third_party/boringssl/crypto/x509/pkcs7.c +353 -0
  464. data/third_party/boringssl/crypto/x509/t_crl.c +129 -0
  465. data/third_party/boringssl/crypto/x509/t_req.c +246 -0
  466. data/third_party/boringssl/crypto/x509/t_x509.c +500 -0
  467. data/third_party/boringssl/crypto/x509/t_x509a.c +109 -0
  468. data/third_party/boringssl/crypto/x509/vpm_int.h +70 -0
  469. data/third_party/boringssl/crypto/x509/x509.c +152 -0
  470. data/third_party/boringssl/crypto/x509/x509_att.c +353 -0
  471. data/third_party/boringssl/crypto/x509/x509_cmp.c +490 -0
  472. data/third_party/boringssl/crypto/x509/x509_d2.c +105 -0
  473. data/third_party/boringssl/crypto/x509/x509_def.c +88 -0
  474. data/third_party/boringssl/crypto/x509/x509_ext.c +206 -0
  475. data/third_party/boringssl/crypto/x509/x509_lu.c +738 -0
  476. data/third_party/boringssl/crypto/x509/x509_obj.c +191 -0
  477. data/third_party/boringssl/crypto/x509/x509_r2x.c +113 -0
  478. data/third_party/boringssl/crypto/x509/x509_req.c +315 -0
  479. data/third_party/boringssl/crypto/x509/x509_set.c +154 -0
  480. data/third_party/boringssl/crypto/x509/x509_trs.c +304 -0
  481. data/third_party/boringssl/crypto/x509/x509_txt.c +209 -0
  482. data/third_party/boringssl/crypto/x509/x509_v3.c +271 -0
  483. data/third_party/boringssl/crypto/x509/x509_vfy.c +2456 -0
  484. data/third_party/boringssl/crypto/x509/x509_vpm.c +672 -0
  485. data/third_party/boringssl/crypto/x509/x509cset.c +172 -0
  486. data/third_party/boringssl/crypto/x509/x509name.c +381 -0
  487. data/third_party/boringssl/crypto/x509/x509rset.c +80 -0
  488. data/third_party/boringssl/crypto/x509/x509spki.c +135 -0
  489. data/third_party/boringssl/crypto/x509/x509type.c +128 -0
  490. data/third_party/boringssl/crypto/x509/x_algor.c +154 -0
  491. data/third_party/boringssl/crypto/x509/x_all.c +547 -0
  492. data/third_party/boringssl/crypto/x509/x_attrib.c +117 -0
  493. data/third_party/boringssl/crypto/x509/x_crl.c +560 -0
  494. data/third_party/boringssl/crypto/x509/x_exten.c +75 -0
  495. data/third_party/boringssl/crypto/x509/x_info.c +95 -0
  496. data/third_party/boringssl/crypto/x509/x_name.c +538 -0
  497. data/third_party/boringssl/crypto/x509/x_pkey.c +100 -0
  498. data/third_party/boringssl/crypto/x509/x_pubkey.c +384 -0
  499. data/third_party/boringssl/crypto/x509/x_req.c +112 -0
  500. data/third_party/boringssl/crypto/x509/x_sig.c +69 -0
  501. data/third_party/boringssl/crypto/x509/x_spki.c +78 -0
  502. data/third_party/boringssl/crypto/x509/x_val.c +69 -0
  503. data/third_party/boringssl/crypto/x509/x_x509.c +227 -0
  504. data/third_party/boringssl/crypto/x509/x_x509a.c +197 -0
  505. data/third_party/boringssl/crypto/x509v3/ext_dat.h +129 -0
  506. data/third_party/boringssl/crypto/x509v3/pcy_cache.c +299 -0
  507. data/third_party/boringssl/crypto/x509v3/pcy_data.c +137 -0
  508. data/third_party/boringssl/crypto/x509v3/pcy_int.h +212 -0
  509. data/third_party/boringssl/crypto/x509v3/pcy_lib.c +165 -0
  510. data/third_party/boringssl/crypto/x509v3/pcy_map.c +133 -0
  511. data/third_party/boringssl/crypto/x509v3/pcy_node.c +197 -0
  512. data/third_party/boringssl/crypto/x509v3/pcy_tree.c +876 -0
  513. data/third_party/boringssl/crypto/x509v3/v3_akey.c +212 -0
  514. data/third_party/boringssl/crypto/x509v3/v3_akeya.c +71 -0
  515. data/third_party/boringssl/crypto/x509v3/v3_alt.c +622 -0
  516. data/third_party/boringssl/crypto/x509v3/v3_bcons.c +126 -0
  517. data/third_party/boringssl/crypto/x509v3/v3_bitst.c +141 -0
  518. data/third_party/boringssl/crypto/x509v3/v3_conf.c +459 -0
  519. data/third_party/boringssl/crypto/x509v3/v3_cpols.c +475 -0
  520. data/third_party/boringssl/crypto/x509v3/v3_crld.c +616 -0
  521. data/third_party/boringssl/crypto/x509v3/v3_enum.c +98 -0
  522. data/third_party/boringssl/crypto/x509v3/v3_extku.c +145 -0
  523. data/third_party/boringssl/crypto/x509v3/v3_genn.c +252 -0
  524. data/third_party/boringssl/crypto/x509v3/v3_ia5.c +117 -0
  525. data/third_party/boringssl/crypto/x509v3/v3_info.c +200 -0
  526. data/third_party/boringssl/crypto/x509v3/v3_int.c +87 -0
  527. data/third_party/boringssl/crypto/x509v3/v3_lib.c +335 -0
  528. data/third_party/boringssl/crypto/x509v3/v3_ncons.c +510 -0
  529. data/third_party/boringssl/crypto/x509v3/v3_pci.c +335 -0
  530. data/third_party/boringssl/crypto/x509v3/v3_pcia.c +56 -0
  531. data/third_party/boringssl/crypto/x509v3/v3_pcons.c +142 -0
  532. data/third_party/boringssl/crypto/x509v3/v3_pku.c +109 -0
  533. data/third_party/boringssl/crypto/x509v3/v3_pmaps.c +156 -0
  534. data/third_party/boringssl/crypto/x509v3/v3_prn.c +207 -0
  535. data/third_party/boringssl/crypto/x509v3/v3_purp.c +805 -0
  536. data/third_party/boringssl/crypto/x509v3/v3_skey.c +148 -0
  537. data/third_party/boringssl/crypto/x509v3/v3_sxnet.c +266 -0
  538. data/third_party/boringssl/crypto/x509v3/v3_utl.c +1322 -0
  539. data/third_party/boringssl/include/openssl/aead.h +346 -0
  540. data/third_party/boringssl/include/openssl/aes.h +158 -0
  541. data/third_party/boringssl/include/openssl/arm_arch.h +127 -0
  542. data/third_party/boringssl/include/openssl/asn1.h +1168 -0
  543. data/third_party/boringssl/include/openssl/asn1_mac.h +75 -0
  544. data/third_party/boringssl/include/openssl/asn1t.h +906 -0
  545. data/third_party/boringssl/include/openssl/base.h +261 -0
  546. data/third_party/boringssl/include/openssl/base64.h +184 -0
  547. data/third_party/boringssl/include/openssl/bio.h +902 -0
  548. data/third_party/boringssl/include/openssl/blowfish.h +93 -0
  549. data/third_party/boringssl/include/openssl/bn.h +885 -0
  550. data/third_party/boringssl/include/openssl/buf.h +118 -0
  551. data/third_party/boringssl/include/openssl/buffer.h +18 -0
  552. data/third_party/boringssl/include/openssl/bytestring.h +360 -0
  553. data/third_party/boringssl/include/openssl/cast.h +96 -0
  554. data/third_party/boringssl/include/openssl/chacha.h +37 -0
  555. data/third_party/boringssl/include/openssl/cipher.h +571 -0
  556. data/third_party/boringssl/include/openssl/cmac.h +76 -0
  557. data/third_party/boringssl/include/openssl/conf.h +145 -0
  558. data/third_party/boringssl/include/openssl/cpu.h +184 -0
  559. data/third_party/boringssl/include/openssl/crypto.h +68 -0
  560. data/third_party/boringssl/include/openssl/curve25519.h +88 -0
  561. data/third_party/boringssl/include/openssl/des.h +177 -0
  562. data/third_party/boringssl/include/openssl/dh.h +238 -0
  563. data/third_party/boringssl/include/openssl/digest.h +258 -0
  564. data/third_party/boringssl/include/openssl/dsa.h +343 -0
  565. data/third_party/boringssl/include/openssl/dtls1.h +16 -0
  566. data/third_party/boringssl/include/openssl/ec.h +355 -0
  567. data/third_party/boringssl/include/openssl/ec_key.h +280 -0
  568. data/third_party/boringssl/include/openssl/ecdh.h +102 -0
  569. data/third_party/boringssl/include/openssl/ecdsa.h +206 -0
  570. data/third_party/boringssl/include/openssl/engine.h +98 -0
  571. data/third_party/boringssl/include/openssl/err.h +487 -0
  572. data/third_party/boringssl/include/openssl/evp.h +750 -0
  573. data/third_party/boringssl/include/openssl/ex_data.h +213 -0
  574. data/third_party/boringssl/include/openssl/hkdf.h +44 -0
  575. data/third_party/boringssl/include/openssl/hmac.h +160 -0
  576. data/third_party/boringssl/include/openssl/lhash.h +192 -0
  577. data/third_party/boringssl/include/openssl/lhash_macros.h +132 -0
  578. data/third_party/boringssl/include/openssl/md4.h +102 -0
  579. data/third_party/boringssl/include/openssl/md5.h +107 -0
  580. data/third_party/boringssl/include/openssl/mem.h +140 -0
  581. data/third_party/boringssl/include/openssl/obj.h +198 -0
  582. data/third_party/boringssl/include/openssl/obj_mac.h +4140 -0
  583. data/third_party/boringssl/include/openssl/objects.h +18 -0
  584. data/third_party/boringssl/include/openssl/opensslfeatures.h +60 -0
  585. data/third_party/boringssl/include/openssl/opensslv.h +18 -0
  586. data/third_party/boringssl/include/openssl/ossl_typ.h +18 -0
  587. data/third_party/boringssl/include/openssl/pem.h +521 -0
  588. data/third_party/boringssl/include/openssl/pkcs12.h +18 -0
  589. data/third_party/boringssl/include/openssl/pkcs7.h +16 -0
  590. data/third_party/boringssl/include/openssl/pkcs8.h +220 -0
  591. data/third_party/boringssl/include/openssl/poly1305.h +51 -0
  592. data/third_party/boringssl/include/openssl/pqueue.h +146 -0
  593. data/third_party/boringssl/include/openssl/rand.h +113 -0
  594. data/third_party/boringssl/include/openssl/rc4.h +90 -0
  595. data/third_party/boringssl/include/openssl/rsa.h +637 -0
  596. data/third_party/boringssl/include/openssl/safestack.h +16 -0
  597. data/third_party/boringssl/include/openssl/sha.h +256 -0
  598. data/third_party/boringssl/include/openssl/srtp.h +18 -0
  599. data/third_party/boringssl/include/openssl/ssl.h +4466 -0
  600. data/third_party/boringssl/include/openssl/ssl3.h +441 -0
  601. data/third_party/boringssl/include/openssl/stack.h +298 -0
  602. data/third_party/boringssl/include/openssl/stack_macros.h +4190 -0
  603. data/third_party/boringssl/include/openssl/thread.h +173 -0
  604. data/third_party/boringssl/include/openssl/time_support.h +90 -0
  605. data/third_party/boringssl/include/openssl/tls1.h +653 -0
  606. data/third_party/boringssl/include/openssl/type_check.h +91 -0
  607. data/third_party/boringssl/include/openssl/x509.h +1258 -0
  608. data/third_party/boringssl/include/openssl/x509_vfy.h +611 -0
  609. data/third_party/boringssl/include/openssl/x509v3.h +798 -0
  610. data/third_party/boringssl/ssl/custom_extensions.c +257 -0
  611. data/third_party/boringssl/ssl/d1_both.c +880 -0
  612. data/third_party/boringssl/ssl/d1_clnt.c +566 -0
  613. data/third_party/boringssl/ssl/d1_lib.c +340 -0
  614. data/third_party/boringssl/ssl/d1_meth.c +130 -0
  615. data/third_party/boringssl/ssl/d1_pkt.c +578 -0
  616. data/third_party/boringssl/ssl/d1_srtp.c +234 -0
  617. data/third_party/boringssl/ssl/d1_srvr.c +485 -0
  618. data/third_party/boringssl/ssl/dtls_record.c +308 -0
  619. data/third_party/boringssl/ssl/internal.h +1276 -0
  620. data/third_party/boringssl/ssl/pqueue/pqueue.c +197 -0
  621. data/third_party/boringssl/ssl/s3_both.c +571 -0
  622. data/third_party/boringssl/ssl/s3_clnt.c +2241 -0
  623. data/third_party/boringssl/ssl/s3_enc.c +494 -0
  624. data/third_party/boringssl/ssl/s3_lib.c +587 -0
  625. data/third_party/boringssl/ssl/s3_meth.c +166 -0
  626. data/third_party/boringssl/ssl/s3_pkt.c +732 -0
  627. data/third_party/boringssl/ssl/s3_srvr.c +2536 -0
  628. data/third_party/boringssl/ssl/ssl_aead_ctx.c +300 -0
  629. data/third_party/boringssl/ssl/ssl_asn1.c +718 -0
  630. data/third_party/boringssl/ssl/ssl_buffer.c +319 -0
  631. data/third_party/boringssl/ssl/ssl_cert.c +539 -0
  632. data/third_party/boringssl/ssl/ssl_cipher.c +2003 -0
  633. data/third_party/boringssl/ssl/ssl_file.c +633 -0
  634. data/third_party/boringssl/ssl/ssl_lib.c +2653 -0
  635. data/third_party/boringssl/ssl/ssl_rsa.c +423 -0
  636. data/third_party/boringssl/ssl/ssl_session.c +764 -0
  637. data/third_party/boringssl/ssl/ssl_stat.c +591 -0
  638. data/third_party/boringssl/ssl/t1_enc.c +708 -0
  639. data/third_party/boringssl/ssl/t1_lib.c +2905 -0
  640. data/third_party/boringssl/ssl/test/async_bio.h +45 -0
  641. data/third_party/boringssl/ssl/test/packeted_bio.h +44 -0
  642. data/third_party/boringssl/ssl/test/scoped_types.h +28 -0
  643. data/third_party/boringssl/ssl/test/test_config.h +108 -0
  644. data/third_party/boringssl/ssl/tls_record.c +342 -0
  645. data/third_party/zlib/adler32.c +179 -0
  646. data/third_party/zlib/compress.c +80 -0
  647. data/third_party/zlib/crc32.c +425 -0
  648. data/third_party/zlib/crc32.h +441 -0
  649. data/third_party/zlib/deflate.c +1967 -0
  650. data/third_party/zlib/deflate.h +346 -0
  651. data/third_party/zlib/gzclose.c +25 -0
  652. data/third_party/zlib/gzguts.h +209 -0
  653. data/third_party/zlib/gzlib.c +634 -0
  654. data/third_party/zlib/gzread.c +594 -0
  655. data/third_party/zlib/gzwrite.c +577 -0
  656. data/third_party/zlib/infback.c +640 -0
  657. data/third_party/zlib/inffast.c +340 -0
  658. data/third_party/zlib/inffast.h +11 -0
  659. data/third_party/zlib/inffixed.h +94 -0
  660. data/third_party/zlib/inflate.c +1512 -0
  661. data/third_party/zlib/inflate.h +122 -0
  662. data/third_party/zlib/inftrees.c +306 -0
  663. data/third_party/zlib/inftrees.h +62 -0
  664. data/third_party/zlib/trees.c +1226 -0
  665. data/third_party/zlib/trees.h +128 -0
  666. data/third_party/zlib/uncompr.c +59 -0
  667. data/third_party/zlib/zconf.h +511 -0
  668. data/third_party/zlib/zlib.h +1768 -0
  669. data/third_party/zlib/zutil.c +324 -0
  670. data/third_party/zlib/zutil.h +253 -0
  671. metadata +492 -25
  672. data/Rakefile +0 -63
  673. data/src/ruby/lib/grpc/grpc.so +0 -0
@@ -0,0 +1,133 @@
1
+ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
2
+ * All rights reserved.
3
+ *
4
+ * This package is an SSL implementation written
5
+ * by Eric Young (eay@cryptsoft.com).
6
+ * The implementation was written so as to conform with Netscapes SSL.
7
+ *
8
+ * This library is free for commercial and non-commercial use as long as
9
+ * the following conditions are aheared to. The following conditions
10
+ * apply to all code found in this distribution, be it the RC4, RSA,
11
+ * lhash, DES, etc., code; not just the SSL code. The SSL documentation
12
+ * included with this distribution is covered by the same copyright terms
13
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
14
+ *
15
+ * Copyright remains Eric Young's, and as such any Copyright notices in
16
+ * the code are not to be removed.
17
+ * If this package is used in a product, Eric Young should be given attribution
18
+ * as the author of the parts of the library used.
19
+ * This can be in the form of a textual message at program startup or
20
+ * in documentation (online or textual) provided with the package.
21
+ *
22
+ * Redistribution and use in source and binary forms, with or without
23
+ * modification, are permitted provided that the following conditions
24
+ * are met:
25
+ * 1. Redistributions of source code must retain the copyright
26
+ * notice, this list of conditions and the following disclaimer.
27
+ * 2. Redistributions in binary form must reproduce the above copyright
28
+ * notice, this list of conditions and the following disclaimer in the
29
+ * documentation and/or other materials provided with the distribution.
30
+ * 3. All advertising materials mentioning features or use of this software
31
+ * must display the following acknowledgement:
32
+ * "This product includes cryptographic software written by
33
+ * Eric Young (eay@cryptsoft.com)"
34
+ * The word 'cryptographic' can be left out if the rouines from the library
35
+ * being used are not cryptographic related :-).
36
+ * 4. If you include any Windows specific code (or a derivative thereof) from
37
+ * the apps directory (application code) you must include an acknowledgement:
38
+ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
39
+ *
40
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
41
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
42
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
43
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
44
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
45
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
46
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
47
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
48
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
49
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
50
+ * SUCH DAMAGE.
51
+ *
52
+ * The licence and distribution terms for any publically available version or
53
+ * derivative of this code cannot be changed. i.e. this code cannot simply be
54
+ * copied and put under another distribution licence
55
+ * [including the GNU Public Licence.] */
56
+
57
+ #include <openssl/x509.h>
58
+
59
+ #include <stdio.h>
60
+ #include <time.h>
61
+ #include <sys/types.h>
62
+
63
+ #include <openssl/bn.h>
64
+ #include <openssl/buf.h>
65
+ #include <openssl/digest.h>
66
+ #include <openssl/err.h>
67
+ #include <openssl/evp.h>
68
+ #include <openssl/mem.h>
69
+ #include <openssl/obj.h>
70
+
71
+ #include "../evp/internal.h"
72
+
73
+
74
+ int ASN1_item_verify(const ASN1_ITEM *it, X509_ALGOR *a,
75
+ ASN1_BIT_STRING *signature, void *asn, EVP_PKEY *pkey)
76
+ {
77
+ EVP_MD_CTX ctx;
78
+ uint8_t *buf_in = NULL;
79
+ int ret = 0, inl;
80
+
81
+ if (!pkey)
82
+ {
83
+ OPENSSL_PUT_ERROR(X509, ERR_R_PASSED_NULL_PARAMETER);
84
+ return 0;
85
+ }
86
+
87
+ if (signature->type == V_ASN1_BIT_STRING && signature->flags & 0x7)
88
+ {
89
+ OPENSSL_PUT_ERROR(X509, X509_R_INVALID_BIT_STRING_BITS_LEFT);
90
+ return 0;
91
+ }
92
+
93
+ EVP_MD_CTX_init(&ctx);
94
+
95
+ if (!EVP_DigestVerifyInitFromAlgorithm(&ctx, a, pkey))
96
+ {
97
+ goto err;
98
+ }
99
+
100
+ inl = ASN1_item_i2d(asn, &buf_in, it);
101
+
102
+ if (buf_in == NULL)
103
+ {
104
+ OPENSSL_PUT_ERROR(X509, ERR_R_MALLOC_FAILURE);
105
+ goto err;
106
+ }
107
+
108
+ if (!EVP_DigestVerifyUpdate(&ctx,buf_in,inl))
109
+ {
110
+ OPENSSL_cleanse(buf_in,(unsigned int)inl);
111
+ OPENSSL_free(buf_in);
112
+ OPENSSL_PUT_ERROR(X509, ERR_R_EVP_LIB);
113
+ goto err;
114
+ }
115
+
116
+ OPENSSL_cleanse(buf_in,(unsigned int)inl);
117
+ OPENSSL_free(buf_in);
118
+
119
+ if (EVP_DigestVerifyFinal(&ctx,signature->data,
120
+ (size_t)signature->length) <= 0)
121
+ {
122
+ OPENSSL_PUT_ERROR(X509, ERR_R_EVP_LIB);
123
+ goto err;
124
+ }
125
+ /* we don't need to zero the 'ctx' because we just checked
126
+ * public information */
127
+ /* memset(&ctx,0,sizeof(ctx)); */
128
+ ret = 1;
129
+ err:
130
+ EVP_MD_CTX_cleanup(&ctx);
131
+ return ret;
132
+ }
133
+
@@ -0,0 +1,873 @@
1
+ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
2
+ * All rights reserved.
3
+ *
4
+ * This package is an SSL implementation written
5
+ * by Eric Young (eay@cryptsoft.com).
6
+ * The implementation was written so as to conform with Netscapes SSL.
7
+ *
8
+ * This library is free for commercial and non-commercial use as long as
9
+ * the following conditions are aheared to. The following conditions
10
+ * apply to all code found in this distribution, be it the RC4, RSA,
11
+ * lhash, DES, etc., code; not just the SSL code. The SSL documentation
12
+ * included with this distribution is covered by the same copyright terms
13
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
14
+ *
15
+ * Copyright remains Eric Young's, and as such any Copyright notices in
16
+ * the code are not to be removed.
17
+ * If this package is used in a product, Eric Young should be given attribution
18
+ * as the author of the parts of the library used.
19
+ * This can be in the form of a textual message at program startup or
20
+ * in documentation (online or textual) provided with the package.
21
+ *
22
+ * Redistribution and use in source and binary forms, with or without
23
+ * modification, are permitted provided that the following conditions
24
+ * are met:
25
+ * 1. Redistributions of source code must retain the copyright
26
+ * notice, this list of conditions and the following disclaimer.
27
+ * 2. Redistributions in binary form must reproduce the above copyright
28
+ * notice, this list of conditions and the following disclaimer in the
29
+ * documentation and/or other materials provided with the distribution.
30
+ * 3. All advertising materials mentioning features or use of this software
31
+ * must display the following acknowledgement:
32
+ * "This product includes cryptographic software written by
33
+ * Eric Young (eay@cryptsoft.com)"
34
+ * The word 'cryptographic' can be left out if the rouines from the library
35
+ * being used are not cryptographic related :-).
36
+ * 4. If you include any Windows specific code (or a derivative thereof) from
37
+ * the apps directory (application code) you must include an acknowledgement:
38
+ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
39
+ *
40
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
41
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
42
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
43
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
44
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
45
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
46
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
47
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
48
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
49
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
50
+ * SUCH DAMAGE.
51
+ *
52
+ * The licence and distribution terms for any publically available version or
53
+ * derivative of this code cannot be changed. i.e. this code cannot simply be
54
+ * copied and put under another distribution licence
55
+ * [including the GNU Public Licence.] */
56
+
57
+ #include <openssl/x509.h>
58
+
59
+ #include <string.h>
60
+
61
+ #include <openssl/asn1.h>
62
+ #include <openssl/err.h>
63
+ #include <openssl/mem.h>
64
+ #include <openssl/obj.h>
65
+ #include <openssl/x509v3.h>
66
+
67
+ #include "../internal.h"
68
+
69
+
70
+ /* Although this file is in crypto/x509 for layering purposes, it emits errors
71
+ * from the ASN.1 module for OpenSSL compatibility. */
72
+
73
+ #define ASN1_GEN_FLAG 0x10000
74
+ #define ASN1_GEN_FLAG_IMP (ASN1_GEN_FLAG|1)
75
+ #define ASN1_GEN_FLAG_EXP (ASN1_GEN_FLAG|2)
76
+ #define ASN1_GEN_FLAG_TAG (ASN1_GEN_FLAG|3)
77
+ #define ASN1_GEN_FLAG_BITWRAP (ASN1_GEN_FLAG|4)
78
+ #define ASN1_GEN_FLAG_OCTWRAP (ASN1_GEN_FLAG|5)
79
+ #define ASN1_GEN_FLAG_SEQWRAP (ASN1_GEN_FLAG|6)
80
+ #define ASN1_GEN_FLAG_SETWRAP (ASN1_GEN_FLAG|7)
81
+ #define ASN1_GEN_FLAG_FORMAT (ASN1_GEN_FLAG|8)
82
+
83
+ #define ASN1_GEN_STR(str,val) {str, sizeof(str) - 1, val}
84
+
85
+ #define ASN1_FLAG_EXP_MAX 20
86
+
87
+ /* Input formats */
88
+
89
+ /* ASCII: default */
90
+ #define ASN1_GEN_FORMAT_ASCII 1
91
+ /* UTF8 */
92
+ #define ASN1_GEN_FORMAT_UTF8 2
93
+ /* Hex */
94
+ #define ASN1_GEN_FORMAT_HEX 3
95
+ /* List of bits */
96
+ #define ASN1_GEN_FORMAT_BITLIST 4
97
+
98
+
99
+ struct tag_name_st
100
+ {
101
+ const char *strnam;
102
+ int len;
103
+ int tag;
104
+ };
105
+
106
+ typedef struct
107
+ {
108
+ int exp_tag;
109
+ int exp_class;
110
+ int exp_constructed;
111
+ int exp_pad;
112
+ long exp_len;
113
+ } tag_exp_type;
114
+
115
+ typedef struct
116
+ {
117
+ int imp_tag;
118
+ int imp_class;
119
+ int utype;
120
+ int format;
121
+ const char *str;
122
+ tag_exp_type exp_list[ASN1_FLAG_EXP_MAX];
123
+ int exp_count;
124
+ } tag_exp_arg;
125
+
126
+ static int bitstr_cb(const char *elem, int len, void *bitstr);
127
+ static int asn1_cb(const char *elem, int len, void *bitstr);
128
+ static int append_exp(tag_exp_arg *arg, int exp_tag, int exp_class, int exp_constructed, int exp_pad, int imp_ok);
129
+ static int parse_tagging(const char *vstart, int vlen, int *ptag, int *pclass);
130
+ static ASN1_TYPE *asn1_multi(int utype, const char *section, X509V3_CTX *cnf);
131
+ static ASN1_TYPE *asn1_str2type(const char *str, int format, int utype);
132
+ static int asn1_str2tag(const char *tagstr, int len);
133
+
134
+ ASN1_TYPE *ASN1_generate_nconf(char *str, CONF *nconf)
135
+ {
136
+ X509V3_CTX cnf;
137
+
138
+ if (!nconf)
139
+ return ASN1_generate_v3(str, NULL);
140
+
141
+ X509V3_set_nconf(&cnf, nconf);
142
+ return ASN1_generate_v3(str, &cnf);
143
+ }
144
+
145
+ ASN1_TYPE *ASN1_generate_v3(char *str, X509V3_CTX *cnf)
146
+ OPENSSL_SUPPRESS_POTENTIALLY_UNINITIALIZED_WARNINGS
147
+ {
148
+ ASN1_TYPE *ret;
149
+ tag_exp_arg asn1_tags;
150
+ tag_exp_type *etmp;
151
+
152
+ int i, len;
153
+
154
+ unsigned char *orig_der = NULL, *new_der = NULL;
155
+ const unsigned char *cpy_start;
156
+ unsigned char *p;
157
+ const unsigned char *cp;
158
+ int cpy_len;
159
+ long hdr_len;
160
+ int hdr_constructed = 0, hdr_tag, hdr_class;
161
+ int r;
162
+
163
+ asn1_tags.imp_tag = -1;
164
+ asn1_tags.imp_class = -1;
165
+ asn1_tags.format = ASN1_GEN_FORMAT_ASCII;
166
+ asn1_tags.exp_count = 0;
167
+ if (CONF_parse_list(str, ',', 1, asn1_cb, &asn1_tags) != 0)
168
+ return NULL;
169
+
170
+ if ((asn1_tags.utype == V_ASN1_SEQUENCE) || (asn1_tags.utype == V_ASN1_SET))
171
+ {
172
+ if (!cnf)
173
+ {
174
+ OPENSSL_PUT_ERROR(ASN1, ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG);
175
+ return NULL;
176
+ }
177
+ ret = asn1_multi(asn1_tags.utype, asn1_tags.str, cnf);
178
+ }
179
+ else
180
+ ret = asn1_str2type(asn1_tags.str, asn1_tags.format, asn1_tags.utype);
181
+
182
+ if (!ret)
183
+ return NULL;
184
+
185
+ /* If no tagging return base type */
186
+ if ((asn1_tags.imp_tag == -1) && (asn1_tags.exp_count == 0))
187
+ return ret;
188
+
189
+ /* Generate the encoding */
190
+ cpy_len = i2d_ASN1_TYPE(ret, &orig_der);
191
+ ASN1_TYPE_free(ret);
192
+ ret = NULL;
193
+ /* Set point to start copying for modified encoding */
194
+ cpy_start = orig_der;
195
+
196
+ /* Do we need IMPLICIT tagging? */
197
+ if (asn1_tags.imp_tag != -1)
198
+ {
199
+ /* If IMPLICIT we will replace the underlying tag */
200
+ /* Skip existing tag+len */
201
+ r = ASN1_get_object(&cpy_start, &hdr_len, &hdr_tag, &hdr_class, cpy_len);
202
+ if (r & 0x80)
203
+ goto err;
204
+ /* Update copy length */
205
+ cpy_len -= cpy_start - orig_der;
206
+ /* For IMPLICIT tagging the length should match the
207
+ * original length and constructed flag should be
208
+ * consistent.
209
+ */
210
+ if (r & 0x1)
211
+ {
212
+ /* Indefinite length constructed */
213
+ hdr_constructed = 2;
214
+ hdr_len = 0;
215
+ }
216
+ else
217
+ /* Just retain constructed flag */
218
+ hdr_constructed = r & V_ASN1_CONSTRUCTED;
219
+ /* Work out new length with IMPLICIT tag: ignore constructed
220
+ * because it will mess up if indefinite length
221
+ */
222
+ len = ASN1_object_size(0, hdr_len, asn1_tags.imp_tag);
223
+ }
224
+ else
225
+ len = cpy_len;
226
+
227
+ /* Work out length in any EXPLICIT, starting from end */
228
+
229
+ for(i = 0, etmp = asn1_tags.exp_list + asn1_tags.exp_count - 1; i < asn1_tags.exp_count; i++, etmp--)
230
+ {
231
+ /* Content length: number of content octets + any padding */
232
+ len += etmp->exp_pad;
233
+ etmp->exp_len = len;
234
+ /* Total object length: length including new header */
235
+ len = ASN1_object_size(0, len, etmp->exp_tag);
236
+ }
237
+
238
+ /* Allocate buffer for new encoding */
239
+
240
+ new_der = OPENSSL_malloc(len);
241
+ if (!new_der)
242
+ goto err;
243
+
244
+ /* Generate tagged encoding */
245
+
246
+ p = new_der;
247
+
248
+ /* Output explicit tags first */
249
+
250
+ for (i = 0, etmp = asn1_tags.exp_list; i < asn1_tags.exp_count; i++, etmp++)
251
+ {
252
+ ASN1_put_object(&p, etmp->exp_constructed, etmp->exp_len,
253
+ etmp->exp_tag, etmp->exp_class);
254
+ if (etmp->exp_pad)
255
+ *p++ = 0;
256
+ }
257
+
258
+ /* If IMPLICIT, output tag */
259
+
260
+ if (asn1_tags.imp_tag != -1)
261
+ {
262
+ if (asn1_tags.imp_class == V_ASN1_UNIVERSAL
263
+ && (asn1_tags.imp_tag == V_ASN1_SEQUENCE
264
+ || asn1_tags.imp_tag == V_ASN1_SET) )
265
+ hdr_constructed = V_ASN1_CONSTRUCTED;
266
+ ASN1_put_object(&p, hdr_constructed, hdr_len,
267
+ asn1_tags.imp_tag, asn1_tags.imp_class);
268
+ }
269
+
270
+ /* Copy across original encoding */
271
+ memcpy(p, cpy_start, cpy_len);
272
+
273
+ cp = new_der;
274
+
275
+ /* Obtain new ASN1_TYPE structure */
276
+ ret = d2i_ASN1_TYPE(NULL, &cp, len);
277
+
278
+ err:
279
+ if (orig_der)
280
+ OPENSSL_free(orig_der);
281
+ if (new_der)
282
+ OPENSSL_free(new_der);
283
+
284
+ return ret;
285
+
286
+ }
287
+
288
+ static int asn1_cb(const char *elem, int len, void *bitstr)
289
+ {
290
+ tag_exp_arg *arg = bitstr;
291
+ int i;
292
+ int utype;
293
+ int vlen = 0;
294
+ const char *p, *vstart = NULL;
295
+
296
+ int tmp_tag, tmp_class;
297
+
298
+ if (elem == NULL)
299
+ return 0;
300
+
301
+ for(i = 0, p = elem; i < len; p++, i++)
302
+ {
303
+ /* Look for the ':' in name value pairs */
304
+ if (*p == ':')
305
+ {
306
+ vstart = p + 1;
307
+ vlen = len - (vstart - elem);
308
+ len = p - elem;
309
+ break;
310
+ }
311
+ }
312
+
313
+ utype = asn1_str2tag(elem, len);
314
+
315
+ if (utype == -1)
316
+ {
317
+ OPENSSL_PUT_ERROR(ASN1, ASN1_R_UNKNOWN_TAG);
318
+ ERR_add_error_data(2, "tag=", elem);
319
+ return -1;
320
+ }
321
+
322
+ /* If this is not a modifier mark end of string and exit */
323
+ if (!(utype & ASN1_GEN_FLAG))
324
+ {
325
+ arg->utype = utype;
326
+ arg->str = vstart;
327
+ /* If no value and not end of string, error */
328
+ if (!vstart && elem[len])
329
+ {
330
+ OPENSSL_PUT_ERROR(ASN1, ASN1_R_MISSING_VALUE);
331
+ return -1;
332
+ }
333
+ return 0;
334
+ }
335
+
336
+ switch(utype)
337
+ {
338
+
339
+ case ASN1_GEN_FLAG_IMP:
340
+ /* Check for illegal multiple IMPLICIT tagging */
341
+ if (arg->imp_tag != -1)
342
+ {
343
+ OPENSSL_PUT_ERROR(ASN1, ASN1_R_ILLEGAL_NESTED_TAGGING);
344
+ return -1;
345
+ }
346
+ if (!parse_tagging(vstart, vlen, &arg->imp_tag, &arg->imp_class))
347
+ return -1;
348
+ break;
349
+
350
+ case ASN1_GEN_FLAG_EXP:
351
+
352
+ if (!parse_tagging(vstart, vlen, &tmp_tag, &tmp_class))
353
+ return -1;
354
+ if (!append_exp(arg, tmp_tag, tmp_class, 1, 0, 0))
355
+ return -1;
356
+ break;
357
+
358
+ case ASN1_GEN_FLAG_SEQWRAP:
359
+ if (!append_exp(arg, V_ASN1_SEQUENCE, V_ASN1_UNIVERSAL, 1, 0, 1))
360
+ return -1;
361
+ break;
362
+
363
+ case ASN1_GEN_FLAG_SETWRAP:
364
+ if (!append_exp(arg, V_ASN1_SET, V_ASN1_UNIVERSAL, 1, 0, 1))
365
+ return -1;
366
+ break;
367
+
368
+ case ASN1_GEN_FLAG_BITWRAP:
369
+ if (!append_exp(arg, V_ASN1_BIT_STRING, V_ASN1_UNIVERSAL, 0, 1, 1))
370
+ return -1;
371
+ break;
372
+
373
+ case ASN1_GEN_FLAG_OCTWRAP:
374
+ if (!append_exp(arg, V_ASN1_OCTET_STRING, V_ASN1_UNIVERSAL, 0, 0, 1))
375
+ return -1;
376
+ break;
377
+
378
+ case ASN1_GEN_FLAG_FORMAT:
379
+ if (!vstart)
380
+ {
381
+ OPENSSL_PUT_ERROR(ASN1, ASN1_R_UNKNOWN_FORMAT);
382
+ return -1;
383
+ }
384
+ if (!strncmp(vstart, "ASCII", 5))
385
+ arg->format = ASN1_GEN_FORMAT_ASCII;
386
+ else if (!strncmp(vstart, "UTF8", 4))
387
+ arg->format = ASN1_GEN_FORMAT_UTF8;
388
+ else if (!strncmp(vstart, "HEX", 3))
389
+ arg->format = ASN1_GEN_FORMAT_HEX;
390
+ else if (!strncmp(vstart, "BITLIST", 7))
391
+ arg->format = ASN1_GEN_FORMAT_BITLIST;
392
+ else
393
+ {
394
+ OPENSSL_PUT_ERROR(ASN1, ASN1_R_UNKNOWN_FORMAT);
395
+ return -1;
396
+ }
397
+ break;
398
+
399
+ }
400
+
401
+ return 1;
402
+
403
+ }
404
+
405
+ static int parse_tagging(const char *vstart, int vlen, int *ptag, int *pclass)
406
+ {
407
+ char erch[2];
408
+ long tag_num;
409
+ char *eptr;
410
+ if (!vstart)
411
+ return 0;
412
+ tag_num = strtoul(vstart, &eptr, 10);
413
+ /* Check we haven't gone past max length: should be impossible */
414
+ if (eptr && *eptr && (eptr > vstart + vlen))
415
+ return 0;
416
+ if (tag_num < 0)
417
+ {
418
+ OPENSSL_PUT_ERROR(ASN1, ASN1_R_INVALID_NUMBER);
419
+ return 0;
420
+ }
421
+ *ptag = tag_num;
422
+ /* If we have non numeric characters, parse them */
423
+ if (eptr)
424
+ vlen -= eptr - vstart;
425
+ else
426
+ vlen = 0;
427
+ if (vlen)
428
+ {
429
+ switch (*eptr)
430
+ {
431
+
432
+ case 'U':
433
+ *pclass = V_ASN1_UNIVERSAL;
434
+ break;
435
+
436
+ case 'A':
437
+ *pclass = V_ASN1_APPLICATION;
438
+ break;
439
+
440
+ case 'P':
441
+ *pclass = V_ASN1_PRIVATE;
442
+ break;
443
+
444
+ case 'C':
445
+ *pclass = V_ASN1_CONTEXT_SPECIFIC;
446
+ break;
447
+
448
+ default:
449
+ erch[0] = *eptr;
450
+ erch[1] = 0;
451
+ OPENSSL_PUT_ERROR(ASN1, ASN1_R_INVALID_MODIFIER);
452
+ ERR_add_error_data(2, "Char=", erch);
453
+ return 0;
454
+ break;
455
+
456
+ }
457
+ }
458
+ else
459
+ *pclass = V_ASN1_CONTEXT_SPECIFIC;
460
+
461
+ return 1;
462
+
463
+ }
464
+
465
+ /* Handle multiple types: SET and SEQUENCE */
466
+
467
+ static ASN1_TYPE *asn1_multi(int utype, const char *section, X509V3_CTX *cnf)
468
+ {
469
+ ASN1_TYPE *ret = NULL;
470
+ STACK_OF(ASN1_TYPE) *sk = NULL;
471
+ STACK_OF(CONF_VALUE) *sect = NULL;
472
+ unsigned char *der = NULL;
473
+ int derlen;
474
+ size_t i;
475
+ sk = sk_ASN1_TYPE_new_null();
476
+ if (!sk)
477
+ goto bad;
478
+ if (section)
479
+ {
480
+ if (!cnf)
481
+ goto bad;
482
+ sect = X509V3_get_section(cnf, (char *)section);
483
+ if (!sect)
484
+ goto bad;
485
+ for (i = 0; i < sk_CONF_VALUE_num(sect); i++)
486
+ {
487
+ ASN1_TYPE *typ = ASN1_generate_v3(sk_CONF_VALUE_value(sect, i)->value, cnf);
488
+ if (!typ)
489
+ goto bad;
490
+ if (!sk_ASN1_TYPE_push(sk, typ))
491
+ goto bad;
492
+ }
493
+ }
494
+
495
+ /* Now we has a STACK of the components, convert to the correct form */
496
+
497
+ if (utype == V_ASN1_SET)
498
+ derlen = i2d_ASN1_SET_ANY(sk, &der);
499
+ else
500
+ derlen = i2d_ASN1_SEQUENCE_ANY(sk, &der);
501
+
502
+ if (derlen < 0)
503
+ goto bad;
504
+
505
+ if (!(ret = ASN1_TYPE_new()))
506
+ goto bad;
507
+
508
+ if (!(ret->value.asn1_string = ASN1_STRING_type_new(utype)))
509
+ goto bad;
510
+
511
+ ret->type = utype;
512
+
513
+ ret->value.asn1_string->data = der;
514
+ ret->value.asn1_string->length = derlen;
515
+
516
+ der = NULL;
517
+
518
+ bad:
519
+
520
+ if (der)
521
+ OPENSSL_free(der);
522
+
523
+ if (sk)
524
+ sk_ASN1_TYPE_pop_free(sk, ASN1_TYPE_free);
525
+ if (sect)
526
+ X509V3_section_free(cnf, sect);
527
+
528
+ return ret;
529
+ }
530
+
531
+ static int append_exp(tag_exp_arg *arg, int exp_tag, int exp_class, int exp_constructed, int exp_pad, int imp_ok)
532
+ {
533
+ tag_exp_type *exp_tmp;
534
+ /* Can only have IMPLICIT if permitted */
535
+ if ((arg->imp_tag != -1) && !imp_ok)
536
+ {
537
+ OPENSSL_PUT_ERROR(ASN1, ASN1_R_ILLEGAL_IMPLICIT_TAG);
538
+ return 0;
539
+ }
540
+
541
+ if (arg->exp_count == ASN1_FLAG_EXP_MAX)
542
+ {
543
+ OPENSSL_PUT_ERROR(ASN1, ASN1_R_DEPTH_EXCEEDED);
544
+ return 0;
545
+ }
546
+
547
+ exp_tmp = &arg->exp_list[arg->exp_count++];
548
+
549
+ /* If IMPLICIT set tag to implicit value then
550
+ * reset implicit tag since it has been used.
551
+ */
552
+ if (arg->imp_tag != -1)
553
+ {
554
+ exp_tmp->exp_tag = arg->imp_tag;
555
+ exp_tmp->exp_class = arg->imp_class;
556
+ arg->imp_tag = -1;
557
+ arg->imp_class = -1;
558
+ }
559
+ else
560
+ {
561
+ exp_tmp->exp_tag = exp_tag;
562
+ exp_tmp->exp_class = exp_class;
563
+ }
564
+ exp_tmp->exp_constructed = exp_constructed;
565
+ exp_tmp->exp_pad = exp_pad;
566
+
567
+ return 1;
568
+ }
569
+
570
+
571
+ static int asn1_str2tag(const char *tagstr, int len)
572
+ {
573
+ unsigned int i;
574
+ static const struct tag_name_st *tntmp, tnst [] = {
575
+ ASN1_GEN_STR("BOOL", V_ASN1_BOOLEAN),
576
+ ASN1_GEN_STR("BOOLEAN", V_ASN1_BOOLEAN),
577
+ ASN1_GEN_STR("NULL", V_ASN1_NULL),
578
+ ASN1_GEN_STR("INT", V_ASN1_INTEGER),
579
+ ASN1_GEN_STR("INTEGER", V_ASN1_INTEGER),
580
+ ASN1_GEN_STR("ENUM", V_ASN1_ENUMERATED),
581
+ ASN1_GEN_STR("ENUMERATED", V_ASN1_ENUMERATED),
582
+ ASN1_GEN_STR("OID", V_ASN1_OBJECT),
583
+ ASN1_GEN_STR("OBJECT", V_ASN1_OBJECT),
584
+ ASN1_GEN_STR("UTCTIME", V_ASN1_UTCTIME),
585
+ ASN1_GEN_STR("UTC", V_ASN1_UTCTIME),
586
+ ASN1_GEN_STR("GENERALIZEDTIME", V_ASN1_GENERALIZEDTIME),
587
+ ASN1_GEN_STR("GENTIME", V_ASN1_GENERALIZEDTIME),
588
+ ASN1_GEN_STR("OCT", V_ASN1_OCTET_STRING),
589
+ ASN1_GEN_STR("OCTETSTRING", V_ASN1_OCTET_STRING),
590
+ ASN1_GEN_STR("BITSTR", V_ASN1_BIT_STRING),
591
+ ASN1_GEN_STR("BITSTRING", V_ASN1_BIT_STRING),
592
+ ASN1_GEN_STR("UNIVERSALSTRING", V_ASN1_UNIVERSALSTRING),
593
+ ASN1_GEN_STR("UNIV", V_ASN1_UNIVERSALSTRING),
594
+ ASN1_GEN_STR("IA5", V_ASN1_IA5STRING),
595
+ ASN1_GEN_STR("IA5STRING", V_ASN1_IA5STRING),
596
+ ASN1_GEN_STR("UTF8", V_ASN1_UTF8STRING),
597
+ ASN1_GEN_STR("UTF8String", V_ASN1_UTF8STRING),
598
+ ASN1_GEN_STR("BMP", V_ASN1_BMPSTRING),
599
+ ASN1_GEN_STR("BMPSTRING", V_ASN1_BMPSTRING),
600
+ ASN1_GEN_STR("VISIBLESTRING", V_ASN1_VISIBLESTRING),
601
+ ASN1_GEN_STR("VISIBLE", V_ASN1_VISIBLESTRING),
602
+ ASN1_GEN_STR("PRINTABLESTRING", V_ASN1_PRINTABLESTRING),
603
+ ASN1_GEN_STR("PRINTABLE", V_ASN1_PRINTABLESTRING),
604
+ ASN1_GEN_STR("T61", V_ASN1_T61STRING),
605
+ ASN1_GEN_STR("T61STRING", V_ASN1_T61STRING),
606
+ ASN1_GEN_STR("TELETEXSTRING", V_ASN1_T61STRING),
607
+ ASN1_GEN_STR("GeneralString", V_ASN1_GENERALSTRING),
608
+ ASN1_GEN_STR("GENSTR", V_ASN1_GENERALSTRING),
609
+ ASN1_GEN_STR("NUMERIC", V_ASN1_NUMERICSTRING),
610
+ ASN1_GEN_STR("NUMERICSTRING", V_ASN1_NUMERICSTRING),
611
+
612
+ /* Special cases */
613
+ ASN1_GEN_STR("SEQUENCE", V_ASN1_SEQUENCE),
614
+ ASN1_GEN_STR("SEQ", V_ASN1_SEQUENCE),
615
+ ASN1_GEN_STR("SET", V_ASN1_SET),
616
+ /* type modifiers */
617
+ /* Explicit tag */
618
+ ASN1_GEN_STR("EXP", ASN1_GEN_FLAG_EXP),
619
+ ASN1_GEN_STR("EXPLICIT", ASN1_GEN_FLAG_EXP),
620
+ /* Implicit tag */
621
+ ASN1_GEN_STR("IMP", ASN1_GEN_FLAG_IMP),
622
+ ASN1_GEN_STR("IMPLICIT", ASN1_GEN_FLAG_IMP),
623
+ /* OCTET STRING wrapper */
624
+ ASN1_GEN_STR("OCTWRAP", ASN1_GEN_FLAG_OCTWRAP),
625
+ /* SEQUENCE wrapper */
626
+ ASN1_GEN_STR("SEQWRAP", ASN1_GEN_FLAG_SEQWRAP),
627
+ /* SET wrapper */
628
+ ASN1_GEN_STR("SETWRAP", ASN1_GEN_FLAG_SETWRAP),
629
+ /* BIT STRING wrapper */
630
+ ASN1_GEN_STR("BITWRAP", ASN1_GEN_FLAG_BITWRAP),
631
+ ASN1_GEN_STR("FORM", ASN1_GEN_FLAG_FORMAT),
632
+ ASN1_GEN_STR("FORMAT", ASN1_GEN_FLAG_FORMAT),
633
+ };
634
+
635
+ if (len == -1)
636
+ len = strlen(tagstr);
637
+
638
+ tntmp = tnst;
639
+ for (i = 0; i < sizeof(tnst) / sizeof(struct tag_name_st); i++, tntmp++)
640
+ {
641
+ if ((len == tntmp->len) && !strncmp(tntmp->strnam, tagstr, len))
642
+ return tntmp->tag;
643
+ }
644
+
645
+ return -1;
646
+ }
647
+
648
+ static ASN1_TYPE *asn1_str2type(const char *str, int format, int utype)
649
+ {
650
+ ASN1_TYPE *atmp = NULL;
651
+
652
+ CONF_VALUE vtmp;
653
+
654
+ unsigned char *rdata;
655
+ long rdlen;
656
+
657
+ int no_unused = 1;
658
+
659
+ if (!(atmp = ASN1_TYPE_new()))
660
+ {
661
+ OPENSSL_PUT_ERROR(ASN1, ERR_R_MALLOC_FAILURE);
662
+ return NULL;
663
+ }
664
+
665
+ if (!str)
666
+ str = "";
667
+
668
+ switch(utype)
669
+ {
670
+
671
+ case V_ASN1_NULL:
672
+ if (str && *str)
673
+ {
674
+ OPENSSL_PUT_ERROR(ASN1, ASN1_R_ILLEGAL_NULL_VALUE);
675
+ goto bad_form;
676
+ }
677
+ break;
678
+
679
+ case V_ASN1_BOOLEAN:
680
+ if (format != ASN1_GEN_FORMAT_ASCII)
681
+ {
682
+ OPENSSL_PUT_ERROR(ASN1, ASN1_R_NOT_ASCII_FORMAT);
683
+ goto bad_form;
684
+ }
685
+ vtmp.name = NULL;
686
+ vtmp.section = NULL;
687
+ vtmp.value = (char *)str;
688
+ if (!X509V3_get_value_bool(&vtmp, &atmp->value.boolean))
689
+ {
690
+ OPENSSL_PUT_ERROR(ASN1, ASN1_R_ILLEGAL_BOOLEAN);
691
+ goto bad_str;
692
+ }
693
+ break;
694
+
695
+ case V_ASN1_INTEGER:
696
+ case V_ASN1_ENUMERATED:
697
+ if (format != ASN1_GEN_FORMAT_ASCII)
698
+ {
699
+ OPENSSL_PUT_ERROR(ASN1, ASN1_R_INTEGER_NOT_ASCII_FORMAT);
700
+ goto bad_form;
701
+ }
702
+ if (!(atmp->value.integer = s2i_ASN1_INTEGER(NULL, (char *)str)))
703
+ {
704
+ OPENSSL_PUT_ERROR(ASN1, ASN1_R_ILLEGAL_INTEGER);
705
+ goto bad_str;
706
+ }
707
+ break;
708
+
709
+ case V_ASN1_OBJECT:
710
+ if (format != ASN1_GEN_FORMAT_ASCII)
711
+ {
712
+ OPENSSL_PUT_ERROR(ASN1, ASN1_R_OBJECT_NOT_ASCII_FORMAT);
713
+ goto bad_form;
714
+ }
715
+ if (!(atmp->value.object = OBJ_txt2obj(str, 0)))
716
+ {
717
+ OPENSSL_PUT_ERROR(ASN1, ASN1_R_ILLEGAL_OBJECT);
718
+ goto bad_str;
719
+ }
720
+ break;
721
+
722
+ case V_ASN1_UTCTIME:
723
+ case V_ASN1_GENERALIZEDTIME:
724
+ if (format != ASN1_GEN_FORMAT_ASCII)
725
+ {
726
+ OPENSSL_PUT_ERROR(ASN1, ASN1_R_TIME_NOT_ASCII_FORMAT);
727
+ goto bad_form;
728
+ }
729
+ if (!(atmp->value.asn1_string = ASN1_STRING_new()))
730
+ {
731
+ OPENSSL_PUT_ERROR(ASN1, ERR_R_MALLOC_FAILURE);
732
+ goto bad_str;
733
+ }
734
+ if (!ASN1_STRING_set(atmp->value.asn1_string, str, -1))
735
+ {
736
+ OPENSSL_PUT_ERROR(ASN1, ERR_R_MALLOC_FAILURE);
737
+ goto bad_str;
738
+ }
739
+ atmp->value.asn1_string->type = utype;
740
+ if (!ASN1_TIME_check(atmp->value.asn1_string))
741
+ {
742
+ OPENSSL_PUT_ERROR(ASN1, ASN1_R_ILLEGAL_TIME_VALUE);
743
+ goto bad_str;
744
+ }
745
+
746
+ break;
747
+
748
+ case V_ASN1_BMPSTRING:
749
+ case V_ASN1_PRINTABLESTRING:
750
+ case V_ASN1_IA5STRING:
751
+ case V_ASN1_T61STRING:
752
+ case V_ASN1_UTF8STRING:
753
+ case V_ASN1_VISIBLESTRING:
754
+ case V_ASN1_UNIVERSALSTRING:
755
+ case V_ASN1_GENERALSTRING:
756
+ case V_ASN1_NUMERICSTRING:
757
+
758
+ if (format == ASN1_GEN_FORMAT_ASCII)
759
+ format = MBSTRING_ASC;
760
+ else if (format == ASN1_GEN_FORMAT_UTF8)
761
+ format = MBSTRING_UTF8;
762
+ else
763
+ {
764
+ OPENSSL_PUT_ERROR(ASN1, ASN1_R_ILLEGAL_FORMAT);
765
+ goto bad_form;
766
+ }
767
+
768
+
769
+ if (ASN1_mbstring_copy(&atmp->value.asn1_string, (unsigned char *)str,
770
+ -1, format, ASN1_tag2bit(utype)) <= 0)
771
+ {
772
+ OPENSSL_PUT_ERROR(ASN1, ERR_R_MALLOC_FAILURE);
773
+ goto bad_str;
774
+ }
775
+
776
+
777
+ break;
778
+
779
+ case V_ASN1_BIT_STRING:
780
+
781
+ case V_ASN1_OCTET_STRING:
782
+
783
+ if (!(atmp->value.asn1_string = ASN1_STRING_new()))
784
+ {
785
+ OPENSSL_PUT_ERROR(ASN1, ERR_R_MALLOC_FAILURE);
786
+ goto bad_form;
787
+ }
788
+
789
+ if (format == ASN1_GEN_FORMAT_HEX)
790
+ {
791
+
792
+ if (!(rdata = string_to_hex((char *)str, &rdlen)))
793
+ {
794
+ OPENSSL_PUT_ERROR(ASN1, ASN1_R_ILLEGAL_HEX);
795
+ goto bad_str;
796
+ }
797
+
798
+ atmp->value.asn1_string->data = rdata;
799
+ atmp->value.asn1_string->length = rdlen;
800
+ atmp->value.asn1_string->type = utype;
801
+
802
+ }
803
+ else if (format == ASN1_GEN_FORMAT_ASCII)
804
+ ASN1_STRING_set(atmp->value.asn1_string, str, -1);
805
+ else if ((format == ASN1_GEN_FORMAT_BITLIST) && (utype == V_ASN1_BIT_STRING))
806
+ {
807
+ if (!CONF_parse_list(str, ',', 1, bitstr_cb, atmp->value.bit_string))
808
+ {
809
+ OPENSSL_PUT_ERROR(ASN1, ASN1_R_LIST_ERROR);
810
+ goto bad_str;
811
+ }
812
+ no_unused = 0;
813
+
814
+ }
815
+ else
816
+ {
817
+ OPENSSL_PUT_ERROR(ASN1, ASN1_R_ILLEGAL_BITSTRING_FORMAT);
818
+ goto bad_form;
819
+ }
820
+
821
+ if ((utype == V_ASN1_BIT_STRING) && no_unused)
822
+ {
823
+ atmp->value.asn1_string->flags
824
+ &= ~(ASN1_STRING_FLAG_BITS_LEFT|0x07);
825
+ atmp->value.asn1_string->flags
826
+ |= ASN1_STRING_FLAG_BITS_LEFT;
827
+ }
828
+
829
+
830
+ break;
831
+
832
+ default:
833
+ OPENSSL_PUT_ERROR(ASN1, ASN1_R_UNSUPPORTED_TYPE);
834
+ goto bad_str;
835
+ break;
836
+ }
837
+
838
+
839
+ atmp->type = utype;
840
+ return atmp;
841
+
842
+
843
+ bad_str:
844
+ ERR_add_error_data(2, "string=", str);
845
+ bad_form:
846
+
847
+ ASN1_TYPE_free(atmp);
848
+ return NULL;
849
+
850
+ }
851
+
852
+ static int bitstr_cb(const char *elem, int len, void *bitstr)
853
+ {
854
+ long bitnum;
855
+ char *eptr;
856
+ if (!elem)
857
+ return 0;
858
+ bitnum = strtoul(elem, &eptr, 10);
859
+ if (eptr && *eptr && (eptr != elem + len))
860
+ return 0;
861
+ if (bitnum < 0)
862
+ {
863
+ OPENSSL_PUT_ERROR(ASN1, ASN1_R_INVALID_NUMBER);
864
+ return 0;
865
+ }
866
+ if (!ASN1_BIT_STRING_set_bit(bitstr, bitnum, 1))
867
+ {
868
+ OPENSSL_PUT_ERROR(ASN1, ERR_R_MALLOC_FAILURE);
869
+ return 0;
870
+ }
871
+ return 1;
872
+ }
873
+