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-12-16Mark platform-specific HOST_[c2l|l2c] as (void).Adam Langley
I skipped a patch when landing and so 793c21e2 caused a build failure when platform-specific versions of these macros were used. Change-Id: I8ed6dbb92a511ef306d45087c3eb87781fdfed31 Reviewed-on: https://boringssl-review.googlesource.com/6740 Reviewed-by: Adam Langley <agl@google.com>
2015-12-16Remove asm __asm__ define.David Benjamin
It's only used in one file. No sense in polluting the namespace here. Change-Id: Iaf3870a4be2d2cad950f4d080e25fe7f0d3929c7 Reviewed-on: https://boringssl-review.googlesource.com/6660 Reviewed-by: Adam Langley <agl@google.com>
2015-12-16Make HOST_l2c return void.David Benjamin
Nothing ever uses the return value. It'd be better off discarding it rather than make callers stick (void) everywhere. Change-Id: Ia28c970a1e5a27db441e4511249589d74408849b Reviewed-on: https://boringssl-review.googlesource.com/6653 Reviewed-by: Adam Langley <agl@google.com>
2015-12-16Store the partial block as uint8_t, not uint32_t.David Benjamin
The uint32_t likely dates to them using HASH_LONG everywhere. Nothing ever touches c->data as a uint32_t, only bytes. (Which makes sense seeing as it stores the partial block.) Change-Id: I634cb7f2b6306523aa663f8697b7dc92aa491320 Reviewed-on: https://boringssl-review.googlesource.com/6651 Reviewed-by: Adam Langley <agl@google.com>
2015-12-16Use the straight-forward ROTATE macro.David Benjamin
I would hope any sensible compiler would recognize the rotation. (If not, we should at least pull this into crypto/internal.h.) Confirmed that clang at least produces the exact same instructions for sha256_block_data_order for release + NO_ASM. This is also mostly moot as SHA-1 and SHA-256 both have assembly versions on x86 that sidestep most of this. For the digests, take it out of md32_common.h since it doesn't use the macro. md32_common.h isn't sure whether it's a multiply-included header or not. It should be, but it has an #include guard (doesn't quite do what you'd want) and will get HOST_c2l, etc., confused if one tries to include it twice. Change-Id: I1632801de6473ffd2c6557f3412521ec5d6b305c Reviewed-on: https://boringssl-review.googlesource.com/6650 Reviewed-by: Adam Langley <agl@google.com>
2015-12-16Reformat md32_common.h, part 2.David Benjamin
Manual tweaks and then clang-formatted again. Change-Id: I809fdb71b2135343e5c1264dd659b464780fc54a Reviewed-on: https://boringssl-review.googlesource.com/6649 Reviewed-by: Adam Langley <agl@google.com>
2015-12-16Reformat md32_common.h, part 1.David Benjamin
We've tweaked it already and upstream's using a different indentation style now anyway. This is the first of two commits. For verifiability, this is the output of clang-format with no modifications. Change-Id: Ia30f20bee0cc8046aedf9ac7106cc4630e8d93e6 Reviewed-on: https://boringssl-review.googlesource.com/6648 Reviewed-by: Adam Langley <agl@google.com>
2015-11-04Improve crypto/digest/md32_common.h mechanism.Brian Smith
The documentation in md32_common.h is now (more) correct with respect to the most important details of the layout of |HASH_CTX|. The documentation explaining why sha512.c doesn't use md32_common.h is now more accurate as well. Before, the C implementations of HASH_BLOCK_DATA_ORDER took a pointer to the |HASH_CTX| and the assembly language implementations took a pointer to the hash state |h| member of |HASH_CTX|. (This worked because |h| is always the first member of |HASH_CTX|.) Now, the C implementations take a pointer directly to |h| too. The definitions of |MD4_CTX|, |MD5_CTX|, and |SHA1_CTX| were changed to be consistent with |SHA256_CTX| and |SHA512_CTX| in storing the hash state in an array. This will break source compatibility with any external code that accesses the hash state directly, but will not affect binary compatibility. The second parameter of |HASH_BLOCK_DATA_ORDER| is now of type |const uint8_t *|; previously it was |void *| and all implementations had a |uint8_t *data| variable to access it as an array of bytes. This change paves the way for future refactorings such as automatically generating the |*_Init| functions and/or sharing one I-U-F implementation across all digest algorithms. Change-Id: I6e9dd09ff057c67941021d324a4fa1d39f58b0db Reviewed-on: https://boringssl-review.googlesource.com/6405 Reviewed-by: Adam Langley <agl@google.com>
2015-11-03Revert "Improve crypto/digest/md32_common.h mechanism."Adam Langley
This reverts commit 00461cf201b66205653fd6159ae260f453738641. Sadly it broke wpa_supplicant.
2015-11-03Improve crypto/digest/md32_common.h mechanism.Brian Smith
The documentation in md32_common.h is now (more) correct with respect to the most important details of the layout of |HASH_CTX|. The documentation explaining why sha512.c doesn't use md32_common.h is now more accurate as well. Before, the C implementations of HASH_BLOCK_DATA_ORDER took a pointer to the |HASH_CTX| and the assembly language implementations tool a pointer to the hash state |h| member of |HASH_CTX|. (This worked because |h| is always the first member of |HASH_CTX|.) Now, the C implementations take a pointer directly to |h| too. The definitions of |MD4_CTX|, |MD5_CTX|, and |SHA1_CTX| were changed to be consistent with |SHA256_CTX| and |SHA512_CTX| in storing the hash state in an array. This will break source compatibility with any external code that accesses the hash state directly, but will not affect binary compatibility. The second parameter of |HASH_BLOCK_DATA_ORDER| is now of type |const uint8_t *|; previously it was |void *| and all implementations had a |uint8_t *data| variable to access it as an array of bytes. This change paves the way for future refactorings such as automatically generating the |*_Init| functions and/or sharing one I-U-F implementation across all digest algorithms. Change-Id: I30513bb40b5f1d2c8932551d54073c35484b3f8b Reviewed-on: https://boringssl-review.googlesource.com/6401 Reviewed-by: Adam Langley <agl@google.com>
2015-10-26Add a run_tests target to run all tests.David Benjamin
It's very annoying having to remember the right incant every time I want to switch around between my build, build-release, build-asan, etc., output directories. Unfortunately, this target is pretty unfriendly without CMake 3.2+ (and Ninja 1.5+). This combination gives a USES_TERMINAL flag to add_custom_target which uses Ninja's "console" pool, otherwise the output buffering gets in the way. Ubuntu LTS is still on an older CMake, so do a version check in the meantime. CMake also has its own test mechanism (CTest), but this doesn't use it. It seems to prefer knowing what all the tests are and then tries to do its own output management and parallelizing and such. We already have our own runners. all_tests.go could actually be converted tidily, but generate_build_files.py also needs to read it, and runner.go has very specific needs. Naming the target ninja -C build test would be nice, but CTest squats that name and CMake grumps when you use a reserved name, so I've gone with run_tests. Change-Id: Ibd20ebd50febe1b4e91bb19921f3bbbd9fbcf66c Reviewed-on: https://boringssl-review.googlesource.com/6270 Reviewed-by: Adam Langley <alangley@gmail.com>
2015-09-18Fix some malloc failure crashes.David Benjamin
EVP_MD_CTX_copy_ex was implemented with a memcpy, which doesn't work well when some of the pointers need to be copied, and ssl_verify_cert_chain didn't account for set_ex_data failing. Change-Id: Ieb556aeda6ab2e4c810f27012fefb1e65f860023 Reviewed-on: https://boringssl-review.googlesource.com/5911 Reviewed-by: Adam Langley <agl@google.com>
2015-08-26Move arm_arch.h and fix up lots of include paths.Adam Langley
arm_arch.h is included from ARM asm files, but lives in crypto/, not openssl/include/. Since the asm files are often built from a different location than their position in the source tree, relative include paths are unlikely to work so, rather than having crypto/ be a de-facto, second global include path, this change moves arm_arch.h to include/openssl/. It also removes entries from many include paths because they should be needed as relative includes are always based on the locations of the source file. Change-Id: I638ff43d641ca043a4fc06c0d901b11c6ff73542 Reviewed-on: https://boringssl-review.googlesource.com/5746 Reviewed-by: Adam Langley <agl@google.com>
2015-08-19Suppress missing return value check warning in |EVP_DigestFinal|.Brian Smith
This is harmless, but it wasn't annoted with |(void)| so Coverity complained about it. Change-Id: Ie3405b0c0545944d49973d4bf29f8aeb6b965211 Reviewed-on: https://boringssl-review.googlesource.com/5612 Reviewed-by: David Benjamin <davidben@chromium.org> Reviewed-by: Adam Langley <agl@google.com>
2015-08-19|EVP_get_digestbyname| and |EVP_get_digestbynid|: recognize MD4.Matt Braithwaite
This benefits nodejs. Change-Id: I21bf7e64c2a44e96f27b427ad4bd44551c33221c Reviewed-on: https://boringssl-review.googlesource.com/5721 Reviewed-by: Adam Langley <agl@google.com>
2015-07-16Remove the func parameter to OPENSSL_PUT_ERROR.David Benjamin
Much of this was done automatically with find . -name '*.c' | xargs sed -E -i '' -e 's/(OPENSSL_PUT_ERROR\([a-zA-Z_0-9]+, )[a-zA-Z_0-9]+, ([a-zA-Z_0-9]+\);)/\1\2/' find . -name '*.c' | xargs sed -E -i '' -e 's/(OPENSSL_PUT_ERROR\([a-zA-Z_0-9]+, )[a-zA-Z_0-9]+, ([a-zA-Z_0-9]+\);)/\1\2/' BUG=468039 Change-Id: I4c75fd95dff85ab1d4a546b05e6aed1aeeb499d8 Reviewed-on: https://boringssl-review.googlesource.com/5276 Reviewed-by: Adam Langley <agl@google.com>
2015-06-25Remove EVP_PKEY_HMAC.David Benjamin
This removes EVP_PKEY_HMAC and all the support code around it. EVP_MD requires a lot of extra glue to support HMAC. This lets us prune it all away. As a bonus, it removes a (minor) dependency from EVP to the legacy ASN.1 stack. Change-Id: I5a9e3e39f518429828dbf13d14647fb37d9dc35a Reviewed-on: https://boringssl-review.googlesource.com/5120 Reviewed-by: Adam Langley <agl@google.com>
2015-06-05Explicitly cast |CHECK| result to |void| to avoid compiler complaint.Matt Braithwaite
Change-Id: Ie7b376da1a157d144e9c4651722630dbf9c45436 Reviewed-on: https://boringssl-review.googlesource.com/5021 Reviewed-by: Adam Langley <agl@google.com>
2015-06-04Add |EVP_get_digestbyname|.Matt Braithwaite
Change-Id: If7078ea68f037caf8e26fa0b714e96e64d50dfa9 Reviewed-on: https://boringssl-review.googlesource.com/5000 Reviewed-by: Adam Langley <agl@google.com>
2015-06-03Avoid unused variable warnings with assert.Adam Langley
It would be nice if assert(x) reduced to ((void) x) when NDEBUG was defined, but it doesn't. Because of this, locally define CHECK, which does. This avoids warnings with Clang. Change-Id: I70882741da4984a025bcfaac1969032387f369de Reviewed-on: https://boringssl-review.googlesource.com/4991 Reviewed-by: David Benjamin <davidben@chromium.org> Reviewed-by: Adam Langley <agl@google.com>
2015-06-02Unexport and prune EVP_MD_CTX flags.David Benjamin
The only flag is EVP_MD_CTX_FLAG_NO_INIT and no good can possibly come of anyone outside EVP_PKEY_HMAC calling it. (And indeed no one calls it. EVP_MD_CTX_set_flags has a caller in wpa_supplicant, but it uses EVP_MD_CTX_FLAG_NON_FIPS_ALLOW which we don't define. The call is guarded by a pair of ifdefs for some FIPS mode wpa_supplicant.) Change-Id: I70ab8ffa646f3f75dfa4d37c96b9e82448ff1e40 Reviewed-on: https://boringssl-review.googlesource.com/4971 Reviewed-by: Adam Langley <agl@google.com>
2015-06-02EVP_Digest*Update, EVP_DigestFinal, and HMAC_Update can never fail.David Benjamin
Enough code fails to check their return codes anyway. We ought to make it official. Change-Id: Ie646360fd7073ea943036f5e21bed13df7e1b77a Reviewed-on: https://boringssl-review.googlesource.com/4954 Reviewed-by: Adam Langley <agl@google.com>
2015-06-02Fix integer types in low-level hash functions.David Benjamin
Use sized integer types rather than unsigned char/int/long. The latter two are especially a mess as they're both used in lieu of uint32_t. Sometimes the code just blindly uses unsigned long and sometimes it uses unsigned int when an LP64 architecture would notice. Change-Id: I4c5c6aaf82cfe9fe523435588d286726a7c43056 Reviewed-on: https://boringssl-review.googlesource.com/4952 Reviewed-by: Adam Langley <agl@google.com>
2015-05-21Add malloc test support to unit tests.David Benjamin
Currently far from passing and I haven't even tried with a leak checker yet. Also bn_test is slow. Change-Id: I4fe2783aa5f7897839ca846062ae7e4a367d2469 Reviewed-on: https://boringssl-review.googlesource.com/4794 Reviewed-by: Adam Langley <agl@google.com>
2015-04-13Replace MD5 in examples with SHA-256.Brian Smith
Avoiding superflous references to MD5 makes it easier to audit the code to find unsafe uses of it. It also avoids subtly encouraging users to choose MD5 instead of a better alternative. Change-Id: Ic78eb5dfbf44aac39e4e4eb29050e3337c4445cc Reviewed-on: https://boringssl-review.googlesource.com/3926 Reviewed-by: Adam Langley <agl@google.com>
2015-04-13Eliminate unnecessary includes from low-level crypto modules.Brian Smith
Beyond generally eliminating unnecessary includes, eliminate as many includes of headers that declare/define particularly error-prone functionality like strlen, malloc, and free. crypto/err/internal.h was added to remove the dependency on openssl/thread.h from the public openssl/err.h header. The include of <stdlib.h> in openssl/mem.h was retained since it defines OPENSSL_malloc and friends as macros around the stdlib.h functions. The public x509.h, x509v3.h, and ssl.h headers were not changed in order to minimize breakage of source compatibility with external code. Change-Id: I0d264b73ad0a720587774430b2ab8f8275960329 Reviewed-on: https://boringssl-review.googlesource.com/4220 Reviewed-by: Adam Langley <agl@google.com>
2015-04-13Remove crypto/obj dependencies from low-level crypto tests.Brian Smith
The only dependency the low-level crypto modules have on code in crypto/obj is their use of OBJ_nid2sn, which is trivial to avoid. This facilitates future simplification of crypto/obj, including possibly the removal of functions like OBJ_nid2sn and the complex build infrastructure that supports them. This change also removes EVP_CIPHER_name and EVP_MD_name. Change-Id: I34ce7dc7e58d5c08b52f95d25eba3963590cf2f7 Reviewed-on: https://boringssl-review.googlesource.com/3932 Reviewed-by: Adam Langley <agl@google.com>
2015-04-01Convert digest_test to C++.David Benjamin
Change-Id: Ibc8c3d8740cbd03dfb0d1ff9834fed66601dd479 Reviewed-on: https://boringssl-review.googlesource.com/4123 Reviewed-by: Adam Langley <agl@google.com>
2015-02-10Precompute sorted array for error strings.Adam Langley
Previously, error strings were kept in arrays for each subdirectory and err.c would iterate over them all and insert them at init time to a hash table. This means that, even if you have a shared library and lots of processes using that, each process has ~30KB of private memory from building that hash table. This this change, all the error strings are built into a sorted list and are thus static data. This means that processes can share the error information and it actually saves binary space because of all the pointer overhead in the old scheme. Also it saves the time taken building the hash table at startup. This removes support for externally-supplied error string data. Change-Id: Ifca04f335c673a048e1a3e76ff2b69c7264635be
2015-02-02Remove string.h from base.h.Adam Langley
Including string.h in base.h causes any file that includes a BoringSSL header to include string.h. Generally this wouldn't be a problem, although string.h might slow down the compile if it wasn't otherwise needed. However, it also causes problems for ipsec-tools in Android because OpenSSL didn't have this behaviour. This change removes string.h from base.h and, instead, adds it to each .c file that requires it. Change-Id: I5968e50b0e230fd3adf9b72dd2836e6f52d6fb37 Reviewed-on: https://boringssl-review.googlesource.com/3200 Reviewed-by: David Benjamin <davidben@chromium.org> Reviewed-by: Adam Langley <agl@google.com>
2015-01-29Change CMakeLists.txt to two-space indent.Adam Langley
find -name CMakeLists.txt -type f | xargs sed -e 's/\t/ /g' -i Change-Id: I01636b1849c00ba918f48828252492d99b0403ac
2015-01-06Add void in place of empty function arguments.Adam Langley
Since this is C89 we need to maintain this ancient practice. Change-Id: I7223e7c38a35cf551b6e3c9159d2e21ebf7e62be Reviewed-on: https://boringssl-review.googlesource.com/2631 Reviewed-by: David Benjamin <davidben@chromium.org> Reviewed-by: Adam Langley <agl@google.com>
2014-12-02Add EVP_md5_sha1.David Benjamin
Use it in ssl3_cert_verify_hash so signing a pre-TLS-1.2 handshake hash can go through RSA_sign and be intercepted via RSA_METHOD appropriately. This avoids Windows needing to intercept sign_raw. (CAPI keys cannot provide sign_raw, unless the input size happens to be that of NID_md5_sha1.) Also use it in processing ServerKeyExchange to avoid special-casing RSA. BUG=crbug.com/437023 Change-Id: Ia07433f468b75fdf7bfc8fa90c9751639b2478e6 Reviewed-on: https://boringssl-review.googlesource.com/2420 Reviewed-by: David Benjamin <davidben@google.com>
2014-11-06Add digest_test with tests for all existing EVP_MDs.David Benjamin
Remove the existing md5_test and sha1_test. They now are all covered by digest_test. For good measure, test the one-shot functions too. Change-Id: I8e144cc563fb8817144e26cbd2e10c15642464ba Reviewed-on: https://boringssl-review.googlesource.com/2211 Reviewed-by: Adam Langley <agl@google.com>
2014-10-01Silence warnings about unused values.Ben Laurie
Change-Id: Iabfb85d90554b25e0a545a8ef3a3e9a607770132 Reviewed-on: https://boringssl-review.googlesource.com/1850 Reviewed-by: Adam Langley <agl@google.com>
2014-09-19Add misc functions for easier porting.Adam Langley
Android requested that the wpa_supplicant go upstream. This change adds some dummy functions and reinstates DSA_dup_DH in order to make the diff smaller and easier for upstream. Change-Id: I77ac271b8652bae5a0bbe16afde51d9096f3dfb5 Reviewed-on: https://boringssl-review.googlesource.com/1740 Reviewed-by: Adam Langley <agl@google.com>
2014-08-27Readd MD4.Adam Langley
Sadly this is needed by wpa_supplicant for NTLM hashes. Change-Id: I1c362c676a11ee01f301ff6fbd33d0669396ea23 Reviewed-on: https://boringssl-review.googlesource.com/1620 Reviewed-by: Adam Langley <agl@google.com>
2014-08-05Correct endif comment in md32_common.hAlex Chernyakhovsky
PEDANTIC was not closed, but rather the compiler being used. Change-Id: I743118f1481adddcd163406be72926fff6c87338 Reviewed-on: https://boringssl-review.googlesource.com/1388 Reviewed-by: Adam Langley <agl@google.com>
2014-07-15Move public headers to include/openssl/Adam Langley
Previously, public headers lived next to the respective code and there were symlinks from include/openssl to them. This doesn't work on Windows. This change moves the headers to live in include/openssl. In cases where some symlinks pointed to the same header, I've added a file that just includes the intended target. These cases are all for backwards-compat. Change-Id: I6e285b74caf621c644b5168a4877db226b07fd92 Reviewed-on: https://boringssl-review.googlesource.com/1180 Reviewed-by: David Benjamin <davidben@chromium.org> Reviewed-by: Adam Langley <agl@google.com>
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.)