summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authoremaste <emaste@FreeBSD.org>2016-12-21 18:42:04 +0000
committeremaste <emaste@FreeBSD.org>2016-12-21 18:42:04 +0000
commit6a16c286f29d59cc449f7cea76b51262b136a62b (patch)
treef5453064203999d75924a17e7e18b8968d590b73 /lib
parent881a4f10f0d0c90401e2f1132ab9677913740583 (diff)
downloadFreeBSD-src-6a16c286f29d59cc449f7cea76b51262b136a62b.zip
FreeBSD-src-6a16c286f29d59cc449f7cea76b51262b136a62b.tar.gz
MFC r307521: libmd: introduce functions that operate on fd instead of filename
Diffstat (limited to 'lib')
-rw-r--r--lib/libmd/md4.h8
-rw-r--r--lib/libmd/md5.h6
-rw-r--r--lib/libmd/mdXhl.c36
-rw-r--r--lib/libmd/ripemd.h8
-rw-r--r--lib/libmd/sha.h16
5 files changed, 64 insertions, 10 deletions
diff --git a/lib/libmd/md4.h b/lib/libmd/md4.h
index 086a27b..b6e6eba 100644
--- a/lib/libmd/md4.h
+++ b/lib/libmd/md4.h
@@ -53,6 +53,12 @@ __BEGIN_DECLS
#ifndef MD4End
#define MD4End _libmd_MD4End
#endif
+#ifndef MD4Fd
+#define MD4Fd _libmd_MD4Fd
+#endif
+#ifndef MD4FdChunk
+#define MD4FdChunk _libmd_MD4FdChunk
+#endif
#ifndef MD4File
#define MD4File _libmd_MD4File
#endif
@@ -68,6 +74,8 @@ void MD4Update(MD4_CTX *, const void *, unsigned int);
void MD4Pad(MD4_CTX *);
void MD4Final(unsigned char [16], MD4_CTX *);
char * MD4End(MD4_CTX *, char *);
+char * MD4Fd(int, char *);
+char * MD4FdChunk(int, char *, off_t, off_t);
char * MD4File(const char *, char *);
char * MD4FileChunk(const char *, char *, off_t, off_t);
char * MD4Data(const void *, unsigned int, char *);
diff --git a/lib/libmd/md5.h b/lib/libmd/md5.h
index 5ab3b14..631dec8 100644
--- a/lib/libmd/md5.h
+++ b/lib/libmd/md5.h
@@ -25,6 +25,12 @@
#ifndef MD5End
#define MD5End _libmd_MD5End
#endif
+#ifndef MD5Fd
+#define MD5Fd _libmd_MD5Fd
+#endif
+#ifndef MD5FdChunk
+#define MD5FdChunk _libmd_MD5FdChunk
+#endif
#ifndef MD5File
#define MD5File _libmd_MD5File
#endif
diff --git a/lib/libmd/mdXhl.c b/lib/libmd/mdXhl.c
index 6ed214b..397c85b 100644
--- a/lib/libmd/mdXhl.c
+++ b/lib/libmd/mdXhl.c
@@ -42,18 +42,18 @@ MDXEnd(MDX_CTX *ctx, char *buf)
}
char *
-MDXFile(const char *filename, char *buf)
+MDXFd(int fd, char *buf)
{
- return (MDXFileChunk(filename, buf, 0, 0));
+ return MDXFdChunk(fd, buf, 0, 0);
}
char *
-MDXFileChunk(const char *filename, char *buf, off_t ofs, off_t len)
+MDXFdChunk(int fd, char *buf, off_t ofs, off_t len)
{
unsigned char buffer[16*1024];
MDX_CTX ctx;
struct stat stbuf;
- int fd, readrv, e;
+ int readrv, e;
off_t remain;
if (len < 0) {
@@ -62,9 +62,6 @@ MDXFileChunk(const char *filename, char *buf, off_t ofs, off_t len)
}
MDXInit(&ctx);
- fd = open(filename, O_RDONLY);
- if (fd < 0)
- return NULL;
if (ofs != 0) {
errno = 0;
if (lseek(fd, ofs, SEEK_SET) != ofs ||
@@ -86,15 +83,34 @@ MDXFileChunk(const char *filename, char *buf, off_t ofs, off_t len)
remain -= readrv;
}
error:
- e = errno;
- close(fd);
- errno = e;
if (readrv < 0)
return NULL;
return (MDXEnd(&ctx, buf));
}
char *
+MDXFile(const char *filename, char *buf)
+{
+ return (MDXFileChunk(filename, buf, 0, 0));
+}
+
+char *
+MDXFileChunk(const char *filename, char *buf, off_t ofs, off_t len)
+{
+ char *ret;
+ int e, fd;
+
+ fd = open(filename, O_RDONLY);
+ if (fd < 0)
+ return NULL;
+ ret = MDXFdChunk(fd, buf, ofs, len);
+ e = errno;
+ close (fd);
+ errno = e;
+ return ret;
+}
+
+char *
MDXData (const void *data, unsigned int len, char *buf)
{
MDX_CTX ctx;
diff --git a/lib/libmd/ripemd.h b/lib/libmd/ripemd.h
index 778808f..f7d0de0 100644
--- a/lib/libmd/ripemd.h
+++ b/lib/libmd/ripemd.h
@@ -96,6 +96,12 @@ __BEGIN_DECLS
#ifndef RIPEMD160_End
#define RIPEMD160_End _libmd_RIPEMD160_End
#endif
+#ifndef RIPEMD160_Fd
+#define RIPEMD160_Fd _libmd_RIPEMD160_Fd
+#endif
+#ifndef RIPEMD160_FdChunk
+#define RIPEMD160_FdChunk _libmd_RIPEMD160_FdChunk
+#endif
#ifndef RIPEMD160_File
#define RIPEMD160_File _libmd_RIPEMD160_File
#endif
@@ -121,6 +127,8 @@ void RIPEMD160_Update(RIPEMD160_CTX *c, const void *data,
size_t len);
void RIPEMD160_Final(unsigned char *md, RIPEMD160_CTX *c);
char *RIPEMD160_End(RIPEMD160_CTX *, char *);
+char *RIPEMD160_Fd(int, char *);
+char *RIPEMD160_FdChunk(int, char *, off_t, off_t);
char *RIPEMD160_File(const char *, char *);
char *RIPEMD160_FileChunk(const char *, char *, off_t, off_t);
char *RIPEMD160_Data(const void *, unsigned int, char *);
diff --git a/lib/libmd/sha.h b/lib/libmd/sha.h
index c608c5b..9e4a5c4 100644
--- a/lib/libmd/sha.h
+++ b/lib/libmd/sha.h
@@ -94,6 +94,12 @@ __BEGIN_DECLS
#ifndef SHA_End
#define SHA_End _libmd_SHA_End
#endif
+#ifndef SHA_Fd
+#define SHA_Fd _libmd_SHA_Fd
+#endif
+#ifndef SHA_FdChunk
+#define SHA_FdChunk _libmd_SHA_FdChunk
+#endif
#ifndef SHA_File
#define SHA_File _libmd_SHA_File
#endif
@@ -126,6 +132,12 @@ __BEGIN_DECLS
#ifndef SHA1_End
#define SHA1_End _libmd_SHA1_End
#endif
+#ifndef SHA1_Fd
+#define SHA1_Fd _libmd_SHA1_Fd
+#endif
+#ifndef SHA1_FdChunk
+#define SHA1_FdChunk _libmd_SHA1_FdChunk
+#endif
#ifndef SHA1_File
#define SHA1_File _libmd_SHA1_File
#endif
@@ -150,6 +162,8 @@ void SHA_Init(SHA_CTX *c);
void SHA_Update(SHA_CTX *c, const void *data, size_t len);
void SHA_Final(unsigned char *md, SHA_CTX *c);
char *SHA_End(SHA_CTX *, char *);
+char *SHA_Fd(int, char *);
+char *SHA_FdChunk(int, char *, off_t, off_t);
char *SHA_File(const char *, char *);
char *SHA_FileChunk(const char *, char *, off_t, off_t);
char *SHA_Data(const void *, unsigned int, char *);
@@ -158,6 +172,8 @@ void SHA1_Init(SHA_CTX *c);
void SHA1_Update(SHA_CTX *c, const void *data, size_t len);
void SHA1_Final(unsigned char *md, SHA_CTX *c);
char *SHA1_End(SHA_CTX *, char *);
+char *SHA1_Fd(int, char *);
+char *SHA1_FdChunk(int, char *, off_t, off_t);
char *SHA1_File(const char *, char *);
char *SHA1_FileChunk(const char *, char *, off_t, off_t);
char *SHA1_Data(const void *, unsigned int, char *);
OpenPOWER on IntegriCloud