1220496Smarkm/* SHADRIVER.C - test driver for SHA-1 (and SHA-2) */
244290Swollman
3220496Smarkm/* Copyright (C) 1990-2, RSA Data Security, Inc. Created 1990. All rights
4220496Smarkm * reserved.
5220496Smarkm *
6220496Smarkm * RSA Data Security, Inc. makes no representations concerning either the
7220496Smarkm * merchantability of this software or the suitability of this software for
8220496Smarkm * any particular purpose. It is provided "as is" without express or implied
9220496Smarkm * warranty of any kind.
10220496Smarkm *
11220496Smarkm * These notices must be retained in any copies of any part of this
12220496Smarkm * documentation and/or software. */
13220496Smarkm
1484211Sdillon#include <sys/cdefs.h>
1584211Sdillon__FBSDID("$FreeBSD: stable/10/lib/libmd/shadriver.c 314332 2017-02-27 10:40:39Z avg $");
1684211Sdillon
17220496Smarkm#include <sys/types.h>
1844290Swollman
19220496Smarkm#include <stdio.h>
20220496Smarkm#include <time.h>
21220496Smarkm#include <string.h>
2244290Swollman
23220496Smarkm#include "sha.h"
24220496Smarkm#include "sha256.h"
25314327Savg#include "sha384.h"
26220496Smarkm#include "sha512.h"
27314332Savg#include "sha512t.h"
2844290Swollman
2944290Swollman/* The following makes SHA default to SHA-1 if it has not already been
30220496Smarkm * defined with C compiler flags. */
3144290Swollman#ifndef SHA
3244290Swollman#define SHA 1
3344290Swollman#endif
3444290Swollman
3544290Swollman#if SHA == 1
36314144Savg#undef SHA_Data
3744290Swollman#define SHA_Data SHA1_Data
38143334Scperciva#elif SHA == 256
39314144Savg#undef SHA_Data
40143334Scperciva#define SHA_Data SHA256_Data
41314327Savg#elif SHA == 384
42314327Savg#undef SHA_Data
43314327Savg#define SHA_Data SHA384_Data
44220496Smarkm#elif SHA == 512
45314144Savg#undef SHA_Data
46220496Smarkm#define SHA_Data SHA512_Data
47314332Savg#elif SHA == 512256
48314332Savg#undef SHA_Data
49314332Savg#define SHA_Data SHA512_256_Data
5044290Swollman#endif
5144290Swollman
52220496Smarkm/* Digests a string and prints the result. */
53220496Smarkmstatic void
54220496SmarkmSHAString(char *string)
5544290Swollman{
56220496Smarkm	char buf[2*64 + 1];
5744290Swollman
58220496Smarkm	printf("SHA-%d (\"%s\") = %s\n",
59220496Smarkm	       SHA, string, SHA_Data(string, strlen(string), buf));
6044290Swollman}
6144290Swollman
62220496Smarkm/* Digests a reference suite of strings and prints the results. */
63220496Smarkmint
64220496Smarkmmain(void)
6544290Swollman{
66220496Smarkm	printf("SHA-%d test suite:\n", SHA);
6744290Swollman
68220496Smarkm	SHAString("");
69220496Smarkm	SHAString("abc");
70220496Smarkm	SHAString("message digest");
71220496Smarkm	SHAString("abcdefghijklmnopqrstuvwxyz");
72220496Smarkm	SHAString("ABCDEFGHIJKLMNOPQRSTUVWXYZ"
73220496Smarkm		  "abcdefghijklmnopqrstuvwxyz0123456789");
74220496Smarkm	SHAString("1234567890123456789012345678901234567890"
75220496Smarkm		  "1234567890123456789012345678901234567890");
76220496Smarkm
77220496Smarkm	return 0;
7844290Swollman}
79