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