Add MD2, MD4, SHA1, and RMD160 support to cksum. Adding new hashes to
cksum(1) should now be easy.
This commit is contained in:
parent
df2b9ae2bd
commit
61e4caef25
@ -1,11 +1,19 @@
|
||||
# $NetBSD: Makefile,v 1.9 1997/10/18 12:49:08 lukem Exp $
|
||||
# $NetBSD: Makefile,v 1.10 2001/03/20 18:46:25 atatat Exp $
|
||||
# @(#)Makefile 8.2 (Berkeley) 4/28/95
|
||||
|
||||
PROG= cksum
|
||||
SRCS= cksum.c crc.c md5.c print.c sum1.c sum2.c
|
||||
SRCS= cksum.c crc.c md2.c md4.c md5.c sha1.c rmd160.c print.c sum1.c sum2.c
|
||||
LINKS= ${BINDIR}/cksum ${BINDIR}/sum
|
||||
LINKS+= ${BINDIR}/cksum ${BINDIR}/md2
|
||||
LINKS+= ${BINDIR}/cksum ${BINDIR}/md4
|
||||
LINKS+= ${BINDIR}/cksum ${BINDIR}/md5
|
||||
LINKS+= ${BINDIR}/cksum ${BINDIR}/sha1
|
||||
LINKS+= ${BINDIR}/cksum ${BINDIR}/rmd160
|
||||
MLINKS= cksum.1 sum.1
|
||||
MLINKS+=cksum.1 md2.1
|
||||
MLINKS+=cksum.1 md4.1
|
||||
MLINKS+=cksum.1 md5.1
|
||||
MLINKS+=cksum.1 sha1.1
|
||||
MLINKS+=cksum.1 rmd160.1
|
||||
|
||||
.include <bsd.prog.mk>
|
||||
|
@ -1,4 +1,4 @@
|
||||
.\" $NetBSD: cksum.1,v 1.14 2000/07/03 05:27:15 enami Exp $
|
||||
.\" $NetBSD: cksum.1,v 1.15 2001/03/20 18:46:25 atatat Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 1991, 1993
|
||||
.\" The Regents of the University of California. All rights reserved.
|
||||
@ -41,24 +41,57 @@
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm cksum ,
|
||||
.Nm md2 ,
|
||||
.Nm md4 ,
|
||||
.Nm md5 ,
|
||||
.Nm sha1 ,
|
||||
.Nm rmd160 ,
|
||||
.Nm sum
|
||||
.Nd display file checksums and block counts
|
||||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
.Oo
|
||||
.Fl m |
|
||||
.Fl 1 |
|
||||
.Fl 2 |
|
||||
.Fl 4 |
|
||||
.Fl 5 |
|
||||
.Fl 6 |
|
||||
.Op Fl o Ar 1 | Ar 2
|
||||
.Oc
|
||||
.Op Ar
|
||||
.Nm sum
|
||||
.Op Ar
|
||||
.Nm md2
|
||||
.Op Fl p
|
||||
.Op Fl t
|
||||
.Op Fl x
|
||||
.Op Fl s Ar string
|
||||
.Op Ar
|
||||
.Nm md4
|
||||
.Op Fl p
|
||||
.Op Fl t
|
||||
.Op Fl x
|
||||
.Op Fl s Ar string
|
||||
.Op Ar
|
||||
.Nm md5
|
||||
.Op Fl p
|
||||
.Op Fl t
|
||||
.Op Fl x
|
||||
.Op Fl s Ar string
|
||||
.Op Ar
|
||||
.Nm sha1
|
||||
.Op Fl p
|
||||
.Op Fl t
|
||||
.Op Fl x
|
||||
.Op Fl s Ar string
|
||||
.Op Ar
|
||||
.Nm rmd160
|
||||
.Op Fl p
|
||||
.Op Fl t
|
||||
.Op Fl x
|
||||
.Op Fl s Ar string
|
||||
.Op Ar
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Nm
|
||||
@ -95,10 +128,33 @@ in a secure manner before being encrypted with a private (secret)
|
||||
key under a public-key encryption system such as
|
||||
.Pa RSA .
|
||||
.Pp
|
||||
The
|
||||
.Nm md2
|
||||
and
|
||||
.Nm md4
|
||||
utilities behave in exactly the same manner as
|
||||
.Nm md5
|
||||
but use a different algorithms.
|
||||
.Pp
|
||||
The
|
||||
.Nm sha1
|
||||
and
|
||||
.Nm rmd160
|
||||
utilities also produce message digests, however the output from these
|
||||
two programs is 160 bits in length, as opposed to 128.
|
||||
.Pp
|
||||
The options are as follows:
|
||||
.Bl -tag -width indent
|
||||
.It Fl m
|
||||
.It Fl 1
|
||||
Use the SHA1 algorithm rather than the default one.
|
||||
.It Fl 2
|
||||
Use the MD2 algorithm rather than the default one.
|
||||
.It Fl 4
|
||||
Use the MD4 algorithm rather than the default one.
|
||||
.It Fl m | 5
|
||||
Use the MD5 algorithm rather than the default one.
|
||||
.It Fl 6
|
||||
Use the RMD160 algorithm rather than the default one.
|
||||
.It Fl o
|
||||
Use historic algorithms instead of the (superior) default one.
|
||||
.Pp
|
||||
@ -137,17 +193,23 @@ for algorithm 2.
|
||||
Partial blocks are rounded up.
|
||||
.El
|
||||
.Pp
|
||||
The following options apply only when using the MD5 algorithm:
|
||||
The following options apply only when using the one of the message
|
||||
digest algorithms:
|
||||
.Bl -tag -width indent
|
||||
.It Fl s Ar string
|
||||
Print the MD5 checksum of the given string
|
||||
Print the hash of the given string
|
||||
.Ar string .
|
||||
.It Fl p
|
||||
Echo input from standard input to standard output, and append an MD5 checksum.
|
||||
Echo input from standard input to standard output, and append the
|
||||
selected message digest.
|
||||
.It Fl t
|
||||
Run a built-in MD5 time trial.
|
||||
Run a built-in message digest time trial.
|
||||
.It Fl x
|
||||
Run a built-in MD5 test script.
|
||||
Run a built-in message digest test script. The tests that are run
|
||||
are supposed to encompass all the various tests in the suites that
|
||||
accompany the algorithms' descriptions with the exception of the the
|
||||
last test for the SHA-1 algorithm and the RIPEMD-160 algorithm. The
|
||||
last test for these is one million copies of the lower letter a.
|
||||
.El
|
||||
.Pp
|
||||
The default
|
||||
@ -210,6 +272,26 @@ article.
|
||||
.%J "Communications of the \\*(tNACM\\*(sP"
|
||||
.%D "August 1988"
|
||||
.Re
|
||||
.Rs
|
||||
.%A R. Rivest
|
||||
.%T The MD2 Message-Digest Algorithm
|
||||
.%O RFC 1319
|
||||
.Re
|
||||
.Rs
|
||||
.%A R. Rivest
|
||||
.%T The MD4 Message-Digest Algorithm
|
||||
.%O RFC 1186 and RFC 1320
|
||||
.Re
|
||||
.Rs
|
||||
.%A R. Rivest
|
||||
.%T The MD5 Message-Digest Algorithm
|
||||
.%O RFC 1321
|
||||
.Re
|
||||
.Rs
|
||||
.%A U.S. DOC/NIST
|
||||
.%T Secure Hash Standard
|
||||
.%O FIPS PUB 180-1
|
||||
.Re
|
||||
.Sh STANDARDS
|
||||
The
|
||||
.Nm
|
||||
@ -220,6 +302,14 @@ The
|
||||
.Nm
|
||||
utility appeared in
|
||||
.Bx 4.4 .
|
||||
The functionality for
|
||||
.Nm md2 ,
|
||||
.Nm md4 ,
|
||||
.Nm sha1 ,
|
||||
and
|
||||
.Nm rmd160
|
||||
was added in
|
||||
.Nx 1.6 .
|
||||
.\" .Pp
|
||||
.\" The
|
||||
.\" .Nm sum
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: cksum.c,v 1.12 2001/02/19 23:03:45 cgd Exp $ */
|
||||
/* $NetBSD: cksum.c,v 1.13 2001/03/20 18:46:25 atatat Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1997 Jason R. Thorpe. All rights reserved.
|
||||
@ -47,7 +47,7 @@ __COPYRIGHT("@(#) Copyright (c) 1991, 1993\n\
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)cksum.c 8.2 (Berkeley) 4/28/95";
|
||||
#endif
|
||||
__RCSID("$NetBSD: cksum.c,v 1.12 2001/02/19 23:03:45 cgd Exp $");
|
||||
__RCSID("$NetBSD: cksum.c,v 1.13 2001/03/20 18:46:25 atatat Exp $");
|
||||
#endif /* not lint */
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
@ -58,6 +58,10 @@ __RCSID("$NetBSD: cksum.c,v 1.12 2001/02/19 23:03:45 cgd Exp $");
|
||||
#include <fcntl.h>
|
||||
#include <locale.h>
|
||||
#include <md5.h>
|
||||
#include <md4.h>
|
||||
#include <md2.h>
|
||||
#include <sha1.h>
|
||||
#include <rmd160.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
@ -65,9 +69,44 @@ __RCSID("$NetBSD: cksum.c,v 1.12 2001/02/19 23:03:45 cgd Exp $");
|
||||
|
||||
#include "extern.h"
|
||||
|
||||
#define HASH_MD2 0
|
||||
#define HASH_MD4 1
|
||||
#define HASH_MD5 2
|
||||
#define HASH_SHA1 3
|
||||
#define HASH_RMD160 4
|
||||
|
||||
typedef char *(*_filefunc)(const char *, char *);
|
||||
|
||||
struct hash {
|
||||
const char *progname;
|
||||
const char *hashname;
|
||||
void (*stringfunc)(const char *);
|
||||
void (*timetrialfunc)(void);
|
||||
void (*testsuitefunc)(void);
|
||||
void (*filterfunc)(int);
|
||||
char *(*filefunc)(const char *, char *);
|
||||
} hashes[] = {
|
||||
{ "md2", "MD2",
|
||||
MD2String, MD2TimeTrial, MD2TestSuite,
|
||||
MD2Filter, MD2File },
|
||||
{ "md4", "MD4",
|
||||
MD4String, MD4TimeTrial, MD4TestSuite,
|
||||
MD4Filter, MD4File },
|
||||
{ "md5", "MD5",
|
||||
MD5String, MD5TimeTrial, MD5TestSuite,
|
||||
MD5Filter, MD5File },
|
||||
{ "sha1", "SHA1",
|
||||
SHA1String, SHA1TimeTrial, SHA1TestSuite,
|
||||
SHA1Filter, (_filefunc) SHA1File },
|
||||
{ "rmd160", "RMD160",
|
||||
RMD160String, RMD160TimeTrial, RMD160TestSuite,
|
||||
RMD160Filter, (_filefunc) RMD160File },
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
int main __P((int, char **));
|
||||
int md5_digest_file __P((char *));
|
||||
void requiremd5 __P((const char *));
|
||||
int hash_digest_file __P((char *, struct hash *));
|
||||
void requirehash __P((const char *));
|
||||
void usage __P((void));
|
||||
|
||||
int
|
||||
@ -75,21 +114,30 @@ main(argc, argv)
|
||||
int argc;
|
||||
char **argv;
|
||||
{
|
||||
register int ch, fd, rval, domd5, dosum, pflag, nomd5stdin;
|
||||
register int ch, fd, rval, dosum, pflag, nohashstdin;
|
||||
u_int32_t len, val;
|
||||
char *fn;
|
||||
const char *progname;
|
||||
int (*cfncn) __P((int, u_int32_t *, u_int32_t *));
|
||||
void (*pfncn) __P((char *, u_int32_t, u_int32_t));
|
||||
struct hash *hash;
|
||||
|
||||
cfncn = NULL;
|
||||
pfncn = NULL;
|
||||
dosum = domd5 = pflag = nomd5stdin = 0;
|
||||
dosum = pflag = nohashstdin = 0;
|
||||
|
||||
setlocale(LC_ALL, "");
|
||||
|
||||
if (!strcmp(getprogname(), "md5"))
|
||||
domd5 = 1;
|
||||
else if (!strcmp(getprogname(), "sum")) {
|
||||
progname = getprogname();
|
||||
|
||||
for (hash = hashes; hash->hashname != NULL; hash++)
|
||||
if (strcmp(progname, hash->progname) == 0)
|
||||
break;
|
||||
|
||||
if (hash->hashname == NULL) {
|
||||
hash = NULL;
|
||||
|
||||
if (!strcmp(progname, "sum")) {
|
||||
dosum = 1;
|
||||
cfncn = csum1;
|
||||
pfncn = psum1;
|
||||
@ -97,19 +145,50 @@ main(argc, argv)
|
||||
cfncn = crc;
|
||||
pfncn = pcrc;
|
||||
}
|
||||
}
|
||||
|
||||
while ((ch = getopt(argc, argv, "mo:ps:tx")) != -1)
|
||||
while ((ch = getopt(argc, argv, "mo:ps:tx12456")) != -1)
|
||||
switch(ch) {
|
||||
case '2':
|
||||
if (dosum) {
|
||||
warnx("sum mutually exclusive with md2");
|
||||
usage();
|
||||
}
|
||||
hash = &hashes[HASH_MD2];
|
||||
break;
|
||||
case '4':
|
||||
if (dosum) {
|
||||
warnx("sum mutually exclusive with md4");
|
||||
usage();
|
||||
}
|
||||
hash = &hashes[HASH_MD4];
|
||||
break;
|
||||
case 'm':
|
||||
case '5':
|
||||
if (dosum) {
|
||||
warnx("sum mutually exclusive with md5");
|
||||
usage();
|
||||
}
|
||||
domd5 = 1;
|
||||
hash = &hashes[HASH_MD5];
|
||||
break;
|
||||
case '1':
|
||||
if (dosum) {
|
||||
warnx("sum mutually exclusive with sha1");
|
||||
usage();
|
||||
}
|
||||
hash = &hashes[HASH_SHA1];
|
||||
break;
|
||||
case '6':
|
||||
if (dosum) {
|
||||
warnx("sum mutually exclusive with rmd160");
|
||||
usage();
|
||||
}
|
||||
hash = &hashes[HASH_RMD160];
|
||||
break;
|
||||
case 'o':
|
||||
if (domd5) {
|
||||
warnx("md5 mutually exclusive with sum");
|
||||
if (hash) {
|
||||
warnx("%s mutually exclusive with sum",
|
||||
hash->hashname);
|
||||
usage();
|
||||
}
|
||||
if (!strcmp(optarg, "1")) {
|
||||
@ -124,27 +203,27 @@ main(argc, argv)
|
||||
}
|
||||
break;
|
||||
case 'p':
|
||||
if (!domd5)
|
||||
requiremd5("-p");
|
||||
if (hash == NULL)
|
||||
requirehash("-p");
|
||||
pflag = 1;
|
||||
break;
|
||||
case 's':
|
||||
if (!domd5)
|
||||
requiremd5("-s");
|
||||
nomd5stdin = 1;
|
||||
MDString(optarg);
|
||||
if (hash == NULL)
|
||||
requirehash("-s");
|
||||
nohashstdin = 1;
|
||||
hash->stringfunc(optarg);
|
||||
break;
|
||||
case 't':
|
||||
if (!domd5)
|
||||
requiremd5("-t");
|
||||
MDTimeTrial();
|
||||
nomd5stdin = 1;
|
||||
if (hash == NULL)
|
||||
requirehash("-t");
|
||||
nohashstdin = 1;
|
||||
hash->timetrialfunc();
|
||||
break;
|
||||
case 'x':
|
||||
if (!domd5)
|
||||
requiremd5("-x");
|
||||
MDTestSuite();
|
||||
nomd5stdin = 1;
|
||||
if (hash == NULL)
|
||||
requirehash("-x");
|
||||
nohashstdin = 1;
|
||||
hash->testsuitefunc();
|
||||
break;
|
||||
case '?':
|
||||
default:
|
||||
@ -159,8 +238,8 @@ main(argc, argv)
|
||||
do {
|
||||
if (*argv) {
|
||||
fn = *argv++;
|
||||
if (domd5) {
|
||||
if (md5_digest_file(fn)) {
|
||||
if (hash != NULL) {
|
||||
if (hash_digest_file(fn, hash)) {
|
||||
warn("%s", fn);
|
||||
rval = 1;
|
||||
}
|
||||
@ -171,10 +250,11 @@ main(argc, argv)
|
||||
rval = 1;
|
||||
continue;
|
||||
}
|
||||
} else if (domd5 && !nomd5stdin)
|
||||
MDFilter(pflag);
|
||||
} else if (hash && !nohashstdin) {
|
||||
hash->filterfunc(pflag);
|
||||
}
|
||||
|
||||
if (!domd5) {
|
||||
if (hash == NULL) {
|
||||
if (cfncn(fd, &val, &len)) {
|
||||
warn("%s", fn ? fn : "stdin");
|
||||
rval = 1;
|
||||
@ -187,24 +267,26 @@ main(argc, argv)
|
||||
}
|
||||
|
||||
int
|
||||
md5_digest_file(fn)
|
||||
hash_digest_file(fn, hash)
|
||||
char *fn;
|
||||
struct hash *hash;
|
||||
{
|
||||
char buf[33], *cp;
|
||||
char buf[41], *cp;
|
||||
|
||||
cp = MD5File(fn, buf);
|
||||
cp = hash->filefunc(fn, buf);
|
||||
if (cp == NULL)
|
||||
return (1);
|
||||
|
||||
printf("MD5 (%s) = %s\n", fn, cp);
|
||||
printf("%s (%s) = %s\n", hash->hashname, fn, cp);
|
||||
return (0);
|
||||
}
|
||||
|
||||
void
|
||||
requiremd5(flg)
|
||||
requirehash(flg)
|
||||
const char *flg;
|
||||
{
|
||||
warnx("%s flag requires `md5' or -m", flg);
|
||||
warnx("%s flag requires `md2', `md4', `md5', `sha1', or `rmd160'",
|
||||
flg);
|
||||
usage();
|
||||
}
|
||||
|
||||
@ -214,7 +296,15 @@ usage()
|
||||
|
||||
(void)fprintf(stderr, "usage: cksum [-m | [-o 1 | 2]] [file ...]\n");
|
||||
(void)fprintf(stderr, " sum [file ...]\n");
|
||||
(void)fprintf(stderr,
|
||||
" md2 [-p | -t | -x | -s string] [file ...]\n");
|
||||
(void)fprintf(stderr,
|
||||
" md4 [-p | -t | -x | -s string] [file ...]\n");
|
||||
(void)fprintf(stderr,
|
||||
" md5 [-p | -t | -x | -s string] [file ...]\n");
|
||||
(void)fprintf(stderr,
|
||||
" sha1 [-p | -t | -x | -s string] [file ...]\n");
|
||||
(void)fprintf(stderr,
|
||||
" rmd160 [-p | -t | -x | -s string] [file ...]\n");
|
||||
exit(1);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: extern.h,v 1.6 1997/01/30 01:10:35 thorpej Exp $ */
|
||||
/* $NetBSD: extern.h,v 1.7 2001/03/20 18:46:26 atatat Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1991, 1993
|
||||
@ -46,8 +46,28 @@ int csum1 __P((int, u_int32_t *, u_int32_t *));
|
||||
int csum2 __P((int, u_int32_t *, u_int32_t *));
|
||||
int md5 __P((int, u_int32_t *, u_int32_t *));
|
||||
|
||||
void MDString __P((const char *));
|
||||
void MDTimeTrial __P((void));
|
||||
void MDTestSuite __P((void));
|
||||
void MDFilter __P((int));
|
||||
void MD2String __P((const char *));
|
||||
void MD2TimeTrial __P((void));
|
||||
void MD2TestSuite __P((void));
|
||||
void MD2Filter __P((int));
|
||||
|
||||
void MD4String __P((const char *));
|
||||
void MD4TimeTrial __P((void));
|
||||
void MD4TestSuite __P((void));
|
||||
void MD4Filter __P((int));
|
||||
|
||||
void MD5String __P((const char *));
|
||||
void MD5TimeTrial __P((void));
|
||||
void MD5TestSuite __P((void));
|
||||
void MD5Filter __P((int));
|
||||
|
||||
void SHA1String __P((const char *));
|
||||
void SHA1TimeTrial __P((void));
|
||||
void SHA1TestSuite __P((void));
|
||||
void SHA1Filter __P((int));
|
||||
|
||||
void RMD160String __P((const char *));
|
||||
void RMD160TimeTrial __P((void));
|
||||
void RMD160TestSuite __P((void));
|
||||
void RMD160Filter __P((int));
|
||||
__END_DECLS
|
||||
|
21
usr.bin/cksum/md2.c
Normal file
21
usr.bin/cksum/md2.c
Normal file
@ -0,0 +1,21 @@
|
||||
/* $NetBSD: md2.c,v 1.1 2001/03/20 18:46:26 atatat Exp $ */
|
||||
|
||||
#include <md2.h> /* this hash type */
|
||||
#include <md5.h> /* the hash we're replacing */
|
||||
|
||||
#define HASHTYPE "MD2"
|
||||
#define HASHLEN 32
|
||||
|
||||
#define MD5Filter MD2Filter
|
||||
#define MD5String MD2String
|
||||
#define MD5TestSuite MD2TestSuite
|
||||
#define MD5TimeTrial MD2TimeTrial
|
||||
|
||||
#define MD5Data MD2Data
|
||||
#define MD5Init MD2Init
|
||||
#define MD5Update MD2Update
|
||||
#define MD5End MD2End
|
||||
|
||||
#define MD5_CTX MD2_CTX
|
||||
|
||||
#include "md5.c"
|
21
usr.bin/cksum/md4.c
Normal file
21
usr.bin/cksum/md4.c
Normal file
@ -0,0 +1,21 @@
|
||||
/* $NetBSD: md4.c,v 1.1 2001/03/20 18:46:26 atatat Exp $ */
|
||||
|
||||
#include <md4.h> /* this hash type */
|
||||
#include <md5.h> /* the hash we're replacing */
|
||||
|
||||
#define HASHTYPE "MD4"
|
||||
#define HASHLEN 32
|
||||
|
||||
#define MD5Filter MD4Filter
|
||||
#define MD5String MD4String
|
||||
#define MD5TestSuite MD4TestSuite
|
||||
#define MD5TimeTrial MD4TimeTrial
|
||||
|
||||
#define MD5Data MD4Data
|
||||
#define MD5Init MD4Init
|
||||
#define MD5Update MD4Update
|
||||
#define MD5End MD4End
|
||||
|
||||
#define MD5_CTX MD4_CTX
|
||||
|
||||
#include "md5.c"
|
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: md5.c,v 1.2 1997/10/17 11:37:09 lukem Exp $ */
|
||||
/* $NetBSD: md5.c,v 1.3 2001/03/20 18:46:26 atatat Exp $ */
|
||||
|
||||
/*
|
||||
* MDDRIVER.C - test driver for MD2, MD4 and MD5
|
||||
@ -19,7 +19,7 @@
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#ifndef lint
|
||||
__RCSID("$NetBSD: md5.c,v 1.2 1997/10/17 11:37:09 lukem Exp $");
|
||||
__RCSID("$NetBSD: md5.c,v 1.3 2001/03/20 18:46:26 atatat Exp $");
|
||||
#endif /* not lint */
|
||||
|
||||
#include <sys/types.h>
|
||||
@ -30,10 +30,18 @@ __RCSID("$NetBSD: md5.c,v 1.2 1997/10/17 11:37:09 lukem Exp $");
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
|
||||
void MDFilter __P((int));
|
||||
void MDString __P((const char *));
|
||||
void MDTestSuite __P((void));
|
||||
void MDTimeTrial __P((void));
|
||||
void MD5Filter __P((int));
|
||||
void MD5String __P((const char *));
|
||||
void MD5TestSuite __P((void));
|
||||
void MD5TimeTrial __P((void));
|
||||
|
||||
#ifndef HASHTYPE
|
||||
#define HASHTYPE "MD5"
|
||||
#endif
|
||||
|
||||
#ifndef HASHLEN
|
||||
#define HASHLEN 32
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Length of test block, number of test blocks.
|
||||
@ -45,28 +53,29 @@ void MDTimeTrial __P((void));
|
||||
* Digests a string and prints the result.
|
||||
*/
|
||||
void
|
||||
MDString(string)
|
||||
MD5String(string)
|
||||
const char *string;
|
||||
{
|
||||
unsigned int len = strlen(string);
|
||||
char buf[33];
|
||||
char buf[HASHLEN + 1];
|
||||
|
||||
printf("MD5 (\"%s\") = %s\n", string, MD5Data(string, len, buf));
|
||||
printf("%s (\"%s\") = %s\n", HASHTYPE, string,
|
||||
MD5Data(string, len, buf));
|
||||
}
|
||||
|
||||
/*
|
||||
* Measures the time to digest TEST_BLOCK_COUNT TEST_BLOCK_LEN-byte blocks.
|
||||
*/
|
||||
void
|
||||
MDTimeTrial()
|
||||
MD5TimeTrial()
|
||||
{
|
||||
MD5_CTX context;
|
||||
time_t endTime, startTime;
|
||||
unsigned char block[TEST_BLOCK_LEN];
|
||||
unsigned int i;
|
||||
char *p, buf[33];
|
||||
char *p, buf[HASHLEN + 1];
|
||||
|
||||
printf("MD5 time trial. Digesting %d %d-byte blocks ...",
|
||||
printf("%s time trial. Digesting %d %d-byte blocks ...", HASHTYPE,
|
||||
TEST_BLOCK_LEN, TEST_BLOCK_COUNT);
|
||||
fflush(stdout);
|
||||
|
||||
@ -103,18 +112,19 @@ MDTimeTrial()
|
||||
* Digests a reference suite of strings and prints the results.
|
||||
*/
|
||||
void
|
||||
MDTestSuite()
|
||||
MD5TestSuite()
|
||||
{
|
||||
printf("MD5 test suite:\n");
|
||||
printf("%s test suite:\n", HASHTYPE);
|
||||
|
||||
MDString("");
|
||||
MDString("a");
|
||||
MDString("abc");
|
||||
MDString("message digest");
|
||||
MDString("abcdefghijklmnopqrstuvwxyz");
|
||||
MDString
|
||||
MD5String("");
|
||||
MD5String("a");
|
||||
MD5String("abc");
|
||||
MD5String("message digest");
|
||||
MD5String("abcdefghijklmnopqrstuvwxyz");
|
||||
MD5String("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq");
|
||||
MD5String
|
||||
("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");
|
||||
MDString
|
||||
MD5String
|
||||
("1234567890123456789012345678901234567890\
|
||||
1234567890123456789012345678901234567890");
|
||||
}
|
||||
@ -123,13 +133,13 @@ MDTestSuite()
|
||||
* Digests the standard input and prints the result.
|
||||
*/
|
||||
void
|
||||
MDFilter(pipe)
|
||||
MD5Filter(pipe)
|
||||
int pipe;
|
||||
{
|
||||
MD5_CTX context;
|
||||
int len;
|
||||
unsigned char buffer[BUFSIZ];
|
||||
char buf[33];
|
||||
char buf[HASHLEN + 1];
|
||||
|
||||
MD5Init(&context);
|
||||
while ((len = fread(buffer, 1, BUFSIZ, stdin)) > 0) {
|
||||
|
21
usr.bin/cksum/rmd160.c
Normal file
21
usr.bin/cksum/rmd160.c
Normal file
@ -0,0 +1,21 @@
|
||||
/* $NetBSD: rmd160.c,v 1.1 2001/03/20 18:46:26 atatat Exp $ */
|
||||
|
||||
#include <rmd160.h> /* this hash type */
|
||||
#include <md5.h> /* the hash we're replacing */
|
||||
|
||||
#define HASHTYPE "RMD160"
|
||||
#define HASHLEN 40
|
||||
|
||||
#define MD5Filter RMD160Filter
|
||||
#define MD5String RMD160String
|
||||
#define MD5TestSuite RMD160TestSuite
|
||||
#define MD5TimeTrial RMD160TimeTrial
|
||||
|
||||
#define MD5Data RMD160Data
|
||||
#define MD5Init RMD160Init
|
||||
#define MD5Update RMD160Update
|
||||
#define MD5End RMD160End
|
||||
|
||||
#define MD5_CTX RMD160_CTX
|
||||
|
||||
#include "md5.c"
|
21
usr.bin/cksum/sha1.c
Normal file
21
usr.bin/cksum/sha1.c
Normal file
@ -0,0 +1,21 @@
|
||||
/* $NetBSD: sha1.c,v 1.1 2001/03/20 18:46:27 atatat Exp $ */
|
||||
|
||||
#include <sha1.h> /* this hash type */
|
||||
#include <md5.h> /* the hash we're replacing */
|
||||
|
||||
#define HASHTYPE "SHA1"
|
||||
#define HASHLEN 40
|
||||
|
||||
#define MD5Filter SHA1Filter
|
||||
#define MD5String SHA1String
|
||||
#define MD5TestSuite SHA1TestSuite
|
||||
#define MD5TimeTrial SHA1TimeTrial
|
||||
|
||||
#define MD5Data SHA1Data
|
||||
#define MD5Init SHA1Init
|
||||
#define MD5Update SHA1Update
|
||||
#define MD5End SHA1End
|
||||
|
||||
#define MD5_CTX SHA1_CTX
|
||||
|
||||
#include "md5.c"
|
Loading…
Reference in New Issue
Block a user