| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
Currently these functions will happily bit shift by >= sizeof(T)*8 bits.
However, this is undefined behavior, and results in unexpected results (0)
on at least one platform I've tested.
With this update, you can expect that rotate_left<uint32_t>(1, 32)==1
and rotate_right<uint32_t>(1, 32)==1.
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Hostname validation is used to make sure the certificate
hostname matches the hostname of the connected host.
RFC 6125 allows one wildcard in the left-most label of
a hostname. Up to now, we only supported only the wildcard
as the left-most label, e.g., www.example.com would
match *.example.com, but www.example.com would not
match www*.example.com, although it is permitted.
Also adds test vectors from RFC 6125 as well as the
OpenSSL test suite.
|
|/
|
|
| |
GH #1009
|
| |
|
|
|
|
| |
CVE-2017-2801
|
|\ |
|
| | |
|
|/
|
|
|
|
|
|
|
| |
* 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
|
| |
|
| |
|
|
|
|
| |
Only throw on systems where 32 bit std::time_t is used.
|
| |
|
| |
|
| |
|
|
|
|
| |
The macro has to be on its own line or Doxygen gets confused.
|
|\
| |
| |
| | |
OS::get_high_resolution_clock
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Now let it return 0 if we have no hardware timestamp, and add
OS::get_high_resolution_clock for best available clock.
This is mainly because it's confusing for get_processor_timestamp to return
something that is not a processor timestamp and because it simplifies adding
cycles/byte output if we know that something is or is not a cycle counter.
Also adds Windows SEH version of run_cpu_instruction_probe. Untested, uncompiled.
|
| | |
|
| |
| |
| |
| | |
Different intrinsics API
|
| | |
|
| |
| |
| |
| | |
Return NEON from CPUID::has_simd_32
|
|/
|
|
| |
Tested on qemu-aarch64
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Based on build output sent by @noloader.
If RLIMIT_MEMLOCK is not defined, assume regular user is not able to
call mlock. This probably also affected Clang/GCC on Solaris.
Work around resolution issue in SIMD_4x32 where it finds ambiguity
between arg taking uint32_t and __m128i. This is probably some
artifact of how SunCC represents vector types, and seems highly bogus
in general but is easy to work around here. Change constructor taking
a single value to instead be `SIMD_4x32::splat` function. The SIMD
class is internal, so no API implications.
Fix various warnings about lambda functions that were missing return
types and which were not a single return statement. AIUI C++11 doesn't
guarantee that lambda return type will be deduced in that situation,
though in practice every compiler including SunCC seems to handle it.
Disable AVX2 usage, since SunCC's intrinsics seem to be broken - its
_mm_loadu_si256 takes non-const pointer.
Rename a few variables in the tests to avoid shadowed var warnings.
|
|
|
|
| |
[ci skip]
|
|
|
|
|
|
| |
Doesn't seem to be a problem with the asm, code works fine on physical
hardware (POWER8) but on qemu (on CI) both instructions return zero
and the test fails.
|
|
|
|
|
|
|
|
|
| |
Deprecates CPUID::print, mainly to avoid use of ostream in utils.
Main reasoning is some platforms do not have streams at all. If all uses of
streams are for operator<< and operator>> overloads, these can be guarded by a
future BOTAN_HAS_CPP_STREAMS system-feature flag. But when ostreams are
required to use the API (as here), that is not possible.
|
|
|
|
|
| |
Mainly driven by missing test for OS::run_cpu_instruction_probe.
Currently only works on x86 and ARM. Tested on x86-64 native and aarch64 qemu.
|
|
|
|
|
| |
Missing on Android it appears, or at least on Kullo CI NDK.
Not essential by any means.
|
| |
|
| |
|
|
|
|
|
|
| |
Tested for ARM only under qemu-aarch64, need to check hardware before merging.
Changes x86 CPUID bitmasks which does break ABI for 2.1, no API implications.
|
|
|
|
|
|
| |
os_utils.h was missing an include, only noticed on OS X
sigemptyset is a macro on OS X so cannot be called as ::sigemptyset
|
|
|
|
|
|
| |
Needed for ARM detection, also probably useful on PowerPC for AltiVec
Works fine for me on Linux x86-64 testing with ud2 instruction.
|
|
|
|
|
| |
It is not a general purpose util or something we want applications to use.
It is only used by x509 and hopefully will be removed from there soon enough.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
We support 3.5 or higher generally, but only Clang 3.8 has the
function attributes. This doesn't affect the build with older Clang
because the makefile still sets file-wide ISA flags.
GCC supports this attribute in all versions we support.
Fixes GH #797
|
| |
|
|
|
|
| |
Caused tests to fail on CI
|
|
|
|
|
| |
Expose Data{Source,Sink}_Stream types even if no filesystem is
available. Instead just guard the constructors taking a pathname.
|
|
|
|
|
|
| |
Renames a couple of functions for somewhat better name consistency,
eg make_u32bit becomes make_uint32. The old typedefs remain for now
since probably lots of application code uses them.
|
| |
|
|\ |
|
| | |
|
|/ |
|
| |
|
|
|
|
|
|
|
|
| |
All this is just standard C that the user should not touch, so it doesn't
really make sense to have it in the build.h template file.
Remove BOTAN_TARGET_CPU_HAS_KNOWN_ENDIANESS - only used twice (in loadstor.h)
and that code is clearer without it.
|
|\
| |
| |
| |
| |
| | |
Splits up path validation into several sub-functions for easier testing
and creating customized validation code. Much improved OCSP handling
and OCSP tests.
|
| | |
|