GithubHelp home page GithubHelp logo

mono / boringssl Goto Github PK

View Code? Open in Web Editor NEW
6.0 16.0 21.0 26.57 MB

Custom version of Boring SSL used by Mono

License: Other

CMake 1.29% C 65.59% C++ 7.12% Perl 17.82% Shell 0.12% Go 5.71% Assembly 1.83% Python 0.51% CSS 0.01%

boringssl's Introduction

BoringSSL

BoringSSL is a fork of OpenSSL that is designed to meet Google's needs.

Although BoringSSL is an open source project, it is not intended for general use, as OpenSSL is. We don't recommend that third parties depend upon it. Doing so is likely to be frustrating because there are no guarantees of API or ABI stability.

Programs ship their own copies of BoringSSL when they use it and we update everything as needed when deciding to make API changes. This allows us to mostly avoid compromises in the name of compatibility. It works for us, but it may not work for you.

BoringSSL arose because Google used OpenSSL for many years in various ways and, over time, built up a large number of patches that were maintained while tracking upstream OpenSSL. As Google's product portfolio became more complex, more copies of OpenSSL sprung up and the effort involved in maintaining all these patches in multiple places was growing steadily.

Currently BoringSSL is the SSL library in Chrome/Chromium, Android (but it's not part of the NDK) and a number of other apps/programs.

There are other files in this directory which might be helpful:

boringssl's People

Contributors

achernya avatar agl avatar akoeplinger avatar benlaurie avatar bluerise avatar briansmith avatar davidben avatar divegeek avatar doughd avatar ekasper avatar grendello avatar haavardmolland avatar kruton avatar lateralusx avatar mattcaswell avatar mostynb avatar nattynarwhal avatar nealef avatar nharper avatar nico avatar piotrsikora avatar richlander avatar sbc100 avatar sigbjornopera avatar steveisok avatar thejk avatar valpackett avatar vasilvv avatar whesse avatar yoshisatoyanagisawa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

boringssl's Issues

Compiling with GCC 4.7 / Centos-6

I want to try the mono master branch on a centos6 System and I installed the GCC-4.7.4 from the centos devtoolset-1.1 to be able to compile that at all.

This works when I set the /usr/bin/cc link to the devtoolset-1.1 location and set some environment variables.

But GCC-4.7 does not support alignas, so the crypto/poly1305 Test fails. With a little change, this does work anyway. So this is just a note for deprecated systems:

diff --git a/crypto/poly1305/poly1305_test.cc b/crypto/poly1305/poly1305_test.cc
index cae30a4..b126af5 100644
--- a/crypto/poly1305/poly1305_test.cc
+++ b/crypto/poly1305/poly1305_test.cc
@@ -41,7 +41,7 @@ static bool TestPoly1305(FileTest *t, void *arg) {
   CRYPTO_poly1305_init(&state, key.data());
   CRYPTO_poly1305_update(&state, in.data(), in.size());
   // |CRYPTO_poly1305_finish| requires a 16-byte-aligned output.
-  alignas(16) uint8_t out[16];
+  uint8_t out[16] __attribute__ ((aligned(0x10)));
   CRYPTO_poly1305_finish(&state, out);
   if (!t->ExpectBytesEqual(out, 16, mac.data(), mac.size())) {
     t->PrintLine("Single-shot Poly1305 failed.");

Running test suite

I'm trying to debug an issue I'm having porting BoringSSL/TLS to ppc64, but I'd like to run the test suite to determine where problems could be precisely. I have go and ninja installed per BoringSSL upstream's instructions in BUILDING.md, but the tests won't run because they aren't build. Because of Mono integrating BTLS into its build system and the quirks that manifest as a result, what should be done if as a developer, I wanted to run BoringSSL tests?

Update boringssl

is it possible to update boringssl? @baulig
this version seems pretty old to me (2 1/2 years)
there are some optimizations done at boringssl!

i have many performance problems since mono support TLS 1.2
high cpu consumption low throughput at all!
maybe that could help!

secp256r1 cipher suite doesn't work on 64-bit big endian PPC

@nealef seems to have tried to patch it, but it doesn't work for me. (Even after massaging the definitions for endianness to match SLES', which of course are different...) You'll have to disable the 64-bit enhanced cipher code, and fall back to the regular one, at the cost of performance.

Workaround patch

diff --git a/crypto/ec/ec.c b/crypto/ec/ec.c
index 8f3fa6e..b968ebe 100644
--- a/crypto/ec/ec.c
+++ b/crypto/ec/ec.c
@@ -247,7 +247,7 @@ const struct built_in_curve OPENSSL_built_in_curves[] = {
         /* 1.2.840.10045.3.1.7 */
         {0x2a, 0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07}, 8,
         &P256,
-#if defined(BORINGSSL_USE_INT128_CODE)
+#if 0 && defined(BORINGSSL_USE_INT128_CODE)
 #if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && \
     !defined(OPENSSL_SMALL)
         EC_GFp_nistz256_method,

FWIW: On upstream's side: that file's history and the commit (re?)moving it

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.