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,75 @@
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
+
58
+ #ifndef HEADER_ASN1_MAC_H
59
+ #define HEADER_ASN1_MAC_H
60
+
61
+ #include <openssl/asn1.h>
62
+
63
+ #ifdef __cplusplus
64
+ extern "C" {
65
+ #endif
66
+
67
+
68
+ OPENSSL_EXPORT int asn1_GetSequence(ASN1_const_CTX *c, long *length);
69
+
70
+
71
+ #ifdef __cplusplus
72
+ }
73
+ #endif
74
+
75
+ #endif
@@ -0,0 +1,906 @@
1
+ /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
2
+ * project 2000.
3
+ */
4
+ /* ====================================================================
5
+ * Copyright (c) 2000-2005 The OpenSSL Project. All rights reserved.
6
+ *
7
+ * Redistribution and use in source and binary forms, with or without
8
+ * modification, are permitted provided that the following conditions
9
+ * are met:
10
+ *
11
+ * 1. Redistributions of source code must retain the above copyright
12
+ * notice, this list of conditions and the following disclaimer.
13
+ *
14
+ * 2. Redistributions in binary form must reproduce the above copyright
15
+ * notice, this list of conditions and the following disclaimer in
16
+ * the documentation and/or other materials provided with the
17
+ * distribution.
18
+ *
19
+ * 3. All advertising materials mentioning features or use of this
20
+ * software must display the following acknowledgment:
21
+ * "This product includes software developed by the OpenSSL Project
22
+ * for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
23
+ *
24
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
25
+ * endorse or promote products derived from this software without
26
+ * prior written permission. For written permission, please contact
27
+ * licensing@OpenSSL.org.
28
+ *
29
+ * 5. Products derived from this software may not be called "OpenSSL"
30
+ * nor may "OpenSSL" appear in their names without prior written
31
+ * permission of the OpenSSL Project.
32
+ *
33
+ * 6. Redistributions of any form whatsoever must retain the following
34
+ * acknowledgment:
35
+ * "This product includes software developed by the OpenSSL Project
36
+ * for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
37
+ *
38
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
39
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
40
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
41
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
42
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
43
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
44
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
45
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
46
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
47
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
48
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
49
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
50
+ * ====================================================================
51
+ *
52
+ * This product includes cryptographic software written by Eric Young
53
+ * (eay@cryptsoft.com). This product includes software written by Tim
54
+ * Hudson (tjh@cryptsoft.com).
55
+ *
56
+ */
57
+ #ifndef HEADER_ASN1T_H
58
+ #define HEADER_ASN1T_H
59
+
60
+ #include <openssl/base.h>
61
+ #include <openssl/asn1.h>
62
+
63
+ #ifdef OPENSSL_BUILD_SHLIBCRYPTO
64
+ # undef OPENSSL_EXTERN
65
+ # define OPENSSL_EXTERN OPENSSL_EXPORT
66
+ #endif
67
+
68
+ /* ASN1 template defines, structures and functions */
69
+
70
+ #ifdef __cplusplus
71
+ extern "C" {
72
+ #endif
73
+
74
+
75
+ /* Macro to obtain ASN1_ADB pointer from a type (only used internally) */
76
+ #define ASN1_ADB_ptr(iptr) ((const ASN1_ADB *)(iptr))
77
+
78
+
79
+ /* Macros for start and end of ASN1_ITEM definition */
80
+
81
+ #define ASN1_ITEM_start(itname) \
82
+ const ASN1_ITEM itname##_it = {
83
+
84
+ #define ASN1_ITEM_end(itname) \
85
+ };
86
+
87
+ /* Macros to aid ASN1 template writing */
88
+
89
+ #define ASN1_ITEM_TEMPLATE(tname) \
90
+ static const ASN1_TEMPLATE tname##_item_tt
91
+
92
+ #define ASN1_ITEM_TEMPLATE_END(tname) \
93
+ ;\
94
+ ASN1_ITEM_start(tname) \
95
+ ASN1_ITYPE_PRIMITIVE,\
96
+ -1,\
97
+ &tname##_item_tt,\
98
+ 0,\
99
+ NULL,\
100
+ 0,\
101
+ #tname \
102
+ ASN1_ITEM_end(tname)
103
+
104
+
105
+ /* This is a ASN1 type which just embeds a template */
106
+
107
+ /* This pair helps declare a SEQUENCE. We can do:
108
+ *
109
+ * ASN1_SEQUENCE(stname) = {
110
+ * ... SEQUENCE components ...
111
+ * } ASN1_SEQUENCE_END(stname)
112
+ *
113
+ * This will produce an ASN1_ITEM called stname_it
114
+ * for a structure called stname.
115
+ *
116
+ * If you want the same structure but a different
117
+ * name then use:
118
+ *
119
+ * ASN1_SEQUENCE(itname) = {
120
+ * ... SEQUENCE components ...
121
+ * } ASN1_SEQUENCE_END_name(stname, itname)
122
+ *
123
+ * This will create an item called itname_it using
124
+ * a structure called stname.
125
+ */
126
+
127
+ #define ASN1_SEQUENCE(tname) \
128
+ static const ASN1_TEMPLATE tname##_seq_tt[]
129
+
130
+ #define ASN1_SEQUENCE_END(stname) ASN1_SEQUENCE_END_name(stname, stname)
131
+
132
+ #define ASN1_SEQUENCE_END_name(stname, tname) \
133
+ ;\
134
+ ASN1_ITEM_start(tname) \
135
+ ASN1_ITYPE_SEQUENCE,\
136
+ V_ASN1_SEQUENCE,\
137
+ tname##_seq_tt,\
138
+ sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
139
+ NULL,\
140
+ sizeof(stname),\
141
+ #stname \
142
+ ASN1_ITEM_end(tname)
143
+
144
+ #define ASN1_NDEF_SEQUENCE(tname) \
145
+ ASN1_SEQUENCE(tname)
146
+
147
+ #define ASN1_NDEF_SEQUENCE_cb(tname, cb) \
148
+ ASN1_SEQUENCE_cb(tname, cb)
149
+
150
+ #define ASN1_SEQUENCE_cb(tname, cb) \
151
+ static const ASN1_AUX tname##_aux = {NULL, 0, 0, cb, 0}; \
152
+ ASN1_SEQUENCE(tname)
153
+
154
+ #define ASN1_BROKEN_SEQUENCE(tname) \
155
+ static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_BROKEN, 0, 0, 0}; \
156
+ ASN1_SEQUENCE(tname)
157
+
158
+ #define ASN1_SEQUENCE_ref(tname, cb) \
159
+ static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_REFCOUNT, offsetof(tname, references), cb, 0}; \
160
+ ASN1_SEQUENCE(tname)
161
+
162
+ #define ASN1_SEQUENCE_enc(tname, enc, cb) \
163
+ static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_ENCODING, 0, cb, offsetof(tname, enc)}; \
164
+ ASN1_SEQUENCE(tname)
165
+
166
+ #define ASN1_NDEF_SEQUENCE_END(tname) \
167
+ ;\
168
+ ASN1_ITEM_start(tname) \
169
+ ASN1_ITYPE_NDEF_SEQUENCE,\
170
+ V_ASN1_SEQUENCE,\
171
+ tname##_seq_tt,\
172
+ sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
173
+ NULL,\
174
+ sizeof(tname),\
175
+ #tname \
176
+ ASN1_ITEM_end(tname)
177
+
178
+ #define ASN1_BROKEN_SEQUENCE_END(stname) ASN1_SEQUENCE_END_ref(stname, stname)
179
+
180
+ #define ASN1_SEQUENCE_END_enc(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname)
181
+
182
+ #define ASN1_SEQUENCE_END_cb(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname)
183
+
184
+ #define ASN1_SEQUENCE_END_ref(stname, tname) \
185
+ ;\
186
+ ASN1_ITEM_start(tname) \
187
+ ASN1_ITYPE_SEQUENCE,\
188
+ V_ASN1_SEQUENCE,\
189
+ tname##_seq_tt,\
190
+ sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
191
+ &tname##_aux,\
192
+ sizeof(stname),\
193
+ #stname \
194
+ ASN1_ITEM_end(tname)
195
+
196
+ #define ASN1_NDEF_SEQUENCE_END_cb(stname, tname) \
197
+ ;\
198
+ ASN1_ITEM_start(tname) \
199
+ ASN1_ITYPE_NDEF_SEQUENCE,\
200
+ V_ASN1_SEQUENCE,\
201
+ tname##_seq_tt,\
202
+ sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
203
+ &tname##_aux,\
204
+ sizeof(stname),\
205
+ #stname \
206
+ ASN1_ITEM_end(tname)
207
+
208
+
209
+ /* This pair helps declare a CHOICE type. We can do:
210
+ *
211
+ * ASN1_CHOICE(chname) = {
212
+ * ... CHOICE options ...
213
+ * ASN1_CHOICE_END(chname)
214
+ *
215
+ * This will produce an ASN1_ITEM called chname_it
216
+ * for a structure called chname. The structure
217
+ * definition must look like this:
218
+ * typedef struct {
219
+ * int type;
220
+ * union {
221
+ * ASN1_SOMETHING *opt1;
222
+ * ASN1_SOMEOTHER *opt2;
223
+ * } value;
224
+ * } chname;
225
+ *
226
+ * the name of the selector must be 'type'.
227
+ * to use an alternative selector name use the
228
+ * ASN1_CHOICE_END_selector() version.
229
+ */
230
+
231
+ #define ASN1_CHOICE(tname) \
232
+ static const ASN1_TEMPLATE tname##_ch_tt[]
233
+
234
+ #define ASN1_CHOICE_cb(tname, cb) \
235
+ static const ASN1_AUX tname##_aux = {NULL, 0, 0, cb, 0}; \
236
+ ASN1_CHOICE(tname)
237
+
238
+ #define ASN1_CHOICE_END(stname) ASN1_CHOICE_END_name(stname, stname)
239
+
240
+ #define ASN1_CHOICE_END_name(stname, tname) ASN1_CHOICE_END_selector(stname, tname, type)
241
+
242
+ #define ASN1_CHOICE_END_selector(stname, tname, selname) \
243
+ ;\
244
+ ASN1_ITEM_start(tname) \
245
+ ASN1_ITYPE_CHOICE,\
246
+ offsetof(stname,selname) ,\
247
+ tname##_ch_tt,\
248
+ sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE),\
249
+ NULL,\
250
+ sizeof(stname),\
251
+ #stname \
252
+ ASN1_ITEM_end(tname)
253
+
254
+ #define ASN1_CHOICE_END_cb(stname, tname, selname) \
255
+ ;\
256
+ ASN1_ITEM_start(tname) \
257
+ ASN1_ITYPE_CHOICE,\
258
+ offsetof(stname,selname) ,\
259
+ tname##_ch_tt,\
260
+ sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE),\
261
+ &tname##_aux,\
262
+ sizeof(stname),\
263
+ #stname \
264
+ ASN1_ITEM_end(tname)
265
+
266
+ /* This helps with the template wrapper form of ASN1_ITEM */
267
+
268
+ #define ASN1_EX_TEMPLATE_TYPE(flags, tag, name, type) { \
269
+ (flags), (tag), 0,\
270
+ #name, ASN1_ITEM_ref(type) }
271
+
272
+ /* These help with SEQUENCE or CHOICE components */
273
+
274
+ /* used to declare other types */
275
+
276
+ #define ASN1_EX_TYPE(flags, tag, stname, field, type) { \
277
+ (flags), (tag), offsetof(stname, field),\
278
+ #field, ASN1_ITEM_ref(type) }
279
+
280
+ /* used when the structure is combined with the parent */
281
+
282
+ #define ASN1_EX_COMBINE(flags, tag, type) { \
283
+ (flags)|ASN1_TFLG_COMBINE, (tag), 0, NULL, ASN1_ITEM_ref(type) }
284
+
285
+ /* implicit and explicit helper macros */
286
+
287
+ #define ASN1_IMP_EX(stname, field, type, tag, ex) \
288
+ ASN1_EX_TYPE(ASN1_TFLG_IMPLICIT | ex, tag, stname, field, type)
289
+
290
+ #define ASN1_EXP_EX(stname, field, type, tag, ex) \
291
+ ASN1_EX_TYPE(ASN1_TFLG_EXPLICIT | ex, tag, stname, field, type)
292
+
293
+ /* Any defined by macros: the field used is in the table itself */
294
+
295
+ #define ASN1_ADB_OBJECT(tblname) { ASN1_TFLG_ADB_OID, -1, 0, #tblname, (const ASN1_ITEM *)&(tblname##_adb) }
296
+ #define ASN1_ADB_INTEGER(tblname) { ASN1_TFLG_ADB_INT, -1, 0, #tblname, (const ASN1_ITEM *)&(tblname##_adb) }
297
+ /* Plain simple type */
298
+ #define ASN1_SIMPLE(stname, field, type) ASN1_EX_TYPE(0,0, stname, field, type)
299
+
300
+ /* OPTIONAL simple type */
301
+ #define ASN1_OPT(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_OPTIONAL, 0, stname, field, type)
302
+
303
+ /* IMPLICIT tagged simple type */
304
+ #define ASN1_IMP(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, 0)
305
+
306
+ /* IMPLICIT tagged OPTIONAL simple type */
307
+ #define ASN1_IMP_OPT(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL)
308
+
309
+ /* Same as above but EXPLICIT */
310
+
311
+ #define ASN1_EXP(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, 0)
312
+ #define ASN1_EXP_OPT(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL)
313
+
314
+ /* SEQUENCE OF type */
315
+ #define ASN1_SEQUENCE_OF(stname, field, type) \
316
+ ASN1_EX_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, stname, field, type)
317
+
318
+ /* OPTIONAL SEQUENCE OF */
319
+ #define ASN1_SEQUENCE_OF_OPT(stname, field, type) \
320
+ ASN1_EX_TYPE(ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL, 0, stname, field, type)
321
+
322
+ /* Same as above but for SET OF */
323
+
324
+ #define ASN1_SET_OF(stname, field, type) \
325
+ ASN1_EX_TYPE(ASN1_TFLG_SET_OF, 0, stname, field, type)
326
+
327
+ #define ASN1_SET_OF_OPT(stname, field, type) \
328
+ ASN1_EX_TYPE(ASN1_TFLG_SET_OF|ASN1_TFLG_OPTIONAL, 0, stname, field, type)
329
+
330
+ /* Finally compound types of SEQUENCE, SET, IMPLICIT, EXPLICIT and OPTIONAL */
331
+
332
+ #define ASN1_IMP_SET_OF(stname, field, type, tag) \
333
+ ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF)
334
+
335
+ #define ASN1_EXP_SET_OF(stname, field, type, tag) \
336
+ ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF)
337
+
338
+ #define ASN1_IMP_SET_OF_OPT(stname, field, type, tag) \
339
+ ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF|ASN1_TFLG_OPTIONAL)
340
+
341
+ #define ASN1_EXP_SET_OF_OPT(stname, field, type, tag) \
342
+ ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF|ASN1_TFLG_OPTIONAL)
343
+
344
+ #define ASN1_IMP_SEQUENCE_OF(stname, field, type, tag) \
345
+ ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF)
346
+
347
+ #define ASN1_IMP_SEQUENCE_OF_OPT(stname, field, type, tag) \
348
+ ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL)
349
+
350
+ #define ASN1_EXP_SEQUENCE_OF(stname, field, type, tag) \
351
+ ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF)
352
+
353
+ #define ASN1_EXP_SEQUENCE_OF_OPT(stname, field, type, tag) \
354
+ ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL)
355
+
356
+ /* EXPLICIT using indefinite length constructed form */
357
+ #define ASN1_NDEF_EXP(stname, field, type, tag) \
358
+ ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_NDEF)
359
+
360
+ /* EXPLICIT OPTIONAL using indefinite length constructed form */
361
+ #define ASN1_NDEF_EXP_OPT(stname, field, type, tag) \
362
+ ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL|ASN1_TFLG_NDEF)
363
+
364
+ /* Macros for the ASN1_ADB structure */
365
+
366
+ #define ASN1_ADB(name) \
367
+ static const ASN1_ADB_TABLE name##_adbtbl[]
368
+
369
+ #define ASN1_ADB_END(name, flags, field, app_table, def, none) \
370
+ ;\
371
+ static const ASN1_ADB name##_adb = {\
372
+ flags,\
373
+ offsetof(name, field),\
374
+ app_table,\
375
+ name##_adbtbl,\
376
+ sizeof(name##_adbtbl) / sizeof(ASN1_ADB_TABLE),\
377
+ def,\
378
+ none\
379
+ }
380
+
381
+ #define ADB_ENTRY(val, template) {val, template}
382
+
383
+ #define ASN1_ADB_TEMPLATE(name) \
384
+ static const ASN1_TEMPLATE name##_tt
385
+
386
+ /* This is the ASN1 template structure that defines
387
+ * a wrapper round the actual type. It determines the
388
+ * actual position of the field in the value structure,
389
+ * various flags such as OPTIONAL and the field name.
390
+ */
391
+
392
+ struct ASN1_TEMPLATE_st {
393
+ unsigned long flags; /* Various flags */
394
+ long tag; /* tag, not used if no tagging */
395
+ unsigned long offset; /* Offset of this field in structure */
396
+ #ifndef NO_ASN1_FIELD_NAMES
397
+ const char *field_name; /* Field name */
398
+ #endif
399
+ ASN1_ITEM_EXP *item; /* Relevant ASN1_ITEM or ASN1_ADB */
400
+ };
401
+
402
+ /* Macro to extract ASN1_ITEM and ASN1_ADB pointer from ASN1_TEMPLATE */
403
+
404
+ #define ASN1_TEMPLATE_item(t) (t->item_ptr)
405
+ #define ASN1_TEMPLATE_adb(t) (t->item_ptr)
406
+
407
+ typedef struct ASN1_ADB_TABLE_st ASN1_ADB_TABLE;
408
+ typedef struct ASN1_ADB_st ASN1_ADB;
409
+
410
+ struct ASN1_ADB_st {
411
+ unsigned long flags; /* Various flags */
412
+ unsigned long offset; /* Offset of selector field */
413
+ STACK_OF(ASN1_ADB_TABLE) **app_items; /* Application defined items */
414
+ const ASN1_ADB_TABLE *tbl; /* Table of possible types */
415
+ long tblcount; /* Number of entries in tbl */
416
+ const ASN1_TEMPLATE *default_tt; /* Type to use if no match */
417
+ const ASN1_TEMPLATE *null_tt; /* Type to use if selector is NULL */
418
+ };
419
+
420
+ struct ASN1_ADB_TABLE_st {
421
+ long value; /* NID for an object or value for an int */
422
+ const ASN1_TEMPLATE tt; /* item for this value */
423
+ };
424
+
425
+ /* template flags */
426
+
427
+ /* Field is optional */
428
+ #define ASN1_TFLG_OPTIONAL (0x1)
429
+
430
+ /* Field is a SET OF */
431
+ #define ASN1_TFLG_SET_OF (0x1 << 1)
432
+
433
+ /* Field is a SEQUENCE OF */
434
+ #define ASN1_TFLG_SEQUENCE_OF (0x2 << 1)
435
+
436
+ /* Special case: this refers to a SET OF that
437
+ * will be sorted into DER order when encoded *and*
438
+ * the corresponding STACK will be modified to match
439
+ * the new order.
440
+ */
441
+ #define ASN1_TFLG_SET_ORDER (0x3 << 1)
442
+
443
+ /* Mask for SET OF or SEQUENCE OF */
444
+ #define ASN1_TFLG_SK_MASK (0x3 << 1)
445
+
446
+ /* These flags mean the tag should be taken from the
447
+ * tag field. If EXPLICIT then the underlying type
448
+ * is used for the inner tag.
449
+ */
450
+
451
+ /* IMPLICIT tagging */
452
+ #define ASN1_TFLG_IMPTAG (0x1 << 3)
453
+
454
+
455
+ /* EXPLICIT tagging, inner tag from underlying type */
456
+ #define ASN1_TFLG_EXPTAG (0x2 << 3)
457
+
458
+ #define ASN1_TFLG_TAG_MASK (0x3 << 3)
459
+
460
+ /* context specific IMPLICIT */
461
+ #define ASN1_TFLG_IMPLICIT ASN1_TFLG_IMPTAG|ASN1_TFLG_CONTEXT
462
+
463
+ /* context specific EXPLICIT */
464
+ #define ASN1_TFLG_EXPLICIT ASN1_TFLG_EXPTAG|ASN1_TFLG_CONTEXT
465
+
466
+ /* If tagging is in force these determine the
467
+ * type of tag to use. Otherwise the tag is
468
+ * determined by the underlying type. These
469
+ * values reflect the actual octet format.
470
+ */
471
+
472
+ /* Universal tag */
473
+ #define ASN1_TFLG_UNIVERSAL (0x0<<6)
474
+ /* Application tag */
475
+ #define ASN1_TFLG_APPLICATION (0x1<<6)
476
+ /* Context specific tag */
477
+ #define ASN1_TFLG_CONTEXT (0x2<<6)
478
+ /* Private tag */
479
+ #define ASN1_TFLG_PRIVATE (0x3<<6)
480
+
481
+ #define ASN1_TFLG_TAG_CLASS (0x3<<6)
482
+
483
+ /* These are for ANY DEFINED BY type. In this case
484
+ * the 'item' field points to an ASN1_ADB structure
485
+ * which contains a table of values to decode the
486
+ * relevant type
487
+ */
488
+
489
+ #define ASN1_TFLG_ADB_MASK (0x3<<8)
490
+
491
+ #define ASN1_TFLG_ADB_OID (0x1<<8)
492
+
493
+ #define ASN1_TFLG_ADB_INT (0x1<<9)
494
+
495
+ /* This flag means a parent structure is passed
496
+ * instead of the field: this is useful is a
497
+ * SEQUENCE is being combined with a CHOICE for
498
+ * example. Since this means the structure and
499
+ * item name will differ we need to use the
500
+ * ASN1_CHOICE_END_name() macro for example.
501
+ */
502
+
503
+ #define ASN1_TFLG_COMBINE (0x1<<10)
504
+
505
+ /* This flag when present in a SEQUENCE OF, SET OF
506
+ * or EXPLICIT causes indefinite length constructed
507
+ * encoding to be used if required.
508
+ */
509
+
510
+ #define ASN1_TFLG_NDEF (0x1<<11)
511
+
512
+ /* This is the actual ASN1 item itself */
513
+
514
+ struct ASN1_ITEM_st {
515
+ char itype; /* The item type, primitive, SEQUENCE, CHOICE or extern */
516
+ long utype; /* underlying type */
517
+ const ASN1_TEMPLATE *templates; /* If SEQUENCE or CHOICE this contains the contents */
518
+ long tcount; /* Number of templates if SEQUENCE or CHOICE */
519
+ const void *funcs; /* functions that handle this type */
520
+ long size; /* Structure size (usually)*/
521
+ #ifndef NO_ASN1_FIELD_NAMES
522
+ const char *sname; /* Structure name */
523
+ #endif
524
+ };
525
+
526
+ /* These are values for the itype field and
527
+ * determine how the type is interpreted.
528
+ *
529
+ * For PRIMITIVE types the underlying type
530
+ * determines the behaviour if items is NULL.
531
+ *
532
+ * Otherwise templates must contain a single
533
+ * template and the type is treated in the
534
+ * same way as the type specified in the template.
535
+ *
536
+ * For SEQUENCE types the templates field points
537
+ * to the members, the size field is the
538
+ * structure size.
539
+ *
540
+ * For CHOICE types the templates field points
541
+ * to each possible member (typically a union)
542
+ * and the 'size' field is the offset of the
543
+ * selector.
544
+ *
545
+ * The 'funcs' field is used for application
546
+ * specific functions.
547
+ *
548
+ * For COMPAT types the funcs field gives a
549
+ * set of functions that handle this type, this
550
+ * supports the old d2i, i2d convention.
551
+ *
552
+ * The EXTERN type uses a new style d2i/i2d.
553
+ * The new style should be used where possible
554
+ * because it avoids things like the d2i IMPLICIT
555
+ * hack.
556
+ *
557
+ * MSTRING is a multiple string type, it is used
558
+ * for a CHOICE of character strings where the
559
+ * actual strings all occupy an ASN1_STRING
560
+ * structure. In this case the 'utype' field
561
+ * has a special meaning, it is used as a mask
562
+ * of acceptable types using the B_ASN1 constants.
563
+ *
564
+ * NDEF_SEQUENCE is the same as SEQUENCE except
565
+ * that it will use indefinite length constructed
566
+ * encoding if requested.
567
+ *
568
+ */
569
+
570
+ #define ASN1_ITYPE_PRIMITIVE 0x0
571
+
572
+ #define ASN1_ITYPE_SEQUENCE 0x1
573
+
574
+ #define ASN1_ITYPE_CHOICE 0x2
575
+
576
+ #define ASN1_ITYPE_COMPAT 0x3
577
+
578
+ #define ASN1_ITYPE_EXTERN 0x4
579
+
580
+ #define ASN1_ITYPE_MSTRING 0x5
581
+
582
+ #define ASN1_ITYPE_NDEF_SEQUENCE 0x6
583
+
584
+ /* Cache for ASN1 tag and length, so we
585
+ * don't keep re-reading it for things
586
+ * like CHOICE
587
+ */
588
+
589
+ struct ASN1_TLC_st{
590
+ char valid; /* Values below are valid */
591
+ int ret; /* return value */
592
+ long plen; /* length */
593
+ int ptag; /* class value */
594
+ int pclass; /* class value */
595
+ int hdrlen; /* header length */
596
+ };
597
+
598
+ /* Typedefs for ASN1 function pointers */
599
+
600
+ typedef ASN1_VALUE * ASN1_new_func(void);
601
+ typedef void ASN1_free_func(ASN1_VALUE *a);
602
+ typedef ASN1_VALUE * ASN1_d2i_func(ASN1_VALUE **a, const unsigned char ** in, long length);
603
+ typedef int ASN1_i2d_func(ASN1_VALUE * a, unsigned char **in);
604
+
605
+ typedef int ASN1_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len, const ASN1_ITEM *it,
606
+ int tag, int aclass, char opt, ASN1_TLC *ctx);
607
+
608
+ typedef int ASN1_ex_i2d(ASN1_VALUE **pval, unsigned char **out, const ASN1_ITEM *it, int tag, int aclass);
609
+ typedef int ASN1_ex_new_func(ASN1_VALUE **pval, const ASN1_ITEM *it);
610
+ typedef void ASN1_ex_free_func(ASN1_VALUE **pval, const ASN1_ITEM *it);
611
+
612
+ typedef int ASN1_ex_print_func(BIO *out, ASN1_VALUE **pval,
613
+ int indent, const char *fname,
614
+ const ASN1_PCTX *pctx);
615
+
616
+ typedef int ASN1_primitive_i2c(ASN1_VALUE **pval, unsigned char *cont, int *putype, const ASN1_ITEM *it);
617
+ typedef int ASN1_primitive_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len, int utype, char *free_cont, const ASN1_ITEM *it);
618
+ typedef int ASN1_primitive_print(BIO *out, ASN1_VALUE **pval, const ASN1_ITEM *it, int indent, const ASN1_PCTX *pctx);
619
+
620
+ typedef struct ASN1_COMPAT_FUNCS_st {
621
+ ASN1_new_func *asn1_new;
622
+ ASN1_free_func *asn1_free;
623
+ ASN1_d2i_func *asn1_d2i;
624
+ ASN1_i2d_func *asn1_i2d;
625
+ } ASN1_COMPAT_FUNCS;
626
+
627
+ typedef struct ASN1_EXTERN_FUNCS_st {
628
+ void *app_data;
629
+ ASN1_ex_new_func *asn1_ex_new;
630
+ ASN1_ex_free_func *asn1_ex_free;
631
+ ASN1_ex_free_func *asn1_ex_clear;
632
+ ASN1_ex_d2i *asn1_ex_d2i;
633
+ ASN1_ex_i2d *asn1_ex_i2d;
634
+ ASN1_ex_print_func *asn1_ex_print;
635
+ } ASN1_EXTERN_FUNCS;
636
+
637
+ typedef struct ASN1_PRIMITIVE_FUNCS_st {
638
+ void *app_data;
639
+ unsigned long flags;
640
+ ASN1_ex_new_func *prim_new;
641
+ ASN1_ex_free_func *prim_free;
642
+ ASN1_ex_free_func *prim_clear;
643
+ ASN1_primitive_c2i *prim_c2i;
644
+ ASN1_primitive_i2c *prim_i2c;
645
+ ASN1_primitive_print *prim_print;
646
+ } ASN1_PRIMITIVE_FUNCS;
647
+
648
+ /* This is the ASN1_AUX structure: it handles various
649
+ * miscellaneous requirements. For example the use of
650
+ * reference counts and an informational callback.
651
+ *
652
+ * The "informational callback" is called at various
653
+ * points during the ASN1 encoding and decoding. It can
654
+ * be used to provide minor customisation of the structures
655
+ * used. This is most useful where the supplied routines
656
+ * *almost* do the right thing but need some extra help
657
+ * at a few points. If the callback returns zero then
658
+ * it is assumed a fatal error has occurred and the
659
+ * main operation should be abandoned.
660
+ *
661
+ * If major changes in the default behaviour are required
662
+ * then an external type is more appropriate.
663
+ */
664
+
665
+ typedef int ASN1_aux_cb(int operation, ASN1_VALUE **in, const ASN1_ITEM *it,
666
+ void *exarg);
667
+
668
+ typedef struct ASN1_AUX_st {
669
+ void *app_data;
670
+ int flags;
671
+ int ref_offset; /* Offset of reference value */
672
+ ASN1_aux_cb *asn1_cb;
673
+ int enc_offset; /* Offset of ASN1_ENCODING structure */
674
+ } ASN1_AUX;
675
+
676
+ /* For print related callbacks exarg points to this structure */
677
+ typedef struct ASN1_PRINT_ARG_st {
678
+ BIO *out;
679
+ int indent;
680
+ const ASN1_PCTX *pctx;
681
+ } ASN1_PRINT_ARG;
682
+
683
+ /* For streaming related callbacks exarg points to this structure */
684
+ typedef struct ASN1_STREAM_ARG_st {
685
+ /* BIO to stream through */
686
+ BIO *out;
687
+ /* BIO with filters appended */
688
+ BIO *ndef_bio;
689
+ /* Streaming I/O boundary */
690
+ unsigned char **boundary;
691
+ } ASN1_STREAM_ARG;
692
+
693
+ /* Flags in ASN1_AUX */
694
+
695
+ /* Use a reference count */
696
+ #define ASN1_AFLG_REFCOUNT 1
697
+ /* Save the encoding of structure (useful for signatures) */
698
+ #define ASN1_AFLG_ENCODING 2
699
+ /* The Sequence length is invalid */
700
+ #define ASN1_AFLG_BROKEN 4
701
+
702
+ /* operation values for asn1_cb */
703
+
704
+ #define ASN1_OP_NEW_PRE 0
705
+ #define ASN1_OP_NEW_POST 1
706
+ #define ASN1_OP_FREE_PRE 2
707
+ #define ASN1_OP_FREE_POST 3
708
+ #define ASN1_OP_D2I_PRE 4
709
+ #define ASN1_OP_D2I_POST 5
710
+ #define ASN1_OP_I2D_PRE 6
711
+ #define ASN1_OP_I2D_POST 7
712
+ #define ASN1_OP_PRINT_PRE 8
713
+ #define ASN1_OP_PRINT_POST 9
714
+ #define ASN1_OP_STREAM_PRE 10
715
+ #define ASN1_OP_STREAM_POST 11
716
+ #define ASN1_OP_DETACHED_PRE 12
717
+ #define ASN1_OP_DETACHED_POST 13
718
+
719
+ /* Macro to implement a primitive type */
720
+ #define IMPLEMENT_ASN1_TYPE(stname) IMPLEMENT_ASN1_TYPE_ex(stname, stname, 0)
721
+ #define IMPLEMENT_ASN1_TYPE_ex(itname, vname, ex) \
722
+ ASN1_ITEM_start(itname) \
723
+ ASN1_ITYPE_PRIMITIVE, V_##vname, NULL, 0, NULL, ex, #itname \
724
+ ASN1_ITEM_end(itname)
725
+
726
+ /* Macro to implement a multi string type */
727
+ #define IMPLEMENT_ASN1_MSTRING(itname, mask) \
728
+ ASN1_ITEM_start(itname) \
729
+ ASN1_ITYPE_MSTRING, mask, NULL, 0, NULL, sizeof(ASN1_STRING), #itname \
730
+ ASN1_ITEM_end(itname)
731
+
732
+ /* Macro to implement an ASN1_ITEM in terms of old style funcs */
733
+
734
+ #define IMPLEMENT_COMPAT_ASN1(sname) IMPLEMENT_COMPAT_ASN1_type(sname, V_ASN1_SEQUENCE)
735
+
736
+ #define IMPLEMENT_COMPAT_ASN1_type(sname, tag) \
737
+ static const ASN1_COMPAT_FUNCS sname##_ff = { \
738
+ (ASN1_new_func *)sname##_new, \
739
+ (ASN1_free_func *)sname##_free, \
740
+ (ASN1_d2i_func *)d2i_##sname, \
741
+ (ASN1_i2d_func *)i2d_##sname, \
742
+ }; \
743
+ ASN1_ITEM_start(sname) \
744
+ ASN1_ITYPE_COMPAT, \
745
+ tag, \
746
+ NULL, \
747
+ 0, \
748
+ &sname##_ff, \
749
+ 0, \
750
+ #sname \
751
+ ASN1_ITEM_end(sname)
752
+
753
+ #define IMPLEMENT_EXTERN_ASN1(sname, tag, fptrs) \
754
+ ASN1_ITEM_start(sname) \
755
+ ASN1_ITYPE_EXTERN, \
756
+ tag, \
757
+ NULL, \
758
+ 0, \
759
+ &fptrs, \
760
+ 0, \
761
+ #sname \
762
+ ASN1_ITEM_end(sname)
763
+
764
+ /* Macro to implement standard functions in terms of ASN1_ITEM structures */
765
+
766
+ #define IMPLEMENT_ASN1_FUNCTIONS(stname) IMPLEMENT_ASN1_FUNCTIONS_fname(stname, stname, stname)
767
+
768
+ #define IMPLEMENT_ASN1_FUNCTIONS_name(stname, itname) IMPLEMENT_ASN1_FUNCTIONS_fname(stname, itname, itname)
769
+
770
+ #define IMPLEMENT_ASN1_FUNCTIONS_ENCODE_name(stname, itname) \
771
+ IMPLEMENT_ASN1_FUNCTIONS_ENCODE_fname(stname, itname, itname)
772
+
773
+ #define IMPLEMENT_STATIC_ASN1_ALLOC_FUNCTIONS(stname) \
774
+ IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname(static, stname, stname, stname)
775
+
776
+ #define IMPLEMENT_ASN1_ALLOC_FUNCTIONS(stname) \
777
+ IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, stname, stname)
778
+
779
+ #define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname(pre, stname, itname, fname) \
780
+ pre stname *fname##_new(void) \
781
+ { \
782
+ return (stname *)ASN1_item_new(ASN1_ITEM_rptr(itname)); \
783
+ } \
784
+ pre void fname##_free(stname *a) \
785
+ { \
786
+ ASN1_item_free((ASN1_VALUE *)a, ASN1_ITEM_rptr(itname)); \
787
+ }
788
+
789
+ #define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname) \
790
+ stname *fname##_new(void) \
791
+ { \
792
+ return (stname *)ASN1_item_new(ASN1_ITEM_rptr(itname)); \
793
+ } \
794
+ void fname##_free(stname *a) \
795
+ { \
796
+ ASN1_item_free((ASN1_VALUE *)a, ASN1_ITEM_rptr(itname)); \
797
+ }
798
+
799
+ #define IMPLEMENT_ASN1_FUNCTIONS_fname(stname, itname, fname) \
800
+ IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) \
801
+ IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname)
802
+
803
+ #define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) \
804
+ stname *d2i_##fname(stname **a, const unsigned char **in, long len) \
805
+ { \
806
+ return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, ASN1_ITEM_rptr(itname));\
807
+ } \
808
+ int i2d_##fname(stname *a, unsigned char **out) \
809
+ { \
810
+ return ASN1_item_i2d((ASN1_VALUE *)a, out, ASN1_ITEM_rptr(itname));\
811
+ }
812
+
813
+ #define IMPLEMENT_ASN1_NDEF_FUNCTION(stname) \
814
+ int i2d_##stname##_NDEF(stname *a, unsigned char **out) \
815
+ { \
816
+ return ASN1_item_ndef_i2d((ASN1_VALUE *)a, out, ASN1_ITEM_rptr(stname));\
817
+ }
818
+
819
+ /* This includes evil casts to remove const: they will go away when full
820
+ * ASN1 constification is done.
821
+ */
822
+ #define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(stname, itname, fname) \
823
+ stname *d2i_##fname(stname **a, const unsigned char **in, long len) \
824
+ { \
825
+ return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, ASN1_ITEM_rptr(itname));\
826
+ } \
827
+ int i2d_##fname(const stname *a, unsigned char **out) \
828
+ { \
829
+ return ASN1_item_i2d((ASN1_VALUE *)a, out, ASN1_ITEM_rptr(itname));\
830
+ }
831
+
832
+ #define IMPLEMENT_ASN1_DUP_FUNCTION(stname) \
833
+ stname * stname##_dup(stname *x) \
834
+ { \
835
+ return ASN1_item_dup(ASN1_ITEM_rptr(stname), x); \
836
+ }
837
+
838
+ #define IMPLEMENT_ASN1_PRINT_FUNCTION(stname) \
839
+ IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, stname, stname)
840
+
841
+ #define IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, itname, fname) \
842
+ int fname##_print_ctx(BIO *out, stname *x, int indent, \
843
+ const ASN1_PCTX *pctx) \
844
+ { \
845
+ return ASN1_item_print(out, (ASN1_VALUE *)x, indent, \
846
+ ASN1_ITEM_rptr(itname), pctx); \
847
+ }
848
+
849
+ #define IMPLEMENT_ASN1_FUNCTIONS_const(name) \
850
+ IMPLEMENT_ASN1_FUNCTIONS_const_fname(name, name, name)
851
+
852
+ #define IMPLEMENT_ASN1_FUNCTIONS_const_fname(stname, itname, fname) \
853
+ IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(stname, itname, fname) \
854
+ IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname)
855
+
856
+ /* external definitions for primitive types */
857
+
858
+ DECLARE_ASN1_ITEM(ASN1_BOOLEAN)
859
+ DECLARE_ASN1_ITEM(ASN1_TBOOLEAN)
860
+ DECLARE_ASN1_ITEM(ASN1_FBOOLEAN)
861
+ DECLARE_ASN1_ITEM(ASN1_SEQUENCE)
862
+ DECLARE_ASN1_ITEM(CBIGNUM)
863
+ DECLARE_ASN1_ITEM(BIGNUM)
864
+ DECLARE_ASN1_ITEM(LONG)
865
+ DECLARE_ASN1_ITEM(ZLONG)
866
+
867
+ DECLARE_STACK_OF(ASN1_VALUE)
868
+
869
+ /* Functions used internally by the ASN1 code */
870
+
871
+ int ASN1_item_ex_new(ASN1_VALUE **pval, const ASN1_ITEM *it);
872
+ void ASN1_item_ex_free(ASN1_VALUE **pval, const ASN1_ITEM *it);
873
+ int ASN1_template_new(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt);
874
+ int ASN1_primitive_new(ASN1_VALUE **pval, const ASN1_ITEM *it);
875
+
876
+ void ASN1_template_free(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt);
877
+ int ASN1_template_d2i(ASN1_VALUE **pval, const unsigned char **in, long len, const ASN1_TEMPLATE *tt);
878
+ int ASN1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len, const ASN1_ITEM *it,
879
+ int tag, int aclass, char opt, ASN1_TLC *ctx);
880
+
881
+ int ASN1_item_ex_i2d(ASN1_VALUE **pval, unsigned char **out, const ASN1_ITEM *it, int tag, int aclass);
882
+ int ASN1_template_i2d(ASN1_VALUE **pval, unsigned char **out, const ASN1_TEMPLATE *tt);
883
+ void ASN1_primitive_free(ASN1_VALUE **pval, const ASN1_ITEM *it);
884
+
885
+ int asn1_ex_i2c(ASN1_VALUE **pval, unsigned char *cont, int *putype, const ASN1_ITEM *it);
886
+ int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len, int utype, char *free_cont, const ASN1_ITEM *it);
887
+
888
+ int asn1_get_choice_selector(ASN1_VALUE **pval, const ASN1_ITEM *it);
889
+ int asn1_set_choice_selector(ASN1_VALUE **pval, int value, const ASN1_ITEM *it);
890
+
891
+ ASN1_VALUE ** asn1_get_field_ptr(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt);
892
+
893
+ const ASN1_TEMPLATE *asn1_do_adb(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt, int nullerr);
894
+
895
+ void asn1_refcount_set_one(ASN1_VALUE **pval, const ASN1_ITEM *it);
896
+ int asn1_refcount_dec_and_test_zero(ASN1_VALUE **pval, const ASN1_ITEM *it);
897
+
898
+ void asn1_enc_init(ASN1_VALUE **pval, const ASN1_ITEM *it);
899
+ void asn1_enc_free(ASN1_VALUE **pval, const ASN1_ITEM *it);
900
+ int asn1_enc_restore(int *len, unsigned char **out, ASN1_VALUE **pval, const ASN1_ITEM *it);
901
+ int asn1_enc_save(ASN1_VALUE **pval, const unsigned char *in, int inlen, const ASN1_ITEM *it);
902
+
903
+ #ifdef __cplusplus
904
+ }
905
+ #endif
906
+ #endif