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,96 @@
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
+ #ifndef OPENSSL_HEADER_CAST_H
58
+ #define OPENSSL_HEADER_CAST_H
59
+
60
+ #include <openssl/base.h>
61
+
62
+ #ifdef __cplusplus
63
+ extern "C" {
64
+ #endif
65
+
66
+
67
+ #define CAST_ENCRYPT 1
68
+ #define CAST_DECRYPT 0
69
+
70
+ #define CAST_BLOCK 8
71
+ #define CAST_KEY_LENGTH 16
72
+
73
+ typedef struct cast_key_st {
74
+ uint32_t data[32];
75
+ int short_key; /* Use reduced rounds for short key */
76
+ } CAST_KEY;
77
+
78
+ OPENSSL_EXPORT void CAST_set_key(CAST_KEY *key, size_t len,
79
+ const uint8_t *data);
80
+ OPENSSL_EXPORT void CAST_ecb_encrypt(const uint8_t *in, uint8_t *out,
81
+ const CAST_KEY *key, int enc);
82
+ OPENSSL_EXPORT void CAST_encrypt(uint32_t *data, const CAST_KEY *key);
83
+ OPENSSL_EXPORT void CAST_decrypt(uint32_t *data, const CAST_KEY *key);
84
+ OPENSSL_EXPORT void CAST_cbc_encrypt(const uint8_t *in, uint8_t *out,
85
+ long length, const CAST_KEY *ks,
86
+ uint8_t *iv, int enc);
87
+
88
+ OPENSSL_EXPORT void CAST_cfb64_encrypt(const uint8_t *in, uint8_t *out,
89
+ long length, const CAST_KEY *schedule,
90
+ uint8_t *ivec, int *num, int enc);
91
+
92
+ #ifdef __cplusplus
93
+ }
94
+ #endif
95
+
96
+ #endif /* OPENSSL_HEADER_CAST_H */
@@ -0,0 +1,37 @@
1
+ /* Copyright (c) 2014, Google Inc.
2
+ *
3
+ * Permission to use, copy, modify, and/or distribute this software for any
4
+ * purpose with or without fee is hereby granted, provided that the above
5
+ * copyright notice and this permission notice appear in all copies.
6
+ *
7
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
10
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
12
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
13
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
14
+
15
+ #ifndef OPENSSL_HEADER_CHACHA_H
16
+ #define OPENSSL_HEADER_CHACHA_H
17
+
18
+ #include <openssl/base.h>
19
+
20
+ #ifdef __cplusplus
21
+ extern "C" {
22
+ #endif
23
+
24
+
25
+ /* CRYPTO_chacha_20 encrypts |in_len| bytes from |in| with the given key and
26
+ * nonce and writes the result to |out|, which may be equal to |in|. The
27
+ * initial block counter is specified by |counter|. */
28
+ OPENSSL_EXPORT void CRYPTO_chacha_20(uint8_t *out, const uint8_t *in,
29
+ size_t in_len, const uint8_t key[32],
30
+ const uint8_t nonce[12], uint32_t counter);
31
+
32
+
33
+ #if defined(__cplusplus)
34
+ } /* extern C */
35
+ #endif
36
+
37
+ #endif /* OPENSSL_HEADER_CHACHA_H */
@@ -0,0 +1,571 @@
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
+ #ifndef OPENSSL_HEADER_CIPHER_H
58
+ #define OPENSSL_HEADER_CIPHER_H
59
+
60
+ #include <openssl/base.h>
61
+
62
+ #if defined(__cplusplus)
63
+ extern "C" {
64
+ #endif
65
+
66
+
67
+ /* Ciphers. */
68
+
69
+
70
+ /* Cipher primitives.
71
+ *
72
+ * The following functions return |EVP_CIPHER| objects that implement the named
73
+ * cipher algorithm. */
74
+
75
+ OPENSSL_EXPORT const EVP_CIPHER *EVP_rc4(void);
76
+
77
+ OPENSSL_EXPORT const EVP_CIPHER *EVP_des_cbc(void);
78
+ OPENSSL_EXPORT const EVP_CIPHER *EVP_des_ecb(void);
79
+ OPENSSL_EXPORT const EVP_CIPHER *EVP_des_ede(void);
80
+ OPENSSL_EXPORT const EVP_CIPHER *EVP_des_ede_cbc(void);
81
+ OPENSSL_EXPORT const EVP_CIPHER *EVP_des_ede3_cbc(void);
82
+
83
+ OPENSSL_EXPORT const EVP_CIPHER *EVP_aes_128_ecb(void);
84
+ OPENSSL_EXPORT const EVP_CIPHER *EVP_aes_128_cbc(void);
85
+ OPENSSL_EXPORT const EVP_CIPHER *EVP_aes_128_ctr(void);
86
+ OPENSSL_EXPORT const EVP_CIPHER *EVP_aes_128_ofb(void);
87
+
88
+ OPENSSL_EXPORT const EVP_CIPHER *EVP_aes_256_ecb(void);
89
+ OPENSSL_EXPORT const EVP_CIPHER *EVP_aes_256_cbc(void);
90
+ OPENSSL_EXPORT const EVP_CIPHER *EVP_aes_256_ctr(void);
91
+ OPENSSL_EXPORT const EVP_CIPHER *EVP_aes_256_ofb(void);
92
+ OPENSSL_EXPORT const EVP_CIPHER *EVP_aes_256_xts(void);
93
+
94
+ /* EVP_enc_null returns a 'cipher' that passes plaintext through as
95
+ * ciphertext. */
96
+ OPENSSL_EXPORT const EVP_CIPHER *EVP_enc_null(void);
97
+
98
+ /* EVP_rc2_cbc returns a cipher that implements 128-bit RC2 in CBC mode. */
99
+ OPENSSL_EXPORT const EVP_CIPHER *EVP_rc2_cbc(void);
100
+
101
+ /* EVP_rc2_40_cbc returns a cipher that implements 40-bit RC2 in CBC mode. This
102
+ * is obviously very, very weak and is included only in order to read PKCS#12
103
+ * files, which often encrypt the certificate chain using this cipher. It is
104
+ * deliberately not exported. */
105
+ const EVP_CIPHER *EVP_rc2_40_cbc(void);
106
+
107
+ /* EVP_get_cipherbynid returns the cipher corresponding to the given NID, or
108
+ * NULL if no such cipher is known. */
109
+ OPENSSL_EXPORT const EVP_CIPHER *EVP_get_cipherbynid(int nid);
110
+
111
+
112
+ /* Cipher context allocation.
113
+ *
114
+ * An |EVP_CIPHER_CTX| represents the state of an encryption or decryption in
115
+ * progress. */
116
+
117
+ /* EVP_CIPHER_CTX_init initialises an, already allocated, |EVP_CIPHER_CTX|. */
118
+ OPENSSL_EXPORT void EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *ctx);
119
+
120
+ /* EVP_CIPHER_CTX_new allocates a fresh |EVP_CIPHER_CTX|, calls
121
+ * |EVP_CIPHER_CTX_init| and returns it, or NULL on allocation failure. */
122
+ OPENSSL_EXPORT EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void);
123
+
124
+ /* EVP_CIPHER_CTX_cleanup frees any memory referenced by |ctx|. It returns
125
+ * one. */
126
+ OPENSSL_EXPORT int EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *ctx);
127
+
128
+ /* EVP_CIPHER_CTX_free calls |EVP_CIPHER_CTX_cleanup| on |ctx| and then frees
129
+ * |ctx| itself. */
130
+ OPENSSL_EXPORT void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *ctx);
131
+
132
+ /* EVP_CIPHER_CTX_copy sets |out| to be a duplicate of the current state of
133
+ * |in|. The |out| argument must have been previously initialised. */
134
+ OPENSSL_EXPORT int EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX *out,
135
+ const EVP_CIPHER_CTX *in);
136
+
137
+
138
+ /* Cipher context configuration. */
139
+
140
+ /* EVP_CipherInit_ex configures |ctx| for a fresh encryption (or decryption, if
141
+ * |enc| is zero) operation using |cipher|. If |ctx| has been previously
142
+ * configured with a cipher then |cipher|, |key| and |iv| may be |NULL| and
143
+ * |enc| may be -1 to reuse the previous values. The operation will use |key|
144
+ * as the key and |iv| as the IV (if any). These should have the correct
145
+ * lengths given by |EVP_CIPHER_key_length| and |EVP_CIPHER_iv_length|. It
146
+ * returns one on success and zero on error. */
147
+ OPENSSL_EXPORT int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx,
148
+ const EVP_CIPHER *cipher, ENGINE *engine,
149
+ const uint8_t *key, const uint8_t *iv,
150
+ int enc);
151
+
152
+ /* EVP_EncryptInit_ex calls |EVP_CipherInit_ex| with |enc| equal to one. */
153
+ OPENSSL_EXPORT int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx,
154
+ const EVP_CIPHER *cipher, ENGINE *impl,
155
+ const uint8_t *key, const uint8_t *iv);
156
+
157
+ /* EVP_DecryptInit_ex calls |EVP_CipherInit_ex| with |enc| equal to zero. */
158
+ OPENSSL_EXPORT int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx,
159
+ const EVP_CIPHER *cipher, ENGINE *impl,
160
+ const uint8_t *key, const uint8_t *iv);
161
+
162
+
163
+ /* Cipher operations. */
164
+
165
+ /* EVP_EncryptUpdate encrypts |in_len| bytes from |in| to |out|. The number
166
+ * of output bytes may be up to |in_len| plus the block length minus one and
167
+ * |out| must have sufficient space. The number of bytes actually output is
168
+ * written to |*out_len|. It returns one on success and zero otherwise. */
169
+ OPENSSL_EXPORT int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, uint8_t *out,
170
+ int *out_len, const uint8_t *in,
171
+ int in_len);
172
+
173
+ /* EVP_EncryptFinal_ex writes at most a block of ciphertext to |out| and sets
174
+ * |*out_len| to the number of bytes written. If padding is enabled (the
175
+ * default) then standard padding is applied to create the final block. If
176
+ * padding is disabled (with |EVP_CIPHER_CTX_set_padding|) then any partial
177
+ * block remaining will cause an error. The function returns one on success and
178
+ * zero otherwise. */
179
+ OPENSSL_EXPORT int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, uint8_t *out,
180
+ int *out_len);
181
+
182
+ /* EVP_DecryptUpdate decrypts |in_len| bytes from |in| to |out|. The number of
183
+ * output bytes may be up to |in_len| plus the block length minus one and |out|
184
+ * must have sufficient space. The number of bytes actually output is written
185
+ * to |*out_len|. It returns one on success and zero otherwise. */
186
+ OPENSSL_EXPORT int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, uint8_t *out,
187
+ int *out_len, const uint8_t *in,
188
+ int in_len);
189
+
190
+ /* EVP_DecryptFinal_ex writes at most a block of ciphertext to |out| and sets
191
+ * |*out_len| to the number of bytes written. If padding is enabled (the
192
+ * default) then padding is removed from the final block.
193
+ *
194
+ * WARNING: it is unsafe to call this function with unauthenticted
195
+ * ciphertext if padding is enabled. */
196
+ OPENSSL_EXPORT int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out,
197
+ int *out_len);
198
+
199
+ /* EVP_Cipher performs a one-shot encryption/decryption operation. No partial
200
+ * blocks are maintained between calls. However, any internal cipher state is
201
+ * still updated. For CBC-mode ciphers, the IV is updated to the final
202
+ * ciphertext block. For stream ciphers, the stream is advanced past the bytes
203
+ * used. It returns one on success and zero otherwise, unless |EVP_CIPHER_flags|
204
+ * has |EVP_CIPH_FLAG_CUSTOM_CIPHER| set. Then it returns the number of bytes
205
+ * written or -1 on error.
206
+ *
207
+ * WARNING: this differs from the usual return value convention when using
208
+ * |EVP_CIPH_FLAG_CUSTOM_CIPHER|.
209
+ *
210
+ * TODO(davidben): The normal ciphers currently never fail, even if, e.g.,
211
+ * |in_len| is not a multiple of the block size for CBC-mode decryption. The
212
+ * input just gets rounded up while the output gets truncated. This should
213
+ * either be officially documented or fail. */
214
+ OPENSSL_EXPORT int EVP_Cipher(EVP_CIPHER_CTX *ctx, uint8_t *out,
215
+ const uint8_t *in, size_t in_len);
216
+
217
+ /* EVP_CipherUpdate calls either |EVP_EncryptUpdate| or |EVP_DecryptUpdate|
218
+ * depending on how |ctx| has been setup. */
219
+ OPENSSL_EXPORT int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, uint8_t *out,
220
+ int *out_len, const uint8_t *in,
221
+ int in_len);
222
+
223
+ /* EVP_CipherFinal_ex calls either |EVP_EncryptFinal_ex| or
224
+ * |EVP_DecryptFinal_ex| depending on how |ctx| has been setup. */
225
+ OPENSSL_EXPORT int EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, uint8_t *out,
226
+ int *out_len);
227
+
228
+
229
+ /* Cipher context accessors. */
230
+
231
+ /* EVP_CIPHER_CTX_cipher returns the |EVP_CIPHER| underlying |ctx|, or NULL if
232
+ * none has been set. */
233
+ OPENSSL_EXPORT const EVP_CIPHER *EVP_CIPHER_CTX_cipher(
234
+ const EVP_CIPHER_CTX *ctx);
235
+
236
+ /* EVP_CIPHER_CTX_nid returns a NID identifying the |EVP_CIPHER| underlying
237
+ * |ctx| (e.g. |NID_aes_128_gcm|). It will crash if no cipher has been
238
+ * configured. */
239
+ OPENSSL_EXPORT int EVP_CIPHER_CTX_nid(const EVP_CIPHER_CTX *ctx);
240
+
241
+ /* EVP_CIPHER_CTX_block_size returns the block size, in bytes, of the cipher
242
+ * underlying |ctx|, or one if the cipher is a stream cipher. It will crash if
243
+ * no cipher has been configured. */
244
+ OPENSSL_EXPORT unsigned EVP_CIPHER_CTX_block_size(const EVP_CIPHER_CTX *ctx);
245
+
246
+ /* EVP_CIPHER_CTX_key_length returns the key size, in bytes, of the cipher
247
+ * underlying |ctx| or zero if no cipher has been configured. */
248
+ OPENSSL_EXPORT unsigned EVP_CIPHER_CTX_key_length(const EVP_CIPHER_CTX *ctx);
249
+
250
+ /* EVP_CIPHER_CTX_iv_length returns the IV size, in bytes, of the cipher
251
+ * underlying |ctx|. It will crash if no cipher has been configured. */
252
+ OPENSSL_EXPORT unsigned EVP_CIPHER_CTX_iv_length(const EVP_CIPHER_CTX *ctx);
253
+
254
+ /* EVP_CIPHER_CTX_get_app_data returns the opaque, application data pointer for
255
+ * |ctx|, or NULL if none has been set. */
256
+ OPENSSL_EXPORT void *EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx);
257
+
258
+ /* EVP_CIPHER_CTX_set_app_data sets the opaque, application data pointer for
259
+ * |ctx| to |data|. */
260
+ OPENSSL_EXPORT void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx,
261
+ void *data);
262
+
263
+ /* EVP_CIPHER_CTX_flags returns a value which is the OR of zero or more
264
+ * |EVP_CIPH_*| flags. It will crash if no cipher has been configured. */
265
+ OPENSSL_EXPORT uint32_t EVP_CIPHER_CTX_flags(const EVP_CIPHER_CTX *ctx);
266
+
267
+ /* EVP_CIPHER_CTX_mode returns one of the |EVP_CIPH_*| cipher mode values
268
+ * enumerated below. It will crash if no cipher has been configured. */
269
+ OPENSSL_EXPORT uint32_t EVP_CIPHER_CTX_mode(const EVP_CIPHER_CTX *ctx);
270
+
271
+ /* EVP_CIPHER_CTX_ctrl is an |ioctl| like function. The |command| argument
272
+ * should be one of the |EVP_CTRL_*| values. The |arg| and |ptr| arguments are
273
+ * specific to the command in question. */
274
+ OPENSSL_EXPORT int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int command,
275
+ int arg, void *ptr);
276
+
277
+ /* EVP_CIPHER_CTX_set_padding sets whether padding is enabled for |ctx| and
278
+ * returns one. Pass a non-zero |pad| to enable padding (the default) or zero
279
+ * to disable. */
280
+ OPENSSL_EXPORT int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *ctx, int pad);
281
+
282
+ /* EVP_CIPHER_CTX_set_key_length sets the key length for |ctx|. This is only
283
+ * valid for ciphers that can take a variable length key. It returns one on
284
+ * success and zero on error. */
285
+ OPENSSL_EXPORT int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *ctx, unsigned key_len);
286
+
287
+
288
+ /* Cipher accessors. */
289
+
290
+ /* EVP_CIPHER_nid returns a NID identifing |cipher|. (For example,
291
+ * |NID_aes_128_gcm|.) */
292
+ OPENSSL_EXPORT int EVP_CIPHER_nid(const EVP_CIPHER *cipher);
293
+
294
+ /* EVP_CIPHER_block_size returns the block size, in bytes, for |cipher|, or one
295
+ * if |cipher| is a stream cipher. */
296
+ OPENSSL_EXPORT unsigned EVP_CIPHER_block_size(const EVP_CIPHER *cipher);
297
+
298
+ /* EVP_CIPHER_key_length returns the key size, in bytes, for |cipher|. If
299
+ * |cipher| can take a variable key length then this function returns the
300
+ * default key length and |EVP_CIPHER_flags| will return a value with
301
+ * |EVP_CIPH_VARIABLE_LENGTH| set. */
302
+ OPENSSL_EXPORT unsigned EVP_CIPHER_key_length(const EVP_CIPHER *cipher);
303
+
304
+ /* EVP_CIPHER_iv_length returns the IV size, in bytes, of |cipher|, or zero if
305
+ * |cipher| doesn't take an IV. */
306
+ OPENSSL_EXPORT unsigned EVP_CIPHER_iv_length(const EVP_CIPHER *cipher);
307
+
308
+ /* EVP_CIPHER_flags returns a value which is the OR of zero or more
309
+ * |EVP_CIPH_*| flags. */
310
+ OPENSSL_EXPORT uint32_t EVP_CIPHER_flags(const EVP_CIPHER *cipher);
311
+
312
+ /* EVP_CIPHER_mode returns one of the cipher mode values enumerated below. */
313
+ OPENSSL_EXPORT uint32_t EVP_CIPHER_mode(const EVP_CIPHER *cipher);
314
+
315
+
316
+ /* Key derivation. */
317
+
318
+ /* EVP_BytesToKey generates a key and IV for the cipher |type| by iterating
319
+ * |md| |count| times using |data| and |salt|. On entry, the |key| and |iv|
320
+ * buffers must have enough space to hold a key and IV for |type|. It returns
321
+ * the length of the key on success or zero on error. */
322
+ OPENSSL_EXPORT int EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md,
323
+ const uint8_t *salt, const uint8_t *data,
324
+ size_t data_len, unsigned count, uint8_t *key,
325
+ uint8_t *iv);
326
+
327
+
328
+ /* Cipher modes (for |EVP_CIPHER_mode|). */
329
+
330
+ #define EVP_CIPH_STREAM_CIPHER 0x0
331
+ #define EVP_CIPH_ECB_MODE 0x1
332
+ #define EVP_CIPH_CBC_MODE 0x2
333
+ #define EVP_CIPH_CFB_MODE 0x3
334
+ #define EVP_CIPH_OFB_MODE 0x4
335
+ #define EVP_CIPH_CTR_MODE 0x5
336
+ #define EVP_CIPH_GCM_MODE 0x6
337
+ #define EVP_CIPH_XTS_MODE 0x7
338
+
339
+
340
+ /* Cipher flags (for |EVP_CIPHER_flags|). */
341
+
342
+ /* EVP_CIPH_VARIABLE_LENGTH indicates that the cipher takes a variable length
343
+ * key. */
344
+ #define EVP_CIPH_VARIABLE_LENGTH 0x40
345
+
346
+ /* EVP_CIPH_ALWAYS_CALL_INIT indicates that the |init| function for the cipher
347
+ * should always be called when initialising a new operation, even if the key
348
+ * is NULL to indicate that the same key is being used. */
349
+ #define EVP_CIPH_ALWAYS_CALL_INIT 0x80
350
+
351
+ /* EVP_CIPH_CUSTOM_IV indicates that the cipher manages the IV itself rather
352
+ * than keeping it in the |iv| member of |EVP_CIPHER_CTX|. */
353
+ #define EVP_CIPH_CUSTOM_IV 0x100
354
+
355
+ /* EVP_CIPH_CTRL_INIT indicates that EVP_CTRL_INIT should be used when
356
+ * initialising an |EVP_CIPHER_CTX|. */
357
+ #define EVP_CIPH_CTRL_INIT 0x200
358
+
359
+ /* EVP_CIPH_FLAG_CUSTOM_CIPHER indicates that the cipher manages blocking
360
+ * itself. This causes EVP_(En|De)crypt_ex to be simple wrapper functions. */
361
+ #define EVP_CIPH_FLAG_CUSTOM_CIPHER 0x400
362
+
363
+ /* EVP_CIPH_FLAG_AEAD_CIPHER specifies that the cipher is an AEAD. This is an
364
+ * older version of the proper AEAD interface. See aead.h for the current
365
+ * one. */
366
+ #define EVP_CIPH_FLAG_AEAD_CIPHER 0x800
367
+
368
+ /* EVP_CIPH_CUSTOM_COPY indicates that the |ctrl| callback should be called
369
+ * with |EVP_CTRL_COPY| at the end of normal |EVP_CIPHER_CTX_copy|
370
+ * processing. */
371
+ #define EVP_CIPH_CUSTOM_COPY 0x1000
372
+
373
+
374
+ /* Deprecated functions */
375
+
376
+ /* EVP_CipherInit acts like EVP_CipherInit_ex except that |EVP_CIPHER_CTX_init|
377
+ * is called on |cipher| first, if |cipher| is not NULL. */
378
+ OPENSSL_EXPORT int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
379
+ const uint8_t *key, const uint8_t *iv,
380
+ int enc);
381
+
382
+ /* EVP_EncryptInit calls |EVP_CipherInit| with |enc| equal to one. */
383
+ OPENSSL_EXPORT int EVP_EncryptInit(EVP_CIPHER_CTX *ctx,
384
+ const EVP_CIPHER *cipher, const uint8_t *key,
385
+ const uint8_t *iv);
386
+
387
+ /* EVP_DecryptInit calls |EVP_CipherInit| with |enc| equal to zero. */
388
+ OPENSSL_EXPORT int EVP_DecryptInit(EVP_CIPHER_CTX *ctx,
389
+ const EVP_CIPHER *cipher, const uint8_t *key,
390
+ const uint8_t *iv);
391
+
392
+ /* EVP_add_cipher_alias does nothing and returns one. */
393
+ OPENSSL_EXPORT int EVP_add_cipher_alias(const char *a, const char *b);
394
+
395
+ /* EVP_get_cipherbyname returns an |EVP_CIPHER| given a human readable name in
396
+ * |name|, or NULL if the name is unknown. */
397
+ OPENSSL_EXPORT const EVP_CIPHER *EVP_get_cipherbyname(const char *name);
398
+
399
+ /* These AEADs are deprecated AES-GCM implementations that set
400
+ * |EVP_CIPH_FLAG_CUSTOM_CIPHER|. Use |EVP_aead_aes_128_gcm| and
401
+ * |EVP_aead_aes_256_gcm| instead. */
402
+ OPENSSL_EXPORT const EVP_CIPHER *EVP_aes_128_gcm(void);
403
+ OPENSSL_EXPORT const EVP_CIPHER *EVP_aes_256_gcm(void);
404
+
405
+ /* These are deprecated, 192-bit version of AES. */
406
+ OPENSSL_EXPORT const EVP_CIPHER *EVP_aes_192_ecb(void);
407
+ OPENSSL_EXPORT const EVP_CIPHER *EVP_aes_192_cbc(void);
408
+ OPENSSL_EXPORT const EVP_CIPHER *EVP_aes_192_ctr(void);
409
+ OPENSSL_EXPORT const EVP_CIPHER *EVP_aes_192_gcm(void);
410
+
411
+
412
+ /* Private functions. */
413
+
414
+ /* EVP_CIPH_NO_PADDING disables padding in block ciphers. */
415
+ #define EVP_CIPH_NO_PADDING 0x800
416
+
417
+ /* EVP_CIPHER_CTX_ctrl commands. */
418
+ #define EVP_CTRL_INIT 0x0
419
+ #define EVP_CTRL_SET_KEY_LENGTH 0x1
420
+ #define EVP_CTRL_GET_RC2_KEY_BITS 0x2
421
+ #define EVP_CTRL_SET_RC2_KEY_BITS 0x3
422
+ #define EVP_CTRL_GET_RC5_ROUNDS 0x4
423
+ #define EVP_CTRL_SET_RC5_ROUNDS 0x5
424
+ #define EVP_CTRL_RAND_KEY 0x6
425
+ #define EVP_CTRL_PBE_PRF_NID 0x7
426
+ #define EVP_CTRL_COPY 0x8
427
+ #define EVP_CTRL_GCM_SET_IVLEN 0x9
428
+ #define EVP_CTRL_GCM_GET_TAG 0x10
429
+ #define EVP_CTRL_GCM_SET_TAG 0x11
430
+ #define EVP_CTRL_GCM_SET_IV_FIXED 0x12
431
+ #define EVP_CTRL_GCM_IV_GEN 0x13
432
+ #define EVP_CTRL_AEAD_SET_MAC_KEY 0x17
433
+ /* Set the GCM invocation field, decrypt only */
434
+ #define EVP_CTRL_GCM_SET_IV_INV 0x18
435
+
436
+ /* GCM TLS constants */
437
+ /* Length of fixed part of IV derived from PRF */
438
+ #define EVP_GCM_TLS_FIXED_IV_LEN 4
439
+ /* Length of explicit part of IV part of TLS records */
440
+ #define EVP_GCM_TLS_EXPLICIT_IV_LEN 8
441
+ /* Length of tag for TLS */
442
+ #define EVP_GCM_TLS_TAG_LEN 16
443
+
444
+ #define EVP_MAX_KEY_LENGTH 64
445
+ #define EVP_MAX_IV_LENGTH 16
446
+ #define EVP_MAX_BLOCK_LENGTH 32
447
+
448
+ struct evp_cipher_ctx_st {
449
+ /* cipher contains the underlying cipher for this context. */
450
+ const EVP_CIPHER *cipher;
451
+
452
+ /* app_data is a pointer to opaque, user data. */
453
+ void *app_data; /* application stuff */
454
+
455
+ /* cipher_data points to the |cipher| specific state. */
456
+ void *cipher_data;
457
+
458
+ /* key_len contains the length of the key, which may differ from
459
+ * |cipher->key_len| if the cipher can take a variable key length. */
460
+ unsigned key_len;
461
+
462
+ /* encrypt is one if encrypting and zero if decrypting. */
463
+ int encrypt;
464
+
465
+ /* flags contains the OR of zero or more |EVP_CIPH_*| flags, above. */
466
+ uint32_t flags;
467
+
468
+ /* oiv contains the original IV value. */
469
+ uint8_t oiv[EVP_MAX_IV_LENGTH];
470
+
471
+ /* iv contains the current IV value, which may have been updated. */
472
+ uint8_t iv[EVP_MAX_IV_LENGTH];
473
+
474
+ /* buf contains a partial block which is used by, for example, CTR mode to
475
+ * store unused keystream bytes. */
476
+ uint8_t buf[EVP_MAX_BLOCK_LENGTH];
477
+
478
+ /* buf_len contains the number of bytes of a partial block contained in
479
+ * |buf|. */
480
+ int buf_len;
481
+
482
+ /* num contains the number of bytes of |iv| which are valid for modes that
483
+ * manage partial blocks themselves. */
484
+ int num;
485
+
486
+ /* final_used is non-zero if the |final| buffer contains plaintext. */
487
+ int final_used;
488
+
489
+ /* block_mask contains |cipher->block_size| minus one. (The block size
490
+ * assumed to be a power of two.) */
491
+ int block_mask;
492
+
493
+ uint8_t final[EVP_MAX_BLOCK_LENGTH]; /* possible final block */
494
+ } /* EVP_CIPHER_CTX */;
495
+
496
+ typedef struct evp_cipher_info_st {
497
+ const EVP_CIPHER *cipher;
498
+ unsigned char iv[EVP_MAX_IV_LENGTH];
499
+ } EVP_CIPHER_INFO;
500
+
501
+ struct evp_cipher_st {
502
+ /* type contains a NID identifing the cipher. (e.g. NID_aes_128_gcm.) */
503
+ int nid;
504
+
505
+ /* block_size contains the block size, in bytes, of the cipher, or 1 for a
506
+ * stream cipher. */
507
+ unsigned block_size;
508
+
509
+ /* key_len contains the key size, in bytes, for the cipher. If the cipher
510
+ * takes a variable key size then this contains the default size. */
511
+ unsigned key_len;
512
+
513
+ /* iv_len contains the IV size, in bytes, or zero if inapplicable. */
514
+ unsigned iv_len;
515
+
516
+ /* ctx_size contains the size, in bytes, of the per-key context for this
517
+ * cipher. */
518
+ unsigned ctx_size;
519
+
520
+ /* flags contains the OR of a number of flags. See |EVP_CIPH_*|. */
521
+ uint32_t flags;
522
+
523
+ /* app_data is a pointer to opaque, user data. */
524
+ void *app_data;
525
+
526
+ int (*init)(EVP_CIPHER_CTX *ctx, const uint8_t *key, const uint8_t *iv,
527
+ int enc);
528
+
529
+ int (*cipher)(EVP_CIPHER_CTX *ctx, uint8_t *out, const uint8_t *in,
530
+ size_t inl);
531
+
532
+ /* cleanup, if non-NULL, releases memory associated with the context. It is
533
+ * called if |EVP_CTRL_INIT| succeeds. Note that |init| may not have been
534
+ * called at this point. */
535
+ void (*cleanup)(EVP_CIPHER_CTX *);
536
+
537
+ int (*ctrl)(EVP_CIPHER_CTX *, int type, int arg, void *ptr);
538
+ };
539
+
540
+
541
+ #if defined(__cplusplus)
542
+ } /* extern C */
543
+ #endif
544
+
545
+ #define CIPHER_R_AES_KEY_SETUP_FAILED 100
546
+ #define CIPHER_R_BAD_DECRYPT 101
547
+ #define CIPHER_R_BAD_KEY_LENGTH 102
548
+ #define CIPHER_R_BUFFER_TOO_SMALL 103
549
+ #define CIPHER_R_CTRL_NOT_IMPLEMENTED 104
550
+ #define CIPHER_R_CTRL_OPERATION_NOT_IMPLEMENTED 105
551
+ #define CIPHER_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH 106
552
+ #define CIPHER_R_INITIALIZATION_ERROR 107
553
+ #define CIPHER_R_INPUT_NOT_INITIALIZED 108
554
+ #define CIPHER_R_INVALID_AD_SIZE 109
555
+ #define CIPHER_R_INVALID_KEY_LENGTH 110
556
+ #define CIPHER_R_INVALID_NONCE_SIZE 111
557
+ #define CIPHER_R_INVALID_OPERATION 112
558
+ #define CIPHER_R_IV_TOO_LARGE 113
559
+ #define CIPHER_R_NO_CIPHER_SET 114
560
+ #define CIPHER_R_OUTPUT_ALIASES_INPUT 115
561
+ #define CIPHER_R_TAG_TOO_LARGE 116
562
+ #define CIPHER_R_TOO_LARGE 117
563
+ #define CIPHER_R_UNSUPPORTED_AD_SIZE 118
564
+ #define CIPHER_R_UNSUPPORTED_INPUT_SIZE 119
565
+ #define CIPHER_R_UNSUPPORTED_KEY_SIZE 120
566
+ #define CIPHER_R_UNSUPPORTED_NONCE_SIZE 121
567
+ #define CIPHER_R_UNSUPPORTED_TAG_SIZE 122
568
+ #define CIPHER_R_WRONG_FINAL_BLOCK_LENGTH 123
569
+ #define CIPHER_R_NO_DIRECTION_SET 124
570
+
571
+ #endif /* OPENSSL_HEADER_CIPHER_H */