| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The problem with asm rol/ror is the compiler can't schedule effectively.
But we only need asm in the case when the rotation is variable, so distinguish
the two cases. If a compile time constant, then static_assert that the rotation
is in the correct range and do the straightforward expression knowing the compiler
will probably do the right thing. Otherwise do a tricky expression that both
GCC and Clang happen to have recognize. Avoid the reduction case; instead
require that the rotation be in range (this reverts 2b37c13dcf).
Remove the asm rotations (making this branch illnamed), because now both Clang
and GCC will create a roll without any extra help.
Remove the reduction/mask by the word size for the variable case. The compiler
can't optimize that it out well, but it's easy to ensure it is valid in the callers,
especially now that the variable input cases are easy to grep for.
|
|\ |
|
| | |
|
|/
|
|
|
| |
The class itself can't be final but we can final the overrides
from HashFunction, which helps the compiler devirtualize.
|
|
|
|
| |
Sonar
|
|
|
|
|
|
|
| |
Generally speaking reinterpret_cast is sketchy stuff. But the
special case of char*/uint8_t* is both common and safe. By
isolating those, the remaining (likely sketchy) cases are easier
to grep for.
|
|
|
|
|
|
| |
Mostly residue from the old system of splitting impls among subclasses
Found with Sonar
|
| |
|
| |
|
|
|
|
|
| |
Done by a perl script which converted all classes to final, followed
by selective reversion where it caused compilation failures.
|
| |
|
|
|
|
| |
Some help from include-what-you-use
|
|
|
|
|
|
| |
ISO C++ reserves names with double underscores in them
Closes #512
|
| |
|
|
|
|
|
| |
Defined in build.h, all equal to BOTAN_DLL so ties into existing
system for exporting symbols.
|
| |
|
|
|
|
| |
Improves CBC and OCB performance with AES-NI quite noticably
|
|
|
|
| |
[ci skip]
|
| |
|
|
|
|
| |
Based on VC2017 output
|
|
|
|
| |
Sonar find
|
|
|
|
|
|
|
|
|
|
|
|
| |
For whatever reason GCC 7 on i386 miscompiles this loop under -O3. I was
not able to reduce the bug to a small testcase - extracting the problem
section of the code to its own file, it behaves correctly.
Also oddly, I was never able to repro this using Arch's gcc-multilib
i386 compiler. But when compiled with the 'native' i386 compiler in
a chroot it immediately fails.
See GH #1148 and GH #882
|
|
|
|
| |
(Missed hunk in previous commit)
|
| |
|
| |
|
|\ |
|
| |
| |
| |
| |
| |
| |
| | |
This commit implements the feedback from @securitykernel on the
PR and also changes the EC Group comparison to use the OID, akin
to OpenSSL. The EC Group comparison was needed before GH #1093
was merged, but now we can go use the OpenSSL variant.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
BearSSL is an implementation of the SSL/TLS protocol in C aiming
to be correct and secure, small and highly portable. Thus making
it nicer to be included in a rather sparse bootloader. This commit
adds support for BearSSL's hash routines only, with more stuff
coming up in following commits. The goal is to be able to test
BearSSL using Botan's extensive testsuite.
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
While using marketing names like 2013, 2015 etc. is more convenient at
first sight, it requires keeping a table about all supported compiler
versions, as there is no formular to calculate between the
representations.
Keeping a list of compilers leads to the following issue: if one version
of Botan is released in 2017, requiring MSVS 2015 for one module, this
source can be compiled using MSVS 2015 and 2017 but not a future version
like 2019.
Also preview/development versions of MSVC that may use an intermediate
version number cannot be handled with the marketing name table because
they may be unknown to the general public.
|
|
|
|
|
|
|
|
| |
T[] variable is actually a constant, so precompute it in SM3_TJ
W1 expansion is very simple and can just be done inline.
Somewhat faster on my machine.
|
| |
|
|
|
|
|
|
|
| |
function declaration is already hidden, fix some param names in doxygen
comments, fixes #1067
This work was sponsored by Ribose Inc (@riboseinc).
|
|\ |
|
| |
| |
| |
| |
| | |
They don't understand unique_ptr<Derived> to unique_ptr<Base> without help
https://stackoverflow.com/questions/22018115/converting-stdunique-ptrderived-to-stdunique-ptrbase
|
| |
| |
| |
| | |
See GH #1037
|
| |
| |
| |
| |
| |
| |
| | |
Works everywhere but Apple Clang. Could handle this with a hack
to configure but running ARMv8 in 32-bit mode is rare and suboptimal,
and it would be better to deal with this using compile-time feature
detection.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
Fix for new define syntax, remove old style casts.
Add some randomly generated longer SHA-256 vectors, previously had
precisely zero multiblock tests.
|
| |
| |
| |
| | |
Based on patch from Jeffrey Walton in GH #841
|
|/
|
|
|
|
| |
Based on patch from Jeffrey Walton in GH #840
Only tested in qemu so far.
|
| |
|
|
|
|
| |
Based on GH #807 and #808
|
|\ |
|
| |
| |
| |
| | |
failures for some compilers.
|
| | |
|
| | |
|
| |\ |
|
| | | |
|
| |/
|/|
| |
| |
| |
| |
| |
| |
| | |
* fixes for deprecated constructions in c++11 and later (explicit rule of 3/5 or implicit rule of 0 and other violations)
* `default` specifier instead of `{}` in some places(probably all)
* removal of unreachable code (for example `return` after `throw`)
* removal of compilation unit only visible, but not used functions
* fix for `throw()` specifier - used instead `BOTAN_NOEXCEPT`
* removed not needed semicolons
|