| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
HashFunction; include hash.h instead
|
|
|
|
|
| |
anonymous namespace (in particular this should prevent Doxygen for
generating documentation about the v4si union declared there).
|
|
|
|
|
| |
a random segfault (always inside an SSE2 intrinsic). Did not investigate
much beyond that. Worth looking into since it seemed worth another 1% or so.
|
|
|
|
|
| |
blocks as input (and can overlap computations from one block to another -
very nice). Reimport that original version and use it.
|
|
|
|
|
| |
the registers only once and carrying the values over between loop
iterations.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
to have been so! Change MDx_HashFunction::hash to a new compress_n
which hashes an arbitrary number of blocks. I had a thought this might
reduce a bit of loop overhead but the results were far better than I
anticipated. Speedup across the board of about 2%, and very
noticable (+10%) increases for MD4 and Tiger (probably b/c both
of those have so few instructions in each iteration of the
compression function).
Before:
SHA-1:
amd64: 211.9 MiB/s
core: 210.0 MiB/s
sse2: 295.2 MiB/s
MD4: 476.2 MiB/s
MD5: 355.2 MiB/s
SHA-256: 99.8 MiB/s
SHA-512: 151.4 MiB/s
RIPEMD-128: 326.9 MiB/s
RIPEMD-160: 225.1 MiB/s
Tiger: 214.8 MiB/s
Whirlpool: 38.4 MiB/s
After:
SHA-1:
amd64: 215.6 MiB/s
core: 213.8 MiB/s
sse2: 299.9 MiB/s
MD4: 528.4 MiB/s
MD5: 368.8 MiB/s
SHA-256: 103.9 MiB/s
SHA-512: 156.8 MiB/s
RIPEMD-128: 334.8 MiB/s
RIPEMD-160: 229.7 MiB/s
Tiger: 240.7 MiB/s
Whirlpool: 38.6 MiB/s
|
| |
|
|
|
|
| |
them to be individually requested as providers on lookup.
|
| |
|
| |
|
|
|
|
|
|
| |
It turned out many files were including base.h merely to get other
includes (like types.h, secmem.h, and exceptn.h). Those have been changed
to directly include the files containing the declarations that code needs.
|
|
|
|
| |
Inline constructors for BlockCipher and StreamCipher
|
| |
|
|
|
|
| |
(from base.h)
|
|
|
|
| |
the current version.
|
| |
|
|
|
|
| |
SHA_224256_BASE SHA_224_256_BASE
|
| |
|
| |
|
|
|
|
|
| |
Rename sha256.h and sha_64.h to sha2_32.h and sha2_64.h - this affects
users who instantiate these classes directly.
|
| |
|
|
|
|
|
|
| |
seem to be handled correctly (er, at least mostly), and more importantly
the asm MPI modules are detected and used correctly (at least on x86-64
and x86).
|
| |
|
|
|
|
|
|
|
|
|
|
| |
the normal Botan base classes. This required making data members of
MD4, MD5, and Serpent protected rather than private, which is not very
good style IMO. On the other hand it allows for removing a bit of duplicated
code, and also has the nice effect that a pointer to a Serpent_IA32 can be
used right as a Serpent object, which makes sense anyway since they implement
the same algorithm. The C++ files in the *_ia32 modules are now simply hooks
between the virtual function call runtime and the assembly code.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
rather than silently replacing the C++ versions. Instead they are silently
replaced (currently, at least) at the lookup level: we switch off the set
of feature macros set to choose the best implementation in the current
build configuration. So you can have (and benchmark) MD5 and MD5_IA32
directly against each other in the same program with no hassles, but if
you ask for "MD5", you'll get maybe an MD5 or maybe MD5_IA32.
Also make the canonical asm names (which aren't guarded by C++ namespaces)
of the form botan_<algo>_<arch>_<func> as in botan_sha160_ia32_compress,
to avoid namespace collisions.
This change has another bonus that it should in many cases be possible to
derive the asm specializations directly from the original implementation,
saving some code (and of course logically SHA_160_IA32 is a SHA_160, just
one with a faster implementation of the compression function, so this seems
reasonable anyway).
|
|
|
|
|
|
| |
ca7d7fc1ae6b55c5328c9cf1ec1cafd1daadedd4)
to branch 'net.randombit.botan.modularized' (head 614263a9742a0c554e4093620147f6e156264d41)
|
| |
|
| |
|
|
|
|
|
| |
them modules now. In any case there is no distinction so info.txt seems
better.
|
| |
|
|
|
|
| |
Move paralle hash construction to par_hash module in hash directory
|
|
|
|
|
|
| |
class).
Add many missing modinfo.txts that I had not checked in. Oops.
|
|
|
|
|
|
|
| |
hash/sha1_amd64 and cipher/serpent_ia32.
Remaining code in asm/ dir is for BigInt, so rename to bigint/ in prep for
all (or most) of BigInt being modularized.
|
|
|
|
|
|
| |
Correct the configure program so modules are not autoloaded if their
dependences are not available. (Eg, --no-module=mdx_hash will disable
MD4, MD5, SHA-1, etc rather than cause a compliation failure)
|
|
|