Changeset View
Changeset View
Standalone View
Standalone View
head/sbin/md5/md5.c
Show All 24 Lines | |||||
#include <sys/resource.h> | #include <sys/resource.h> | ||||
#include <err.h> | #include <err.h> | ||||
#include <md5.h> | #include <md5.h> | ||||
#include <ripemd.h> | #include <ripemd.h> | ||||
#include <sha.h> | #include <sha.h> | ||||
#include <sha256.h> | #include <sha256.h> | ||||
#include <sha384.h> | #include <sha384.h> | ||||
#include <sha512.h> | #include <sha512.h> | ||||
#include <sha512t.h> | |||||
#include <stdio.h> | #include <stdio.h> | ||||
#include <stdlib.h> | #include <stdlib.h> | ||||
#include <string.h> | #include <string.h> | ||||
#include <time.h> | #include <time.h> | ||||
#include <unistd.h> | #include <unistd.h> | ||||
/* | /* | ||||
* Length of test block, number of test blocks. | * Length of test block, number of test blocks. | ||||
Show All 12 Lines | |||||
typedef void (DIGEST_Update)(void *, const unsigned char *, size_t); | typedef void (DIGEST_Update)(void *, const unsigned char *, size_t); | ||||
typedef char *(DIGEST_End)(void *, char *); | typedef char *(DIGEST_End)(void *, char *); | ||||
extern const char *MD5TestOutput[MDTESTCOUNT]; | extern const char *MD5TestOutput[MDTESTCOUNT]; | ||||
extern const char *SHA1_TestOutput[MDTESTCOUNT]; | extern const char *SHA1_TestOutput[MDTESTCOUNT]; | ||||
extern const char *SHA256_TestOutput[MDTESTCOUNT]; | extern const char *SHA256_TestOutput[MDTESTCOUNT]; | ||||
extern const char *SHA384_TestOutput[MDTESTCOUNT]; | extern const char *SHA384_TestOutput[MDTESTCOUNT]; | ||||
extern const char *SHA512_TestOutput[MDTESTCOUNT]; | extern const char *SHA512_TestOutput[MDTESTCOUNT]; | ||||
extern const char *SHA512t256_TestOutput[MDTESTCOUNT]; | |||||
extern const char *RIPEMD160_TestOutput[MDTESTCOUNT]; | extern const char *RIPEMD160_TestOutput[MDTESTCOUNT]; | ||||
typedef struct Algorithm_t { | typedef struct Algorithm_t { | ||||
const char *progname; | const char *progname; | ||||
const char *name; | const char *name; | ||||
const char *(*TestOutput)[MDTESTCOUNT]; | const char *(*TestOutput)[MDTESTCOUNT]; | ||||
DIGEST_Init *Init; | DIGEST_Init *Init; | ||||
DIGEST_Update *Update; | DIGEST_Update *Update; | ||||
Show All 36 Lines | static const struct Algorithm_t Algorithm[] = { | ||||
(DIGEST_Update*)&SHA256_Update, (DIGEST_End*)&SHA256_End, | (DIGEST_Update*)&SHA256_Update, (DIGEST_End*)&SHA256_End, | ||||
&SHA256_Data, &SHA256_File }, | &SHA256_Data, &SHA256_File }, | ||||
{ "sha384", "SHA384", &SHA384_TestOutput, (DIGEST_Init*)&SHA384_Init, | { "sha384", "SHA384", &SHA384_TestOutput, (DIGEST_Init*)&SHA384_Init, | ||||
(DIGEST_Update*)&SHA384_Update, (DIGEST_End*)&SHA384_End, | (DIGEST_Update*)&SHA384_Update, (DIGEST_End*)&SHA384_End, | ||||
&SHA384_Data, &SHA384_File }, | &SHA384_Data, &SHA384_File }, | ||||
{ "sha512", "SHA512", &SHA512_TestOutput, (DIGEST_Init*)&SHA512_Init, | { "sha512", "SHA512", &SHA512_TestOutput, (DIGEST_Init*)&SHA512_Init, | ||||
(DIGEST_Update*)&SHA512_Update, (DIGEST_End*)&SHA512_End, | (DIGEST_Update*)&SHA512_Update, (DIGEST_End*)&SHA512_End, | ||||
&SHA512_Data, &SHA512_File }, | &SHA512_Data, &SHA512_File }, | ||||
{ "sha512t256", "SHA512t256", &SHA512t256_TestOutput, (DIGEST_Init*)&SHA512_256_Init, | |||||
(DIGEST_Update*)&SHA512_256_Update, (DIGEST_End*)&SHA512_256_End, | |||||
&SHA512_256_Data, &SHA512_256_File }, | |||||
{ "rmd160", "RMD160", &RIPEMD160_TestOutput, | { "rmd160", "RMD160", &RIPEMD160_TestOutput, | ||||
(DIGEST_Init*)&RIPEMD160_Init, (DIGEST_Update*)&RIPEMD160_Update, | (DIGEST_Init*)&RIPEMD160_Init, (DIGEST_Update*)&RIPEMD160_Update, | ||||
(DIGEST_End*)&RIPEMD160_End, &RIPEMD160_Data, &RIPEMD160_File } | (DIGEST_End*)&RIPEMD160_End, &RIPEMD160_Data, &RIPEMD160_File } | ||||
}; | }; | ||||
static void | static void | ||||
MD5_Update(MD5_CTX *c, const unsigned char *data, size_t len) | MD5_Update(MD5_CTX *c, const unsigned char *data, size_t len) | ||||
{ | { | ||||
▲ Show 20 Lines • Show All 227 Lines • ▼ Show 20 Lines | const char *SHA512_TestOutput[MDTESTCOUNT] = { | ||||
"cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e", | "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e", | ||||
"1f40fc92da241694750979ee6cf582f2d5d7d28e18335de05abc54d0560e0f5302860c652bf08d560252aa5e74210546f369fbbbce8c12cfc7957b2652fe9a75", | "1f40fc92da241694750979ee6cf582f2d5d7d28e18335de05abc54d0560e0f5302860c652bf08d560252aa5e74210546f369fbbbce8c12cfc7957b2652fe9a75", | ||||
"ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f", | "ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f", | ||||
"107dbf389d9e9f71a3a95f6c055b9251bc5268c2be16d6c13492ea45b0199f3309e16455ab1e96118e8a905d5597b72038ddb372a89826046de66687bb420e7c", | "107dbf389d9e9f71a3a95f6c055b9251bc5268c2be16d6c13492ea45b0199f3309e16455ab1e96118e8a905d5597b72038ddb372a89826046de66687bb420e7c", | ||||
"4dbff86cc2ca1bae1e16468a05cb9881c97f1753bce3619034898faa1aabe429955a1bf8ec483d7421fe3c1646613a59ed5441fb0f321389f77f48a879c7b1f1", | "4dbff86cc2ca1bae1e16468a05cb9881c97f1753bce3619034898faa1aabe429955a1bf8ec483d7421fe3c1646613a59ed5441fb0f321389f77f48a879c7b1f1", | ||||
"1e07be23c26a86ea37ea810c8ec7809352515a970e9253c26f536cfc7a9996c45c8370583e0a78fa4a90041d71a4ceab7423f19c71b9d5a3e01249f0bebd5894", | "1e07be23c26a86ea37ea810c8ec7809352515a970e9253c26f536cfc7a9996c45c8370583e0a78fa4a90041d71a4ceab7423f19c71b9d5a3e01249f0bebd5894", | ||||
"72ec1ef1124a45b047e8b7c75a932195135bb61de24ec0d1914042246e0aec3a2354e093d76f3048b456764346900cb130d2a4fd5dd16abb5e30bcb850dee843", | "72ec1ef1124a45b047e8b7c75a932195135bb61de24ec0d1914042246e0aec3a2354e093d76f3048b456764346900cb130d2a4fd5dd16abb5e30bcb850dee843", | ||||
"e8a835195e039708b13d9131e025f4441dbdc521ce625f245a436dcd762f54bf5cb298d96235e6c6a304e087ec8189b9512cbdf6427737ea82793460c367b9c3" | "e8a835195e039708b13d9131e025f4441dbdc521ce625f245a436dcd762f54bf5cb298d96235e6c6a304e087ec8189b9512cbdf6427737ea82793460c367b9c3" | ||||
}; | |||||
const char *SHA512t256_TestOutput[MDTESTCOUNT] = { | |||||
"c672b8d1ef56ed28ab87c3622c5114069bdd3ad7b8f9737498d0c01ecef0967a", | |||||
"455e518824bc0601f9fb858ff5c37d417d67c2f8e0df2babe4808858aea830f8", | |||||
"53048e2681941ef99b2e29b76b4c7dabe4c2d0c634fc6d46e0e2f13107e7af23", | |||||
"0cf471fd17ed69d990daf3433c89b16d63dec1bb9cb42a6094604ee5d7b4e9fb", | |||||
"fc3189443f9c268f626aea08a756abe7b726b05f701cb08222312ccfd6710a26", | |||||
"cdf1cc0effe26ecc0c13758f7b4a48e000615df241284185c39eb05d355bb9c8", | |||||
"2c9fdbc0c90bdd87612ee8455474f9044850241dc105b1e8b94b8ddf5fac9148", | |||||
"dd095fc859b336c30a52548b3dc59fcc0d1be8616ebcf3368fad23107db2d736" | |||||
}; | }; | ||||
const char *RIPEMD160_TestOutput[MDTESTCOUNT] = { | const char *RIPEMD160_TestOutput[MDTESTCOUNT] = { | ||||
"9c1185a5c5e9fc54612808977ee8f548b2258d31", | "9c1185a5c5e9fc54612808977ee8f548b2258d31", | ||||
"0bdc9d2d256b3ee9daae347be6f4dc835a467ffe", | "0bdc9d2d256b3ee9daae347be6f4dc835a467ffe", | ||||
"8eb208f7e05d987a9b044a8e98c6b087f15a0bfc", | "8eb208f7e05d987a9b044a8e98c6b087f15a0bfc", | ||||
"5d0689ef49d2fae572b881b123a85ffa21595f36", | "5d0689ef49d2fae572b881b123a85ffa21595f36", | ||||
"f71c27109c692c1b56bbdceb5b9d2865b3708dbc", | "f71c27109c692c1b56bbdceb5b9d2865b3708dbc", | ||||
▲ Show 20 Lines • Show All 49 Lines • Show Last 20 Lines |