libchromeos: Implement chromeos::Stream-based BIO for OpenSSL

In order to implement a TLS/SSL stream, OpenSSL requires BIO-based
abstraction around our Stream classes. This change adds limited support
for chromeos::Stream interface for OpenSSL's BIO framework.

A new function chromeos::BIO_new_stream() can be used to create a BIO*
that has a reference to underlying chromeos::Stream and then using
BIO_read() and BIO_write() will end up calling Stream::ReadNonBlocking()
and Stream::WriteNonBlocking().

This functionality is going to be used in a follow-up CL that implements
a TLS stream on a socket.

BUG=brillo:191
TEST=`FEATURES=test emerge-link libchromeos`

Change-Id: I59965961bf4f1906c4a6b4ce581d7846f7f38047
Reviewed-on: https://chromium-review.googlesource.com/269802
Reviewed-by: Alex Vakulenko <avakulenko@chromium.org>
Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
Tested-by: Alex Vakulenko <avakulenko@chromium.org>
diff --git a/libchromeos.gypi b/libchromeos.gypi
index e9be8e9..b227a73 100644
--- a/libchromeos.gypi
+++ b/libchromeos.gypi
@@ -126,11 +126,25 @@
       'dependencies': [
         'libchromeos-core-<(libbase_ver)',
       ],
+      'variables': {
+        'exported_deps': [
+          'openssl',
+        ],
+        'deps': ['<@(exported_deps)'],
+      },
+      'all_dependent_settings': {
+        'variables': {
+          'deps': [
+            '<@(exported_deps)',
+          ],
+        },
+      },
       'sources': [
         'chromeos/streams/file_stream.cc',
         'chromeos/streams/input_stream_set.cc',
         'chromeos/streams/memory_containers.cc',
         'chromeos/streams/memory_stream.cc',
+        'chromeos/streams/openssl_stream_bio.cc',
         'chromeos/streams/stream.cc',
         'chromeos/streams/stream_errors.cc',
         'chromeos/streams/stream_utils.cc',
@@ -315,6 +329,7 @@
             'chromeos/streams/input_stream_set_unittest.cc',
             'chromeos/streams/memory_containers_unittest.cc',
             'chromeos/streams/memory_stream_unittest.cc',
+            'chromeos/streams/openssl_stream_bio_unittests.cc',
             'chromeos/streams/stream_unittest.cc',
             'chromeos/streams/stream_utils_unittest.cc',
             'chromeos/strings/string_utils_unittest.cc',