added sha2 functions

This commit is contained in:
2019-08-14 08:44:06 +00:00
parent a803e2c140
commit 4d53acaa94
11 changed files with 1268 additions and 14 deletions

View File

@ -7,7 +7,8 @@ AM_CPPFLAGS = \
bin_PROGRAMS = \
bf01
bf01 \
sha01
AM_LDFLAGS = -L../../lib/cry -L../../lib/si -L../../lib/cmn
LDADD = -lqsecry -lqsesi -lqsecmn
@ -19,3 +20,4 @@ endif
endif
bf01_SOURCES = bf01.c
sha01_SOURCES = sha01.c

View File

@ -88,7 +88,7 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
bin_PROGRAMS = bf01$(EXEEXT)
bin_PROGRAMS = bf01$(EXEEXT) sha01$(EXEEXT)
@WCHAR_TRUE@@WIN32_TRUE@am__append_1 = $(UNICOWS_LIBS)
subdir = samples/cry
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@ -118,6 +118,10 @@ AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 =
am_sha01_OBJECTS = sha01.$(OBJEXT)
sha01_OBJECTS = $(am_sha01_OBJECTS)
sha01_LDADD = $(LDADD)
sha01_DEPENDENCIES = $(am__DEPENDENCIES_2)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
@ -133,7 +137,7 @@ am__v_at_1 =
DEFAULT_INCLUDES =
depcomp = $(SHELL) $(top_srcdir)/ac/depcomp
am__maybe_remake_depfiles = depfiles
am__depfiles_remade = ./$(DEPDIR)/bf01.Po
am__depfiles_remade = ./$(DEPDIR)/bf01.Po ./$(DEPDIR)/sha01.Po
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@ -153,8 +157,8 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = $(bf01_SOURCES)
DIST_SOURCES = $(bf01_SOURCES)
SOURCES = $(bf01_SOURCES) $(sha01_SOURCES)
DIST_SOURCES = $(bf01_SOURCES) $(sha01_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
@ -355,6 +359,7 @@ AM_CPPFLAGS = \
AM_LDFLAGS = -L../../lib/cry -L../../lib/si -L../../lib/cmn
LDADD = -lqsecry -lqsesi -lqsecmn $(am__append_1)
bf01_SOURCES = bf01.c
sha01_SOURCES = sha01.c
all: all-am
.SUFFIXES:
@ -442,6 +447,10 @@ bf01$(EXEEXT): $(bf01_OBJECTS) $(bf01_DEPENDENCIES) $(EXTRA_bf01_DEPENDENCIES)
@rm -f bf01$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(bf01_OBJECTS) $(bf01_LDADD) $(LIBS)
sha01$(EXEEXT): $(sha01_OBJECTS) $(sha01_DEPENDENCIES) $(EXTRA_sha01_DEPENDENCIES)
@rm -f sha01$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(sha01_OBJECTS) $(sha01_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@ -449,6 +458,7 @@ distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bf01.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha01.Po@am__quote@ # am--include-marker
$(am__depfiles_remade):
@$(MKDIR_P) $(@D)
@ -611,6 +621,7 @@ clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f ./$(DEPDIR)/bf01.Po
-rm -f ./$(DEPDIR)/sha01.Po
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
@ -657,6 +668,7 @@ installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/bf01.Po
-rm -f ./$(DEPDIR)/sha01.Po
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic

191
qse/samples/cry/sha01.c Normal file
View File

@ -0,0 +1,191 @@
#include <qse/cry/sha2.h>
#include <qse/cry/sha1.h>
#include <qse/cry/md5.h>
#include <qse/cmn/path.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>
#include <stdio.h>
#include <getopt.h>
#define READ_BUF_SIZE (32768)
static void sha512sum (int fd, unsigned char digest[QSE_SHA512_DIGEST_LEN])
{
qse_sha512_t md;
unsigned char buf[READ_BUF_SIZE];
ssize_t n;
qse_sha512_initialize (&md);
while (1)
{
n = read(fd, buf, sizeof(buf));
if (n <= 0) break;
qse_sha512_update (&md, buf, n);
}
qse_sha512_digest (&md, digest, QSE_SHA512_DIGEST_LEN);
}
static void sha384sum (int fd, unsigned char digest[QSE_SHA384_DIGEST_LEN])
{
qse_sha384_t md;
unsigned char buf[READ_BUF_SIZE];
ssize_t n;
qse_sha384_initialize (&md);
while (1)
{
n = read(fd, buf, sizeof(buf));
if (n <= 0) break;
qse_sha384_update (&md, buf, n);
}
qse_sha384_digest (&md, digest, QSE_SHA384_DIGEST_LEN);
}
static void sha256sum (int fd, unsigned char digest[QSE_SHA256_DIGEST_LEN])
{
qse_sha256_t md;
unsigned char buf[READ_BUF_SIZE];
ssize_t n;
qse_sha256_initialize (&md);
while (1)
{
n = read(fd, buf, sizeof(buf));
if (n <= 0) break;
qse_sha256_update (&md, buf, n);
}
qse_sha256_digest (&md, digest, QSE_SHA256_DIGEST_LEN);
}
static void sha1sum (int fd, unsigned char digest[QSE_SHA1_DIGEST_LEN])
{
qse_sha1_t md;
unsigned char buf[READ_BUF_SIZE];
ssize_t n;
qse_sha1_initialize (&md);
while (1)
{
n = read(fd, buf, sizeof(buf));
if (n <= 0) break;
qse_sha1_update (&md, buf, n);
}
qse_sha1_digest (&md, digest, QSE_SHA1_DIGEST_LEN);
}
static void md5sum (int fd, unsigned char digest[QSE_MD5_DIGEST_LEN])
{
qse_md5_t md;
unsigned char buf[READ_BUF_SIZE];
ssize_t n;
qse_md5_initialize (&md);
while (1)
{
n = read(fd, buf, sizeof(buf));
if (n <= 0) break;
qse_md5_update (&md, buf, n);
}
qse_md5_digest (&md, digest, QSE_MD5_DIGEST_LEN);
}
static void print_usage (const char* argv0)
{
fprintf (stderr, "Usage: %s [options]\n", argv0);
fprintf (stderr, "where options are:\n");
fprintf (stderr, " -m md5\n");
fprintf (stderr, " -1 sha1\n");
fprintf (stderr, " -2 sha256\n");
fprintf (stderr, " -3 sha384\n");
fprintf (stderr, " -5 sha512\n");
}
int main (int argc, char* argv[])
{
unsigned char digest[QSE_SHA512_DIGEST_LEN];
int digest_len = QSE_SHA512_DIGEST_LEN;
void (*sha_func) (int fd, unsigned char* digest) = sha512sum;
int i, j;
while (1)
{
int c;
c = getopt(argc, argv, ":hm1235");
if (c == -1) break;
switch (c)
{
case 'h':
print_usage (qse_mbsbasename(argv[0]));
return 0;
case 'm':
digest_len = QSE_MD5_DIGEST_LEN;
sha_func = md5sum;
break;
case '1':
digest_len = QSE_SHA1_DIGEST_LEN;
sha_func = sha1sum;
break;
case '2':
digest_len = QSE_SHA256_DIGEST_LEN;
sha_func = sha256sum;
break;
case '3':
digest_len = QSE_SHA384_DIGEST_LEN;
sha_func = sha384sum;
break;
case '5':
digest_len = QSE_SHA512_DIGEST_LEN;
sha_func = sha512sum;
break;
case '?':
case ':':
print_usage (qse_mbsbasename(argv[0]));
return -1;
}
}
if (optind >= argc)
{
sha_func (STDIN_FILENO, digest);
for (j = 0; j < digest_len; j++)
printf ("%02x", digest[j]);
printf (" -\n");
}
else
{
int fd;
for (i = optind; i < argc; i++)
{
fd = strcmp(argv[i], "-")? open(argv[i], O_RDONLY): STDIN_FILENO;
if (fd >= 0)
{
sha_func (fd, digest);
for (j = 0; j < digest_len; j++)
printf ("%02x", digest[j]);
printf (" %s\n", argv[i]);
if (strcmp(argv[i], "-")) close (fd);
}
else
{
fprintf (stderr, "%s: %s\n", argv[i], strerror(errno));
}
}
}
return 0;
}