Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/boringssl.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2015-05-16Don't use x86_64-gcc.c with NO_ASM.Adam Langley
Android (on OS X) builds with NO_ASM and was getting both generic.c and x86_64-gcc.c. This change updates the latter so that it's excluded in NO_ASM builds. Change-Id: I1f0e1c5e551eed9c575ce632ec3016fce7ec9d2e Reviewed-on: https://boringssl-review.googlesource.com/4741 Reviewed-by: Adam Langley <agl@google.com>
2015-05-05Add assembly support for 32-bit iOS.David Benjamin
(Imported from upstream's 313e6ec11fb8a7bda1676ce5804bee8755664141) BUG=338886 Change-Id: Id635e78b9afaad5ca311e3aeed888c9aedeb9637 Reviewed-on: https://boringssl-review.googlesource.com/4490 Reviewed-by: Adam Langley <agl@google.com>
2015-05-05Remove inconsistency in ARM support.David Benjamin
This facilitates "universal" builds, ones that target multiple architectures, e.g. ARMv5 through ARMv7. (Imported from upstream's c1669e1c205dc8e695fb0c10a655f434e758b9f7) This is a change from a while ago which was a source of divergence between our perlasm and upstream's. This change in upstream came with the following comment in Configure: Note that -march is not among compiler options in below linux-armv4 target line. Not specifying one is intentional to give you choice to: a) rely on your compiler default by not specifying one; b) specify your target platform explicitly for optimal performance, e.g. -march=armv6 or -march=armv7-a; c) build "universal" binary that targets *range* of platforms by specifying minimum and maximum supported architecture; As for c) option. It actually makes no sense to specify maximum to be less than ARMv7, because it's the least requirement for run-time switch between platform-specific code paths. And without run-time switch performance would be equivalent to one for minimum. Secondly, there are some natural limitations that you'd have to accept and respect. Most notably you can *not* build "universal" binary for big-endian platform. This is because ARMv7 processor always picks instructions in little-endian order. Another similar limitation is that -mthumb can't "cross" -march=armv6t2 boundary, because that's where it became Thumb-2. Well, this limitation is a bit artificial, because it's not really impossible, but it's deemed too tricky to support. And of course you have to be sure that your binutils are actually up to the task of handling maximum target platform. Change-Id: Ie5f674d603393f0a1354a0d0973987484a4a650c Reviewed-on: https://boringssl-review.googlesource.com/4488 Reviewed-by: Adam Langley <agl@google.com>
2015-05-05ARM assembly pack: get ARMv7 instruction endianness right.David Benjamin
Pointer out and suggested by: Ard Biesheuvel. (Imported from upstream's 5dcf70a1c57c2019bfad640fe14fd4a73212860a) This is from a while ago, but it's one source of divergence between our copy of these files and master's. Change-Id: I6525a27f25eb86a92420c32996af47ecc42ee020 Reviewed-on: https://boringssl-review.googlesource.com/4487 Reviewed-by: Adam Langley <agl@google.com>
2015-02-26Remove explicit .hiddens from x86_64 perlasm files.David Benjamin
This reverts the non-ARM portions of 97999919bbe85ab213d283e18e597e028f8685d1. x86_64 perlasm already makes .globl imply .hidden. (Confusingly, ARM does not.) Since we don't need it, revert those to minimize divergence with upstream. Change-Id: I2d205cfb1183e65d4f18a62bde187d206b1a96de Reviewed-on: https://boringssl-review.googlesource.com/3610 Reviewed-by: Adam Langley <agl@google.com>
2015-02-21Hide all asm symbols.Adam Langley
We are leaking asm symbols in Android builds because the asm code isn't affected by -fvisibility=hidden. This change hides all asm symbols. This assumes that no asm symbols are public API and that should be true. Some points to note: In crypto/rc4/asm/rc4-md5-x86_64.pl there are |RC4_set_key| and |RC4_options| functions which aren't getting marked as hidden. That's because those functions aren't actually ever generated. (I'm just trying to minimise drift with upstream here.) In crypto/rc4/asm/rc4-x86_64.pl there's |RC4_options| which is "public" API, except that we've never had it in the header files. So I've just deleted it. Since we have an internal caller, we'll probably have to put it back in the future, but it can just be done in rc4.c to save problems. BUG=448386 Change-Id: I3846617a0e3d73ec9e5ec3638a53364adbbc6260 Reviewed-on: https://boringssl-review.googlesource.com/3520 Reviewed-by: David Benjamin <davidben@chromium.org> Reviewed-by: Adam Langley <agl@google.com>
2015-02-19Mark OPENSSL_armcap_P as hidden in ARM asm.Adam Langley
This is an import from ARM. Without this, one of the Android builds of BoringSSL was failing with: (sha512-armv4.o): requires unsupported dynamic reloc R_ARM_REL32; recompile with -fPIC This is (I believe) a very misleading error message. The R_ARM_REL32 relocation type is the correct type for position independent code. But unless the target symbol is hidden then the linker doesn't know that it's not going to be overridden by a different ELF module. Chromium probably gets away with this because of different default compiler flags than Android. Change-Id: I967eabc4d6b33d1e6635caaf6e7a306e4e77c101 Reviewed-on: https://boringssl-review.googlesource.com/3471 Reviewed-by: Adam Langley <agl@google.com>
2015-02-11Add in missing curly braces part 1.David Benjamin
Everything before crypto/ec. Change-Id: Icbfab8e4ffe5cc56bf465eb57d3fdad3959a085c Reviewed-on: https://boringssl-review.googlesource.com/3401 Reviewed-by: Adam Langley <agl@google.com>
2015-01-30Convert latin-1 files to UTF-8.Adam Langley
A handful of latin-1 codepoints existed a trio of files. This change switches the encoding to UTF-8. Change-Id: I00309e4d1ee3101e0cc02abc53196eafa17a4fa5
2015-01-26Remove unused modexp512-x86_64.pl.David Benjamin
See upstream's c436e05bdc7f49985a750df64122c960240b3ae1. Change-Id: I7cbe5315a769450e4630dd4e8f465cdfd45c2e08 Reviewed-on: https://boringssl-review.googlesource.com/3025 Reviewed-by: Adam Langley <agl@google.com>
2015-01-26Add Broadwell performance results.David Benjamin
(Imported from upstream's b3d7294976c58e0e05d0ee44a0e7c9c3b8515e05.) May as well avoid diverging. Change-Id: I3edec4fe15b492dd3bfb3146a8944acc6575f861 Reviewed-on: https://boringssl-review.googlesource.com/3020 Reviewed-by: Adam Langley <agl@google.com>
2015-01-09Fix for CVE-2014-3570.Adam Langley
(With minor bn/generic.c revamp.) (Imported from upstream's 56df92efb6893abe323307939425957ce878c8f0) Change-Id: I9d85cfde4dfb29e64ff7417f781d0c9f1685e905 Reviewed-on: https://boringssl-review.googlesource.com/2780 Reviewed-by: Adam Langley <agl@google.com>
2014-11-06crypto/bn/asm/rsaz-*.pl: allow spaces in Perl path name.Adam Langley
(Imported from upstream's ef908777218bd4a362dbe9cebb8e18fa8ab384cf.) Change-Id: Id9b288d230cc9d8ab308690a18e687e2132e3293 Reviewed-on: https://boringssl-review.googlesource.com/2168 Reviewed-by: David Benjamin <davidben@chromium.org> Reviewed-by: Adam Langley <agl@google.com>
2014-11-01Fix standalone Win64 build.David Benjamin
generic.c still needs to include generic implementations in Win64. Those are currently done with inline assembly and won't work on MSVC. Change-Id: Ifeb5470872d8c97b2ccffeae6f3ccb5661051de3 Reviewed-on: https://boringssl-review.googlesource.com/2102 Reviewed-by: Adam Langley <agl@google.com>
2014-08-06Fix out-of-bounds read in BN_mod_exp_mont_consttime.David Benjamin
bn_get_bits5 always reads two bytes, even when it doesn't need to. For some sizes of |p|, this can result in reading just past the edge of the array. Unroll the first iteration of the loop and avoid reading out of bounds. Replace bn_get_bits5 altogether in C as it's not doing anything interesting. Change-Id: Ibcc8cea7d9c644a2639445396455da47fe869a5c Reviewed-on: https://boringssl-review.googlesource.com/1393 Reviewed-by: Adam Langley <agl@google.com>
2014-08-01Add visibility rules.Adam Langley
This change marks public symbols as dynamically exported. This means that it becomes viable to build a shared library of libcrypto and libssl with -fvisibility=hidden. On Windows, one not only needs to mark functions for export in a component, but also for import when using them from a different component. Because of this we have to build with |BORINGSSL_IMPLEMENTATION| defined when building the code. Other components, when including our headers, won't have that defined and then the |OPENSSL_EXPORT| tag becomes an import tag instead. See the #defines in base.h In the asm code, symbols are now hidden by default and those that need to be exported are wrapped by a C function. In order to support Chromium, a couple of libssl functions were moved to ssl.h from ssl_locl.h: ssl_get_new_session and ssl_update_cache. Change-Id: Ib4b76e2f1983ee066e7806c24721e8626d08a261 Reviewed-on: https://boringssl-review.googlesource.com/1350 Reviewed-by: Adam Langley <agl@google.com>
2014-07-29x86_64 assembly pack: improve masm support.Adam Langley
(Imported from upstream's 371feee876dd8b58531cb6e50fe79262db8e4ed7) Change-Id: Id3b5ece6b5e5f0565060d5e598ea265d64dac9df
2014-07-29x86_64 assembly pack: allow clang to compile AVX code.Adam Langley
(Imported from upstream's 912f08dd5ed4f68fb275f3b2db828349fcffba14, 52f856526c46ee80ef4c8c37844f084423a3eff7 and 377551b9c4e12aa7846f4d80cf3604f2e396c964) Change-Id: Ic2bf93371f6d246818729810e7a45b3f0021845a
2014-07-29bn/asm/rsaz-avx2.pl: fix occasional failures.Adam Langley
(Imported from upstream's 1067663d852435b1adff32ec01e9b8e54d2b5896) Change-Id: I39e2a24176306f4170449145d3dee2c2edbf6dfe
2014-07-29move check for AD*X to rsaz-avx2.pl.Adam Langley
This ensures high performance is situations when assembler supports AVX2, but not AD*X. (Imported from upstream's 82a9dafe32e1e39b5adff18f9061e43d8df3d3c5) Change-Id: Ie67f49a1c5467807139b6a8a0d4e62162d8a974f
2014-07-02The asm files bn/asm/x86* weren't actually used.Adam Langley
(This appears to be the case with upstream too, it's not that BoringSSL is missing optimisations from what I can see.) Change-Id: I0e54762ef0d09e60994ec82c5cca1ff0b3b23ea4 Reviewed-on: https://boringssl-review.googlesource.com/1080 Reviewed-by: David Benjamin <davidben@chromium.org> Reviewed-by: Adam Langley <agl@google.com>
2014-06-21Add needed volatile qualifications.Adam Langley
Add volatile qualifications to two blocks of inline asm to stop GCC from eliminating them as dead code.
2014-06-21OpenSSL: make final reduction in Montgomery multiplication constant-time.Adam Langley
(The issue was reported by Shay Gueron.) The final reduction in Montgomery multiplication computes if (X >= m) then X = X - m else X = X In OpenSSL, this was done by computing T = X - m, doing a constant-time selection of the *addresses* of X and T, and loading from the resulting address. But this is not cache-neutral. This patch changes the behaviour by loading both X and T into registers, and doing a constant-time selection of the *values*. TODO(fork): only some of the fixes from the original patch still apply to the 1.0.2 code.
2014-06-21Inital import.Adam Langley
Initial fork from f2d678e6e89b6508147086610e985d4e8416e867 (1.0.2 beta). (This change contains substantial changes from the original and effectively starts a new history.)