@@ -102,49 +102,102 @@ static int crapi_sha2_fd (HASH_HashType algo, int fd, void *dst, size_t *size)
102
102
return (0 );
103
103
}
104
104
105
+ struct crapi_sha2_ctx {
106
+ HASHContext * ctx ;
107
+ void * dst ;
108
+ size_t * size ;
109
+ };
110
+
111
+ static void * crapi_sha2_init (void * dst , void * size , int alg )
112
+ {
113
+ struct crapi_sha2_ctx * ctx = malloc (sizeof (struct crapi_sha2_ctx ));
114
+
115
+ ctx -> ctx = HASH_Create (alg );
116
+ ctx -> dst = dst ;
117
+ ctx -> size = size ;
118
+
119
+ if (ctx -> ctx != NULL ) {
120
+ HASH_Begin (ctx -> ctx );
121
+ } else {
122
+ free (ctx );
123
+ ctx = NULL ;
124
+ }
125
+
126
+ return (ctx );
127
+ }
128
+
129
+ static int crapi_sha2_update (void * ctxp , void * bptr , size_t blen )
130
+ {
131
+ struct crapi_sha2_ctx * ctx = (struct crapi_sha1_ctx * )ctxp ;
132
+
133
+ HASH_Update (ctx -> ctx , (const unsigned char * )bptr , (unsigned int )blen );
134
+ return (0 );
135
+ }
136
+
137
+ static int crapi_sha2_fini (void * ctxp )
138
+ {
139
+ struct crapi_sha2_ctx * ctx = (struct crapi_sha2_ctx * )ctxp ;
140
+
141
+ HASH_End (ctx -> ctx , ctx -> dst , (unsigned int * )ctx -> size , * ctx -> size );
142
+ HASH_Destroy (ctx -> ctx );
143
+ free (ctx );
144
+
145
+ return (0 );
146
+ }
147
+
148
+ static void crapi_sha2_free (void * ctxp )
149
+ {
150
+ struct crapi_sha2_ctx * ctx = (struct crapi_sha1_ctx * )ctxp ;
151
+
152
+ HASH_Destroy (ctx -> ctx );
153
+ free (ctx );
154
+
155
+ return ;
156
+ }
157
+
105
158
void * crapi_sha224_init (void * dst , void * size )
106
159
{
107
- return ( NULL );
160
+ return crapi_sha2_init ( dst , size , HASH_AlgSHA224 );
108
161
}
109
162
110
163
int crapi_sha224_update (void * ctxp , void * bptr , size_t blen )
111
164
{
112
- return ( -1 );
165
+ return crapi_sha2_update ( ctxp , bptr , blen );
113
166
}
114
167
115
168
int crapi_sha224_fini (void * ctxp )
116
169
{
117
- return ( -1 );
170
+ return crapi_sha2_fini ( ctxp );
118
171
}
119
172
120
173
void crapi_sha224_free (void * ctxp )
121
174
{
122
- return ;
175
+ crapi_sha2_free ( ctxp ) ;
123
176
}
124
177
125
178
int crapi_sha224_fd (int fd , void * dst , size_t * size )
126
179
{
127
- return ( -1 );
180
+ return crapi_sha2_fd ( HASH_AlgSHA224 , fd , dst , size );
128
181
}
129
182
130
183
void * crapi_sha256_init (void * dst , void * size )
131
184
{
132
- return ( NULL );
185
+ return crapi_sha2_init ( dst , size , HASH_AlgSHA256 );
133
186
}
134
187
135
188
int crapi_sha256_update (void * ctxp , void * bptr , size_t blen )
136
189
{
137
- return ( -1 );
190
+ return crapi_sha2_update ( ctxp , bptr , blen );
138
191
}
139
192
140
193
int crapi_sha256_fini (void * ctxp )
141
194
{
142
- return ( -1 );
195
+ return crapi_sha2_fini ( ctxp );
143
196
}
144
197
145
198
void crapi_sha256_free (void * ctxp )
146
199
{
147
- return ;
200
+ crapi_sha2_free ( ctxp ) ;
148
201
}
149
202
150
203
int crapi_sha256_fd (int fd , void * dst , size_t * size )
@@ -154,47 +207,47 @@ int crapi_sha256_fd (int fd, void *dst, size_t *size)
154
207
155
208
void * crapi_sha384_init (void * dst , void * size )
156
209
{
157
- return ( NULL );
210
+ return crapi_sha2_init ( dst , size , HASH_AlgSHA384 );
158
211
}
159
212
160
213
int crapi_sha384_update (void * ctxp , void * bptr , size_t blen )
161
214
{
162
- return ( -1 );
215
+ return crapi_sha2_update ( ctxp , bptr , blen );
163
216
}
164
217
165
218
int crapi_sha384_fini (void * ctxp )
166
219
{
167
- return ( -1 );
220
+ return crapi_sha2_fini ( ctxp );
168
221
}
169
222
170
223
void crapi_sha384_free (void * ctxp )
171
224
{
172
- return ;
225
+ crapi_sha2_free ( ctxp ) ;
173
226
}
174
227
175
228
int crapi_sha384_fd (int fd , void * dst , size_t * size )
176
229
{
177
- return ( -1 );
230
+ return crapi_sha2_fd ( HASH_AlgSHA384 , fd , dst , size );
178
231
}
179
232
180
233
void * crapi_sha512_init (void * dst , void * size )
181
234
{
182
- return ( NULL );
235
+ return crapi_sha2_init ( dst , size , HASH_AlgSHA512 );
183
236
}
184
237
185
238
int crapi_sha512_update (void * ctxp , void * bptr , size_t blen )
186
239
{
187
- return ( -1 );
240
+ return crapi_sha2_update ( ctxp , bptr , blen );
188
241
}
189
242
190
243
int crapi_sha512_fini (void * ctxp )
191
244
{
192
- return ( -1 );
245
+ return crapi_sha2_fini ( ctxp );
193
246
}
194
247
195
248
void crapi_sha512_free (void * ctxp )
196
249
{
197
- return ;
250
+ crapi_sha2_free ( ctxp ) ;
198
251
}
199
252
200
253
int crapi_sha512_fd (int fd , void * dst , size_t * size )
0 commit comments