md5: Improve compatibility.

* Overhaul the GNU compatibility mode to more closely emulate what the GNU tools do.

* Add a Perl compatibility mode which emulates the shasum tool that ships with Perl.  This is currently not installed.

* Overhaul the tests.

Sponsored by:	Klara, Inc.
Reviewed by:	kevans
Differential Revision:	https://reviews.freebsd.org/D39446
This commit is contained in:
Dag-Erling Smørgrav 2023-05-08 06:56:09 +00:00
parent f710a4de92
commit 4849767cb1
76 changed files with 1139 additions and 752 deletions

View File

@ -52,6 +52,79 @@
# xargs -n1 | sort | uniq -d;
# done
# 20230505: md5 tests are now self-contained
OLD_FILES+=usr/tests/sbin/md5/1.inp
OLD_FILES+=usr/tests/sbin/md5/1.sha512-p.chk
OLD_FILES+=usr/tests/sbin/md5/1.sha512sum-p.chk
OLD_FILES+=usr/tests/sbin/md5/2.inp
OLD_FILES+=usr/tests/sbin/md5/2.sha512-p.chk
OLD_FILES+=usr/tests/sbin/md5/2.sha512sum-p.chk
OLD_FILES+=usr/tests/sbin/md5/3.inp
OLD_FILES+=usr/tests/sbin/md5/3.sha512-p.chk
OLD_FILES+=usr/tests/sbin/md5/3.sha512sum-p.chk
OLD_FILES+=usr/tests/sbin/md5/4.inp
OLD_FILES+=usr/tests/sbin/md5/4.sha512-p.chk
OLD_FILES+=usr/tests/sbin/md5/4.sha512sum-p.chk
OLD_FILES+=usr/tests/sbin/md5/5.inp
OLD_FILES+=usr/tests/sbin/md5/5.sha512-p.chk
OLD_FILES+=usr/tests/sbin/md5/5.sha512sum-p.chk
OLD_FILES+=usr/tests/sbin/md5/6.inp
OLD_FILES+=usr/tests/sbin/md5/6.sha512-p.chk
OLD_FILES+=usr/tests/sbin/md5/6.sha512sum-p.chk
OLD_FILES+=usr/tests/sbin/md5/7.inp
OLD_FILES+=usr/tests/sbin/md5/7.sha512-p.chk
OLD_FILES+=usr/tests/sbin/md5/7.sha512sum-p.chk
OLD_FILES+=usr/tests/sbin/md5/8.inp
OLD_FILES+=usr/tests/sbin/md5/8.sha512-p.chk
OLD_FILES+=usr/tests/sbin/md5/8.sha512sum-p.chk
OLD_FILES+=usr/tests/sbin/md5/algorithms.txt
OLD_FILES+=usr/tests/sbin/md5/bsd-c-test
OLD_FILES+=usr/tests/sbin/md5/bsd-p-test
OLD_FILES+=usr/tests/sbin/md5/bsd-s-test
OLD_FILES+=usr/tests/sbin/md5/coreutils-c-test
OLD_FILES+=usr/tests/sbin/md5/md5.digest
OLD_FILES+=usr/tests/sbin/md5/md5sum.digest
OLD_FILES+=usr/tests/sbin/md5/rmd160.digest
OLD_FILES+=usr/tests/sbin/md5/rmd160sum.digest
OLD_FILES+=usr/tests/sbin/md5/self-test
OLD_FILES+=usr/tests/sbin/md5/self-test.md5.chk
OLD_FILES+=usr/tests/sbin/md5/self-test.rmd160.chk
OLD_FILES+=usr/tests/sbin/md5/self-test.sh_inp
OLD_FILES+=usr/tests/sbin/md5/self-test.sha1.chk
OLD_FILES+=usr/tests/sbin/md5/self-test.sha224.chk
OLD_FILES+=usr/tests/sbin/md5/self-test.sha256.chk
OLD_FILES+=usr/tests/sbin/md5/self-test.sha384.chk
OLD_FILES+=usr/tests/sbin/md5/self-test.sha512.chk
OLD_FILES+=usr/tests/sbin/md5/self-test.sha512t224.chk
OLD_FILES+=usr/tests/sbin/md5/self-test.sha512t256.chk
OLD_FILES+=usr/tests/sbin/md5/self-test.skein1024.chk
OLD_FILES+=usr/tests/sbin/md5/self-test.skein256.chk
OLD_FILES+=usr/tests/sbin/md5/self-test.skein512.chk
OLD_FILES+=usr/tests/sbin/md5/sha1.digest
OLD_FILES+=usr/tests/sbin/md5/sha1sum.digest
OLD_FILES+=usr/tests/sbin/md5/sha224.digest
OLD_FILES+=usr/tests/sbin/md5/sha224sum.digest
OLD_FILES+=usr/tests/sbin/md5/sha256.digest
OLD_FILES+=usr/tests/sbin/md5/sha256sum.digest
OLD_FILES+=usr/tests/sbin/md5/sha384.digest
OLD_FILES+=usr/tests/sbin/md5/sha384sum.digest
OLD_FILES+=usr/tests/sbin/md5/sha512.digest
OLD_FILES+=usr/tests/sbin/md5/sha512sum.digest
OLD_FILES+=usr/tests/sbin/md5/sha512t224.digest
OLD_FILES+=usr/tests/sbin/md5/sha512t224sum.digest
OLD_FILES+=usr/tests/sbin/md5/sha512t256.digest
OLD_FILES+=usr/tests/sbin/md5/sha512t256sum.digest
OLD_FILES+=usr/tests/sbin/md5/skein1024.digest
OLD_FILES+=usr/tests/sbin/md5/skein1024sum.digest
OLD_FILES+=usr/tests/sbin/md5/skein256.digest
OLD_FILES+=usr/tests/sbin/md5/skein256sum.digest
OLD_FILES+=usr/tests/sbin/md5/skein512.digest
OLD_FILES+=usr/tests/sbin/md5/skein512sum.digest
OLD_FILES+=usr/tests/sbin/md5/sum_a.in
OLD_FILES+=usr/tests/sbin/md5/sum_b.in
OLD_FILES+=usr/tests/sbin/md5/sum_c.in
OLD_FILES+=usr/tests/sbin/md5/sum_sums.digest
# 20230420: portsnap.8 removed
OLD_FILES+=etc/portsnap.conf
OLD_FILES+=usr/libexec/make_index

View File

@ -52,6 +52,12 @@ MLINKS= md5.1 md5sum.1 \
md5.1 skein1024.1 \
md5.1 skein1024sum.1
# md5 can also emulate the shasum script that comes with Perl, except
# that, in bits input mode, it can only handle input lengths that are
# a multiple of 8 (see manual page).
#LINKS+= ${BINDIR}/md5 ${BINDIR}/shasum
#MLINKS+= md5.1 shasum.1
LIBADD= md
.ifndef(BOOTSTRAPPING)

View File

@ -1,5 +1,5 @@
.\" $FreeBSD$
.Dd February 6, 2023
.Dd April 12, 2023
.Dt MD5 1
.Os
.Sh NAME
@ -8,7 +8,8 @@
.Nm rmd160 , skein256 , skein512 , skein1024 ,
.Nm md5sum , sha1sum , sha224sum , sha256sum , sha384sum ,
.Nm sha512sum , sha512t224sum , sha512t256sum ,
.Nm rmd160sum , skein256sum , skein512sum , skein1024sum
.Nm rmd160sum , skein256sum , skein512sum , skein1024sum ,
.Nm shasum
.Nd calculate a message-digest fingerprint (checksum) for a file
.Sh SYNOPSIS
.Nm
@ -18,12 +19,40 @@
.Op Ar
.Pp
.Nm md5sum
.Op Fl pqrtx
.Op Fl c Ar file
.Op Fl s Ar string
.Op Fl bctwz
.Op Fl -binary
.Op Fl -check
.Op Fl -help
.Op Fl -ignore-missing
.Op Fl -quiet
.Op Fl -status
.Op Fl -strict
.Op Fl -tag
.Op Fl -text
.Op Fl -version
.Op Fl -warn
.Op Fl -zero
.Op Ar
.Pp
(All other hashes have the same options and usage.)
.Pp
.Nm shasum
.Op Fl 0bchqstUvw
.Op Fl -01
.Op Fl a | -algorithm Ar alg
.Op Fl -binary
.Op Fl -check
.Op Fl -help
.Op Fl -ignore-missing
.Op Fl -quiet
.Op Fl -status
.Op Fl -strict
.Op Fl -tag
.Op Fl -text
.Op Fl -UNIVERSAL
.Op Fl -version
.Op Fl -warn
.Op Ar
.Sh DESCRIPTION
The
.Nm md5 , sha1 , sha224 , sha256 , sha384 , sha512 , sha512t224 , sha512t256 ,
@ -36,15 +65,21 @@ output a
or
.Dq message digest
of the input.
.Pp
The
.Nm md5sum , sha1sum , sha224sum , sha256sum , sha384sum , sha512sum ,
.Nm sha512t224sum , sha512t256sum , rmd160sum , skein256sum , skein512sum ,
and
.Nm skein1024sum
utilities do the same, but default to the reversed format of
the
.Fl r
flag.
utilities do the same, but with command-line options and an output
format that match those of their similary named GNU utilities.
.Pp
The
.Nm shasum
utility does the same, but with command-line options and an output
format that match those of the similarly named utility that ships with
Perl.
.Pp
It is conjectured that it is computationally infeasible to
produce two messages having the same message digest, or to produce any
message having a given prespecified target message digest.
@ -75,73 +110,171 @@ to 224 bits.
.Pp
It is recommended that all new applications use SHA-512 or SKEIN-512
instead of one of the other hash functions.
.Pp
The following options may be used in any combination and must
precede any files named on the command line.
The hexadecimal checksum of each file listed on the command line is printed
after the options are processed.
.Ss BSD OPTIONS
The following options are available in BSD mode, i.e. when the program
is invoked with a name that does not end in
.Dq sum :
.Bl -tag -width indent
.It Fl b
Make the
.Nm -sum
programs separate hash and digest with a blank followed by an asterisk instead
of by 2 blank characters for full compatibility with the output generated by the
coreutils versions of these programs.
.It Fl c Ar string
If the program was called with a name that does not end in
.Nm sum ,
compare the digest of the file against this string.
.It Fl c Ar string , Fl -check= Ns Ar string
Compare the digest of the file against this string.
If combined with the
.Fl q
or
.Fl -quiet
option, the calculated digest is printed in addition to the exit status being set.
.Pq Note that this option is not yet useful if multiple files are specified.
.It Fl c Ar file
If the program was called with a name that does end in
.Nm sum ,
the file passed as argument must contain digest lines generated by the same
digest algorithm with or without the
.Fl r
option
.Pq i.e., in either classical BSD format or in GNU coreutils format .
A line with the file name followed by a colon
.Dq ":"
and either OK or FAILED is written for each well-formed line in the digest file.
If applicable, the number of failed comparisons and the number of lines that were
skipped since they were not well-formed are printed at the end.
The
.Fl q
option can be used to quiesce the output unless there are mismatched entries in
the digest.
.Pp
.It Fl s Ar string
Print a checksum of the given
.Ar string .
.It Fl p
.It Fl p , -passthrough
Echo stdin to stdout and append the checksum to stdout.
.It Fl q
.It Fl q , -quiet
Quiet mode \(em only the checksum is printed out.
Overrides the
.Fl r
or
.Fl -reverse
option.
.It Fl r
.It Fl r , -reverse
Reverses the format of the output.
This helps with visual diffs.
Does nothing
when combined with the
.Fl ptx
options.
.It Fl t
.It Fl s Ar string , Fl -string= Ns Ar string
Print a checksum of the given
.Ar string .
.It Fl t , Fl -time-trial
Run a built-in time trial.
For the
.Nm -sum
versions, this is a nop for compatibility with coreutils.
.It Fl x
.It Fl x , Fl -self-test
Run a built-in test script.
.El
.Ss GNU OPTIONS
The following options are available in GNU mode, i.e. when the program
is invoked with a name that ends in
.Dq sum :
.Bl -tag -width indent
.It Fl b , Fl -binary
Read files in binary mode.
.It Fl c , Fl -check
The file passed as arguments must contain digest lines generated by the same
digest algorithm in either classical BSD format or in GNU coreutils format.
A line with the file name followed by a colon
.Dq ":"
and either OK or FAILED is written for each well-formed line in the digest file.
If applicable, the number of failed comparisons and the number of lines that were
skipped since they were not well-formed are printed at the end.
The
.Fl -quiet
option can be used to quiesce the output unless there are mismatched entries in
the digest.
.It Fl -help
Print a usage message and exit.
.It Fl -ignore-missing
When verifying checksums, ignore files for which checksums are given
but which aren't found on disk.
.It Fl -quiet
When verifying checksums, do not print anything unless the
verification fails.
.It Fl -status
When verifying checksums, do not print anything at all.
The exit code will reflect whether verification succeeded.
.It Fl -strict
When verifying checksums, fail if the input is malformed.
.It Fl -tag
Produce BSD-style output.
.It Fl t , Fl -text
Read files in text mode.
This is the default.
Note that this implementation does not differentiate between binary
and text mode.
.It Fl -version
Print version information and exit.
.It Fl w , Fl -warn
When verifying checksums, warn about malformed input.
.It Fl z , Fl -zero
Terminate output lines with NUL rather than with newline.
.El
.Ss PERL OPTIONS
The following options are available in Perl mode, i.e. when the program
is invoked with the name
.Dq shasum :
.Bl -tag -width indent
.It Fl 0 , Fl -01
Read files in bits mode: ASCII
.Sq 0
and
.Sq 1
characters correspond to 0 and 1 bits, respectively, and all other
characters are ignored.
See
.Sx BUGS .
.It Fl a Ar alg , Fl -algorithm Ar alg
Use the specified algorithm:
.Dq 1
for SHA-1 (default),
.Dq xxx
for
.Va xxx Ns -bit
SHA-2 (e.g.
.Dq 256
for SHA-256)
or
.Dq xxxyyy
for
.Va xxx Ns -bit
SHA-2 truncated to
.Va yyy
bits (e.g.
.Dq 512224
for SHA-512/224).
.It Fl b , Fl -binary
Read files in binary mode.
.It Fl c , Fl -check
The file passed as arguments must contain digest lines generated by the same
digest algorithm in either classical BSD format or in GNU coreutils format.
A line with the file name followed by a colon
.Dq ":"
and either OK or FAILED is written for each well-formed line in the digest file.
If applicable, the number of failed comparisons and the number of lines that were
skipped since they were not well-formed are printed at the end.
The
.Fl -quiet
option can be used to quiesce the output unless there are mismatched entries in
the digest.
.It Fl -help
Print a usage message and exit.
.It Fl -ignore-missing
When verifying checksums, ignore files for which checksums are given
but which aren't found on disk.
.It Fl -quiet
When verifying checksums, do not print anything unless the
verification fails.
.It Fl -status
When verifying checksums, do not print anything at all.
The exit code will reflect whether verification succeeded.
.It Fl -strict
When verifying checksums, fail if the input is malformed.
.It Fl -tag
Produce BSD-style output.
.It Fl t , Fl -text
Read files in text mode.
This is the default.
Note that this implementation does not differentiate between binary
and text mode.
.It Fl U , Fl -UNIVERSAL
Read files in universal mode: any CR-LF pair, as well as any CR not
followed by LF, is translated to LF before the digest is computed.
.It Fl -version
Print version information and exit.
.It Fl w , Fl -warn
When verifying checksums, warn about malformed input.
.El
.Sh EXIT STATUS
The
.Nm md5 , sha1 , sha224 , sha256 , sha512 , sha512t256 , rmd160 ,
.Nm skein256 , skein512 ,
.Nm md5 , sha1 , sha224 , sha256 , sha512 , sha512t224 , sha512t256 ,
.Nm rmd160 , skein256 , skein512 ,
and
.Nm skein1024
utilities exit 0 on success,
@ -149,6 +282,16 @@ utilities exit 0 on success,
and 2 if at least one file does not have the same hash as the
.Fl c
option.
.Pp
The
.Nm md5sum , sha1sum , sha224sum , sha256sum , sha512sum ,
.Nm sha512t224sum , sha512t256sum ,
.Nm rmd160 , skein256 , skein512 , skein1024
and
.Nm shasum
utilities exit 0 on success and 1 if at least one of the input files
could not be read or, when verifying checksums, does not have the
expected checksum.
.Sh EXAMPLES
Calculate the MD5 checksum of the string
.Dq Hello .
@ -169,11 +312,22 @@ Calculate the checksum of multiple files reversing the output:
$ md5 -r /boot/loader.conf /etc/rc.conf
ada5f60f23af88ff95b8091d6d67bef6 /boot/loader.conf
d80bf36c332dc0fdc479366ec3fa44cd /etc/rc.conf
.Pd
The
.Nm -sum
variants put 2 blank characters between hash and file name for full compatibility
with the coreutils versions of these commands.
.Ed
.Pp
This is almost but not quite identical to the output from GNU mode:
.Bd -literal -offset indent
$ md5sum /boot/loader.conf /etc/rc.conf
ada5f60f23af88ff95b8091d6d67bef6 /boot/loader.conf
d80bf36c332dc0fdc479366ec3fa44cd /etc/rc.conf
.Ed
.Pp
Note the two spaces between hash and file name.
If binary mode is requested, they are instead separated by a space and
an asterisk:
.Bd -literal -offset indent
$ md5sum -b /boot/loader.conf /etc/rc.conf
ada5f60f23af88ff95b8091d6d67bef6 */boot/loader.conf
d80bf36c332dc0fdc479366ec3fa44cd */etc/rc.conf
.Ed
.Pp
Write the digest for
@ -197,9 +351,7 @@ $ md5 -c randomstring /boot/loader.conf
MD5 (/boot/loader.conf) = ada5f60f23af88ff95b8091d6d67bef6 [ Failed ]
.Ed
.Pp
If invoked with a name ending in
.Nm -sum
the
In GNU mode, the
.Fl c
option does not compare against a hash string passed as parameter.
Instead, it expects a digest file, as created under the name
@ -212,11 +364,12 @@ $ md5 -c digest /boot/loader.conf
/boot/loader.conf: OK
.Ed
.Pp
The digest file may contain any number of lines in the format generated with or without the
.Fl r
option
.Pq i.e., in either classical BSD format or in GNU coreutils format .
If a hash value does not match the file, FAILED is printed instead of OK.
The digest file may contain any number of lines in the format
generated in either BSD or GNU mode.
If a hash value does not match the file,
.Dq FAILED
is printed instead of
.Dq OK .
.Sh SEE ALSO
.Xr cksum 1 ,
.Xr md5 3 ,
@ -252,13 +405,29 @@ Secure Hash Standard (SHS):
The RIPEMD-160 page:
.Pa https://homes.esat.kuleuven.be/~bosselae/ripemd160.html
.Sh BUGS
All of the utilities that end in
.Sq sum
are intended to be compatible with the GNU coreutils programs.
However, the long option functionality is not provided.
In bits mode, the original
.Nm shasum
script is capable of processing inputs of arbitrary length.
This implementation is not, and will issue an error if the input
length is not a multiple of eight bits.
.Sh ACKNOWLEDGMENTS
This program is placed in the public domain for free general use by
RSA Data Security.
.An -nosplit
This utility was originally derived from a program which was placed in
the public domain for free general use by RSA Data Security.
.Pp
Support for SHA-1 and RIPEMD-160 has been added by
Support for SHA-1 and RIPEMD-160 was added by
.An Oliver Eikemeier Aq Mt eik@FreeBSD.org .
.Pp
Support for SHA-2 was added by
.An Colin Percival Aq Mt cperciva@FreeBSD.org
and
.An Allan Jude Aq Mt allanjude@FreeBSD.org .
.Pp
Support for SKEIN was added by
.An Allan Jude Aq Mt allanjude@FreeBSD.org .
.Pp
Compatibility with GNU coreutils was added by
.An Warner Losh Aq Mt imp@FreeBSD.org
and much expanded by
.An Dag-Erling Sm\(/orgrav Aq Mt des@FreeBSD.org ,
who also added Perl compatibility.

View File

@ -21,11 +21,13 @@
__FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/time.h>
#include <sys/resource.h>
#include <sys/stat.h>
#include <sys/time.h>
#include <err.h>
#include <fcntl.h>
#include <getopt.h>
#include <md5.h>
#include <ripemd.h>
#include <sha.h>
@ -54,16 +56,20 @@ __FBSDID("$FreeBSD$");
#define TEST_BLOCK_COUNT 100000
#define MDTESTCOUNT 8
static int bflag;
static int cflag;
static int pflag;
static int qflag;
static int rflag;
static int sflag;
static int skip;
static char *progname;
static bool cflag;
static bool pflag;
static bool qflag;
static bool sflag;
static bool wflag;
static bool strict;
static bool skip;
static bool ignoreMissing;
static char* checkAgainst;
static int checksFailed;
static int failed;
static bool failed;
static int endl = '\n';
typedef void (DIGEST_Init)(void *);
typedef void (DIGEST_Update)(void *, const unsigned char *, size_t);
@ -84,21 +90,22 @@ extern const char *SKEIN1024_TestOutput[MDTESTCOUNT];
typedef struct Algorithm_t {
const char *progname;
const char *perlname;
const char *name;
const char *(*TestOutput)[MDTESTCOUNT];
DIGEST_Init *Init;
DIGEST_Update *Update;
DIGEST_End *End;
char *(*Data)(const void *, unsigned int, char *);
char *(*Fd)(int, char *);
} Algorithm_t;
static void MD5_Update(MD5_CTX *, const unsigned char *, size_t);
static void MDOutput(const Algorithm_t *, char *, char **);
static char *MDInput(const Algorithm_t *, FILE *, char *, bool);
static void MDOutput(const Algorithm_t *, char *, const char *);
static void MDTimeTrial(const Algorithm_t *);
static void MDTestSuite(const Algorithm_t *);
static char *MDFilter(const Algorithm_t *, char*, int);
static void usage(const Algorithm_t *);
static void version(void);
typedef union {
MD5_CTX md5;
@ -121,47 +128,155 @@ typedef union {
/* algorithm function table */
static const struct Algorithm_t Algorithm[] = {
{ "md5", "MD5", &MD5TestOutput, (DIGEST_Init*)&MD5Init,
{ "md5", NULL, "MD5",
&MD5TestOutput, (DIGEST_Init*)&MD5Init,
(DIGEST_Update*)&MD5_Update, (DIGEST_End*)&MD5End,
&MD5Data, &MD5Fd },
{ "sha1", "SHA1", &SHA1_TestOutput, (DIGEST_Init*)&SHA1_Init,
&MD5Data },
{ "sha1", "1", "SHA1",
&SHA1_TestOutput, (DIGEST_Init*)&SHA1_Init,
(DIGEST_Update*)&SHA1_Update, (DIGEST_End*)&SHA1_End,
&SHA1_Data, &SHA1_Fd },
{ "sha224", "SHA224", &SHA224_TestOutput, (DIGEST_Init*)&SHA224_Init,
&SHA1_Data },
{ "sha224", "224", "SHA224",
&SHA224_TestOutput, (DIGEST_Init*)&SHA224_Init,
(DIGEST_Update*)&SHA224_Update, (DIGEST_End*)&SHA224_End,
&SHA224_Data, &SHA224_Fd },
{ "sha256", "SHA256", &SHA256_TestOutput, (DIGEST_Init*)&SHA256_Init,
&SHA224_Data },
{ "sha256", "256", "SHA256",
&SHA256_TestOutput, (DIGEST_Init*)&SHA256_Init,
(DIGEST_Update*)&SHA256_Update, (DIGEST_End*)&SHA256_End,
&SHA256_Data, &SHA256_Fd },
{ "sha384", "SHA384", &SHA384_TestOutput, (DIGEST_Init*)&SHA384_Init,
&SHA256_Data },
{ "sha384", "384", "SHA384",
&SHA384_TestOutput, (DIGEST_Init*)&SHA384_Init,
(DIGEST_Update*)&SHA384_Update, (DIGEST_End*)&SHA384_End,
&SHA384_Data, &SHA384_Fd },
{ "sha512", "SHA512", &SHA512_TestOutput, (DIGEST_Init*)&SHA512_Init,
&SHA384_Data },
{ "sha512", "512", "SHA512",
&SHA512_TestOutput, (DIGEST_Init*)&SHA512_Init,
(DIGEST_Update*)&SHA512_Update, (DIGEST_End*)&SHA512_End,
&SHA512_Data, &SHA512_Fd },
{ "sha512t224", "SHA512t224", &SHA512t224_TestOutput, (DIGEST_Init*)&SHA512_224_Init,
&SHA512_Data },
{ "sha512t224", "512224", "SHA512t224",
&SHA512t224_TestOutput, (DIGEST_Init*)&SHA512_224_Init,
(DIGEST_Update*)&SHA512_224_Update, (DIGEST_End*)&SHA512_224_End,
&SHA512_224_Data, &SHA512_224_Fd },
{ "sha512t256", "SHA512t256", &SHA512t256_TestOutput, (DIGEST_Init*)&SHA512_256_Init,
&SHA512_224_Data },
{ "sha512t256", "512256", "SHA512t256",
&SHA512t256_TestOutput, (DIGEST_Init*)&SHA512_256_Init,
(DIGEST_Update*)&SHA512_256_Update, (DIGEST_End*)&SHA512_256_End,
&SHA512_256_Data, &SHA512_256_Fd },
{ "rmd160", "RMD160", &RIPEMD160_TestOutput,
&SHA512_256_Data },
{ "rmd160", NULL, "RMD160",
&RIPEMD160_TestOutput,
(DIGEST_Init*)&RIPEMD160_Init, (DIGEST_Update*)&RIPEMD160_Update,
(DIGEST_End*)&RIPEMD160_End, &RIPEMD160_Data, &RIPEMD160_Fd },
{ "skein256", "Skein256", &SKEIN256_TestOutput,
(DIGEST_End*)&RIPEMD160_End, &RIPEMD160_Data },
{ "skein256", NULL, "Skein256",
&SKEIN256_TestOutput,
(DIGEST_Init*)&SKEIN256_Init, (DIGEST_Update*)&SKEIN256_Update,
(DIGEST_End*)&SKEIN256_End, &SKEIN256_Data, &SKEIN256_Fd },
{ "skein512", "Skein512", &SKEIN512_TestOutput,
(DIGEST_End*)&SKEIN256_End, &SKEIN256_Data },
{ "skein512", NULL, "Skein512",
&SKEIN512_TestOutput,
(DIGEST_Init*)&SKEIN512_Init, (DIGEST_Update*)&SKEIN512_Update,
(DIGEST_End*)&SKEIN512_End, &SKEIN512_Data, &SKEIN512_Fd },
{ "skein1024", "Skein1024", &SKEIN1024_TestOutput,
(DIGEST_End*)&SKEIN512_End, &SKEIN512_Data },
{ "skein1024", NULL, "Skein1024",
&SKEIN1024_TestOutput,
(DIGEST_Init*)&SKEIN1024_Init, (DIGEST_Update*)&SKEIN1024_Update,
(DIGEST_End*)&SKEIN1024_End, &SKEIN1024_Data, &SKEIN1024_Fd }
(DIGEST_End*)&SKEIN1024_End, &SKEIN1024_Data },
{ }
};
static unsigned digest;
static unsigned malformed;
static bool gnu_emu = false;
static int digest = -1;
static unsigned int malformed;
static enum mode {
mode_bsd,
mode_gnu,
mode_perl,
} mode = mode_bsd;
static enum input_mode {
input_binary = '*',
input_text = ' ',
input_universal = 'U',
input_bits = '^',
} input_mode = input_binary;
static enum output_mode {
output_bare,
output_tagged,
output_reverse,
output_gnu,
} output_mode = output_tagged;
enum optval {
opt_end = -1,
/* ensure we don't collide with shortopts */
opt_dummy = CHAR_MAX,
/* BSD options */
opt_check,
opt_passthrough,
opt_quiet,
opt_reverse,
opt_string,
opt_time_trial,
opt_self_test,
/* GNU options */
opt_binary,
opt_help,
opt_ignore_missing,
opt_status,
opt_strict,
opt_tag,
opt_text,
opt_warn,
opt_version,
opt_zero,
/* Perl options */
opt_algorithm,
opt_bits,
opt_universal,
};
static const struct option bsd_longopts[] = {
{ "check", required_argument, 0, opt_check },
{ "passthrough", no_argument, 0, opt_passthrough },
{ "quiet", no_argument, 0, opt_quiet },
{ "reverse", no_argument, 0, opt_reverse },
{ "string", required_argument, 0, opt_string },
{ "time-trial", no_argument, 0, opt_time_trial },
{ "self-test", no_argument, 0, opt_self_test },
{ }
};
static const char *bsd_shortopts = "bc:pqrs:tx";
static const struct option gnu_longopts[] = {
{ "binary", no_argument, 0, opt_binary },
{ "check", no_argument, 0, opt_check },
{ "help", no_argument, 0, opt_help },
{ "ignore-missing", no_argument, 0, opt_ignore_missing },
{ "quiet", no_argument, 0, opt_quiet },
{ "status", no_argument, 0, opt_status },
{ "strict", no_argument, 0, opt_strict },
{ "tag", no_argument, 0, opt_tag },
{ "text", no_argument, 0, opt_text },
{ "version", no_argument, 0, opt_version },
{ "warn", no_argument, 0, opt_warn },
{ "zero", no_argument, 0, opt_zero },
{ }
};
static const char *gnu_shortopts = "bctwz";
static const struct option perl_longopts[] = {
{ "algorithm", required_argument, 0, opt_algorithm },
{ "check", required_argument, 0, opt_check },
{ "help", no_argument, 0, opt_help },
{ "ignore-missing", no_argument, 0, opt_ignore_missing },
{ "quiet", no_argument, 0, opt_quiet },
{ "status", no_argument, 0, opt_status },
{ "strict", no_argument, 0, opt_strict },
{ "tag", no_argument, 0, opt_tag },
{ "text", no_argument, 0, opt_text },
{ "UNIVERSAL", no_argument, 0, opt_universal },
{ "version", no_argument, 0, opt_version },
{ "warn", no_argument, 0, opt_warn },
{ "01", no_argument, 0, opt_bits },
{ }
};
static const char *perl_shortopts = "0a:bchqstUvw";
static void
MD5_Update(MD5_CTX *c, const unsigned char *data, size_t len)
@ -177,60 +292,70 @@ struct chksumrec {
static struct chksumrec *head = NULL;
static struct chksumrec **next = &head;
static unsigned int numrecs;
#define PADDING 7 /* extra padding for "SHA512t256 (...) = ...\n" style */
#define CHKFILELINELEN (HEX_DIGEST_LENGTH + MAXPATHLEN + PADDING)
static int gnu_check(const char *checksumsfile)
static void
gnu_check(const char *checksumsfile)
{
FILE *inp;
char linebuf[CHKFILELINELEN];
int linelen;
char *linebuf = NULL;
size_t linecap;
ssize_t linelen;
int lineno;
char *filename;
char *hashstr;
struct chksumrec *rec;
const char *digestname;
int digestnamelen;
int hashstrlen;
size_t digestnamelen;
size_t hashstrlen;
if ((inp = fopen(checksumsfile, "r")) == NULL)
if (strcmp(checksumsfile, "-") == 0)
inp = stdin;
else if ((inp = fopen(checksumsfile, "r")) == NULL)
err(1, "%s", checksumsfile);
digestname = Algorithm[digest].name;
digestnamelen = strlen(digestname);
hashstrlen = strlen(*(Algorithm[digest].TestOutput[0]));
lineno = 1;
while (fgets(linebuf, sizeof(linebuf), inp) != NULL) {
linelen = strlen(linebuf) - 1;
if (linelen <= 0)
break;
if (linebuf[linelen] != '\n')
errx(1, "malformed input line %d (len=%d)", lineno, linelen);
lineno = 0;
linecap = CHKFILELINELEN;
while ((linelen = getline(&linebuf, &linecap, inp)) > 0) {
lineno++;
while (linelen > 0 && linebuf[linelen - 1] == '\n')
linelen--;
linebuf[linelen] = '\0';
filename = linebuf + digestnamelen + 2;
hashstr = linebuf + linelen - hashstrlen;
/*
* supported formats:
* BSD: <DigestName> (<Filename>): <Digest>
* GNU: <Digest> [ *]<Filename>
* GNU: <Digest> [ *U^]<Filename>
*/
if (linelen >= digestnamelen + hashstrlen + 6 &&
if ((size_t)linelen >= digestnamelen + hashstrlen + 6 &&
strncmp(linebuf, digestname, digestnamelen) == 0 &&
strncmp(filename - 2, " (", 2) == 0 &&
strncmp(hashstr - 4, ") = ", 4) == 0) {
strncmp(hashstr - 4, ") = ", 4) == 0 &&
strspn(hashstr, "0123456789ABCDEFabcdef") == hashstrlen) {
*(hashstr - 4) = '\0';
} else if (linelen >= hashstrlen + 3 &&
} else if ((size_t)linelen >= hashstrlen + 3 &&
strspn(linebuf, "0123456789ABCDEFabcdef") == hashstrlen &&
linebuf[hashstrlen] == ' ') {
linebuf[hashstrlen] = '\0';
hashstr = linebuf;
filename = linebuf + hashstrlen + 1;
if (*filename == ' ' || *filename == '*')
filename++;
} else {
if (wflag) {
warnx("%s: %d: improperly formatted "
"%s checksum line",
checksumsfile, lineno,
mode == mode_perl ? "SHA" : digestname);
}
malformed++;
continue;
}
rec = malloc(sizeof (*rec));
rec = malloc(sizeof(*rec));
if (rec == NULL)
errx(1, "malloc failed");
rec->chksum = strdup(hashstr);
@ -240,10 +365,10 @@ static int gnu_check(const char *checksumsfile)
rec->next = NULL;
*next = rec;
next = &rec->next;
lineno++;
numrecs++;
}
fclose(inp);
return (lineno - 1);
if (inp != stdin)
fclose(inp);
}
/* Main driver.
@ -261,18 +386,19 @@ main(int argc, char *argv[])
#ifdef HAVE_CAPSICUM
cap_rights_t rights;
#endif
int ch, fd;
char *p, *string;
const struct option *longopts;
const char *shortopts;
FILE *f;
int i, opt;
char *p, *string = NULL;
char buf[HEX_DIGEST_LENGTH];
size_t len;
char *progname;
struct chksumrec *rec;
int numrecs;
if ((progname = strrchr(argv[0], '/')) == NULL)
progname = argv[0];
else
progname++;
if ((progname = strrchr(argv[0], '/')) == NULL)
progname = argv[0];
else
progname++;
/*
* GNU coreutils has a number of programs named *sum. These produce
@ -284,59 +410,150 @@ main(int argc, char *argv[])
* since that means 'text file' there (though it's a nop in coreutils
* on unix-like systems). The -c flag conflicts, so it's just disabled
* in this mode (though in the future it might be implemented).
*
* We also strive to be compatible with the shasum script which is
* included in Perl. It is roughly equivalent to the GNU offering
* but uses a command-line argument to select the algorithm, and
* supports only SHA-1 and SHA-2.
*/
len = strlen(progname);
if (len > 3 && strcmp(progname + len - 3, "sum") == 0) {
if (strcmp(progname, "shasum") == 0) {
mode = mode_perl;
input_mode = input_text;
output_mode = output_gnu;
digest = 1;
longopts = perl_longopts;
shortopts = perl_shortopts;
} else if (len > 3 && strcmp(progname + len - 3, "sum") == 0) {
len -= 3;
rflag = 1;
gnu_emu = true;
mode = mode_gnu;
input_mode = input_text;
/*
* The historical behavior in GNU emulation mode is
* output_reverse, however this not true to the original
* and the flag that was used to force the correct output
* was -b, which means something else (input_binary) in
* GNU land. Switch to the correct behavior.
*/
output_mode = output_gnu;
longopts = gnu_longopts;
shortopts = gnu_shortopts;
} else {
mode = mode_bsd;
input_mode = input_binary;
output_mode = output_tagged;
longopts = bsd_longopts;
shortopts = bsd_shortopts;
}
for (digest = 0; digest < sizeof(Algorithm)/sizeof(*Algorithm); digest++)
if (strncasecmp(Algorithm[digest].progname, progname, len) == 0)
break;
if (digest < 0) {
for (digest = 0; Algorithm[digest].progname != NULL; digest++)
if (strncasecmp(Algorithm[digest].progname, progname, len) == 0)
break;
if (digest == sizeof(Algorithm)/sizeof(*Algorithm))
digest = 0;
if (Algorithm[digest].progname == NULL)
digest = 0;
}
failed = 0;
failed = false;
checkAgainst = NULL;
checksFailed = 0;
skip = 0;
while ((ch = getopt(argc, argv, "bc:pqrs:tx")) != -1)
switch (ch) {
case 'b':
bflag = 1;
skip = false;
while ((opt = getopt_long(argc, argv, shortopts, longopts, NULL)) != opt_end)
switch (opt) {
case opt_bits:
case '0':
input_mode = input_bits;
break;
case opt_algorithm:
case 'a':
for (i = 0; Algorithm[i].progname != NULL; i++) {
if (Algorithm[i].perlname != NULL &&
strcasecmp(Algorithm[i].perlname, optarg) == 0) {
digest = i;
break;
}
}
if (Algorithm[i].progname == NULL)
usage(&Algorithm[digest]);
break;
case opt_binary:
case 'b':
/* in BSD mode, -b is now a no-op */
if (mode != mode_bsd)
input_mode = input_binary;
break;
case opt_check:
case 'c':
cflag = 1;
if (gnu_emu)
numrecs = gnu_check(optarg);
else
cflag = true;
if (mode == mode_bsd)
checkAgainst = optarg;
break;
case opt_passthrough:
case 'p':
pflag = 1;
pflag = true;
break;
case opt_quiet:
case 'q':
qflag = 1;
output_mode = output_bare;
qflag = true;
break;
case opt_reverse:
case 'r':
rflag = 1;
if (!qflag)
output_mode = output_reverse;
break;
case opt_status:
sflag = true;
break;
case opt_strict:
strict = 1;
break;
case 's':
sflag = 1;
if (mode == mode_perl) {
sflag = true;
break;
}
/* fall through */
case opt_string:
output_mode = output_bare;
string = optarg;
break;
case 't':
if (!gnu_emu) {
MDTimeTrial(&Algorithm[digest]);
skip = 1;
} /* else: text mode is a nop */
case opt_tag:
output_mode = output_tagged;
break;
case opt_time_trial:
case opt_text:
case 't':
if (mode == mode_bsd) {
MDTimeTrial(&Algorithm[digest]);
skip = true;
} else {
input_mode = input_text;
}
break;
case opt_universal:
case 'U':
input_mode = input_universal;
break;
case opt_version:
version();
break;
case opt_warn:
case 'w':
wflag = true;
break;
case opt_self_test:
case 'x':
MDTestSuite(&Algorithm[digest]);
skip = 1;
skip = true;
break;
case opt_zero:
case 'z':
endl = '\0';
break;
case opt_ignore_missing:
ignoreMissing = true;
break;
default:
usage(&Algorithm[digest]);
@ -349,12 +566,17 @@ main(int argc, char *argv[])
err(1, "unable to limit rights for stdio");
#endif
if (cflag && gnu_emu) {
if (cflag && mode != mode_bsd) {
/*
* Replace argv by an array of filenames from the digest file
* Read digest files into a linked list, then replace argv
* with an array of the filenames from that list.
*/
if (argc < 1)
usage(&Algorithm[digest]);
while (argc--)
gnu_check(*argv++);
argc = 0;
argv = (char**)calloc(sizeof(char *), numrecs + 1);
argv = calloc(sizeof(char *), numrecs + 1);
for (rec = head; rec != NULL; rec = rec->next) {
argv[argc] = rec->filename;
argc++;
@ -365,10 +587,27 @@ main(int argc, char *argv[])
if (*argv) {
do {
if ((fd = open(*argv, O_RDONLY)) < 0) {
warn("%s", *argv);
failed++;
if (cflag && gnu_emu)
struct stat st;
const char *filename = *argv;
const char *filemode = "rb";
if (*filename == '*' ||
*filename == ' ' ||
*filename == 'U' ||
*filename == '^') {
if (lstat(filename, &st) != 0) {
input_mode = (int)*filename;
filename++;
}
}
if (input_mode == input_text)
filemode = "r";
if ((f = fopen(filename, filemode)) == NULL) {
if (errno != ENOENT || !(cflag && ignoreMissing)) {
warn("%s", filename);
failed = true;
}
if (cflag && mode != mode_bsd)
rec = rec->next;
continue;
}
@ -381,38 +620,46 @@ main(int argc, char *argv[])
if (*(argv + 1) == NULL) {
#ifdef HAVE_CAPSICUM
cap_rights_init(&rights, CAP_READ);
if (caph_rights_limit(fd, &rights) < 0 ||
if (caph_rights_limit(fileno(f), &rights) < 0 ||
caph_enter() < 0)
err(1, "capsicum");
#endif
}
if (cflag && gnu_emu) {
if (cflag && mode != mode_bsd) {
checkAgainst = rec->chksum;
rec = rec->next;
}
p = Algorithm[digest].Fd(fd, buf);
(void)close(fd);
MDOutput(&Algorithm[digest], p, argv);
p = MDInput(&Algorithm[digest], f, buf, false);
(void)fclose(f);
MDOutput(&Algorithm[digest], p, filename);
} while (*++argv);
} else if (!cflag && !sflag && !skip) {
} else if (!cflag && string == NULL && !skip) {
#ifdef HAVE_CAPSICUM
if (caph_limit_stdin() < 0 || caph_enter() < 0)
err(1, "capsicum");
#endif
p = MDFilter(&Algorithm[digest], (char *)&buf, pflag);
MDOutput(&Algorithm[digest], p, NULL);
} else if (sflag) {
if (mode == mode_bsd)
output_mode = output_bare;
p = MDInput(&Algorithm[digest], stdin, buf, pflag);
MDOutput(&Algorithm[digest], p, "-");
} else if (string != NULL) {
len = strlen(string);
p = Algorithm[digest].Data(string, len, buf);
MDOutput(&Algorithm[digest], p, &string);
MDOutput(&Algorithm[digest], p, string);
}
if (gnu_emu) {
if (malformed > 0)
if (cflag && mode != mode_bsd) {
if (!sflag && malformed > 1)
warnx("WARNING: %d lines are improperly formatted", malformed);
if (checksFailed > 0)
else if (!sflag && malformed > 0)
warnx("WARNING: %d line is improperly formatted", malformed);
if (!sflag && checksFailed > 1)
warnx("WARNING: %d computed checksums did NOT match", checksFailed);
else if (!sflag && checksFailed > 0)
warnx("WARNING: %d computed checksum did NOT match", checksFailed);
if (checksFailed != 0 || (strict && malformed > 0))
return (1);
}
if (failed != 0)
if (failed)
return (1);
if (checksFailed != 0)
return (2);
@ -420,48 +667,130 @@ main(int argc, char *argv[])
return (0);
}
/*
* Common input handling
*/
static char *
MDInput(const Algorithm_t *alg, FILE *f, char *buf, bool tee)
{
char block[4096];
DIGEST_CTX context;
char *end, *p, *q;
size_t len;
int bits;
uint8_t byte;
bool cr = false;
alg->Init(&context);
while ((len = fread(block, 1, sizeof(block), f)) > 0) {
switch (input_mode) {
case input_binary:
case input_text:
if (tee && fwrite(block, 1, len, stdout) != (size_t)len)
err(1, "stdout");
alg->Update(&context, block, len);
break;
case input_universal:
end = block + len;
for (p = q = block; p < end; p = q) {
if (cr) {
if (*p == '\n')
p++;
if (tee && putchar('\n') == EOF)
err(1, "stdout");
alg->Update(&context, "\n", 1);
cr = false;
}
for (q = p; q < end && *q != '\r'; q++)
/* nothing */;
if (q > p) {
if (tee &&
fwrite(p, 1, q - p, stdout) !=
(size_t)(q - p))
err(1, "stdout");
alg->Update(&context, p, q - p);
}
if (q < end && *q == '\r') {
cr = true;
q++;
}
}
break;
case input_bits:
end = block + len;
bits = byte = 0;
for (p = block; p < end; p++) {
if (*p == '0' || *p == '1') {
byte <<= 1;
byte |= *p - '0';
if (++bits == 8) {
if (tee && putchar(byte) == EOF)
err(1, "stdout");
alg->Update(&context, &byte, 1);
bits = byte = 0;
}
}
}
break;
}
}
if (len < 0) {
alg->End(&context, buf);
return (NULL);
}
if (cr) {
if (tee && putchar('\n') == EOF)
err(1, "stdout");
alg->Update(&context, "\n", 1);
}
if (input_mode == input_bits && bits != 0)
errx(1, "input length was not a multiple of 8");
return (alg->End(&context, buf));
}
/*
* Common output handling
*/
static void
MDOutput(const Algorithm_t *alg, char *p, char *argv[])
MDOutput(const Algorithm_t *alg, char *p, const char *name)
{
bool checkfailed = false;
if (p == NULL) {
warn("%s", *argv);
warn("%s", name);
failed++;
} else if (cflag && mode != mode_bsd) {
checkfailed = strcasecmp(checkAgainst, p) != 0;
if (!sflag && (!qflag || checkfailed))
printf("%s: %s%c", name, checkfailed ? "FAILED" : "OK",
endl);
} else {
/*
* If argv is NULL we are reading from stdin, where the output
* format has always been just the hash.
*/
if (cflag && gnu_emu) {
checkfailed = strcasecmp(checkAgainst, p) != 0;
if (!qflag || checkfailed)
printf("%s: %s\n", *argv, checkfailed ? "FAILED" : "OK");
} else if (qflag || argv == NULL) {
printf("%s\n", p);
if (cflag)
checkfailed = strcasecmp(checkAgainst, p) != 0;
} else {
if (rflag)
if (gnu_emu)
if (bflag)
printf("%s *%s", p, *argv);
else
printf("%s %s", p, *argv);
else
printf("%s %s", p, *argv);
else
printf("%s (%s) = %s", alg->name, *argv, p);
if (checkAgainst) {
checkfailed = strcasecmp(checkAgainst, p) != 0;
if (!qflag && checkfailed)
printf(" [ Failed ]");
switch (output_mode) {
case output_bare:
printf("%s", p);
break;
case output_gnu:
printf("%s %c%s", p, input_mode, name);
break;
case output_reverse:
printf("%s %s", p, name);
break;
case output_tagged:
if (mode == mode_perl &&
strncmp(alg->name, "SHA512t", 7) == 0) {
printf("%.6s/%s", alg->name, alg->name + 7);
} else {
printf("%s", alg->name);
}
printf("\n");
printf(" (%s) = %s", name, p);
break;
}
if (checkAgainst) {
checkfailed = strcasecmp(checkAgainst, p) != 0;
if (!qflag && checkfailed)
printf(" [ Failed ]");
}
printf("%c", endl);
}
if (checkfailed)
checksFailed++;
@ -676,35 +1005,31 @@ MDTestSuite(const Algorithm_t *alg)
}
}
/*
* Digests the standard input and prints the result.
*/
static char *
MDFilter(const Algorithm_t *alg, char *buf, int tee)
{
DIGEST_CTX context;
unsigned int len;
unsigned char buffer[BUFSIZ];
char *p;
alg->Init(&context);
while ((len = fread(buffer, 1, BUFSIZ, stdin))) {
if (tee && len != fwrite(buffer, 1, len, stdout))
err(1, "stdout");
alg->Update(&context, buffer, len);
}
p = alg->End(&context, buf);
return (p);
}
static void
usage(const Algorithm_t *alg)
{
if (gnu_emu)
fprintf(stderr, "usage: %ssum [-pqrtx] [-c file] [-s string] [files ...]\n", alg->progname);
else
fprintf(stderr, "usage: %s [-pqrtx] [-c string] [-s string] [files ...]\n", alg->progname);
switch (mode) {
case mode_gnu:
fprintf(stderr, "usage: %ssum [-bctwz] [files ...]\n", alg->progname);
break;
case mode_perl:
fprintf(stderr, "usage: shasum [-0bchqstUvw] [-a alg] [files ...]\n");
break;
default:
fprintf(stderr, "usage: %s [-pqrtx] [-c string] [-s string] [files ...]\n",
alg->progname);
}
exit(1);
}
static void
version(void)
{
if (mode == mode_gnu)
printf("%s (FreeBSD) ", progname);
printf("%d.%d\n",
__FreeBSD_version / 100000,
(__FreeBSD_version / 1000) % 100);
exit(0);
}

View File

View File

@ -1 +0,0 @@
cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e

View File

@ -1 +0,0 @@
cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e

View File

@ -1 +0,0 @@
a

View File

@ -1 +0,0 @@
a1f40fc92da241694750979ee6cf582f2d5d7d28e18335de05abc54d0560e0f5302860c652bf08d560252aa5e74210546f369fbbbce8c12cfc7957b2652fe9a75

View File

@ -1 +0,0 @@
a1f40fc92da241694750979ee6cf582f2d5d7d28e18335de05abc54d0560e0f5302860c652bf08d560252aa5e74210546f369fbbbce8c12cfc7957b2652fe9a75

View File

@ -1 +0,0 @@
abc

View File

@ -1 +0,0 @@
abcddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f

View File

@ -1 +0,0 @@
abcddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f

View File

@ -1 +0,0 @@
message digest

View File

@ -1 +0,0 @@
message digest107dbf389d9e9f71a3a95f6c055b9251bc5268c2be16d6c13492ea45b0199f3309e16455ab1e96118e8a905d5597b72038ddb372a89826046de66687bb420e7c

View File

@ -1 +0,0 @@
message digest107dbf389d9e9f71a3a95f6c055b9251bc5268c2be16d6c13492ea45b0199f3309e16455ab1e96118e8a905d5597b72038ddb372a89826046de66687bb420e7c

View File

@ -1 +0,0 @@
abcdefghijklmnopqrstuvwxyz

View File

@ -1 +0,0 @@
abcdefghijklmnopqrstuvwxyz4dbff86cc2ca1bae1e16468a05cb9881c97f1753bce3619034898faa1aabe429955a1bf8ec483d7421fe3c1646613a59ed5441fb0f321389f77f48a879c7b1f1

View File

@ -1 +0,0 @@
abcdefghijklmnopqrstuvwxyz4dbff86cc2ca1bae1e16468a05cb9881c97f1753bce3619034898faa1aabe429955a1bf8ec483d7421fe3c1646613a59ed5441fb0f321389f77f48a879c7b1f1

View File

@ -1 +0,0 @@
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789

View File

@ -1 +0,0 @@
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567891e07be23c26a86ea37ea810c8ec7809352515a970e9253c26f536cfc7a9996c45c8370583e0a78fa4a90041d71a4ceab7423f19c71b9d5a3e01249f0bebd5894

View File

@ -1 +0,0 @@
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567891e07be23c26a86ea37ea810c8ec7809352515a970e9253c26f536cfc7a9996c45c8370583e0a78fa4a90041d71a4ceab7423f19c71b9d5a3e01249f0bebd5894

View File

@ -1 +0,0 @@
12345678901234567890123456789012345678901234567890123456789012345678901234567890

View File

@ -1 +0,0 @@
1234567890123456789012345678901234567890123456789012345678901234567890123456789072ec1ef1124a45b047e8b7c75a932195135bb61de24ec0d1914042246e0aec3a2354e093d76f3048b456764346900cb130d2a4fd5dd16abb5e30bcb850dee843

View File

@ -1 +0,0 @@
1234567890123456789012345678901234567890123456789012345678901234567890123456789072ec1ef1124a45b047e8b7c75a932195135bb61de24ec0d1914042246e0aec3a2354e093d76f3048b456764346900cb130d2a4fd5dd16abb5e30bcb850dee843

View File

@ -1 +0,0 @@
MD5 has not yet (2001-09-03) been broken, but sufficient attacks have been made that its security is in some doubt

View File

@ -1 +0,0 @@
MD5 has not yet (2001-09-03) been broken, but sufficient attacks have been made that its security is in some doubte8a835195e039708b13d9131e025f4441dbdc521ce625f245a436dcd762f54bf5cb298d96235e6c6a304e087ec8189b9512cbdf6427737ea82793460c367b9c3

View File

@ -1 +0,0 @@
MD5 has not yet (2001-09-03) been broken, but sufficient attacks have been made that its security is in some doubte8a835195e039708b13d9131e025f4441dbdc521ce625f245a436dcd762f54bf5cb298d96235e6c6a304e087ec8189b9512cbdf6427737ea82793460c367b9c3

View File

@ -4,41 +4,6 @@
PACKAGE= tests
TEST_DIR= ${SRCTOP}/sbin/md5/tests
.PATH: ${TEST_DIR}
FILESGROUPS+= FILESinputs
FILESinputsPACKAGE= ${PACKAGE}
FILESinputsDIR= ${TESTSDIR}
FILESinputs!= echo ${TEST_DIR}/*.inp ${TEST_DIR}/*.in
FILESGROUPS+= FILESchkfiles
FILESchkfilesPACKAGE= ${PACKAGE}
FILESchkfilesDIR= ${TESTSDIR}
FILESchkfiles!= echo ${TEST_DIR}/*.chk
FILESGROUPS+= FILESdigests
FILESdigestsPACKAGE= ${PACKAGE}
FILESdigestsDIR= ${TESTSDIR}
FILESdigests!= echo ${TEST_DIR}/*.digest
FILESGROUPS+= FILESparam
FILESparamPACKAGE= ${PACKAGE}
FILESparamDIR= ${TESTSDIR}
FILESparam!= echo ${TEST_DIR}/*.txt
ATF_TESTS_SH+= md5_test
PLAIN_TESTS_SH+= self-test
PLAIN_TESTS_SH+= bsd-c-test
PLAIN_TESTS_SH+= bsd-p-test
PLAIN_TESTS_SH+= bsd-s-test
PLAIN_TESTS_SH+= coreutils-c-test
.SUFFIXES: .SH
.SH.sh:
sed 's|%%TESTSBASE%%|${TESTSBASE}|g' ${.ALLSRC} > ${.TARGET}
.include <bsd.test.mk>

View File

@ -1,23 +0,0 @@
#!/bin/sh
exitcode=0
testloop () {
opt=$1
while read algorithm; do
n=0
for f in %%TESTSBASE%%/sbin/md5/*.inp; do
n=$((n + 1))
expected=$(head -$n %%TESTSBASE%%/sbin/md5/$algorithm.digest | tail -1 | cut -w -f4)
hash=$($algorithm $opt -c "$expected" $f) || exitcode=1
done
done < %%TESTSBASE%%/sbin/md5/algorithms.txt
}
testloop ""
testloop -q
testloop -r
testloop -qr
exit $exitcode

View File

@ -1,24 +0,0 @@
#!/bin/sh
exitcode=0
testloop () {
opt=$1
sum=$2
for algorithm in sha512; do
for f in %%TESTSBASE%%/sbin/md5/*.inp; do
outbase=$(basename $f .inp)
$algorithm$sum $opt -p < $f > $outbase.out
diff %%TESTSBASE%%/sbin/md5/$outbase.$algorithm$sum-p.chk $outbase.out || exitcode=1
done
done
}
testloop "" ""
testloop -q ""
testloop -qr ""
testloop "" sum
testloop -q sum
exit $exitcode

View File

@ -1,30 +0,0 @@
#!/bin/sh
exitcode=0
testloop () {
opt=$1
sum=$2
field=$3
while read algorithm; do
n=0
for f in %%TESTSBASE%%/sbin/md5/*.inp; do
n=$((n + 1))
read text < $f
hash=$($algorithm$sum $opt -s "$text" | cut -d= -f$field)
hash=$(echo $hash | cut -w -f1)
expected=$(head -$n %%TESTSBASE%%/sbin/md5/$algorithm.digest | tail -1 | cut -w -f4)
[ "$hash" = "$expected" ] || exitcode=1
done
done < %%TESTSBASE%%/sbin/md5/algorithms.txt
}
testloop "" "" 2
testloop -q "" 1
testloop -r "" 1
testloop -qr "" 1
testloop "" sum 1
testloop -q sum 1
exit $exitcode

View File

@ -1,21 +0,0 @@
#!/bin/sh
/bin/cp %%TESTSBASE%%/sbin/md5/*.inp . || exit 127
exitcode=0
testloop () {
opt=$1
while read algorithm; do
${algorithm}sum $opt -c %%TESTSBASE%%/sbin/md5/${algorithm}.digest || exitcode=1
${algorithm}sum $opt -c %%TESTSBASE%%/sbin/md5/${algorithm}sum.digest || exitcode=1
done < %%TESTSBASE%%/sbin/md5/algorithms.txt
}
testloop ""
testloop -q
testloop -r
testloop -qr
exit $exitcode

View File

@ -1,8 +0,0 @@
MD5 (1.inp) = d41d8cd98f00b204e9800998ecf8427e
MD5 (2.inp) = 0cc175b9c0f1b6a831c399e269772661
MD5 (3.inp) = 900150983cd24fb0d6963f7d28e17f72
MD5 (4.inp) = f96b697d7cb7938d525a2f31aaf161d0
MD5 (5.inp) = c3fcd3d76192e4007dfb496cca67e13b
MD5 (6.inp) = d174ab98d277d9f5a5611c2c9f419d9f
MD5 (7.inp) = 57edf4a22be3c955ac49da2e2107b67a
MD5 (8.inp) = b50663f41d44d92171cb9976bc118538

View File

@ -2,6 +2,7 @@
# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2022 Kyle Evans <kevans@FreeBSD.org>
# Copyright (c) 2023 Klara, Inc.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
@ -25,20 +26,307 @@
# SUCH DAMAGE.
#
atf_test_case sum_bflag
sum_bflag_body()
n=8
algorithms="md5 sha1 sha224 sha256 sha384 sha512 sha512t224 sha512t256 rmd160 skein256 skein512 skein1024"
name_bsd_md5="MD5"
name_bsd_sha1="SHA1"
name_bsd_sha224="SHA224"
name_bsd_sha256="SHA256"
name_bsd_sha384="SHA384"
name_bsd_sha512="SHA512"
name_bsd_sha512t224="SHA512t224"
name_bsd_sha512t256="SHA512t256"
name_bsd_rmd160="RMD160"
name_bsd_skein256="Skein256"
name_bsd_skein512="Skein512"
name_bsd_skein1024="Skein1024"
name_perl_sha1="SHA1"
name_perl_sha224="SHA224"
name_perl_sha256="SHA256"
name_perl_sha384="SHA384"
name_perl_sha512="SHA512"
name_perl_sha512t224="SHA512/224"
name_perl_sha512t256="SHA512/256"
alg_perl_sha1=""
alg_perl_sha224="-a 224"
alg_perl_sha256="-a 256"
alg_perl_sha384="-a 384"
alg_perl_sha512="-a 512"
alg_perl_sha512t224="-a 512224"
alg_perl_sha512t256="-a 512256"
inp_1=""
inp_2="a"
inp_3="abc"
inp_4="message digest"
inp_5="abcdefghijklmnopqrstuvwxyz"
inp_6="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
inp_7="12345678901234567890123456789012345678901234567890123456789012345678901234567890"
inp_8="MD5 has not yet (2001-09-03) been broken, but sufficient attacks have been made that its security is in some doubt"
out_1_md5="d41d8cd98f00b204e9800998ecf8427e"
out_2_md5="0cc175b9c0f1b6a831c399e269772661"
out_3_md5="900150983cd24fb0d6963f7d28e17f72"
out_4_md5="f96b697d7cb7938d525a2f31aaf161d0"
out_5_md5="c3fcd3d76192e4007dfb496cca67e13b"
out_6_md5="d174ab98d277d9f5a5611c2c9f419d9f"
out_7_md5="57edf4a22be3c955ac49da2e2107b67a"
out_8_md5="b50663f41d44d92171cb9976bc118538"
out_1_sha1="da39a3ee5e6b4b0d3255bfef95601890afd80709"
out_2_sha1="86f7e437faa5a7fce15d1ddcb9eaeaea377667b8"
out_3_sha1="a9993e364706816aba3e25717850c26c9cd0d89d"
out_4_sha1="c12252ceda8be8994d5fa0290a47231c1d16aae3"
out_5_sha1="32d10c7b8cf96570ca04ce37f2a19d84240d3a89"
out_6_sha1="761c457bf73b14d27e9e9265c46f4b4dda11f940"
out_7_sha1="50abf5706a150990a08b2c5ea40fa0e585554732"
out_8_sha1="18eca4333979c4181199b7b4fab8786d16cf2846"
out_1_sha224="d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f"
out_2_sha224="abd37534c7d9a2efb9465de931cd7055ffdb8879563ae98078d6d6d5"
out_3_sha224="23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7"
out_4_sha224="2cb21c83ae2f004de7e81c3c7019cbcb65b71ab656b22d6d0c39b8eb"
out_5_sha224="45a5f72c39c5cff2522eb3429799e49e5f44b356ef926bcf390dccc2"
out_6_sha224="bff72b4fcb7d75e5632900ac5f90d219e05e97a7bde72e740db393d9"
out_7_sha224="b50aecbe4e9bb0b57bc5f3ae760a8e01db24f203fb3cdcd13148046e"
out_8_sha224="5ae55f3779c8a1204210d7ed7689f661fbe140f96f272ab79e19d470"
out_1_sha256="e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
out_2_sha256="ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb"
out_3_sha256="ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad"
out_4_sha256="f7846f55cf23e14eebeab5b4e1550cad5b509e3348fbc4efa3a1413d393cb650"
out_5_sha256="71c480df93d6ae2f1efad1447c66c9525e316218cf51fc8d9ed832f2daf18b73"
out_6_sha256="db4bfcbd4da0cd85a60c3c37d3fbd8805c77f15fc6b1fdfe614ee0a7c8fdb4c0"
out_7_sha256="f371bc4a311f2b009eef952dd83ca80e2b60026c8e935592d0f9c308453c813e"
out_8_sha256="e6eae09f10ad4122a0e2a4075761d185a272ebd9f5aa489e998ff2f09cbfdd9f"
out_1_sha384="38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b"
out_2_sha384="54a59b9f22b0b80880d8427e548b7c23abd873486e1f035dce9cd697e85175033caa88e6d57bc35efae0b5afd3145f31"
out_3_sha384="cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7"
out_4_sha384="473ed35167ec1f5d8e550368a3db39be54639f828868e9454c239fc8b52e3c61dbd0d8b4de1390c256dcbb5d5fd99cd5"
out_5_sha384="feb67349df3db6f5924815d6c3dc133f091809213731fe5c7b5f4999e463479ff2877f5f2936fa63bb43784b12f3ebb4"
out_6_sha384="1761336e3f7cbfe51deb137f026f89e01a448e3b1fafa64039c1464ee8732f11a5341a6f41e0c202294736ed64db1a84"
out_7_sha384="b12932b0627d1c060942f5447764155655bd4da0c9afa6dd9b9ef53129af1b8fb0195996d2de9ca0df9d821ffee67026"
out_8_sha384="99428d401bf4abcd4ee0695248c9858b7503853acfae21a9cffa7855f46d1395ef38596fcd06d5a8c32d41a839cc5dfb"
out_1_sha512="cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e"
out_2_sha512="1f40fc92da241694750979ee6cf582f2d5d7d28e18335de05abc54d0560e0f5302860c652bf08d560252aa5e74210546f369fbbbce8c12cfc7957b2652fe9a75"
out_3_sha512="ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f"
out_4_sha512="107dbf389d9e9f71a3a95f6c055b9251bc5268c2be16d6c13492ea45b0199f3309e16455ab1e96118e8a905d5597b72038ddb372a89826046de66687bb420e7c"
out_5_sha512="4dbff86cc2ca1bae1e16468a05cb9881c97f1753bce3619034898faa1aabe429955a1bf8ec483d7421fe3c1646613a59ed5441fb0f321389f77f48a879c7b1f1"
out_6_sha512="1e07be23c26a86ea37ea810c8ec7809352515a970e9253c26f536cfc7a9996c45c8370583e0a78fa4a90041d71a4ceab7423f19c71b9d5a3e01249f0bebd5894"
out_7_sha512="72ec1ef1124a45b047e8b7c75a932195135bb61de24ec0d1914042246e0aec3a2354e093d76f3048b456764346900cb130d2a4fd5dd16abb5e30bcb850dee843"
out_8_sha512="e8a835195e039708b13d9131e025f4441dbdc521ce625f245a436dcd762f54bf5cb298d96235e6c6a304e087ec8189b9512cbdf6427737ea82793460c367b9c3"
out_1_sha512t224="6ed0dd02806fa89e25de060c19d3ac86cabb87d6a0ddd05c333b84f4"
out_2_sha512t224="d5cdb9ccc769a5121d4175f2bfdd13d6310e0d3d361ea75d82108327"
out_3_sha512t224="4634270f707b6a54daae7530460842e20e37ed265ceee9a43e8924aa"
out_4_sha512t224="ad1a4db188fe57064f4f24609d2a83cd0afb9b398eb2fcaeaae2c564"
out_5_sha512t224="ff83148aa07ec30655c1b40aff86141c0215fe2a54f767d3f38743d8"
out_6_sha512t224="a8b4b9174b99ffc67d6f49be9981587b96441051e16e6dd036b140d3"
out_7_sha512t224="ae988faaa47e401a45f704d1272d99702458fea2ddc6582827556dd2"
out_8_sha512t224="b3c3b945249b0c8c94aba76ea887bcaad5401665a1fbeb384af4d06b"
out_1_sha512t256="c672b8d1ef56ed28ab87c3622c5114069bdd3ad7b8f9737498d0c01ecef0967a"
out_2_sha512t256="455e518824bc0601f9fb858ff5c37d417d67c2f8e0df2babe4808858aea830f8"
out_3_sha512t256="53048e2681941ef99b2e29b76b4c7dabe4c2d0c634fc6d46e0e2f13107e7af23"
out_4_sha512t256="0cf471fd17ed69d990daf3433c89b16d63dec1bb9cb42a6094604ee5d7b4e9fb"
out_5_sha512t256="fc3189443f9c268f626aea08a756abe7b726b05f701cb08222312ccfd6710a26"
out_6_sha512t256="cdf1cc0effe26ecc0c13758f7b4a48e000615df241284185c39eb05d355bb9c8"
out_7_sha512t256="2c9fdbc0c90bdd87612ee8455474f9044850241dc105b1e8b94b8ddf5fac9148"
out_8_sha512t256="dd095fc859b336c30a52548b3dc59fcc0d1be8616ebcf3368fad23107db2d736"
out_1_rmd160="9c1185a5c5e9fc54612808977ee8f548b2258d31"
out_2_rmd160="0bdc9d2d256b3ee9daae347be6f4dc835a467ffe"
out_3_rmd160="8eb208f7e05d987a9b044a8e98c6b087f15a0bfc"
out_4_rmd160="5d0689ef49d2fae572b881b123a85ffa21595f36"
out_5_rmd160="f71c27109c692c1b56bbdceb5b9d2865b3708dbc"
out_6_rmd160="b0e20b6e3116640286ed3a87a5713079b21f5189"
out_7_rmd160="9b752e45573d4b39f4dbd3323cab82bf63326bfb"
out_8_rmd160="5feb69c6bf7c29d95715ad55f57d8ac5b2b7dd32"
out_1_skein256="c8877087da56e072870daa843f176e9453115929094c3a40c463a196c29bf7ba"
out_2_skein256="7fba44ff1a31d71a0c1f82e6e82fb5e9ac6c92a39c9185b9951fed82d82fe635"
out_3_skein256="258bdec343b9fde1639221a5ae0144a96e552e5288753c5fec76c05fc2fc1870"
out_4_skein256="4d2ce0062b5eb3a4db95bc1117dd8aa014f6cd50fdc8e64f31f7d41f9231e488"
out_5_skein256="46d8440685461b00e3ddb891b2ecc6855287d2bd8834a95fb1c1708b00ea5e82"
out_6_skein256="7c5eb606389556b33d34eb2536459528dc0af97adbcd0ce273aeb650f598d4b2"
out_7_skein256="4def7a7e5464a140ae9c3a80279fbebce4bd00f9faad819ab7e001512f67a10d"
out_8_skein256="d9c017dbe355f318d036469eb9b5fbe129fc2b5786a9dc6746a516eab6fe0126"
out_1_skein512="bc5b4c50925519c290cc634277ae3d6257212395cba733bbad37a4af0fa06af41fca7903d06564fea7a2d3730dbdb80c1f85562dfcc070334ea4d1d9e72cba7a"
out_2_skein512="b1cd8d33f61b3737adfd59bb13ad82f4a9548e92f22956a8976cca3fdb7fee4fe91698146c4197cec85d38b83c5d93bdba92c01fd9a53870d0c7f967bc62bdce"
out_3_skein512="8f5dd9ec798152668e35129496b029a960c9a9b88662f7f9482f110b31f9f93893ecfb25c009baad9e46737197d5630379816a886aa05526d3a70df272d96e75"
out_4_skein512="15b73c158ffb875fed4d72801ded0794c720b121c0c78edf45f900937e6933d9e21a3a984206933d504b5dbb2368000411477ee1b204c986068df77886542fcc"
out_5_skein512="23793ad900ef12f9165c8080da6fdfd2c8354a2929b8aadf83aa82a3c6470342f57cf8c035ec0d97429b626c4d94f28632c8f5134fd367dca5cf293d2ec13f8c"
out_6_skein512="0c6bed927e022f5ddcf81877d42e5f75798a9f8fd3ede3d83baac0a2f364b082e036c11af35fe478745459dd8f5c0b73efe3c56ba5bb2009208d5a29cc6e469c"
out_7_skein512="2ca9fcffb3456f297d1b5f407014ecb856f0baac8eb540f534b1f187196f21e88f31103128c2f03fcc9857d7a58eb66f9525e2302d88833ee069295537a434ce"
out_8_skein512="1131f2aaa0e97126c9314f9f968cc827259bbfabced2943bb8c9274448998fb3b78738b4580dd500c76105fd3c03e465e1414f2c29664286b1f79d3e51128125"
out_1_skein1024="0fff9563bb3279289227ac77d319b6fff8d7e9f09da1247b72a0a265cd6d2a62645ad547ed8193db48cff847c06494a03f55666d3b47eb4c20456c9373c86297d630d5578ebd34cb40991578f9f52b18003efa35d3da6553ff35db91b81ab890bec1b189b7f52cb2a783ebb7d823d725b0b4a71f6824e88f68f982eefc6d19c6"
out_2_skein1024="6ab4c4ba9814a3d976ec8bffa7fcc638ceba0544a97b3c98411323ffd2dc936315d13dc93c13c4e88cda6f5bac6f2558b2d8694d3b6143e40d644ae43ca940685cb37f809d3d0550c56cba8036dee729a4f8fb960732e59e64d57f7f7710f8670963cdcdc95b41daab4855fcf8b6762a64b173ee61343a2c7689af1d293eba97"
out_3_skein1024="35a599a0f91abcdb4cb73c19b8cb8d947742d82c309137a7caed29e8e0a2ca7a9ff9a90c34c1908cc7e7fd99bb15032fb86e76df21b72628399b5f7c3cc209d7bb31c99cd4e19465622a049afbb87c03b5ce3888d17e6e667279ec0aa9b3e2712624c01b5f5bbe1a564220bdcf6990af0c2539019f313fdd7406cca3892a1f1f"
out_4_skein1024="ea891f5268acd0fac97467fc1aa89d1ce8681a9992a42540e53babee861483110c2d16f49e73bac27653ff173003e40cfb08516cd34262e6af95a5d8645c9c1abb3e813604d508b8511b30f9a5c1b352aa0791c7d2f27b2706dccea54bc7de6555b5202351751c3299f97c09cf89c40f67187e2521c0fad82b30edbb224f0458"
out_5_skein1024="f23d95c2a25fbcd0e797cd058fec39d3c52d2b5afd7a9af1df934e63257d1d3dcf3246e7329c0f1104c1e51e3d22e300507b0c3b9f985bb1f645ef49835080536becf83788e17fed09c9982ba65c3cb7ffe6a5f745b911c506962adf226e435c42f6f6bc08d288f9c810e807e3216ef444f3db22744441deefa4900982a1371f"
out_6_skein1024="cf3889e8a8d11bfd3938055d7d061437962bc5eac8ae83b1b71c94be201b8cf657fdbfc38674997a008c0c903f56a23feb3ae30e012377f1cfa080a9ca7fe8b96138662653fb3335c7d06595bf8baf65e215307532094cfdfa056bd8052ab792a3944a2adaa47b30335b8badb8fe9eb94fe329cdca04e58bbc530f0af709f469"
out_7_skein1024="cf21a613620e6c119eca31fdfaad449a8e02f95ca256c21d2a105f8e4157048f9fe1e897893ea18b64e0e37cb07d5ac947f27ba544caf7cbc1ad094e675aed77a366270f7eb7f46543bccfa61c526fd628408058ed00ed566ac35a9761d002e629c4fb0d430b2f4ad016fcc49c44d2981c4002da0eecc42144160e2eaea4855a"
out_8_skein1024="e6799b78db54085a2be7ff4c8007f147fa88d326abab30be0560b953396d8802feee9a15419b48a467574e9283be15685ca8a079ee52b27166b64dd70b124b1d4e4f6aca37224c3f2685e67e67baef9f94b905698adc794a09672aba977a61b20966912acdb08c21a2c37001785355dc884751a21f848ab36e590331ff938138"
for alg in $algorithms ; do
eval "
atf_test_case self_test_${alg}
self_test_${alg}_head() {
atf_set descr \"self-test for \$name_bsd_${alg}\"
atf_set require.progs \"${alg}\"
}
self_test_${alg}_body() {
atf_check -o ignore ${alg} --self-test
}
"
for i in $(seq $n) ; do
eval "
atf_test_case bsd_${alg}_vec${i}
bsd_${alg}_vec${i}_head() {
atf_set descr \"BSD mode \$name_bsd_${alg} test vector ${i}\"
atf_set require.progs \"${alg}\"
}
bsd_${alg}_vec${i}_body() {
printf '%s' \"\$inp_${i}\" >in
atf_check -o inline:\"\$out_${i}_${alg}\n\" ${alg} <in
atf_check -o inline:\"\$name_bsd_${alg} (in) = \$out_${i}_${alg}\n\" ${alg} in
atf_check -o inline:\"\$out_${i}_${alg} in\n\" ${alg} -r in
# -q overrides -r regardless of order
for opt in -q -qr -rq ; do
atf_check -o inline:\"\$out_${i}_${alg}\n\" ${alg} \${opt} in
done
}
"
eval "
atf_test_case gnu_${alg}_vec${i}
gnu_${alg}_vec${i}_head() {
atf_set descr \"GNU mode \$name_bsd_${alg} test vector ${i}\"
atf_set require.progs \"${alg}sum\"
}
gnu_${alg}_vec${i}_body() {
printf '%s' \"\$inp_${i}\" >in
atf_check -o inline:\"\$out_${i}_${alg} -\n\" ${alg}sum <in
atf_check -o inline:\"\$out_${i}_${alg} *-\n\" ${alg}sum -b <in
atf_check -o inline:\"\$out_${i}_${alg} in\n\" ${alg}sum in
atf_check -o inline:\"\$out_${i}_${alg} *in\n\" ${alg}sum -b in
atf_check -o inline:\"\$name_bsd_${alg} (in) = \$out_${i}_${alg}\n\" ${alg}sum --tag in
atf_check -o inline:\"\$out_${i}_${alg} in\0\" ${alg}sum -z in
}
"
eval "
atf_test_case perl_${alg}_vec${i}
perl_${alg}_vec${i}_head() {
atf_set descr \"Perl mode \$name_bsd_${alg} test vector ${i}\"
atf_set require.progs \"shasum\"
}
perl_${alg}_vec${i}_body() {
[ -n \"\$name_perl_${alg}\" ] || atf_skip \"shasum does not support ${alg}\"
printf '%s' \"\$inp_${i}\" >in
atf_check -o inline:\"\$out_${i}_${alg} -\n\" shasum \$alg_perl_${alg} <in
atf_check -o inline:\"\$out_${i}_${alg} *-\n\" shasum \$alg_perl_${alg} -b <in
atf_check -o inline:\"\$out_${i}_${alg} U-\n\" shasum \$alg_perl_${alg} -U <in
atf_check -o inline:\"\$out_${i}_${alg} in\n\" shasum \$alg_perl_${alg} in
atf_check -o inline:\"\$out_${i}_${alg} *in\n\" shasum \$alg_perl_${alg} -b in
atf_check -o inline:\"\$out_${i}_${alg} Uin\n\" shasum \$alg_perl_${alg} -U in
atf_check -o inline:\"\$name_perl_${alg} (in) = \$out_${i}_${alg}\n\" shasum \$alg_perl_${alg} --tag in
}
"
done
eval "
atf_test_case gnu_check_${alg}
gnu_check_${alg}_head() {
atf_set descr \"GNU mode check test for \$name_bsd_${alg}\"
atf_set require.progs \"${alg}sum\"
}
gnu_check_${alg}_body() {
:>digests
:>stdout
:>stderr
rv=0
printf '%s' \"\$inp_2\" >inp2
printf '%s inp%d\n' \"\$out_2_${alg}\" 2 >>digests
printf 'inp%d: OK\n' 2 >>stdout
atf_check -o file:stdout -e file:stderr -s exit:$rv ${alg}sum -c digests
printf '%s' \"\$inp_3\" >inp3
printf '%s inp%d\n' \"malformed\" 3 >>digests
printf '%ssum: WARNING: 1 line is improperly formatted\n' ${alg} >>stderr
rv=1
atf_check -o file:stdout -e file:stderr -s exit:$rv ${alg}sum -c digests
printf '%s' \"\$inp_4\" >inp4
printf '%s inp%d\n' \"\$out_4_${alg}\" 4 | tr abcdef fedcba >>digests
printf 'inp%d: FAILED\n' 4 >>stdout
printf '%ssum: WARNING: 1 computed checksum did NOT match\n' ${alg} >>stderr
atf_check -o file:stdout -e file:stderr -s exit:$rv ${alg}sum -c digests
grep -v OK stdout >quiet
atf_check -o file:quiet -e file:stderr -s exit:$rv ${alg}sum --check --quiet digests
atf_check -s exit:$rv ${alg}sum --check --status digests
}
"
eval "
atf_test_case perl_check_${alg}
perl_check_${alg}_head() {
atf_set descr \"Perl mode check test for \$name_bsd_${alg}\"
atf_set require.progs \"shasum\"
}
perl_check_${alg}_body() {
[ -n \"\$name_perl_${alg}\" ] || atf_skip \"shasum does not support ${alg}\"
:>digests
:>stdout
:>stderr
rv=0
printf '%s' \"\$inp_2\" >inp2
printf '%s inp%d\n' \"\$out_2_${alg}\" 2 >>digests
printf 'inp%d: OK\n' 2 >>stdout
atf_check -o file:stdout -e file:stderr -s exit:$rv shasum \$alg_perl_${alg} -c digests
printf '%s' \"\$inp_3\" >inp3
printf '%s inp%d\n' \"malformed\" 3 >>digests
printf 'shasum: WARNING: 1 line is improperly formatted\n' >>stderr
rv=1
atf_check -o file:stdout -e file:stderr -s exit:$rv shasum \$alg_perl_${alg} -c digests
printf '%s' \"\$inp_4\" >inp4
printf '%s inp%d\n' \"\$out_4_${alg}\" 4 | tr abcdef fedcba >>digests
printf 'inp%d: FAILED\n' 4 >>stdout
printf 'shasum: WARNING: 1 computed checksum did NOT match\n' >>stderr
atf_check -o file:stdout -e file:stderr -s exit:$rv shasum \$alg_perl_${alg} -c digests
grep -v OK stdout >quiet
atf_check -o file:quiet -e file:stderr -s exit:$rv shasum \$alg_perl_${alg} --check --quiet digests
atf_check -s exit:$rv shasum \$alg_perl_${alg} --check --status digests
}
"
done
atf_test_case gnu_bflag
gnu_bflag_head()
{
cp $(atf_get_srcdir)/sum_a.in a
cp $(atf_get_srcdir)/sum_a.in b
atf_set descr "Verify GNU binary mode"
atf_set require.progs "sha256sum"
}
gnu_bflag_body()
{
echo foo >a
echo bar >b
(sha256 -q a | tr -d '\n'; echo " *a") > expected
(sha256 -q b | tr -d '\n'; echo " *b") >> expected
atf_check -o file:expected sha256sum -b a b
atf_check -o file:expected sha256sum --binary a b
}
atf_test_case sum_cflag
sum_cflag_body()
atf_test_case gnu_cflag
gnu_cflag_head()
{
atf_set descr "Verify handling of missing files in GNU check mode"
atf_set require.progs "sha256sum"
}
gnu_cflag_body()
{
# Verify that the *sum -c mode works even if some files are missing.
@ -46,37 +334,41 @@ sum_cflag_body()
# to check against. As a result, things like checking the published
# checksums for the install media became a more manual process again if
# you didn't download all of the images.
for combo in "a b c" "b c" "a c" "a b" "a" "b" "c" ""; do
rm -f a b c
:> out
for i in 2 3 4 ; do
eval "printf '%s inp%d\n' \"\$out_${i}_sha256\" ${i}"
done >digests
for combo in "2 3 4" "3 4" "2 4" "2 3" "2" "3" "4" ""; do
rm -f inp2 inp3 inp4
:> expected
cnt=0
for f in ${combo}; do
cp $(atf_get_srcdir)/sum_${f}.in ${f}
printf "${f}: OK\n" >> out
for i in ${combo}; do
eval "printf '%s' \"\$inp_${i}\"" > inp${i}
printf "inp%d: OK\n" ${i} >> expected
cnt=$((cnt + 1))
done
err=0
[ "$cnt" -eq 3 ] || err=1
atf_check -o file:out -e ignore -s exit:${err} \
sha256sum -c $(atf_get_srcdir)/sum_sums.digest
atf_check -o file:expected -e ignore -s exit:${err} \
sha256sum -c digests
atf_check -o file:expected -e ignore -s exit:0 \
sha256sum --ignore-missing -c digests
done
}
atf_test_case sum_tflag
sum_tflag_body()
{
cp $(atf_get_srcdir)/sum_a.in a
# -t is a nop, not a time trial, when used with the *sum versions
(sha256 -q a | tr -d '\n'; echo " a") > expected
atf_check -o file:expected sha256sum -t a
}
atf_init_test_cases()
{
atf_add_test_case sum_bflag
atf_add_test_case sum_cflag
atf_add_test_case sum_tflag
for alg in $algorithms ; do
atf_add_test_case self_test_${alg}
for i in $(seq $n) ; do
atf_add_test_case bsd_${alg}_vec${i}
atf_add_test_case gnu_${alg}_vec${i}
atf_add_test_case perl_${alg}_vec${i}
done
atf_add_test_case gnu_check_${alg}
atf_add_test_case perl_check_${alg}
done
atf_add_test_case gnu_bflag
atf_add_test_case gnu_cflag
}

View File

@ -1,8 +0,0 @@
d41d8cd98f00b204e9800998ecf8427e 1.inp
0cc175b9c0f1b6a831c399e269772661 2.inp
900150983cd24fb0d6963f7d28e17f72 3.inp
f96b697d7cb7938d525a2f31aaf161d0 4.inp
c3fcd3d76192e4007dfb496cca67e13b 5.inp
d174ab98d277d9f5a5611c2c9f419d9f 6.inp
57edf4a22be3c955ac49da2e2107b67a 7.inp
b50663f41d44d92171cb9976bc118538 8.inp

View File

@ -1,8 +0,0 @@
RMD160 (1.inp) = 9c1185a5c5e9fc54612808977ee8f548b2258d31
RMD160 (2.inp) = 0bdc9d2d256b3ee9daae347be6f4dc835a467ffe
RMD160 (3.inp) = 8eb208f7e05d987a9b044a8e98c6b087f15a0bfc
RMD160 (4.inp) = 5d0689ef49d2fae572b881b123a85ffa21595f36
RMD160 (5.inp) = f71c27109c692c1b56bbdceb5b9d2865b3708dbc
RMD160 (6.inp) = b0e20b6e3116640286ed3a87a5713079b21f5189
RMD160 (7.inp) = 9b752e45573d4b39f4dbd3323cab82bf63326bfb
RMD160 (8.inp) = 5feb69c6bf7c29d95715ad55f57d8ac5b2b7dd32

View File

@ -1,8 +0,0 @@
9c1185a5c5e9fc54612808977ee8f548b2258d31 1.inp
0bdc9d2d256b3ee9daae347be6f4dc835a467ffe 2.inp
8eb208f7e05d987a9b044a8e98c6b087f15a0bfc 3.inp
5d0689ef49d2fae572b881b123a85ffa21595f36 4.inp
f71c27109c692c1b56bbdceb5b9d2865b3708dbc 5.inp
b0e20b6e3116640286ed3a87a5713079b21f5189 6.inp
9b752e45573d4b39f4dbd3323cab82bf63326bfb 7.inp
5feb69c6bf7c29d95715ad55f57d8ac5b2b7dd32 8.inp

View File

@ -1,8 +0,0 @@
#!/bin/sh
while read algorithm; do
$algorithm -x > self-test.$algorithm.out || exitcode=$?
diff %%TESTSBASE%%/sbin/md5/self-test.$algorithm.chk self-test.$algorithm.out
done < %%TESTSBASE%%/sbin/md5/algorithms.txt
exit $exitcode

View File

@ -1,9 +0,0 @@
MD5 test suite:
MD5 ("") = d41d8cd98f00b204e9800998ecf8427e - verified correct
MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661 - verified correct
MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72 - verified correct
MD5 ("message digest") = f96b697d7cb7938d525a2f31aaf161d0 - verified correct
MD5 ("abcdefghijklmnopqrstuvwxyz") = c3fcd3d76192e4007dfb496cca67e13b - verified correct
MD5 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") = d174ab98d277d9f5a5611c2c9f419d9f - verified correct
MD5 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") = 57edf4a22be3c955ac49da2e2107b67a - verified correct
MD5 ("MD5 has not yet (2001-09-03) been broken, but sufficient attacks have been made that its security is in some doubt") = b50663f41d44d92171cb9976bc118538 - verified correct

View File

@ -1,9 +0,0 @@
RMD160 test suite:
RMD160 ("") = 9c1185a5c5e9fc54612808977ee8f548b2258d31 - verified correct
RMD160 ("a") = 0bdc9d2d256b3ee9daae347be6f4dc835a467ffe - verified correct
RMD160 ("abc") = 8eb208f7e05d987a9b044a8e98c6b087f15a0bfc - verified correct
RMD160 ("message digest") = 5d0689ef49d2fae572b881b123a85ffa21595f36 - verified correct
RMD160 ("abcdefghijklmnopqrstuvwxyz") = f71c27109c692c1b56bbdceb5b9d2865b3708dbc - verified correct
RMD160 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") = b0e20b6e3116640286ed3a87a5713079b21f5189 - verified correct
RMD160 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") = 9b752e45573d4b39f4dbd3323cab82bf63326bfb - verified correct
RMD160 ("MD5 has not yet (2001-09-03) been broken, but sufficient attacks have been made that its security is in some doubt") = 5feb69c6bf7c29d95715ad55f57d8ac5b2b7dd32 - verified correct

View File

@ -1,8 +0,0 @@
#!/bin/sh
while read algorithm; do
$algorithm -x > self-test.$algorithm.out || exitcode=$?
diff %%TESTSBASE%%/sbin/md5/self-test.$algorithm.chk self-test.$algorithm.out
done < %%TESTSBASE%%/sbin/md5/algorithms.txt
exit $exitcode

View File

@ -1,9 +0,0 @@
SHA1 test suite:
SHA1 ("") = da39a3ee5e6b4b0d3255bfef95601890afd80709 - verified correct
SHA1 ("a") = 86f7e437faa5a7fce15d1ddcb9eaeaea377667b8 - verified correct
SHA1 ("abc") = a9993e364706816aba3e25717850c26c9cd0d89d - verified correct
SHA1 ("message digest") = c12252ceda8be8994d5fa0290a47231c1d16aae3 - verified correct
SHA1 ("abcdefghijklmnopqrstuvwxyz") = 32d10c7b8cf96570ca04ce37f2a19d84240d3a89 - verified correct
SHA1 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") = 761c457bf73b14d27e9e9265c46f4b4dda11f940 - verified correct
SHA1 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") = 50abf5706a150990a08b2c5ea40fa0e585554732 - verified correct
SHA1 ("MD5 has not yet (2001-09-03) been broken, but sufficient attacks have been made that its security is in some doubt") = 18eca4333979c4181199b7b4fab8786d16cf2846 - verified correct

View File

@ -1,9 +0,0 @@
SHA224 test suite:
SHA224 ("") = d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f - verified correct
SHA224 ("a") = abd37534c7d9a2efb9465de931cd7055ffdb8879563ae98078d6d6d5 - verified correct
SHA224 ("abc") = 23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7 - verified correct
SHA224 ("message digest") = 2cb21c83ae2f004de7e81c3c7019cbcb65b71ab656b22d6d0c39b8eb - verified correct
SHA224 ("abcdefghijklmnopqrstuvwxyz") = 45a5f72c39c5cff2522eb3429799e49e5f44b356ef926bcf390dccc2 - verified correct
SHA224 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") = bff72b4fcb7d75e5632900ac5f90d219e05e97a7bde72e740db393d9 - verified correct
SHA224 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") = b50aecbe4e9bb0b57bc5f3ae760a8e01db24f203fb3cdcd13148046e - verified correct
SHA224 ("MD5 has not yet (2001-09-03) been broken, but sufficient attacks have been made that its security is in some doubt") = 5ae55f3779c8a1204210d7ed7689f661fbe140f96f272ab79e19d470 - verified correct

View File

@ -1,9 +0,0 @@
SHA256 test suite:
SHA256 ("") = e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 - verified correct
SHA256 ("a") = ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb - verified correct
SHA256 ("abc") = ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad - verified correct
SHA256 ("message digest") = f7846f55cf23e14eebeab5b4e1550cad5b509e3348fbc4efa3a1413d393cb650 - verified correct
SHA256 ("abcdefghijklmnopqrstuvwxyz") = 71c480df93d6ae2f1efad1447c66c9525e316218cf51fc8d9ed832f2daf18b73 - verified correct
SHA256 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") = db4bfcbd4da0cd85a60c3c37d3fbd8805c77f15fc6b1fdfe614ee0a7c8fdb4c0 - verified correct
SHA256 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") = f371bc4a311f2b009eef952dd83ca80e2b60026c8e935592d0f9c308453c813e - verified correct
SHA256 ("MD5 has not yet (2001-09-03) been broken, but sufficient attacks have been made that its security is in some doubt") = e6eae09f10ad4122a0e2a4075761d185a272ebd9f5aa489e998ff2f09cbfdd9f - verified correct

View File

@ -1,9 +0,0 @@
SHA384 test suite:
SHA384 ("") = 38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b - verified correct
SHA384 ("a") = 54a59b9f22b0b80880d8427e548b7c23abd873486e1f035dce9cd697e85175033caa88e6d57bc35efae0b5afd3145f31 - verified correct
SHA384 ("abc") = cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7 - verified correct
SHA384 ("message digest") = 473ed35167ec1f5d8e550368a3db39be54639f828868e9454c239fc8b52e3c61dbd0d8b4de1390c256dcbb5d5fd99cd5 - verified correct
SHA384 ("abcdefghijklmnopqrstuvwxyz") = feb67349df3db6f5924815d6c3dc133f091809213731fe5c7b5f4999e463479ff2877f5f2936fa63bb43784b12f3ebb4 - verified correct
SHA384 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") = 1761336e3f7cbfe51deb137f026f89e01a448e3b1fafa64039c1464ee8732f11a5341a6f41e0c202294736ed64db1a84 - verified correct
SHA384 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") = b12932b0627d1c060942f5447764155655bd4da0c9afa6dd9b9ef53129af1b8fb0195996d2de9ca0df9d821ffee67026 - verified correct
SHA384 ("MD5 has not yet (2001-09-03) been broken, but sufficient attacks have been made that its security is in some doubt") = 99428d401bf4abcd4ee0695248c9858b7503853acfae21a9cffa7855f46d1395ef38596fcd06d5a8c32d41a839cc5dfb - verified correct

View File

@ -1,9 +0,0 @@
SHA512 test suite:
SHA512 ("") = cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e - verified correct
SHA512 ("a") = 1f40fc92da241694750979ee6cf582f2d5d7d28e18335de05abc54d0560e0f5302860c652bf08d560252aa5e74210546f369fbbbce8c12cfc7957b2652fe9a75 - verified correct
SHA512 ("abc") = ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f - verified correct
SHA512 ("message digest") = 107dbf389d9e9f71a3a95f6c055b9251bc5268c2be16d6c13492ea45b0199f3309e16455ab1e96118e8a905d5597b72038ddb372a89826046de66687bb420e7c - verified correct
SHA512 ("abcdefghijklmnopqrstuvwxyz") = 4dbff86cc2ca1bae1e16468a05cb9881c97f1753bce3619034898faa1aabe429955a1bf8ec483d7421fe3c1646613a59ed5441fb0f321389f77f48a879c7b1f1 - verified correct
SHA512 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") = 1e07be23c26a86ea37ea810c8ec7809352515a970e9253c26f536cfc7a9996c45c8370583e0a78fa4a90041d71a4ceab7423f19c71b9d5a3e01249f0bebd5894 - verified correct
SHA512 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") = 72ec1ef1124a45b047e8b7c75a932195135bb61de24ec0d1914042246e0aec3a2354e093d76f3048b456764346900cb130d2a4fd5dd16abb5e30bcb850dee843 - verified correct
SHA512 ("MD5 has not yet (2001-09-03) been broken, but sufficient attacks have been made that its security is in some doubt") = e8a835195e039708b13d9131e025f4441dbdc521ce625f245a436dcd762f54bf5cb298d96235e6c6a304e087ec8189b9512cbdf6427737ea82793460c367b9c3 - verified correct

View File

@ -1,9 +0,0 @@
SHA512t224 test suite:
SHA512t224 ("") = 6ed0dd02806fa89e25de060c19d3ac86cabb87d6a0ddd05c333b84f4 - verified correct
SHA512t224 ("a") = d5cdb9ccc769a5121d4175f2bfdd13d6310e0d3d361ea75d82108327 - verified correct
SHA512t224 ("abc") = 4634270f707b6a54daae7530460842e20e37ed265ceee9a43e8924aa - verified correct
SHA512t224 ("message digest") = ad1a4db188fe57064f4f24609d2a83cd0afb9b398eb2fcaeaae2c564 - verified correct
SHA512t224 ("abcdefghijklmnopqrstuvwxyz") = ff83148aa07ec30655c1b40aff86141c0215fe2a54f767d3f38743d8 - verified correct
SHA512t224 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") = a8b4b9174b99ffc67d6f49be9981587b96441051e16e6dd036b140d3 - verified correct
SHA512t224 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") = ae988faaa47e401a45f704d1272d99702458fea2ddc6582827556dd2 - verified correct
SHA512t224 ("MD5 has not yet (2001-09-03) been broken, but sufficient attacks have been made that its security is in some doubt") = b3c3b945249b0c8c94aba76ea887bcaad5401665a1fbeb384af4d06b - verified correct

View File

@ -1,9 +0,0 @@
SHA512t256 test suite:
SHA512t256 ("") = c672b8d1ef56ed28ab87c3622c5114069bdd3ad7b8f9737498d0c01ecef0967a - verified correct
SHA512t256 ("a") = 455e518824bc0601f9fb858ff5c37d417d67c2f8e0df2babe4808858aea830f8 - verified correct
SHA512t256 ("abc") = 53048e2681941ef99b2e29b76b4c7dabe4c2d0c634fc6d46e0e2f13107e7af23 - verified correct
SHA512t256 ("message digest") = 0cf471fd17ed69d990daf3433c89b16d63dec1bb9cb42a6094604ee5d7b4e9fb - verified correct
SHA512t256 ("abcdefghijklmnopqrstuvwxyz") = fc3189443f9c268f626aea08a756abe7b726b05f701cb08222312ccfd6710a26 - verified correct
SHA512t256 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") = cdf1cc0effe26ecc0c13758f7b4a48e000615df241284185c39eb05d355bb9c8 - verified correct
SHA512t256 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") = 2c9fdbc0c90bdd87612ee8455474f9044850241dc105b1e8b94b8ddf5fac9148 - verified correct
SHA512t256 ("MD5 has not yet (2001-09-03) been broken, but sufficient attacks have been made that its security is in some doubt") = dd095fc859b336c30a52548b3dc59fcc0d1be8616ebcf3368fad23107db2d736 - verified correct

View File

@ -1,9 +0,0 @@
Skein1024 test suite:
Skein1024 ("") = 0fff9563bb3279289227ac77d319b6fff8d7e9f09da1247b72a0a265cd6d2a62645ad547ed8193db48cff847c06494a03f55666d3b47eb4c20456c9373c86297d630d5578ebd34cb40991578f9f52b18003efa35d3da6553ff35db91b81ab890bec1b189b7f52cb2a783ebb7d823d725b0b4a71f6824e88f68f982eefc6d19c6 - verified correct
Skein1024 ("a") = 6ab4c4ba9814a3d976ec8bffa7fcc638ceba0544a97b3c98411323ffd2dc936315d13dc93c13c4e88cda6f5bac6f2558b2d8694d3b6143e40d644ae43ca940685cb37f809d3d0550c56cba8036dee729a4f8fb960732e59e64d57f7f7710f8670963cdcdc95b41daab4855fcf8b6762a64b173ee61343a2c7689af1d293eba97 - verified correct
Skein1024 ("abc") = 35a599a0f91abcdb4cb73c19b8cb8d947742d82c309137a7caed29e8e0a2ca7a9ff9a90c34c1908cc7e7fd99bb15032fb86e76df21b72628399b5f7c3cc209d7bb31c99cd4e19465622a049afbb87c03b5ce3888d17e6e667279ec0aa9b3e2712624c01b5f5bbe1a564220bdcf6990af0c2539019f313fdd7406cca3892a1f1f - verified correct
Skein1024 ("message digest") = ea891f5268acd0fac97467fc1aa89d1ce8681a9992a42540e53babee861483110c2d16f49e73bac27653ff173003e40cfb08516cd34262e6af95a5d8645c9c1abb3e813604d508b8511b30f9a5c1b352aa0791c7d2f27b2706dccea54bc7de6555b5202351751c3299f97c09cf89c40f67187e2521c0fad82b30edbb224f0458 - verified correct
Skein1024 ("abcdefghijklmnopqrstuvwxyz") = f23d95c2a25fbcd0e797cd058fec39d3c52d2b5afd7a9af1df934e63257d1d3dcf3246e7329c0f1104c1e51e3d22e300507b0c3b9f985bb1f645ef49835080536becf83788e17fed09c9982ba65c3cb7ffe6a5f745b911c506962adf226e435c42f6f6bc08d288f9c810e807e3216ef444f3db22744441deefa4900982a1371f - verified correct
Skein1024 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") = cf3889e8a8d11bfd3938055d7d061437962bc5eac8ae83b1b71c94be201b8cf657fdbfc38674997a008c0c903f56a23feb3ae30e012377f1cfa080a9ca7fe8b96138662653fb3335c7d06595bf8baf65e215307532094cfdfa056bd8052ab792a3944a2adaa47b30335b8badb8fe9eb94fe329cdca04e58bbc530f0af709f469 - verified correct
Skein1024 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") = cf21a613620e6c119eca31fdfaad449a8e02f95ca256c21d2a105f8e4157048f9fe1e897893ea18b64e0e37cb07d5ac947f27ba544caf7cbc1ad094e675aed77a366270f7eb7f46543bccfa61c526fd628408058ed00ed566ac35a9761d002e629c4fb0d430b2f4ad016fcc49c44d2981c4002da0eecc42144160e2eaea4855a - verified correct
Skein1024 ("MD5 has not yet (2001-09-03) been broken, but sufficient attacks have been made that its security is in some doubt") = e6799b78db54085a2be7ff4c8007f147fa88d326abab30be0560b953396d8802feee9a15419b48a467574e9283be15685ca8a079ee52b27166b64dd70b124b1d4e4f6aca37224c3f2685e67e67baef9f94b905698adc794a09672aba977a61b20966912acdb08c21a2c37001785355dc884751a21f848ab36e590331ff938138 - verified correct

View File

@ -1,9 +0,0 @@
Skein256 test suite:
Skein256 ("") = c8877087da56e072870daa843f176e9453115929094c3a40c463a196c29bf7ba - verified correct
Skein256 ("a") = 7fba44ff1a31d71a0c1f82e6e82fb5e9ac6c92a39c9185b9951fed82d82fe635 - verified correct
Skein256 ("abc") = 258bdec343b9fde1639221a5ae0144a96e552e5288753c5fec76c05fc2fc1870 - verified correct
Skein256 ("message digest") = 4d2ce0062b5eb3a4db95bc1117dd8aa014f6cd50fdc8e64f31f7d41f9231e488 - verified correct
Skein256 ("abcdefghijklmnopqrstuvwxyz") = 46d8440685461b00e3ddb891b2ecc6855287d2bd8834a95fb1c1708b00ea5e82 - verified correct
Skein256 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") = 7c5eb606389556b33d34eb2536459528dc0af97adbcd0ce273aeb650f598d4b2 - verified correct
Skein256 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") = 4def7a7e5464a140ae9c3a80279fbebce4bd00f9faad819ab7e001512f67a10d - verified correct
Skein256 ("MD5 has not yet (2001-09-03) been broken, but sufficient attacks have been made that its security is in some doubt") = d9c017dbe355f318d036469eb9b5fbe129fc2b5786a9dc6746a516eab6fe0126 - verified correct

View File

@ -1,9 +0,0 @@
Skein512 test suite:
Skein512 ("") = bc5b4c50925519c290cc634277ae3d6257212395cba733bbad37a4af0fa06af41fca7903d06564fea7a2d3730dbdb80c1f85562dfcc070334ea4d1d9e72cba7a - verified correct
Skein512 ("a") = b1cd8d33f61b3737adfd59bb13ad82f4a9548e92f22956a8976cca3fdb7fee4fe91698146c4197cec85d38b83c5d93bdba92c01fd9a53870d0c7f967bc62bdce - verified correct
Skein512 ("abc") = 8f5dd9ec798152668e35129496b029a960c9a9b88662f7f9482f110b31f9f93893ecfb25c009baad9e46737197d5630379816a886aa05526d3a70df272d96e75 - verified correct
Skein512 ("message digest") = 15b73c158ffb875fed4d72801ded0794c720b121c0c78edf45f900937e6933d9e21a3a984206933d504b5dbb2368000411477ee1b204c986068df77886542fcc - verified correct
Skein512 ("abcdefghijklmnopqrstuvwxyz") = 23793ad900ef12f9165c8080da6fdfd2c8354a2929b8aadf83aa82a3c6470342f57cf8c035ec0d97429b626c4d94f28632c8f5134fd367dca5cf293d2ec13f8c - verified correct
Skein512 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") = 0c6bed927e022f5ddcf81877d42e5f75798a9f8fd3ede3d83baac0a2f364b082e036c11af35fe478745459dd8f5c0b73efe3c56ba5bb2009208d5a29cc6e469c - verified correct
Skein512 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") = 2ca9fcffb3456f297d1b5f407014ecb856f0baac8eb540f534b1f187196f21e88f31103128c2f03fcc9857d7a58eb66f9525e2302d88833ee069295537a434ce - verified correct
Skein512 ("MD5 has not yet (2001-09-03) been broken, but sufficient attacks have been made that its security is in some doubt") = 1131f2aaa0e97126c9314f9f968cc827259bbfabced2943bb8c9274448998fb3b78738b4580dd500c76105fd3c03e465e1414f2c29664286b1f79d3e51128125 - verified correct

View File

@ -1,8 +0,0 @@
SHA1 (1.inp) = da39a3ee5e6b4b0d3255bfef95601890afd80709
SHA1 (2.inp) = 86f7e437faa5a7fce15d1ddcb9eaeaea377667b8
SHA1 (3.inp) = a9993e364706816aba3e25717850c26c9cd0d89d
SHA1 (4.inp) = c12252ceda8be8994d5fa0290a47231c1d16aae3
SHA1 (5.inp) = 32d10c7b8cf96570ca04ce37f2a19d84240d3a89
SHA1 (6.inp) = 761c457bf73b14d27e9e9265c46f4b4dda11f940
SHA1 (7.inp) = 50abf5706a150990a08b2c5ea40fa0e585554732
SHA1 (8.inp) = 18eca4333979c4181199b7b4fab8786d16cf2846

View File

@ -1,8 +0,0 @@
da39a3ee5e6b4b0d3255bfef95601890afd80709 1.inp
86f7e437faa5a7fce15d1ddcb9eaeaea377667b8 2.inp
a9993e364706816aba3e25717850c26c9cd0d89d 3.inp
c12252ceda8be8994d5fa0290a47231c1d16aae3 4.inp
32d10c7b8cf96570ca04ce37f2a19d84240d3a89 5.inp
761c457bf73b14d27e9e9265c46f4b4dda11f940 6.inp
50abf5706a150990a08b2c5ea40fa0e585554732 7.inp
18eca4333979c4181199b7b4fab8786d16cf2846 8.inp

View File

@ -1,8 +0,0 @@
SHA224 (1.inp) = d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f
SHA224 (2.inp) = abd37534c7d9a2efb9465de931cd7055ffdb8879563ae98078d6d6d5
SHA224 (3.inp) = 23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7
SHA224 (4.inp) = 2cb21c83ae2f004de7e81c3c7019cbcb65b71ab656b22d6d0c39b8eb
SHA224 (5.inp) = 45a5f72c39c5cff2522eb3429799e49e5f44b356ef926bcf390dccc2
SHA224 (6.inp) = bff72b4fcb7d75e5632900ac5f90d219e05e97a7bde72e740db393d9
SHA224 (7.inp) = b50aecbe4e9bb0b57bc5f3ae760a8e01db24f203fb3cdcd13148046e
SHA224 (8.inp) = 5ae55f3779c8a1204210d7ed7689f661fbe140f96f272ab79e19d470

View File

@ -1,8 +0,0 @@
d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f 1.inp
abd37534c7d9a2efb9465de931cd7055ffdb8879563ae98078d6d6d5 2.inp
23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7 3.inp
2cb21c83ae2f004de7e81c3c7019cbcb65b71ab656b22d6d0c39b8eb 4.inp
45a5f72c39c5cff2522eb3429799e49e5f44b356ef926bcf390dccc2 5.inp
bff72b4fcb7d75e5632900ac5f90d219e05e97a7bde72e740db393d9 6.inp
b50aecbe4e9bb0b57bc5f3ae760a8e01db24f203fb3cdcd13148046e 7.inp
5ae55f3779c8a1204210d7ed7689f661fbe140f96f272ab79e19d470 8.inp

View File

@ -1,8 +0,0 @@
SHA256 (1.inp) = e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
SHA256 (2.inp) = ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb
SHA256 (3.inp) = ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
SHA256 (4.inp) = f7846f55cf23e14eebeab5b4e1550cad5b509e3348fbc4efa3a1413d393cb650
SHA256 (5.inp) = 71c480df93d6ae2f1efad1447c66c9525e316218cf51fc8d9ed832f2daf18b73
SHA256 (6.inp) = db4bfcbd4da0cd85a60c3c37d3fbd8805c77f15fc6b1fdfe614ee0a7c8fdb4c0
SHA256 (7.inp) = f371bc4a311f2b009eef952dd83ca80e2b60026c8e935592d0f9c308453c813e
SHA256 (8.inp) = e6eae09f10ad4122a0e2a4075761d185a272ebd9f5aa489e998ff2f09cbfdd9f

View File

@ -1,8 +0,0 @@
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 1.inp
ca978112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb 2.inp
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad 3.inp
f7846f55cf23e14eebeab5b4e1550cad5b509e3348fbc4efa3a1413d393cb650 4.inp
71c480df93d6ae2f1efad1447c66c9525e316218cf51fc8d9ed832f2daf18b73 5.inp
db4bfcbd4da0cd85a60c3c37d3fbd8805c77f15fc6b1fdfe614ee0a7c8fdb4c0 6.inp
f371bc4a311f2b009eef952dd83ca80e2b60026c8e935592d0f9c308453c813e 7.inp
e6eae09f10ad4122a0e2a4075761d185a272ebd9f5aa489e998ff2f09cbfdd9f 8.inp

View File

@ -1,8 +0,0 @@
SHA384 (1.inp) = 38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b
SHA384 (2.inp) = 54a59b9f22b0b80880d8427e548b7c23abd873486e1f035dce9cd697e85175033caa88e6d57bc35efae0b5afd3145f31
SHA384 (3.inp) = cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7
SHA384 (4.inp) = 473ed35167ec1f5d8e550368a3db39be54639f828868e9454c239fc8b52e3c61dbd0d8b4de1390c256dcbb5d5fd99cd5
SHA384 (5.inp) = feb67349df3db6f5924815d6c3dc133f091809213731fe5c7b5f4999e463479ff2877f5f2936fa63bb43784b12f3ebb4
SHA384 (6.inp) = 1761336e3f7cbfe51deb137f026f89e01a448e3b1fafa64039c1464ee8732f11a5341a6f41e0c202294736ed64db1a84
SHA384 (7.inp) = b12932b0627d1c060942f5447764155655bd4da0c9afa6dd9b9ef53129af1b8fb0195996d2de9ca0df9d821ffee67026
SHA384 (8.inp) = 99428d401bf4abcd4ee0695248c9858b7503853acfae21a9cffa7855f46d1395ef38596fcd06d5a8c32d41a839cc5dfb

View File

@ -1,8 +0,0 @@
38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b 1.inp
54a59b9f22b0b80880d8427e548b7c23abd873486e1f035dce9cd697e85175033caa88e6d57bc35efae0b5afd3145f31 2.inp
cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7 3.inp
473ed35167ec1f5d8e550368a3db39be54639f828868e9454c239fc8b52e3c61dbd0d8b4de1390c256dcbb5d5fd99cd5 4.inp
feb67349df3db6f5924815d6c3dc133f091809213731fe5c7b5f4999e463479ff2877f5f2936fa63bb43784b12f3ebb4 5.inp
1761336e3f7cbfe51deb137f026f89e01a448e3b1fafa64039c1464ee8732f11a5341a6f41e0c202294736ed64db1a84 6.inp
b12932b0627d1c060942f5447764155655bd4da0c9afa6dd9b9ef53129af1b8fb0195996d2de9ca0df9d821ffee67026 7.inp
99428d401bf4abcd4ee0695248c9858b7503853acfae21a9cffa7855f46d1395ef38596fcd06d5a8c32d41a839cc5dfb 8.inp

View File

@ -1,8 +0,0 @@
SHA512 (1.inp) = cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e
SHA512 (2.inp) = 1f40fc92da241694750979ee6cf582f2d5d7d28e18335de05abc54d0560e0f5302860c652bf08d560252aa5e74210546f369fbbbce8c12cfc7957b2652fe9a75
SHA512 (3.inp) = ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f
SHA512 (4.inp) = 107dbf389d9e9f71a3a95f6c055b9251bc5268c2be16d6c13492ea45b0199f3309e16455ab1e96118e8a905d5597b72038ddb372a89826046de66687bb420e7c
SHA512 (5.inp) = 4dbff86cc2ca1bae1e16468a05cb9881c97f1753bce3619034898faa1aabe429955a1bf8ec483d7421fe3c1646613a59ed5441fb0f321389f77f48a879c7b1f1
SHA512 (6.inp) = 1e07be23c26a86ea37ea810c8ec7809352515a970e9253c26f536cfc7a9996c45c8370583e0a78fa4a90041d71a4ceab7423f19c71b9d5a3e01249f0bebd5894
SHA512 (7.inp) = 72ec1ef1124a45b047e8b7c75a932195135bb61de24ec0d1914042246e0aec3a2354e093d76f3048b456764346900cb130d2a4fd5dd16abb5e30bcb850dee843
SHA512 (8.inp) = e8a835195e039708b13d9131e025f4441dbdc521ce625f245a436dcd762f54bf5cb298d96235e6c6a304e087ec8189b9512cbdf6427737ea82793460c367b9c3

View File

@ -1,8 +0,0 @@
cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e 1.inp
1f40fc92da241694750979ee6cf582f2d5d7d28e18335de05abc54d0560e0f5302860c652bf08d560252aa5e74210546f369fbbbce8c12cfc7957b2652fe9a75 2.inp
ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f 3.inp
107dbf389d9e9f71a3a95f6c055b9251bc5268c2be16d6c13492ea45b0199f3309e16455ab1e96118e8a905d5597b72038ddb372a89826046de66687bb420e7c 4.inp
4dbff86cc2ca1bae1e16468a05cb9881c97f1753bce3619034898faa1aabe429955a1bf8ec483d7421fe3c1646613a59ed5441fb0f321389f77f48a879c7b1f1 5.inp
1e07be23c26a86ea37ea810c8ec7809352515a970e9253c26f536cfc7a9996c45c8370583e0a78fa4a90041d71a4ceab7423f19c71b9d5a3e01249f0bebd5894 6.inp
72ec1ef1124a45b047e8b7c75a932195135bb61de24ec0d1914042246e0aec3a2354e093d76f3048b456764346900cb130d2a4fd5dd16abb5e30bcb850dee843 7.inp
e8a835195e039708b13d9131e025f4441dbdc521ce625f245a436dcd762f54bf5cb298d96235e6c6a304e087ec8189b9512cbdf6427737ea82793460c367b9c3 8.inp

View File

@ -1,8 +0,0 @@
SHA512t224 (1.inp) = 6ed0dd02806fa89e25de060c19d3ac86cabb87d6a0ddd05c333b84f4
SHA512t224 (2.inp) = d5cdb9ccc769a5121d4175f2bfdd13d6310e0d3d361ea75d82108327
SHA512t224 (3.inp) = 4634270f707b6a54daae7530460842e20e37ed265ceee9a43e8924aa
SHA512t224 (4.inp) = ad1a4db188fe57064f4f24609d2a83cd0afb9b398eb2fcaeaae2c564
SHA512t224 (5.inp) = ff83148aa07ec30655c1b40aff86141c0215fe2a54f767d3f38743d8
SHA512t224 (6.inp) = a8b4b9174b99ffc67d6f49be9981587b96441051e16e6dd036b140d3
SHA512t224 (7.inp) = ae988faaa47e401a45f704d1272d99702458fea2ddc6582827556dd2
SHA512t224 (8.inp) = b3c3b945249b0c8c94aba76ea887bcaad5401665a1fbeb384af4d06b

View File

@ -1,8 +0,0 @@
6ed0dd02806fa89e25de060c19d3ac86cabb87d6a0ddd05c333b84f4 1.inp
d5cdb9ccc769a5121d4175f2bfdd13d6310e0d3d361ea75d82108327 2.inp
4634270f707b6a54daae7530460842e20e37ed265ceee9a43e8924aa 3.inp
ad1a4db188fe57064f4f24609d2a83cd0afb9b398eb2fcaeaae2c564 4.inp
ff83148aa07ec30655c1b40aff86141c0215fe2a54f767d3f38743d8 5.inp
a8b4b9174b99ffc67d6f49be9981587b96441051e16e6dd036b140d3 6.inp
ae988faaa47e401a45f704d1272d99702458fea2ddc6582827556dd2 7.inp
b3c3b945249b0c8c94aba76ea887bcaad5401665a1fbeb384af4d06b 8.inp

View File

@ -1,8 +0,0 @@
SHA512t256 (1.inp) = c672b8d1ef56ed28ab87c3622c5114069bdd3ad7b8f9737498d0c01ecef0967a
SHA512t256 (2.inp) = 455e518824bc0601f9fb858ff5c37d417d67c2f8e0df2babe4808858aea830f8
SHA512t256 (3.inp) = 53048e2681941ef99b2e29b76b4c7dabe4c2d0c634fc6d46e0e2f13107e7af23
SHA512t256 (4.inp) = 0cf471fd17ed69d990daf3433c89b16d63dec1bb9cb42a6094604ee5d7b4e9fb
SHA512t256 (5.inp) = fc3189443f9c268f626aea08a756abe7b726b05f701cb08222312ccfd6710a26
SHA512t256 (6.inp) = cdf1cc0effe26ecc0c13758f7b4a48e000615df241284185c39eb05d355bb9c8
SHA512t256 (7.inp) = 2c9fdbc0c90bdd87612ee8455474f9044850241dc105b1e8b94b8ddf5fac9148
SHA512t256 (8.inp) = dd095fc859b336c30a52548b3dc59fcc0d1be8616ebcf3368fad23107db2d736

View File

@ -1,8 +0,0 @@
c672b8d1ef56ed28ab87c3622c5114069bdd3ad7b8f9737498d0c01ecef0967a 1.inp
455e518824bc0601f9fb858ff5c37d417d67c2f8e0df2babe4808858aea830f8 2.inp
53048e2681941ef99b2e29b76b4c7dabe4c2d0c634fc6d46e0e2f13107e7af23 3.inp
0cf471fd17ed69d990daf3433c89b16d63dec1bb9cb42a6094604ee5d7b4e9fb 4.inp
fc3189443f9c268f626aea08a756abe7b726b05f701cb08222312ccfd6710a26 5.inp
cdf1cc0effe26ecc0c13758f7b4a48e000615df241284185c39eb05d355bb9c8 6.inp
2c9fdbc0c90bdd87612ee8455474f9044850241dc105b1e8b94b8ddf5fac9148 7.inp
dd095fc859b336c30a52548b3dc59fcc0d1be8616ebcf3368fad23107db2d736 8.inp

View File

@ -1,8 +0,0 @@
Skein1024 (1.inp) = 0fff9563bb3279289227ac77d319b6fff8d7e9f09da1247b72a0a265cd6d2a62645ad547ed8193db48cff847c06494a03f55666d3b47eb4c20456c9373c86297d630d5578ebd34cb40991578f9f52b18003efa35d3da6553ff35db91b81ab890bec1b189b7f52cb2a783ebb7d823d725b0b4a71f6824e88f68f982eefc6d19c6
Skein1024 (2.inp) = 6ab4c4ba9814a3d976ec8bffa7fcc638ceba0544a97b3c98411323ffd2dc936315d13dc93c13c4e88cda6f5bac6f2558b2d8694d3b6143e40d644ae43ca940685cb37f809d3d0550c56cba8036dee729a4f8fb960732e59e64d57f7f7710f8670963cdcdc95b41daab4855fcf8b6762a64b173ee61343a2c7689af1d293eba97
Skein1024 (3.inp) = 35a599a0f91abcdb4cb73c19b8cb8d947742d82c309137a7caed29e8e0a2ca7a9ff9a90c34c1908cc7e7fd99bb15032fb86e76df21b72628399b5f7c3cc209d7bb31c99cd4e19465622a049afbb87c03b5ce3888d17e6e667279ec0aa9b3e2712624c01b5f5bbe1a564220bdcf6990af0c2539019f313fdd7406cca3892a1f1f
Skein1024 (4.inp) = ea891f5268acd0fac97467fc1aa89d1ce8681a9992a42540e53babee861483110c2d16f49e73bac27653ff173003e40cfb08516cd34262e6af95a5d8645c9c1abb3e813604d508b8511b30f9a5c1b352aa0791c7d2f27b2706dccea54bc7de6555b5202351751c3299f97c09cf89c40f67187e2521c0fad82b30edbb224f0458
Skein1024 (5.inp) = f23d95c2a25fbcd0e797cd058fec39d3c52d2b5afd7a9af1df934e63257d1d3dcf3246e7329c0f1104c1e51e3d22e300507b0c3b9f985bb1f645ef49835080536becf83788e17fed09c9982ba65c3cb7ffe6a5f745b911c506962adf226e435c42f6f6bc08d288f9c810e807e3216ef444f3db22744441deefa4900982a1371f
Skein1024 (6.inp) = cf3889e8a8d11bfd3938055d7d061437962bc5eac8ae83b1b71c94be201b8cf657fdbfc38674997a008c0c903f56a23feb3ae30e012377f1cfa080a9ca7fe8b96138662653fb3335c7d06595bf8baf65e215307532094cfdfa056bd8052ab792a3944a2adaa47b30335b8badb8fe9eb94fe329cdca04e58bbc530f0af709f469
Skein1024 (7.inp) = cf21a613620e6c119eca31fdfaad449a8e02f95ca256c21d2a105f8e4157048f9fe1e897893ea18b64e0e37cb07d5ac947f27ba544caf7cbc1ad094e675aed77a366270f7eb7f46543bccfa61c526fd628408058ed00ed566ac35a9761d002e629c4fb0d430b2f4ad016fcc49c44d2981c4002da0eecc42144160e2eaea4855a
Skein1024 (8.inp) = e6799b78db54085a2be7ff4c8007f147fa88d326abab30be0560b953396d8802feee9a15419b48a467574e9283be15685ca8a079ee52b27166b64dd70b124b1d4e4f6aca37224c3f2685e67e67baef9f94b905698adc794a09672aba977a61b20966912acdb08c21a2c37001785355dc884751a21f848ab36e590331ff938138

View File

@ -1,8 +0,0 @@
0fff9563bb3279289227ac77d319b6fff8d7e9f09da1247b72a0a265cd6d2a62645ad547ed8193db48cff847c06494a03f55666d3b47eb4c20456c9373c86297d630d5578ebd34cb40991578f9f52b18003efa35d3da6553ff35db91b81ab890bec1b189b7f52cb2a783ebb7d823d725b0b4a71f6824e88f68f982eefc6d19c6 1.inp
6ab4c4ba9814a3d976ec8bffa7fcc638ceba0544a97b3c98411323ffd2dc936315d13dc93c13c4e88cda6f5bac6f2558b2d8694d3b6143e40d644ae43ca940685cb37f809d3d0550c56cba8036dee729a4f8fb960732e59e64d57f7f7710f8670963cdcdc95b41daab4855fcf8b6762a64b173ee61343a2c7689af1d293eba97 2.inp
35a599a0f91abcdb4cb73c19b8cb8d947742d82c309137a7caed29e8e0a2ca7a9ff9a90c34c1908cc7e7fd99bb15032fb86e76df21b72628399b5f7c3cc209d7bb31c99cd4e19465622a049afbb87c03b5ce3888d17e6e667279ec0aa9b3e2712624c01b5f5bbe1a564220bdcf6990af0c2539019f313fdd7406cca3892a1f1f 3.inp
ea891f5268acd0fac97467fc1aa89d1ce8681a9992a42540e53babee861483110c2d16f49e73bac27653ff173003e40cfb08516cd34262e6af95a5d8645c9c1abb3e813604d508b8511b30f9a5c1b352aa0791c7d2f27b2706dccea54bc7de6555b5202351751c3299f97c09cf89c40f67187e2521c0fad82b30edbb224f0458 4.inp
f23d95c2a25fbcd0e797cd058fec39d3c52d2b5afd7a9af1df934e63257d1d3dcf3246e7329c0f1104c1e51e3d22e300507b0c3b9f985bb1f645ef49835080536becf83788e17fed09c9982ba65c3cb7ffe6a5f745b911c506962adf226e435c42f6f6bc08d288f9c810e807e3216ef444f3db22744441deefa4900982a1371f 5.inp
cf3889e8a8d11bfd3938055d7d061437962bc5eac8ae83b1b71c94be201b8cf657fdbfc38674997a008c0c903f56a23feb3ae30e012377f1cfa080a9ca7fe8b96138662653fb3335c7d06595bf8baf65e215307532094cfdfa056bd8052ab792a3944a2adaa47b30335b8badb8fe9eb94fe329cdca04e58bbc530f0af709f469 6.inp
cf21a613620e6c119eca31fdfaad449a8e02f95ca256c21d2a105f8e4157048f9fe1e897893ea18b64e0e37cb07d5ac947f27ba544caf7cbc1ad094e675aed77a366270f7eb7f46543bccfa61c526fd628408058ed00ed566ac35a9761d002e629c4fb0d430b2f4ad016fcc49c44d2981c4002da0eecc42144160e2eaea4855a 7.inp
e6799b78db54085a2be7ff4c8007f147fa88d326abab30be0560b953396d8802feee9a15419b48a467574e9283be15685ca8a079ee52b27166b64dd70b124b1d4e4f6aca37224c3f2685e67e67baef9f94b905698adc794a09672aba977a61b20966912acdb08c21a2c37001785355dc884751a21f848ab36e590331ff938138 8.inp

View File

@ -1,8 +0,0 @@
Skein256 (1.inp) = c8877087da56e072870daa843f176e9453115929094c3a40c463a196c29bf7ba
Skein256 (2.inp) = 7fba44ff1a31d71a0c1f82e6e82fb5e9ac6c92a39c9185b9951fed82d82fe635
Skein256 (3.inp) = 258bdec343b9fde1639221a5ae0144a96e552e5288753c5fec76c05fc2fc1870
Skein256 (4.inp) = 4d2ce0062b5eb3a4db95bc1117dd8aa014f6cd50fdc8e64f31f7d41f9231e488
Skein256 (5.inp) = 46d8440685461b00e3ddb891b2ecc6855287d2bd8834a95fb1c1708b00ea5e82
Skein256 (6.inp) = 7c5eb606389556b33d34eb2536459528dc0af97adbcd0ce273aeb650f598d4b2
Skein256 (7.inp) = 4def7a7e5464a140ae9c3a80279fbebce4bd00f9faad819ab7e001512f67a10d
Skein256 (8.inp) = d9c017dbe355f318d036469eb9b5fbe129fc2b5786a9dc6746a516eab6fe0126

View File

@ -1,8 +0,0 @@
c8877087da56e072870daa843f176e9453115929094c3a40c463a196c29bf7ba 1.inp
7fba44ff1a31d71a0c1f82e6e82fb5e9ac6c92a39c9185b9951fed82d82fe635 2.inp
258bdec343b9fde1639221a5ae0144a96e552e5288753c5fec76c05fc2fc1870 3.inp
4d2ce0062b5eb3a4db95bc1117dd8aa014f6cd50fdc8e64f31f7d41f9231e488 4.inp
46d8440685461b00e3ddb891b2ecc6855287d2bd8834a95fb1c1708b00ea5e82 5.inp
7c5eb606389556b33d34eb2536459528dc0af97adbcd0ce273aeb650f598d4b2 6.inp
4def7a7e5464a140ae9c3a80279fbebce4bd00f9faad819ab7e001512f67a10d 7.inp
d9c017dbe355f318d036469eb9b5fbe129fc2b5786a9dc6746a516eab6fe0126 8.inp

View File

@ -1,8 +0,0 @@
Skein512 (1.inp) = bc5b4c50925519c290cc634277ae3d6257212395cba733bbad37a4af0fa06af41fca7903d06564fea7a2d3730dbdb80c1f85562dfcc070334ea4d1d9e72cba7a
Skein512 (2.inp) = b1cd8d33f61b3737adfd59bb13ad82f4a9548e92f22956a8976cca3fdb7fee4fe91698146c4197cec85d38b83c5d93bdba92c01fd9a53870d0c7f967bc62bdce
Skein512 (3.inp) = 8f5dd9ec798152668e35129496b029a960c9a9b88662f7f9482f110b31f9f93893ecfb25c009baad9e46737197d5630379816a886aa05526d3a70df272d96e75
Skein512 (4.inp) = 15b73c158ffb875fed4d72801ded0794c720b121c0c78edf45f900937e6933d9e21a3a984206933d504b5dbb2368000411477ee1b204c986068df77886542fcc
Skein512 (5.inp) = 23793ad900ef12f9165c8080da6fdfd2c8354a2929b8aadf83aa82a3c6470342f57cf8c035ec0d97429b626c4d94f28632c8f5134fd367dca5cf293d2ec13f8c
Skein512 (6.inp) = 0c6bed927e022f5ddcf81877d42e5f75798a9f8fd3ede3d83baac0a2f364b082e036c11af35fe478745459dd8f5c0b73efe3c56ba5bb2009208d5a29cc6e469c
Skein512 (7.inp) = 2ca9fcffb3456f297d1b5f407014ecb856f0baac8eb540f534b1f187196f21e88f31103128c2f03fcc9857d7a58eb66f9525e2302d88833ee069295537a434ce
Skein512 (8.inp) = 1131f2aaa0e97126c9314f9f968cc827259bbfabced2943bb8c9274448998fb3b78738b4580dd500c76105fd3c03e465e1414f2c29664286b1f79d3e51128125

View File

@ -1,8 +0,0 @@
bc5b4c50925519c290cc634277ae3d6257212395cba733bbad37a4af0fa06af41fca7903d06564fea7a2d3730dbdb80c1f85562dfcc070334ea4d1d9e72cba7a 1.inp
b1cd8d33f61b3737adfd59bb13ad82f4a9548e92f22956a8976cca3fdb7fee4fe91698146c4197cec85d38b83c5d93bdba92c01fd9a53870d0c7f967bc62bdce 2.inp
8f5dd9ec798152668e35129496b029a960c9a9b88662f7f9482f110b31f9f93893ecfb25c009baad9e46737197d5630379816a886aa05526d3a70df272d96e75 3.inp
15b73c158ffb875fed4d72801ded0794c720b121c0c78edf45f900937e6933d9e21a3a984206933d504b5dbb2368000411477ee1b204c986068df77886542fcc 4.inp
23793ad900ef12f9165c8080da6fdfd2c8354a2929b8aadf83aa82a3c6470342f57cf8c035ec0d97429b626c4d94f28632c8f5134fd367dca5cf293d2ec13f8c 5.inp
0c6bed927e022f5ddcf81877d42e5f75798a9f8fd3ede3d83baac0a2f364b082e036c11af35fe478745459dd8f5c0b73efe3c56ba5bb2009208d5a29cc6e469c 6.inp
2ca9fcffb3456f297d1b5f407014ecb856f0baac8eb540f534b1f187196f21e88f31103128c2f03fcc9857d7a58eb66f9525e2302d88833ee069295537a434ce 7.inp
1131f2aaa0e97126c9314f9f968cc827259bbfabced2943bb8c9274448998fb3b78738b4580dd500c76105fd3c03e465e1414f2c29664286b1f79d3e51128125 8.inp

View File

@ -1 +0,0 @@
foo

View File

@ -1 +0,0 @@
bar

View File

@ -1 +0,0 @@
baz

View File

@ -1,3 +0,0 @@
SHA256 (a) = b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c
SHA256 (b) = 7d865e959b2466918c9863afca942d0fb89d7c9ac0c99bafc3749504ded97730
SHA256 (c) = bf07a7fbb825fc0aae7bf4a1177b2b31fcf8a3feeaf7092761e18c859ee52a9c