Commit Graph

30 Commits

Author SHA1 Message Date
Sebastian Huber
a67b944329 sha512_224: Fix SHA512_224_Final() on little-endian machines.
PR:		266863
MFC after:	1 week
Reviewed by:	allanjude, cperciva, des
Differential Revision:	https://reviews.freebsd.org/D38372
2023-02-06 19:37:24 +01:00
Sebastian Huber
b66cda78b2 libmd: Remove extra digest copy in SHA256_Final()
The extra digest copy was introduced by an erroneous merge conflict resolution
for commit "crypto routines: Hint minimum buffer sizes to the compiler".
2022-11-09 16:54:02 +01:00
Xin LI
f5ee9a0e0b libmd: Always erase context in _Final method,
and when doing it, consistently use explicit_bzero().

Update manual pages to match the behavior.

Reviewed by:	pfg, allanjude, jmg
MFC after:	1 month
Differential Revision:	https://reviews.freebsd.org/D16316
2022-09-08 16:14:56 +02:00
Conrad Meyer
efd19aa7c1 Implement SHA2-224 submode of SHA2-256
Like SHA2-384:SHA2-512, SHA2-224 is simply a truncated SHA2-256 with a
different initial vector.  Add to round out the complete basic SHA2 family.
2022-09-08 16:14:56 +02:00
Colin Percival
4ebb5f893e Retune SHA2 code for improved performance on CPUs
with more ILP and a preference for memory load instructions over large code
footprints with embedded immediate variables.

On amd64 CPUs from 2007-2008 there is not a significant change, but
amd64 CPUs from 2009-2010 get roughly 10% more throughput with this
code; amd64 CPUs from 2011-2012 get roughly 15% more throughput; and
AMD64 CPUs from 2013-2015 get 20-25% more throughput.  The Raspberry
Pi 2 increases its throughput by 6-8%.

Sponsored by:	Tarsnap Backup Inc.
Performance tested by:	allanjude
MFC after:	3 weeks
2022-09-08 16:14:56 +02:00
Allan Jude
7b4296ed19 Implement SHA-512 truncated (224 and 256 bits)
This implements SHA-512/256, which generates a 256 bit hash by
calculating the SHA-512 then truncating the result. A different initial
value is used, making the result different from the first 256 bits of
the SHA-512 of the same input. SHA-512 is ~50% faster than SHA-256 on
64bit platforms, so the result is a faster 256 bit hash.

The main goal of this implementation is to enable support for this
faster hashing algorithm in ZFS. The feature was introduced into ZFS
in r289422, but is disconnected because SHA-512/256 support was missing.
A further commit will enable it in ZFS.

This is the follow on to r292782

Reviewed by:	cem
Sponsored by:	ScaleEngine Inc.
Differential Revision:	https://reviews.freebsd.org/D6061
2022-09-08 16:14:56 +02:00
Conrad Meyer
3a22e5d30f crypto routines: Hint minimum buffer sizes to the compiler
Use the C99 'static' keyword to hint to the compiler IVs and output digest
sizes.  The keyword informs the compiler of the minimum valid size for a given
array.  Obviously not every pointer can be validated (i.e., the compiler can
produce false negative but not false positive reports).

No functional change.  No ABI change.

Sponsored by:	EMC / Isilon Storage Division
2022-09-08 16:14:56 +02:00
Allan Jude
225e7b9e75 Replace sys/crypto/sha2/sha2.c with lib/libmd/sha512c.c
cperciva's libmd implementation is 5-30% faster

The same was done for SHA256 previously in r263218

cperciva's implementation was lacking SHA-384 which I implemented, validated against OpenSSL and the NIST documentation

Extend sbin/md5 to create sha384(1)

Chase dependancies on sys/crypto/sha2/sha2.{c,h} and replace them with sha512{c.c,.h}

Reviewed by:	cperciva, des, delphij
Approved by:	secteam, bapt (mentor)
MFC after:	2 weeks
Sponsored by:	ScaleEngine Inc.
Differential Revision:	https://reviews.freebsd.org/D3929
2022-09-08 16:14:56 +02:00
Chris Johns
acc32a8e5c cpukit: Fixes for GCC 12 warnings
Updates #6442
2022-06-15 13:01:03 +10:00
Sebastian Huber
e39642a468 build: Merge libmd/Makefile.am 2018-10-10 07:53:32 +02:00
Sebastian Huber
68e1ccc46d build: Remove specialized CPPFLAGS 2018-10-09 13:26:47 +02:00
Chris Johns
2afb22b7e1 Remove make preinstall
A speciality of the RTEMS build system was the make preinstall step.  It
copied header files from arbitrary locations into the build tree.  The
header files were included via the -Bsome/build/tree/path GCC command
line option.

This has at least seven problems:

* The make preinstall step itself needs time and disk space.

* Errors in header files show up in the build tree copy.  This makes it
  hard for editors to open the right file to fix the error.

* There is no clear relationship between source and build tree header
  files.  This makes an audit of the build process difficult.

* The visibility of all header files in the build tree makes it
  difficult to enforce API barriers.  For example it is discouraged to
  use BSP-specifics in the cpukit.

* An introduction of a new build system is difficult.

* Include paths specified by the -B option are system headers.  This
  may suppress warnings.

* The parallel build had sporadic failures on some hosts.

This patch removes the make preinstall step.   All installed header
files are moved to dedicated include directories in the source tree.
Let @RTEMS_CPU@ be the target architecture, e.g. arm, powerpc, sparc,
etc.  Let @RTEMS_BSP_FAMILIY@ be a BSP family base directory, e.g.
erc32, imx, qoriq, etc.

The new cpukit include directories are:

* cpukit/include

* cpukit/score/cpu/@RTEMS_CPU@/include

* cpukit/libnetworking

The new BSP include directories are:

* bsps/include

* bsps/@RTEMS_CPU@/include

* bsps/@RTEMS_CPU@/@RTEMS_BSP_FAMILIY@/include

There are build tree include directories for generated files.

The include directory order favours the most general header file, e.g.
it is not possible to override general header files via the include path
order.

The "bootstrap -p" option was removed.  The new "bootstrap -H" option
should be used to regenerate the "headers.am" files.

Update #3254.
2018-01-25 08:45:26 +01:00
Sebastian Huber
77510c72dc libmd: Disable SHA modules for m32c
Close #2219.
2015-03-05 11:34:01 +01:00
Sebastian Huber
1bcd037810 Add SHA256 and SHA512 support 2014-11-20 10:30:21 +01:00
Sebastian Huber
4479006955 libmd: Change MD5Update() prototype
This is in line with the FreeBSD and OpenSSL prototypes.  It helps to
avoid superfluous compiler warnings.
2013-10-31 14:32:24 +01:00
Sebastian Huber
8e8b18bb5b libmd: New defines for FreeBSD compatibility 2013-10-22 11:00:04 +02:00
Joel Sherrill
9b4422a251 Remove All CVS Id Strings Possible Using a Script
Script does what is expected and tries to do it as
smartly as possible.

+ remove occurrences of two blank comment lines
  next to each other after Id string line removed.
+ remove entire comment blocks which only exited to
  contain CVS Ids
+ If the processing left a blank line at the top of
  a file, it was removed.
2012-05-11 08:44:13 -05:00
Joel Sherrill
33a105fb69 Revert: Remove CVS Ids
See http://www.rtems.org/pipermail/rtems-devel/2012-May/001006.html
for details.
2012-05-07 11:08:48 -05:00
Ralf Corsépius
ee32f67a6f Remove CVS-Ids. 2012-05-04 09:36:25 +02:00
Joel Sherrill
61250b4ce9 Remove all .cvsignore files. 2012-02-01 10:59:44 -06:00
Sebastian Huber
1e4d7b8835 2010-09-13 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libmd/md5.h: C++ compatibility.
2010-09-13 13:57:32 +00:00
Sebastian Huber
17ecd5a06f 2010-07-16 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libmd/md4.c: Removed definition of TRUE and FALSE.
2010-07-16 07:45:18 +00:00
Ralf Corsepius
3f7fc1de52 2010-06-14 Ralf Corsépius <ralf.corsepius@rtems.org>
* libmd/md5.h: Revert Sebastian's patch.
2010-06-14 16:06:14 +00:00
Sebastian Huber
1aca38c659 2010-06-14 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libmd/md5.h: Define MD5_DIGEST_SIZE.
2010-06-14 12:01:36 +00:00
Ralf Corsepius
b25b88e732 Add HAVE_CONFIG_H support to let files receive configure defines. 2010-03-28 05:50:29 +00:00
Ralf Corsepius
1cb54d1f38 #include <stdint.h> instead of <rtems/stdint.h>. 2008-12-11 00:47:56 +00:00
Ralf Corsepius
3eb76324b6 Stop using old-style function-definitions. 2008-08-25 11:53:48 +00:00
Ralf Corsepius
ee0c82f413 Add missing prototypes. 2008-08-02 05:16:26 +00:00
Joel Sherrill
44a5bb783b 2007-06-12 Joel Sherrill <joel.sherrill@OARcorp.com>
* libmd/.cvsignore: New file.
2007-06-12 19:45:27 +00:00
Ralf Corsepius
e0c4c102b4 New (moved out from pppd). 2007-06-12 15:59:36 +00:00