From 0b2b159b2da5f6a54b1ca7252c19eb1c1e231a2b Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Fri, 17 Feb 2012 22:37:24 +0100 Subject: [PATCH] Adding sha1_io.c/h: A wrapper interface for performing posix file I/O with SHA1 as a CRC mechanism. When writing file formats using SHA1 as CRC, its is handy to have SHA1_Update() to be applied to every write(). so that an SHA1 hash can be calculated for that data and used as an CRC check. Therefor this interface is created to wrap the code used to do this. --- sha1_io.c | 35 +++++++++++++++++++++++++++++++++++ sha1_io.h | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 sha1_io.c create mode 100644 sha1_io.h diff --git a/sha1_io.c b/sha1_io.c new file mode 100644 index 0000000..8cd2ca0 --- /dev/null +++ b/sha1_io.c @@ -0,0 +1,35 @@ +/* sha1_io.c - sha1 file I/O wrappers. + * + * Copyright (C) 2011-2012 Henrik Hautakoski + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ + +#include +#include +#include "sha1_io.h" + +int sha1_write(SHA_CTX *ctx, int fd, void *buf, size_t size) { + + SHA1_Update(ctx, buf, size); + return write(fd, buf, size); +} + +int sha1_write_int(SHA_CTX *ctx, int fd, int val) { + + val = htonl(val); + return sha1_write(ctx, fd, &val, sizeof val); +} diff --git a/sha1_io.h b/sha1_io.h new file mode 100644 index 0000000..7da05af --- /dev/null +++ b/sha1_io.h @@ -0,0 +1,32 @@ +/* sha1_io.h - sha1 file I/O wrappers. + * + * Copyright (C) 2011-2012 Henrik Hautakoski + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + */ +#ifndef SHA1_IO_H +#define SHA1_IO_H + +#include + +int sha1_write(SHA_CTX *ctx, int fd, void *buf, size_t size); + +/* This function makes sure that the integer is in + network byte order before it is written to disk + by 'sha1_write'. */ +int sha1_write_int(SHA_CTX *ctx, int fd, int val); + +#endif /* SHA1_IO_H */ \ No newline at end of file