/[winpt]/trunk/Gnupg/md.c
ViewVC logotype

Contents of /trunk/Gnupg/md.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 439 - (show annotations)
Thu Apr 12 18:41:31 2012 UTC (12 years, 10 months ago) by twoaday
File MIME type: text/plain
File size: 3165 byte(s)
2012-04-12  Timo Schulz  <twoaday@gmx.net>

        * sha512.c: Removed.
        * md.c (gpg_md_hash_file): Removed.
	        (gpg_md_open): Removed non SHA-1 support.
	        (gpg_md_write): Likewise.
	        (do_check_md): Removed.
	        (gpg_md_selftest): Removed unused code.


1 /* md.c - message digest wrapper
2 * Copyright (C) 2003, 2004 Timo Schulz
3 *
4 * This file is part of GPGLIB.
5 *
6 * GPGLIB is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * GPGLIB is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with GPGLIB; if not, write to the Free Software Foundation,
18 * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20
21 #ifdef HAVE_CONFIG_H
22 #include <config.h>
23 #endif
24
25 #include <windows.h>
26 #include <windows.h>
27 #include <stdio.h>
28 #include <malloc.h>
29 #include <sys/types.h>
30
31 #include "openpgp.h"
32 #include "md.h"
33
34 struct gpgm_md_s {
35 void * ctx;
36 int algo;
37 void (*write)( void *ctx, unsigned char *inbuf, size_t inlen );
38 };
39
40
41 gpg_md_t
42 gpg_md_open( int algo )
43 {
44 gpg_md_t md;
45
46 if (algo != MD_SHA1 && algo != MD_MD5 && algo != MD_RMD160)
47 return NULL;
48 md = calloc (1, sizeof * md);
49 if (!md)
50 return NULL;
51 switch (algo) {
52 case MD_MD5:
53 md->ctx = calloc( 1, sizeof (MD5_CONTEXT) );
54 if( !md->ctx ) {
55 free( md );
56 return NULL;
57 }
58 md5_init( (MD5_CONTEXT *)md->ctx );
59 md->write = md5_write;
60 break;
61
62 case MD_SHA1:
63 md->ctx = calloc( 1, sizeof (SHA1_CONTEXT) );
64 if( !md->ctx ) {
65 free( md );
66 return NULL;
67 }
68 sha1_init( (SHA1_CONTEXT *)md->ctx );
69 md->write = sha1_write;
70 break;
71
72 case MD_RMD160:
73 md->ctx = calloc( 1, sizeof (RMD160_CONTEXT) );
74 if( !md->ctx ) {
75 free( md );
76 return NULL;
77 }
78 rmd160_init( (RMD160_CONTEXT *)md->ctx );
79 md->write = rmd160_write;
80 break;
81
82 default:
83 free( md );
84 return NULL;
85 }
86 md->algo = algo;
87 return md;
88 }
89
90
91 void
92 gpg_md_close( gpg_md_t md )
93 {
94 if( md ) {
95 md->algo = 0;
96 md->write = NULL;
97 free( md->ctx ); md->ctx = NULL;
98 free( md );
99 }
100 }
101
102
103 void
104 gpg_md_final( gpg_md_t md )
105 {
106 switch( md->algo ) {
107 case MD_MD5 : md5_final( (MD5_CONTEXT *)md->ctx ); break;
108 case MD_SHA1 : sha1_final( (SHA1_CONTEXT *) md->ctx ); break;
109 case MD_RMD160: rmd160_final( (RMD160_CONTEXT *) md->ctx ); break;
110 }
111 }
112
113
114 const unsigned char *
115 gpg_md_read (gpg_md_t md)
116 {
117 switch( md->algo ) {
118 case MD_MD5 : return md5_read( (MD5_CONTEXT *)md->ctx ); break;
119 case MD_SHA1 : return sha1_read( (SHA1_CONTEXT *)md->ctx ); break;
120 case MD_RMD160: return rmd160_read( (RMD160_CONTEXT *)md->ctx ); break;
121 }
122 return NULL;
123 }
124
125
126 void
127 gpg_md_putc( gpg_md_t md, int c )
128 {
129 unsigned char buf[1];
130 buf[0] = c & 0xff;
131 md->write( md->ctx, buf, 1 );
132 }
133
134
135 size_t
136 _md_get_digest_len (gpg_md_t md)
137 {
138 switch (md->algo) {
139 case MD_MD5:
140 return 16;
141 case MD_SHA1:
142 case MD_RMD160:
143 return 20;
144 }
145 return 0;
146 }
147
148
149 void
150 gpg_md_write( gpg_md_t md, unsigned char *inbuf, size_t len )
151 {
152 if( md )
153 md->write( md->ctx, inbuf, len );
154 }

Properties

Name Value
svn:eol-style native

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26