18eb9d64e73b6d7acd8feb2b5a190c1f3fd557c1
[libgcrypt.git] / cipher / ChangeLog
1 2011-09-16  Werner Koch  <wk@g10code.com>
2
3         * primegen.c (_gcry_primegen_init): New.
4
5 2011-09-15  Werner Koch  <wk@g10code.com>
6
7         * cipher-cbc.c, cipher-cfb.c, cipher-ofb.c, cipher-ctr.c: New.
8         * cipher-aeswrap.c: New.
9         * cipher-internal.h: New.
10         * cipher.c (cipher_context_alignment_t, struct gcry_cipher_handle)
11         (CTX_MAGIC_NORMAL, CTX_MAGIC_SECURE, NEED_16BYTE_ALIGNED_CONTEXT)
12         (MAX_BLOCKSIZE): Move to cipher-internal.h.
13         (do_aeswrap_encrypt, do_aeswrap_encrypt)
14         (do_cbc_encrypt, do_cbc_decrypt, do_ctr_encrypt, do_ctr_decrypt)
15         (do_ofb_encrypt, do_ofb_decrypt, do_ctr_encrypt): Move to the
16         respective new cipher-foo.c files.
17         (do_ctr_decrypt): Remove.
18
19 2011-09-15  Werner Koch  <wk@g10code.com>
20
21         * pubkey.c (gcry_pk_list): Remove.
22         (gcry_pk_unregister): Remove.
23         * md.c (gcry_md_list): Remove.
24         (gcry_md_unregister): Remove.
25         * cipher.c (gcry_cipher_list): Remove.
26         (gcry_cipher_unregister): Remove.
27         * ac.c: Remove.
28
29 2011-06-29  Werner Koch  <wk@g10code.com>
30
31         * cipher.c (cipher_get_keylen): Return zero for an invalid algorithm.
32         (cipher_get_blocksize): Ditto.
33
34 2011-06-13  Werner Koch  <wk@g10code.com>
35
36         * dsa.c (selftest_sign_1024): Use the raw and not the pkcs1 flag.
37
38         * pubkey.c (gcry_pk_sign): Special case output generation for PKCS1.
39         (sexp_data_to_mpi): Parse "random-override" for pkcs1 encryption.
40         (pkcs1_encode_for_encryption): Add args RANDOM_OVERRIDE and
41         RANDOM_OVERRIDE_LEN.
42         (gcry_pk_encrypt): Special case output generation for PKCS1.
43         (sexp_data_to_mpi): Use GCRYMPI_FMT_USG for raw encoding.
44
45 2011-06-10  Werner Koch  <wk@g10code.com>
46
47         * pubkey.c (gcry_pk_sign): Use format specifier '%M' to avoid
48         leading zeroes.  Special case output generation for PSS.
49         (gcry_pk_encrypt): Special case output generation for OAEP.
50         (sexp_data_to_mpi): Use GCRYMPI_FMT_USG for PSS verify.
51
52 2011-06-09  Werner Koch  <wk@g10code.com>
53
54         * pubkey.c (oaep_decode): Make use of octet_string_from_mpi.
55         (sexp_to_enc): Skip "random-override".
56
57         * pubkey.c (oaep_encode, pss_encode): Add args RANDOM_OVERRIDE and
58         RANDOM_OVERRIDE_LEN.
59         (sexp_data_to_mpi): Extract new random-override parameter.
60
61         * pubkey.c (pss_encode, pss_verify): Use VALUE verbatim for MHASH.
62         (octet_string_from_mpi): Add arg SPACE.
63
64 2011-06-08  Werner Koch  <wk@g10code.com>
65
66         * pubkey.c (pss_encode, pss_verify): Restructure and comment code
67         to match rfc-3447.  Replace secure allocs by plain allocs and
68         wipememory.  Use gcry_md_hash_buffer.
69         (octet_string_from_mpi): New.
70
71 2011-06-03  Werner Koch  <wk@g10code.com>
72
73         * pubkey.c (oaep_decode): Add more comments and restructure to
74         match the description in RFC-3447.
75         (oaep_encode): Check for mgf1 error.  s/dlen/hlen/.
76
77 2011-05-31  Werner Koch  <wk@g10code.com>
78
79         * pubkey.c (mgf1): Optimize by using gcry_md_reset.  Re-implement
80         for easier readability.
81         (oaep_encode): Add more comments and restructure to match the
82         description in RFC-3447.
83
84         * pubkey.c (pkcs1_encode_for_signature, oaep_decode): Change
85         return value from one MPI to a buffer.
86         (gcry_pk_decrypt): Adjust for this change.
87
88 2011-05-30  Werner Koch  <wk@g10code.com>
89
90         * pubkey.c (pkcs1_decode_for_encryption): Change handling of
91         leading zero byte.
92
93 2011-05-27  Daiki Ueno  <ueno@unixuser.org>
94
95         * pubkey.c (gcry_pk_decrypt): Fix double-free when un-padding
96         invalid data.  Thanks to Tom Ritter.
97
98 2011-05-24  Daiki Ueno  <ueno@unixuser.org>
99
100         * rsa.c (rsa_verify): Use CMP if given, to check the decrypted
101         sig.
102
103         * pubkey.c (sexp_to_enc, sexp_data_to_mpi): Factor out
104         CTX initialization to ...
105         (init_encoding_ctx): .. new.
106         (gcry_pk_verify): Pass verify func and the arg to pubkey_verify.
107         (pss_encode, pss_verify, pss_verify_cmp): New.
108
109 2011-05-23  Daiki Ueno  <ueno@unixuser.org>
110
111         * pubkey.c (pkcs1_decode_for_encryption, oaep_decode): Fix memleak
112         when gcry_mpi_print fails.
113
114 2011-05-18  Daiki Ueno  <ueno@unixuser.org>
115
116         * pubkey.c (sexp_data_to_mpi): Factor some code out to ...
117         (pkcs1_encode_for_encryption): .. new,
118         (pkcs1_encode_for_signature): .. new.
119         (pkcs1_decode_for_encryption): New.
120         (gcry_pk_decrypt): Do un-padding for PKCS#1 as well as OAEP.
121         (sexp_to_enc): Abolish "unpad" flag, which is not necessary since
122         we can do un-padding implicitly when "pkcs1" or "oaep" is given.
123
124 2011-05-11  Werner Koch  <wk@g10code.com>
125
126         * pubkey.c (sexp_to_enc, sexp_data_to_mpi): Set LABEL to NULL
127         after free.
128         (sexp_to_enc, sexp_data_to_mpi): Do not allow multiple encoding
129         flags.
130         (oaep_encode, oaep_decode, sexp_to_key, sexp_to_sig)
131         (sexp_to_enc, sexp_data_to_mpi, gcry_pk_encrypt, gcry_pk_sign)
132         (gcry_pk_genkey, _gcry_pk_get_elements): Replace access to ERRNO
133         by gpg_err_code_from_syserror.
134
135 2011-05-11  Daiki Ueno  <ueno@unixuser.org>
136
137         * pubkey.c (sexp_data_to_mpi): Factor some code out to ...
138         (get_hash_algo): .. new.
139         (mgf1, oaep_encode, oaep_decode): New.
140         (sexp_to_enc): Add arg CTX.  Remove arg RET_WANT_PKCS1.  Support
141         OAEP.
142         (sexp_data_to_mpi): Add arg CTX.  Support OAEP.
143         (gcry_pk_encrypt): Pass a CTX to sexp_data_to_mpi.
144         (gcry_pk_decrypt): Pass a CTX tp sexp_to_enc and replace
145         WANT_PKCS1.  Implement unpadding for OAEP.
146         (gcry_pk_sign): Pass NULL for CTX arg of sexp_data_to_mpi.
147         (gcry_pk_verify): Ditto.
148
149 2011-04-19  Werner Koch  <wk@g10code.com>
150
151         * cipher.c (gcry_cipher_open): Replace gpg_err_code_from_errno by
152         gpg_err_code_from_syserror.
153
154 2011-04-11  Werner Koch  <wk@g10code.com>
155
156         * pubkey.c (gcry_pk_get_keygrip): Avoid double free of L2.
157
158         * cipher.c (_gcry_cipher_setctr): Clear unused lastiv info.
159         (gcry_cipher_ctl) <GCRYCTL_SET_CTR>: Implement by calling
160         _gcry_cipher_setctr.
161         (do_ctr_encrypt): Save last counter and reuse it.
162
163         * cipher.c (do_ctr_encrypt): Allow arbitrary length inputs to
164         match the 1.4 behaviour.
165
166 2011-04-04  Werner Koch  <wk@g10code.com>
167
168         * ecc.c (compute_keygrip): Release L1 while parsing "curve".
169
170         * pubkey.c (gcry_pk_get_keygrip): Always release NAME and L2.
171         Reported by Ben Kibbey.
172
173 2011-03-28  Werner Koch  <wk@g10code.com>
174
175         * primegen.c (_gcry_generate_elg_prime): Make sure that PRIME is
176         NULL if the called func ever returns an error.
177
178         * pubkey.c (gcry_pk_decrypt): Remove unused var PUBKEY.
179
180 2011-03-09  Werner Koch  <wk@g10code.com>
181
182         * kdf.c: New.
183
184 2011-02-22  Werner Koch  <wk@g10code.com>
185
186         * rijndael.c (aesni_cleanup_2_4): New.
187         (aesenc_xmm1_xmm0, do_aesni_ctr_4): New.
188         (_gcry_aes_ctr_enc): New.
189         * cipher.c (struct gcry_cipher_handle): Add CTR_ENC.  Move field
190         CTR into an u_ctr union and adjust all users.
191         (gcry_cipher_open): Use _gcry_aes_ctr_enc.
192         (do_ctr_encrypt): Use bulk mode.
193
194 2011-02-18  Werner Koch  <wk@g10code.com>
195
196         * rijndael.c (u32_a_t): New.
197         (do_encrypt_aligned, do_encrypt_aligned): Use the new type to
198         avoid problems with strict aliasing rules.
199
200 2011-02-16  Werner Koch  <wk@g10code.com>
201
202         * rijndael.c (do_aesni_cfb) [USE_AESNI]: New.
203         (_gcry_aes_cfb_enc, _gcry_aes_cfb_dec) [USE_AESNI]: Use new fucntion.
204
205 2011-02-15  Werner Koch  <wk@g10code.com>
206
207         * rijndael.c (do_aesni_enc_aligned, do_aesni_dec_aligned): Use
208         movdqa for the key but keep using movdqu for the data.
209         (do_aesni): Remove alignment detection.  Don't burn the stack.
210         (aesni_prepare, aesni_cleanup): New macros.
211         (rijndael_encrypt, _gcry_aes_cfb_enc, _gcry_aes_cbc_enc)
212         (rijndael_decrypt, _gcry_aes_cfb_dec, _gcry_aes_cbc_dec): Use
213         these macros.  Don't burn the stack in the USE_AESNI case.
214         (do_setkey): Add disabled code to use aeskeygenassist.
215
216 2011-02-14  Werner Koch  <wk@g10code.com>
217
218         * rijndael.c (ATTR_ALIGNED_16): New
219         (do_aesni): Do not copy if already aligned.
220         (do_encrypt, do_decrypt): Ditto.
221         (rijndael_decrypt, rijndael_encrypt): Increase stack burning amount.
222
223         * rijndael.c (RIJNDAEL_context): Reorder fields.  Change fieldname
224         ROUNDS to rounds.  Move padlock_key into u1.
225         (keySched, keySched2): Rename macros to keyscherr and keyschdec
226         and change all users.
227         (padlockkey): New macro.  Change all users of padlock_key.
228         * cipher.c (NEED_16BYTE_ALIGNED_CONTEXT): Always define if using gcc.
229         (struct gcry_cipher_handle): Align U_IV to at least 16 byte.
230
231 2011-02-13  Werner Koch  <wk@g10code.com>
232
233         * rijndael.c (USE_AESNI): New.  Define for ia32 and gcc >= 4.
234         (m128i_t) [USE_AESNI]: New.
235         (RIJNDAEL_context) [USE_AESNI]: Add field use_aesni.
236         (do_setkey): Set USE_AESNI for all key lengths.
237         (prepare_decryption) [USE_AESNI]: Use aesimc instn if requested.
238         (do_aesni_enc_aligned, do_aesni_dec_aligned)
239         (do_aesni) [USE_AESNI]: New.
240         (rijndael_encrypt, _gcry_aes_cfb_enc, _gcry_aes_cbc_enc)
241         (rijndael_decrypt, _gcry_aes_cfb_dec)
242         (_gcry_aes_cbc_dec) [USE_AESNI]: Use do_aesni.
243
244 2011-02-01  Werner Koch  <wk@g10code.com>
245
246         * pubkey.c (gcry_pk_get_curve): New.
247         (sexp_to_key): Add arg OVERRIDE_ELEMS.
248         (sexp_elements_extract_ecc): Allow for params only.
249         (gcry_pk_get_param): New.
250         * ecc.c (ecc_get_curve): New.
251         (ecc_get_param_sexp): New.
252
253 2011-01-28  Werner Koch  <wk@g10code.com>
254
255         * pubkey.c (gcry_pk_genkey): Hack to insert the used curve name.
256
257 2011-01-27  Werner Koch  <wk@g10code.com>
258
259         * ecc.c (fill_in_curve): Remove.
260         (generate_curve): Rename to ..
261         (fill_in_curve): this.  Remove setting of NAME_OID.
262         (ecc_encrypt_raw): Change name of arg DATA to K for better
263         readability.  Use ECC_public_key instead of ECC_secret_key.
264         Require a caller to pass a complete pkey array.
265         (ecc_decrypt_raw): Require a caller to pass a complete skey array.
266         (elliptic_curve_t): Add field NAME.
267         (fill_in_curve): Set field.
268         (generate_key): Add arg R_USED_CURVE.
269         (ecc_generate_ext): Return used curve name.
270
271 2011-01-13  Andrey Jivsov  <openpgp@brainhub.org>  (wk)
272
273         * ecc.c (ec2os): Do not free passed parameters X and Y.  Adjust
274         callers.
275         (ecc_encrypt_raw, ecc_decrypt_raw): New.
276         (ecdh_names, _gcry_pubkey_spec_ecdh): New.
277         * pubkey.c (pubkey_table): Support ECDH.
278
279 2010-08-19  Werner Koch  <wk@g10code.com>
280
281         * cipher.c (gcry_cipher_open): Remove double release of the module.
282         Fixes bug#1263.
283
284 2010-06-10  Jeff Johnson  <n3npq@mac.com>  (wk)
285
286         * ecc.c (ecc_generate_ext): Parse transient-key flag.
287         (generate_key): Add arg TRANSIENT_KEY and use it to set the random
288         level.
289
290 2010-04-12  Brad Hards  <bradh@frogmouth.net>  (wk)
291
292         Spelling fixes.
293
294 2010-03-26  Werner Koch  <wk@g10code.com>
295
296         * tiger.c (asn): Unfetter the old TIGER from an OID.
297         (TIGER_CONTEXT): Add field VARIANT.
298         (tiger_init): Factor code out to ...
299         (do_init): New.
300         (tiger1_init, tiger2_init): New.
301         (_gcry_digest_spec_tiger1, _gcry_digest_spec_tiger2): New.
302         * md.c (digest_table): Add TIGER1 and TIGER2 variants.
303
304 2009-12-11  Werner Koch  <wk@g10code.com>
305
306         * sha256.c (Cho, Maj, Sum0, Sum1): Turn macros into inline
307         functions.
308         (transform): Partly unroll to interweave the chain variables
309
310         * sha512.c (ROTR, Ch, Maj, Sum0, Sum1): Turn macros into inline
311         functions.
312         (transform): Partly unroll to interweave the chain variables.
313         Suggested by Christian Grothoff.
314
315 2009-12-10  Werner Koch  <wk@g10code.com>
316
317         * Makefile.am (o_flag_munging): New.
318         (tiger.o, tiger.lo): Use it.
319
320         * cipher.c (do_ctr_encrypt): Add arg OUTBUFLEN.  Check for
321         suitable value.  Add check for valid inputlen.  Wipe temporary
322         memory.
323         (do_ctr_decrypt): Likewise.
324         (do_cbc_encrypt, do_cbc_decrypt): Add arg OUTBUFLEN.  Check for
325         suitable value.  Move check for valid inputlen to here; change
326         returned error from INV_ARG to INV_LENGTH.
327         (do_ecb_encrypt, do_ecb_decrypt): Ditto.
328         (do_cfb_encrypt, do_cfb_decrypt): Ditto.
329         (do_ofb_encrypt, do_ofb_decrypt): Ditto.
330         (cipher_encrypt, cipher_encrypt): Adjust for above changes.
331         (gcry_cipher_encrypt, gcry_cipher_decrypt): Simplify.
332
333 2009-12-09  Werner Koch  <wk@g10code.com>
334
335         * cipher.c (gcry_cipher_open): Allow for GCRY_CIPHER_MODE_AESWRAP.
336         (cipher_encrypt, cipher_decrypt): Ditto.
337         (do_aeswrap_encrypt, do_aeswrap_decrypt): New.
338         (struct gcry_cipher_handle): Add field marks.
339         (cipher_setkey, cipher_setiv): Update marks flags.
340         (cipher_reset): Reset marks.
341         (cipher_encrypt, cipher_decrypt): Add new arg OUTBUFLEN.
342         (gcry_cipher_encrypt, gcry_cipher_decrypt): Pass outbuflen to
343         cipher_encrypt.  Replace GPG_ERR_TOO_SHORT by
344         GPG_ERR_BUFFER_TOO_SHORT.
345
346 2009-08-21  Werner Koch  <wk@g10code.com>
347
348         * dsa.c (dsa_generate_ext): Release retfactors array before
349         setting it to NULL.  Reported by Daiko Ueno.
350
351 2009-07-02  Werner Koch  <wk@g10code.com>
352
353         * md.c (md_read): Fix incomplete check for NULL.
354         Reported by Fabian Kail.
355
356 2009-03-31  Werner Koch  <wk@g10code.com>
357
358         * rsa.c (rsa_check_secret_key): Return GPG_ERR_BAD_SECKEY and not
359         GPG_ERR_PUBKEY_ALGO.
360
361 2009-02-16  Werner Koch  <wk@g10code.com>
362
363         * rsa.c (generate_x931): Do not initialize TBL with automatic
364         variables.
365         * whirlpool.c, tiger.c, sha256.c, sha1.c, rmd160.c, md5.c
366         * md4.c, crc.c: Remove memory.h.  This is garbage from gnupg.
367         Reported by Dan Fandrich.
368
369 2009-01-22  Werner Koch  <wk@g10code.com>
370
371         * ecc.c (compute_keygrip): Remove superfluous const.
372
373 2009-01-06  Werner Koch  <wk@g10code.com>
374
375         * rmd160.c (oid_spec_rmd160): Add TeleTrust identifier.
376
377 2008-12-10  Werner Koch  <wk@g10code.com>
378
379         * dsa.c (generate): Add arg DOMAIN and use it if specified.
380         (generate_fips186): Ditto.
381         (dsa_generate_ext): Parse and check the optional "domain"
382         parameter and pass them to the generate functions.
383
384         * rijndael.c (rijndael_names): Add "AES128" and "AES-128".
385         (rijndael192_names): Add "AES-192".
386         (rijndael256_names): Add "AES-256".
387
388 2008-12-05  Werner Koch  <wk@g10code.com>
389
390         * dsa.c (generate): Add arg TRANSIENT_KEY and use it to detrmine
391         the RNG quality needed.
392         (dsa_generate_ext): Parse the transient-key flag und pass it to
393         generate.
394
395 2008-11-28  Werner Koch  <wk@g10code.com>
396
397         * dsa.c (generate_fips186): Add arg DERIVEPARMS and use the seed
398         value if available.
399
400         * primegen.c (_gcry_generate_fips186_2_prime): Fix inner p loop.
401
402 2008-11-26  Werner Koch  <wk@g10code.com>
403
404         * primegen.c (_gcry_generate_fips186_3_prime): New.
405         * dsa.c (generate_fips186): Add arg USE_FIPS186_2.
406         (dsa_generate_ext): Parse new flag use-fips183-2.
407
408 2008-11-25  Werner Koch  <wk@g10code.com>
409
410         * dsa.c (generate_fips186): New.
411         (dsa_generate_ext): Use new function if derive-parms are given or
412         if in FIPS mode.
413         * primegen.c (_gcry_generate_fips186_2_prime): New.
414
415 2008-11-24  Werner Koch  <wk@g10code.com>
416
417         * pubkey.c (gcry_pk_genkey): Insert code to output extrainfo.
418         (pubkey_generate): Add arg R_EXTRAINFO and pass it to the extended
419         key generation function.
420         * rsa.c (gen_x931_parm_xp, gen_x931_parm_xi): New.
421         (generate_x931): Generate params if not given.
422         (rsa_generate_ext): Parse use-x931 flag.  Return p-q-swapped
423         indicator.
424         * dsa.c (dsa_generate_ext): Put RETFACTORS into R_EXTRAINFO if
425         possible.
426
427         * pubkey.c (gcry_pk_genkey): Remove parsing of almost all
428         parameters and pass the parameter S-expression to pubkey_generate.
429         (pubkey_generate): Simplify by requitring modules to parse the
430         parameters. Remove the special cases for Elgamal and ECC.
431         (sexp_elements_extract_ecc): Add arg EXTRASPEC and use it.  Fix
432         small memory leak.
433         (sexp_to_key): Pass EXTRASPEC to sexp_elements_extract_ecc.
434         (pubkey_table) [USE_ELGAMAL]: Add real extraspec.
435         * rsa.c (rsa_generate_ext): Adjust for new calling convention.
436         * dsa.c (dsa_generate_ext): Ditto.
437         * elgamal.c (_gcry_elg_generate): Ditto. Rename to elg_generate_ext.
438         (elg_generate): New.
439         (_gcry_elg_generate_using_x): Remove after merging code with
440         elg_generate_ext.
441         (_gcry_pubkey_extraspec_elg): New.
442         (_gcry_elg_check_secret_key, _gcry_elg_encrypt, _gcry_elg_sign)
443         (_gcry_elg_verify, _gcry_elg_get_nbits): Make static and remove
444         _gcry_ prefix.
445         * ecc.c (_gcry_ecc_generate): Rename to ecc_generate_ext and
446         adjust for new calling convention.
447         (_gcry_ecc_get_param): Rename to ecc_get_param and make static.
448         (_gcry_pubkey_extraspec_ecdsa): Add ecc_generate_ext and
449         ecc_get_param.
450
451 2008-11-20  Werner Koch  <wk@g10code.com>
452
453         * pubkey.c (pubkey_generate): Add arg DERIVEPARMS.
454         (gcry_pk_genkey): Parse derive-parms and pass it to above.
455         * rsa.c (generate_x931): New.
456         (rsa_generate_ext): Add arg DERIVEPARMS and call new function in
457         fips mode or if DERIVEPARMS is given.
458         * primegen.c (_gcry_derive_x931_prime, find_x931_prime): New.
459
460 2008-11-19  Werner Koch  <wk@g10code.com>
461
462         * rsa.c (rsa_decrypt): Use gcry_create_nonce for blinding.
463         (generate): Rename to generate_std.
464
465 2008-11-05  Werner Koch  <wk@g10code.com>
466
467         * md.c (md_open): Use a switch to set the Bsize.
468         (prepare_macpads): Fix long key case for SHA384 and SHA512.
469
470         * cipher.c (gcry_cipher_handle): Add field EXTRASPEC.
471         (gcry_cipher_open): Set it.
472         (gcry_cipher_ctl): Add private control code to disable weak key
473         detection and to return the current input block.
474         * des.c (_tripledes_ctx): Add field FLAGS.
475         (do_tripledes_set_extra_info): New.
476         (_gcry_cipher_extraspec_tripledes): Add new function.
477         (do_tripledes_setkey): Disable weak key detection.
478
479 2008-10-24  Werner Koch  <wk@g10code.com>
480
481         * md.c (digest_table): Allow MD5 in fips mode.
482         (md_register_default): Take special action for MD5.
483         (md_enable, gcry_md_hash_buffer): Ditto.
484
485 2008-09-30  Werner Koch  <wk@g10code.com>
486
487         * rijndael.c (do_setkey): Properly align "t" and "tk".
488         (prepare_decryption): Properly align "w".  Fixes bug #936.
489
490 2008-09-18  Werner Koch  <wk@g10code.com>
491
492         * pubkey.c (gcry_pk_genkey): Parse domain parameter.
493         (pubkey_generate): Add new arg DOMAIN and remove special case for
494         DSA with qbits.
495         * rsa.c (rsa_generate): Add dummy args QBITS, NAME and DOMAIN and
496         rename to rsa_generate_ext.  Change caller.
497         (_gcry_rsa_generate, _gcry_rsa_check_secret_key)
498         (_gcry_rsa_encrypt, _gcry_rsa_decrypt, _gcry_rsa_sign)
499         (_gcry_rsa_verify, _gcry_rsa_get_nbits): Make static and remove
500         _gcry_ prefix.
501         (_gcry_pubkey_spec_rsa, _gcry_pubkey_extraspec_rsa): Adjust names.
502         * dsa.c (dsa_generate_ext): New.
503         (_gcry_dsa_generate): Replace code by a call to dsa_generate.
504         (_gcry_dsa_check_secret_key, _gcry_dsa_sign, _gcry_dsa_verify)
505         (_gcry_dsa_get_nbits): Make static and remove _gcry prefix.
506         (_gcry_dsa_generate2): Remove.
507         (_gcry_pubkey_spec_dsa): Adjust to name changes.
508         (_gcry_pubkey_extraspec_rsa): Add dsa_generate_ext.
509
510 2008-09-16  Werner Koch  <wk@g10code.com>
511
512         * ecc.c (run_selftests): Add arg EXTENDED.
513
514 2008-09-12  Werner Koch  <wk@g10code.com>
515
516         * rsa.c (test_keys): Do a bad case signature check.
517         * dsa.c (test_keys): Do a bad case check.
518
519         * cipher.c (_gcry_cipher_selftest): Add arg EXTENDED and pass it
520         to the called tests.
521         * md.c (_gcry_md_selftest): Ditto.
522         * pubkey.c (_gcry_pk_selftest): Ditto.
523         * rijndael.c (run_selftests): Add arg EXTENDED and pass it to the
524         called tests.
525         (selftest_fips_128): Add arg EXTENDED and run only one test
526         non-extended mode.
527         (selftest_fips_192): Add dummy arg EXTENDED.
528         (selftest_fips_256): Ditto.
529         * hmac-tests.c (_gcry_hmac_selftest): Ditto.
530         (run_selftests): Ditto.
531         (selftests_sha1): Add arg EXTENDED and run only one test
532         non-extended mode.
533         (selftests_sha224, selftests_sha256): Ditto.
534         (selftests_sha384, selftests_sha512): Ditto.
535         * sha1.c (run_selftests): Add arg EXTENDED and pass it to the
536         called test.
537         (selftests_sha1): Add arg EXTENDED and run only one test
538         non-extended mode.
539         * sha256.c (run_selftests): Add arg EXTENDED and pass it to the
540         called tests.
541         (selftests_sha224): Add arg EXTENDED and run only one test
542         non-extended mode.
543         (selftests_sha256): Ditto.
544         * sha512.c (run_selftests): Add arg EXTENDED and pass it to the
545         called tests.
546         (selftests_sha384): Add arg EXTENDED and run only one test
547         non-extended mode.
548         (selftests_sha512): Ditto.
549         * des.c (run_selftests): Add arg EXTENDED and pass it to the
550         called test.
551         (selftest_fips): Add dummy arg EXTENDED.
552         * rsa.c (run_selftests): Add dummy arg EXTENDED.
553
554         * dsa.c (run_selftests): Add dummy arg EXTENDED.
555
556         * rsa.c (extract_a_from_sexp): New.
557         (selftest_encr_1024): Check that the ciphertext does not match the
558         plaintext.
559         (test_keys): Improve tests and return an error status.
560         (generate): Return an error if test_keys fails.
561         * dsa.c (test_keys): Add comments and return an error status.
562         (generate): Return an error if test_keys failed.
563
564 2008-09-11  Werner Koch  <wk@g10code.com>
565
566         * rsa.c (_gcry_rsa_decrypt): Return an error instead of calling
567         BUG in case of a practically impossible condition.
568         (sample_secret_key, sample_public_key): New.
569         (selftest_sign_1024, selftest_encr_1024): New.
570         (selftests_rsa): Implement tests.
571         * dsa.c (sample_secret_key, sample_public_key): New.
572         (selftest_sign_1024): New.
573         (selftests_dsa): Implement tests.
574
575 2008-09-09  Werner Koch  <wk@g10code.com>
576
577         * hmac-tests.c (selftests_sha1): Add tests.
578         (selftests_sha224, selftests_sha384, selftests_sha512): Make up tests.
579
580         * hash-common.c, hash-common.h: New.
581         * sha1.c (selftests_sha1): Add 3 tests.
582         * sha256.c (selftests_sha256, selftests_sha224): Ditto.
583         * sha512.c (selftests_sha512, selftests_sha384): Ditto.
584
585 2008-08-29  Werner Koch  <wk@g10code.com>
586
587         * pubkey.c (gcry_pk_get_keygrip): Remove the special case for RSA
588         and check whether a custom computation function has been setup.
589         * rsa.c (compute_keygrip): New.
590         (_gcry_pubkey_extraspec_rsa): Setup this function.
591         * ecc.c (compute_keygrip): New.
592         (_gcry_pubkey_extraspec_ecdsa): Setup this function.
593
594 2008-08-28  Werner Koch  <wk@g10code.com>
595
596         * cipher.c (cipher_decrypt, cipher_encrypt): Return an error if
597         mode NONE is used.
598         (gcry_cipher_open): Allow mode NONE only with a debug flag set and
599         if not in FIPS mode.
600
601 2008-08-26  Werner Koch  <wk@g10code.com>
602
603         * pubkey.c (pubkey_generate): Add arg KEYGEN_FLAGS.
604         (gcry_pk_genkey): Implement new parameter "transient-key" and
605         pass it as flags to pubkey_generate.
606         (pubkey_generate): Make use of an ext_generate function.
607         * rsa.c (generate): Add new arg transient_key and pass appropriate
608         args to the prime generator.
609         (_gcry_rsa_generate): Factor all code out to ...
610         (rsa_generate): .. new func with extra arg KEYGEN_FLAGS.
611         (_gcry_pubkey_extraspec_ecdsa): Setup rsa_generate.
612         * primegen.c (_gcry_generate_secret_prime)
613         (_gcry_generate_public_prime): Add new arg RANDOM_LEVEL.
614
615 2008-08-21  Werner Koch  <wk@g10code.com>
616
617         * primegen.c (_gcry_generate_secret_prime)
618         (_gcry_generate_public_prime): Use a constant macro for the random
619         level.
620
621 2008-08-19  Werner Koch  <wk@g10code.com>
622
623         * pubkey.c (sexp_elements_extract_ecc) [!USE_ECC]: Do not allow
624         allow "curve" parameter.
625
626 2008-08-15  Werner Koch  <wk@g10code.com>
627
628         * pubkey.c (_gcry_pk_selftest): New.
629         * dsa.c (selftests_dsa, run_selftests): New.
630         * rsa.c (selftests_rsa, run_selftests): New.
631         * ecc.c (selftests_ecdsa, run_selftests): New.
632
633         * md.c (_gcry_md_selftest): New.
634         * sha1.c (run_selftests, selftests_sha1): New.
635         * sha256.c (selftests_sha224, selftests_sha256, run_selftests): New.
636         * sha512.c (selftests_sha384, selftests_sha512, run_selftests): New.
637
638         * des.c (selftest): Remove static variable form selftest.
639         (des_setkey): No on-the-fly self test in fips mode.
640         (tripledes_set3keys): Ditto.
641
642         * cipher.c (_gcry_cipher_setkey, _gcry_cipher_setiv):
643
644         * dsa.c (generate): Bail out in fips mode if NBITS is less than 1024.
645         * rsa.c (generate): Return an error code if the the requested size
646         is less than 1024 and we are in fpis mode.
647         (_gcry_rsa_generate): Take care of that error code.
648
649         * ecc.c (generate_curve): In fips mode enable only NIST curves.
650
651         * cipher.c (_gcry_cipher_selftest): New.
652
653         * sha512.c (_gcry_digest_extraspec_sha384)
654         (_gcry_digest_extraspec_sha512): New.
655         * sha256.c (_gcry_digest_extraspec_sha224)
656         (_gcry_digest_extraspec_sha256): New.
657         * sha1.c (_gcry_digest_extraspec_sha1): New.
658         * ecc.c (_gcry_pubkey_extraspec_ecdsa): New.
659         * dsa.c (_gcry_pubkey_extraspec_dsa): New.
660         * rsa.c (_gcry_pubkey_extraspec_rsa): New.
661         * rijndael.c (_gcry_cipher_extraspec_aes)
662         (_gcry_cipher_extraspec_aes192, _gcry_cipher_extraspec_aes256): New.
663         * des.c (_gcry_cipher_extraspec_tripledes): New.
664
665         * cipher.c (gcry_cipher_register): Rename to _gcry_cipher_register.
666         Add arg EXTRASPEC.
667         (dummy_extra_spec): New.
668         (cipher_table_entry): Add extraspec field.
669         * md.c (_gcry_md_register): Rename to _gcry_md_register.  Add
670         arg EXTRASPEC.
671         (dummy_extra_spec): New.
672         (digest_table_entry): Add extraspec field.
673         * pubkey.c (gcry_pk_register): Rename to _gcry_pk_register.  Add
674         arg EXTRASPEC.
675         (dummy_extra_spec): New.
676         (pubkey_table_entry): Add extraspec field.
677
678         * ac.c: Let most public functions return GPG_ERR_UNSUPPORTED in
679         fips mode.
680
681         * pubkey.c (pubkey_table_entry): Add field FIPS_ALLOWED and mark
682         appropriate algorithms.
683         (dummy_generate, dummy_check_secret_key, dummy_encrypt)
684         (dummy_decrypt, dummy_sign, dummy_verify, dummy_get_nbits): Signal
685         a fips error when used.
686         (gcry_pk_register): In fips mode do not allow to register new
687         algorithms.
688
689         * md.c (digest_table): Add field FIPS_ALLOWED and mark appropriate
690         algorithms.
691         (md_register_default): In fips mode register only fips algorithms.
692         (gcry_md_register): In fips mode do not allow to register new
693         algorithms.
694         (gcry_md_get): Signal a fips error if called.
695         (gcry_md_hash_buffer): Do not allow rmd160 when not in fips mode.
696         (md_start_debug): Disable in fips_mode.
697
698         * md.c (gcry_md_register_default): Rename to ..
699         (md_register_default): .. this.
700         (md_digest): Remove this commented fucntion.
701         * pubkey.c (gcry_pk_register_default): Rename to ..
702         (pk_register_default): .. this.
703
704         * cipher.c (cipher_table_entry): Add field FIPS_ALLOWED.
705         (gcry_cipher_register_default): Register only fips approved
706         algorithms.
707         (gcry_cipher_register): Do not allow to register new ciphers.
708         (cipher_setiv): Signal fips error.
709
710         * cipher (gcry_cipher_register_default): Rename to ..
711         (cipher_register_default): .. this.
712         (REGISTER_DEFAULT_CIPHERS): Adjust for that change.
713
714 2008-07-05  Werner Koch  <wk@g10code.com>
715
716         * random-daemon.c, random.h, rndhw.c, rndunix.c, rand-internal.h
717         * random.c, rndegd.c, rndlinux.c, rndw32.c: Move to ../cipher.
718         * Makefile.am: Remove random stuff.
719
720 2008-06-24  Szakats Istvan <szaki.ms@gmail.com>  (wk)
721
722         * ac.c (_gcry_ac_key_destroy, _gcry_ac_key_pair_generate): Relase
723         some more memory.
724
725 2008-04-22  Werner Koch  <wk@g10code.com>
726
727         * rijndael.c (_gcry_aes_cfb_enc, _gcry_aes_cbc_enc)
728         (_gcry_aes_cfb_dec, _gcry_aes_cbc_dec): Use Padlock if possible.
729
730 2008-04-18  Werner Koch  <wk@g10code.com>
731
732         * sha1.c (transform_aligned): Remove.  That is will obviosuly not
733         work because we need a scratch working area and our internal API
734         does not allow to modify the buffers.
735
736         * rijndael.c: Factor tables out to ..
737         * rijndael-tables.h: .. new.
738
739         * ac.c (ac_data_extract): Make static.
740
741         * camellia.h [HAVE_CONFIG_H]: Include config.h.
742
743         * rndw32.c (registry_poll): Only print the performance data
744         problem warning once.  Suggested by Simon Josefsson.
745
746 2008-03-19  Werner Koch  <wk@g10code.com>
747
748         * cipher.c (gcry_cipher_open) [USE_AES]: Init bulk encryption only
749         if requested.  Suggested by Dirk Stoecker.
750
751 2008-03-18  Werner Koch  <wk@g10code.com>
752
753         * sha1.c: Include stdint.h.
754         (transform): Add arg NBLOCKS so that we can work on more than one
755         block and avoid updates of the chaining variables.  Changed all
756         callers to use 1.
757         (sha1_write): Replace loop around transform.
758         (transform_aligned) [WORDS_BIGENDIAN]: New.
759         (TRANSFORM): New macro to replace all direct calls of transform.
760
761 2008-03-17  Werner Koch  <wk@g10code.com>
762
763         * rijndael.c (_gcry_aes_cfb_dec): New.
764         (do_encrypt): Factor code out to ..
765         (do_encrypt_aligned): .. New.
766         (_gcry_aes_cfb_enc, _gcry_aes_cfb_dec): Use new function.
767         (do_decrypt): Factor code out to ..
768         (do_decrypt_aligned): .. new.
769         (_gcry_aes_cbc_enc, _gcry_aes_cbc_dec): New.
770         * cipher.c (struct gcry_cipher_handle): Put field IV into new
771         union U_IV to enforce proper alignment.  Change all users.
772         (do_cfb_decrypt): Optimize.
773         (do_cbc_encrypt, do_cbc_decrypt): Optimize.
774
775 2008-03-15  Werner Koch  <wk@g10code.com>
776
777         * rijndael.c (_gcry_aes_cfb_enc): New.
778         * cipher.c (struct gcry_cipher_handle): Add field ALGO and BULK.
779         (gcry_cipher_open): Set ALGO and BULK.
780         (do_cfb_encrypt): Optimize.
781
782 2008-02-18  Werner Koch  <wk@g10code.com>
783
784         * rsa.c (_gcry_rsa_verify) [IS_DEVELOPMENT_VERSION]: Print
785         intermediate results.
786
787 2008-01-08  Werner Koch  <wk@g10code.com>
788
789         * random.c (add_randomness): Do not just increment
790         POOL_FILLED_COUNTER but update it by the actual amount of data.
791
792 2007-12-13  Werner Koch  <wk@g10code.com>
793
794         * pubkey.c (sexp_data_to_mpi): Support SHA-224.
795
796 2007-12-05  Werner Koch  <wk@g10code.com>
797
798         * rijndael.c (USE_PADLOCK): Depend on ENABLE_PADLOCK_SUPPORT.
799         * rndhw.c (USE_PADLOCK): Ditto
800
801         * rsa.c (secret): Fixed condition test for using CRT.  Reported by
802         Dean Scarff.  Fixes bug#864.
803         (_gcry_rsa_check_secret_key): Return an erro if the optional
804         parameters are missing.
805         * pubkey.c (sexp_elements_extract): Add arg ALGO_NAME. Changed all
806         callers to pass NULL. Add hack to allow for optional RSA
807         parameters.
808         (sexp_to_key): Pass algo name to sexp_elements_extract.
809
810 2007-12-03  Werner Koch  <wk@g10code.com>
811
812         * random.c (gcry_random_add_bytes): Implement it.
813         * rand-internal.h (RANDOM_ORIGIN_EXTERNAL): New.
814
815 2007-11-30  Werner Koch  <wk@g10code.com>
816
817         * rndhw.c: New.
818         * rndlinux.c (_gcry_rndlinux_gather_random): Try to read 50%
819         directly from the hwrng.
820         * random.c (do_fast_random_poll): Also run the hw rng fast poll.
821         (_gcry_random_dump_stats): Tell whether the hw rng failed.
822
823 2007-11-29  Werner Koch  <wk@g10code.com>
824
825         * rijndael.c (USE_PADLOCK): Define new macro used for ia32.
826         (RIJNDAEL_context) [USE_PADLOCK]: Add fields USE_PADLOCK and
827         PADLOCK_KEY.
828         (do_setkey) [USE_PADLOCK]: Enable padlock if available for 128 bit
829         AES.
830         (do_padlock) [USE_PADLOCK]: New.
831         (rijndael_encrypt, rijndael_decrypt) [USE_PADLOCK]: Divert to
832         do_padlock.
833         * cipher.c (cipher_context_alignment_t): New.  Use it in this
834         module in place of PROPERLY_ALIGNED_TYPE.
835         (NEED_16BYTE_ALIGNED_CONTEXT): Define macro for ia32.
836         (struct gcry_cipher_handle): Add field HANDLE_OFFSET.
837         (gcry_cipher_open): Take care of increased alignment requirements.
838         (gcry_cipher_close): Ditto.
839
840 2007-11-28  Werner Koch  <wk@g10code.com>
841
842         * sha256.c (asn224): Fixed wrong template.  It happened due to a
843         bug in RFC4880.  SHA-224 is not in the stable version of libgcrypt
844         so the consequences are limited to users of this devel version.
845
846 2007-10-31  Werner Koch  <wk@g10code.com>
847
848         * ac.c (gcry_ac_data_new): Remove due to the visibility wrapper.
849         (gcry_ac_data_destroy, gcry_ac_data_copy, gcry_ac_data_length)
850         (gcry_ac_data_set, gcry_ac_data_get_name, gcry_ac_data_get_index)
851         (gcry_ac_data_to_sexp, gcry_ac_data_from_sexp)
852         (gcry_ac_data_clear, gcry_ac_io_init, gcry_ac_open)
853         (gcry_ac_close, gcry_ac_key_init, gcry_ac_key_pair_generate)
854         (gcry_ac_key_pair_extract, gcry_ac_key_destroy)
855         (gcry_ac_key_pair_destroy, gcry_ac_key_data_get)
856         (gcry_ac_key_test, gcry_ac_key_get_nbits, gcry_ac_key_get_grip)
857         (gcry_ac_data_encrypt, gcry_ac_data_decrypt, gcry_ac_data_sign)
858         (gcry_ac_data_verify, gcry_ac_data_encode, gcry_ac_data_decode)
859         (gcry_ac_mpi_to_os, gcry_ac_mpi_to_os_alloc, gcry_ac_os_to_mpi)
860         (gcry_ac_data_encrypt_scheme, gcry_ac_data_decrypt_scheme)
861         (gcry_ac_data_sign_scheme, gcry_ac_data_verify_scheme)
862         (gcry_ac_io_init_va): Ditto.
863         (gcry_ac_id_to_name, gcry_ac_name_to_id): Remove as these
864         deprecated functions are now implemented by visibility.c.
865
866 2007-10-26  Werner Koch  <wk@g10code.com>
867
868         * rndw32.c: Disable debug flag.
869
870 2007-10-25  Werner Koch  <wk@g10code.com>
871
872         * rndw32.c: Updated from current cryptlib snapshot and modified
873         for our use.  Removed support from pre NT systems.
874         (slow_gatherer_windows95): Remove.
875         (_gcry_rndw32_gather_random): Require an NT platform.
876         (init_system_rng, read_system_rng, read_mbm_data): New.
877         (slow_gatherer_windowsNT): Rename to ...
878         (slow_gatherer): .. this.  Read system RNG and MBM.
879         (registry_poll): New with code factored out from slow_gatherer.
880
881 2007-08-23  Werner Koch  <wk@g10code.com>
882
883         * random.c (pool_filled_counter): New.
884         (add_randomness): Use it.
885
886 2007-08-22  Werner Koch  <wk@g10code.com>
887
888         * rndw32.c, rndunix.c: Switched to LGPL.
889
890 2007-05-30  Werner Koch  <wk@g10code.com>
891
892         * camellia.h, camellia.c: Replace by new LGPL version and adjusted
893         camellia.h.
894
895 2007-05-09  Marcus Brinkmann  <marcus@g10code.de>
896
897         * ac.c (_gcry_ac_io_init_va, _gcry_ac_io_write, _gcry_ac_io_read):
898         Adjust users of gcry_ac_io_t because union is not anonymous
899         anymore.
900
901 2007-05-02  Werner Koch  <wk@g10code.com>
902
903         * camellia-glue.c (camellia_setkey, camellia_encrypt)
904         (camellia_decrypt): Recalculated used stack size in called
905         functions.
906         * camellia.h: Redefine external symbols.
907
908 2007-05-02  David Shaw  <dshaw@jabberwocky.com>
909
910         * Makefile.am, cipher.c: Add Camellia.
911
912         * camellia-glue.c: New.  The necessary glue to interface libgcrypt
913         to the stock NTT Camellia distribution.
914
915         * camellia.h, camellia.c: The stock NTT Camellia distribution
916         (GPL).
917
918 2007-04-30  David Shaw  <dshaw@jabberwocky.com>
919
920         * cipher.c: Use #if instead of #ifdef as configure defines the
921         USE_cipher defines as 0 for disabled.
922
923 2007-04-30  Werner Koch  <wk@g10code.com>
924
925         * rndegd.c (_gcry_rndegd_set_socket_name): New.
926
927 2007-04-30  Marcus Brinkmann  <marcus@g10code.de>
928
929         * ecc.c (ec2os): Fix relocation of short numbers.
930
931         * ecc.c (generate_key): Do not allocate D, which will be allocated
932         by GEN_K.  Remove G.  Fix test if g_x, g_y resp. q_x, q_y are
933         requested.
934         (_gcry_ecc_generate): Release unneeded members of SK.
935         * pubkey.c (sexp_to_key): Release NAME.
936
937 2007-04-28  Marcus Brinkmann  <marcus@g10code.de>
938
939         * ac.c (gcry_ac_mpi): Remove member NAME_PROVIDED.
940         (ac_data_mpi_copy, _gcry_ac_data_set, _gcry_ac_data_get_name)
941         (_gcry_ac_data_get_index, ac_data_construct): Adjust handling of
942         NAME accordingly.
943
944 2007-04-20  Werner Koch  <wk@g10code.com>
945
946         * ecc.c (domain_parms): Add standard brainpool curves.
947
948 2007-04-18  Werner Koch  <wk@g10code.com>
949
950         * ecc.c (generate_curve): Implement alias mechanism.
951
952         * pubkey.c (sexp_elements_extract_ecc): New.
953         (sexp_to_key): Add special case for ecc.
954         (sexp_to_key, sexp_to_sig, sexp_to_enc, gcry_pk_genkey): Replace
955         name_terminated stuff by a call to _gcry_sexp_nth_string.
956         (gcry_pk_get_keygrip): Ditto.
957
958 2007-04-16  Werner Koch  <wk@g10code.com>
959
960         * ecc.c (_gcry_ecc_generate): Renamed DUMMY to CURVE and use it.
961
962 2007-04-13  Marcus Brinkmann  <marcus@g10code.de>
963
964         * ac.c (ac_data_construct): Cast const away to suppress compiler
965         warning.
966
967         * ecc.c (ecc_generate): Avoid compiler warning for unused argument
968         DUMMY.
969         (ecc_verify): Avoid compiler warning for unused arguments CMP and
970         OPAQUEV.
971
972 2007-04-06  Werner Koch  <wk@g10code.com>
973
974         * sha1.c (oid_spec_sha1): Add another oid from X9.62.
975
976 2007-03-28  Werner Koch  <wk@g10code.com>
977
978         * pubkey.c (gcry_pk_genkey): Do not issue misc-key-info if it is
979         empty.
980         (gcry_pk_genkey): New parameter "curve".
981
982         * ecc.c: Entirely rewritten with only a few traces of the old
983         code left.
984         (_gcry_ecc_generate): New.
985         (generate_key) New arg NAME.
986         (generate_curve): Ditto.  Return actual number of NBITS.
987
988 2007-03-26  Werner Koch  <wk@g10code.com>
989
990         * pubkey.c (gcry_pk_genkey): Increase size of SKEY array and add a
991         runtime bounds check.
992
993 2007-03-23  Werner Koch  <wk@g10code.com>
994
995         * ecc.c (ecc_ctx_init, ecc_ctx_free, ecc_mod, ecc_mulm): New.
996         (duplicate_point, sum_points, escalar_mult): Don't use a
997         copy of base->p.  Replaced all mpi_mulm by ecc_mulm so that we can
998         experiment with different algorithms.
999         (generate_key, check_secret_key, sign, verify): Initialize a
1000         computation context for use by ecc_mulm.
1001
1002 2007-03-22  Werner Koch  <wk@g10code.com>
1003
1004         * pubkey.c (pubkey_table): Initialize ECC.
1005         * Makefile.am (EXTRA_libcipher_la_SOURCES): Add ecc.c.
1006         * ecc.c: New. Heavily reformatted and changed for use in libgcrypt.
1007         (point_init): New.
1008         (escalar_mult): Make arg R the first arg to be similar to the mpi
1009         functions.
1010         (duplicate_point): Ditto
1011         (sum_points): Ditto
1012         (sign, verify): Remove unneeded copy operations.
1013         (sum_points): Removed memory leaks and optimized some compares.
1014         (verify): Simplified input check.
1015
1016 2007-03-14  Werner Koch  <wk@g10code.com>
1017
1018         * random.c (MASK_LEVEL): Removed macro as it was used only at one
1019         place.  Open coded it there.
1020         (gcry_randomize, _gcry_update_random_seed_file)
1021         (_gcry_fast_random_poll): Factor lock code out to ..
1022         (lock_pool, unlock_pool): .. new.
1023         (initialize): Look the pool while allocating.
1024         (read_random_source, do_fast_random_poll): Moved intialization to ...
1025         (initialize): .. here.
1026         (_gcry_enable_quick_random_gen): No more need for initialization.
1027         (is_initialized):  Moved this global flag to ..
1028         (initialize): .. here and changed all users to unconditionally call
1029         initialize.
1030         (add_randomness): Remove initalization here.  It simply can't
1031         happen.
1032
1033         * random.c (enum random_origins): Moved to ..
1034         * rand-internal.h: .. here.
1035         * rndunix.c (_gcry_rndunix_gather_random): Use enum in prototype
1036         for ORIGIN and renamed REQUESTOR to ORIGIN.
1037         * rndegd.c (_gcry_rndegd_gather_random): Ditto.
1038         * rndlinux.c (_gcry_rndlinux_gather_random): Ditto.
1039         * rndw32.c (_gcry_rndw32_gather_random): Ditto.
1040         (_gcry_rndw32_gather_random_fast): Ditto.
1041
1042 2007-03-13  Werner Koch  <wk@g10code.com>
1043
1044         * random.c (enum random_origins): New.
1045         (add_randomness): Renamed arg SOURCE to ORIGIN.
1046         (read_random_source): Renamed arg REQUESTOR to ORIGIN.
1047         (getfnc_gather_random): Removed static variable because this
1048         function is only called one and thus we don't need this
1049         optimization.
1050         (_gcry_quick_random_gen): Removed and replaced by..
1051         (_gcry_enable_quick_random_gen): .. this.  It is onlyu used to
1052         enable it and it does not make sense to disable it later. Changed
1053         the only one caller too.
1054         (get_random_bytes): Removed.
1055         (gcry_random_bytes, gcry_random_bytes_secure): Implement in terms
1056         of gcry_randomize.
1057         * random-daemon.c (_gcry_daemon_get_random_bytes): Removed.
1058
1059 2007-02-23  Werner Koch  <wk@g10code.com>
1060
1061         * elgamal.c (generate): Removed unused variable TEMP.
1062         (test_keys): New arg NODIE.
1063         (generate_using_x, _gcry_elg_generate_using_x): New.
1064         * pubkey.c (pubkey_generate): New arg XVALUE and direct call to
1065         the new elgamal generate fucntion.
1066         (gcry_pk_genkey): Parse the new "xvalue" tag.
1067
1068 2007-02-22  Werner Koch  <wk@g10code.com>
1069
1070         * pubkey.c (sexp_data_to_mpi): Handle dynamically allocated
1071         algorithms.  Suggested by Neil Dunbar.  Fixes bug#596.
1072
1073         * rndw32.c (_gcry_rndw32_gather_random_fast): Make it return void.
1074
1075         * cipher.c (gcry_cipher_algo_name): Simplified.
1076
1077         * random.c: Use the daemon only if compiled with USE_RANDOM_DAEMON.
1078
1079         * Makefile.am (libcipher_la_SOURCES): Build random-daemon support
1080         only if requested.
1081
1082 2007-02-21  Werner Koch  <wk@g10code.com>
1083
1084         * random.c (rndpool, keypool): Make unsigned.
1085         (mix_pool): Change char* variables to unsigned char*.
1086         (gcry_randomize): Make arg BUFFER a void*.
1087         (gcry_create_nonce): Ditto.
1088
1089         * rmd160.c (gcry_rmd160_mixblock): Make BUFFER a void*.
1090         (_gcry_rmd160_hash_buffer): Make OUTBUF and BUFFER void*.
1091         * sha1.c (_gcry_sha1_hash_buffer): Ditto.
1092
1093         * cipher.c (gcry_cipher_encrypt, cry_cipher_decrypt): Change
1094         buffer args to void*.
1095         (gcry_cipher_register): Make ALGORITHM_ID a int *.
1096
1097         * md.c (md_start_debug): Make SUFFIX a const char*.  Use snprintf.
1098         (gcry_md_debug): New.
1099         (gcry_md_ctl): Changed arg BUFFER from unsigned char*.
1100
1101         * md.c (md_write): Make INBUF a const void*.
1102         (gcry_md_write): Remove needless cast.
1103         * crc.c (crc32_write): Make INBUF a const void*
1104         (update_crc32, crc24rfc2440_write): Ditto.
1105         * sha512.c (sha512_write, transform): Ditto.
1106         * sha256.c (sha256_write, transform): Ditto.
1107         * rmd160.c (rmd160_write, transform): Ditto.
1108         * md5.c (md5_write, transform): Ditto.
1109         * md4.c (md4_write, transform): Ditto.
1110         * sha1.c (sha1_write, transform): Ditto.
1111
1112         * tiger.c (tiger_write, transform): Ditto.
1113         * whirlpool.c (whirlpool_write, whirlpool_add, transform): Ditto.
1114
1115         * elgamal.c (elg_names): Change to a const*.
1116         * dsa.c (dsa_names): Ditto.
1117         * rsa.c (rsa_names): Ditto.
1118         * pubkey.c (gcry_pk_lookup_func_name): Make ALIASES a const.
1119
1120 2007-02-20  Werner Koch  <wk@g10code.com>
1121
1122         * rndlinux.c (open_device): Remove unsused arg MINOR.
1123
1124 2007-01-30  Werner Koch  <wk@g10code.com>
1125
1126         * sha256.c (oid_spec_sha256): Add alias from pkcs#1.
1127         * sha512.c (oid_spec_sha512): Ditto.
1128         (oid_spec_sha384): Ditto.
1129
1130 2006-12-18  Werner Koch  <wk@g10code.com>
1131
1132         * rndlinux.c (set_cloexec_flag): New.
1133         (open_device): Set close-on-exit flags.  Suggested by Max
1134         Kellermann.  Fixes Debian#403613.
1135
1136         * Makefile.am (AM_CPPFLAGS, AM_CFLAGS): Splitted and merged
1137         Moritz' changes.
1138         (INCLUDES): Removed.
1139
1140 2006-11-30  Werner Koch  <wk@g10code.com>
1141
1142         * serpent.c (byte_swap_32): Remove trailing semicolon.
1143
1144 2006-11-15  Werner Koch  <wk@g10code.com>
1145
1146         * Makefile.am (INCLUDES): Include ../src/
1147
1148 2006-11-03  Werner Koch  <wk@g10code.com>
1149
1150         * random.c [HAVE_GETTIMEOFDAY]: Included sys/time.h and not
1151         sys/times.h.  Reported by Rafaël Carré.
1152
1153 2006-11-05  Moritz Schulte  <moritz@g10code.com>
1154
1155         * Makefile.am (AM_CFLAGS): Added -I$(top_builddir)/src so that the
1156         new gcrypt.h is used, not the one installed in the system.
1157
1158 2006-10-25  Werner Koch  <wk@g10code.com>
1159
1160         * primegen.c (prime_generate_internal): Tweaked use of secure
1161         memory and entropy use. Safe unused primes from the pool. Allocate
1162         at least a pool of 30.
1163         (save_pool_prime, get_pool_prime): New.
1164
1165 2006-10-23  Werner Koch  <wk@g10code.com>
1166
1167         * ac.c (_gcry_ac_data_from_sexp): Reset sexp_tmp for failsafe
1168         means.  Release sexp_cur if needed.  Reported by Dirk Stoecker.
1169
1170         * pubkey.c (pubkeys_registered_lock): Intialized it.  It is not
1171          realy needed because this is a mere initialization to 0 anyway.
1172          Noted by Victor Stinner.
1173
1174 2006-10-17  Werner Koch  <wk@g10code.com>
1175
1176         * dsa.c (_gcry_dsa_generate2): New.
1177         (generate): New arg QBITS.  Add sanity checks for reasonable qbits
1178         and nbits.
1179         * pubkey.c (gcry_pk_genkey): Parse an qbits element.
1180         (pubkey_generate): New arg QBITS.  Pass it to the DSA generation.
1181
1182 2006-10-05  Werner Koch  <wk@g10code.com>
1183
1184         * md.c (gcry_md_algo_info) <get_asnoid>: Check that the algo is
1185         available.
1186
1187 2006-10-04  David Shaw  <dshaw@jabberwocky.com>  (wk)
1188
1189         * tiger.c (round): Rename to tiger_round as gcc 4 has a built-in
1190         round function that this conflicts with.
1191
1192 2006-09-11  Werner Koch  <wk@g10code.com>
1193
1194         * rndw32.c (slow_gatherer_windowsNT): While adding data use the
1195         size of the diskPerformance and not its address. Has been fixed in
1196         GnuPG more than a year ago.  Noted by Lee Fisher.
1197
1198 2006-08-30  Werner Koch  <wk@g10code.com>
1199
1200         * pubkey.c (sexp_data_to_mpi): Need to allow "ripemd160" here as
1201         this is the canonical name.
1202
1203 2006-08-29  Hye-Shik Chang <perky@FreeBSD.org>  (wk)
1204
1205         * seed.c: New.
1206
1207 2006-08-03  Werner Koch  <wk@g10code.com>
1208
1209         * random-daemon.c (_gcry_daemon_initialize_basics): Don't
1210         initialize the socket.  Remove arg SOCKETNAME.
1211         (connect_to_socket): Make sure that daemon is set to -1 on error.
1212         (call_daemon): Initialize the socket on the first call.
1213         (_gcry_daemon_randomize, _gcry_daemon_get_random_bytes)
1214         (_gcry_daemon_create_nonce): New arg SOCKETNAME.
1215         * random.c (initialize): Call new daemon initializator.
1216         (get_random_bytes, gcry_randomize, gcry_create_nonce): Pass socket
1217         name to daemon call and reset allow_daemon on failure.
1218
1219 2006-07-26  Werner Koch  <wk@g10code.com>
1220
1221         * rmd160.c (_gcry_rmd160_mixblock): Add cast to transform call.
1222
1223         * blowfish.c (selftest): Cast string to usnigned char*.
1224
1225         * primegen.c (prime_generate_internal): Cast unsigned/char*
1226         mismatch in calling m_out_of_n.
1227         (is_prime): Changed COUNT to unsigned int *.
1228
1229         * ac.c (_gcry_ac_data_copy): Initialize DATA_MPIS.
1230
1231         * random.c (gcry_create_nonce): Update the pid after a fork.
1232         Reported by Uoti Urpala.
1233
1234 2006-07-04  Marcus Brinkmann  <marcus@g10code.de>
1235
1236         * sha512.c: Fix typo in copyright notice.
1237
1238 2006-06-21  Werner Koch  <wk@g10code.com>
1239
1240         * rsa.c (_gcry_rsa_generate): Replace xcalloc by calloc.
1241         * pubkey.c (gcry_pk_encrypt, gcry_pk_sign): Ditto.
1242         (sexp_to_key, sexp_to_sig, sexp_to_enc, gcry_pk_encrypt)
1243         (gcry_pk_sign, gcry_pk_genkey, gcry_pk_get_keygrip): Ditto.
1244         * md.c (md_copy): Ditto.
1245
1246 2006-04-22  Moritz Schulte  <moritz@g10code.com>
1247
1248         * random-daemon.c (_gcry_daemon_initialize_basics): New argument:
1249         SOCKETNAME.  Passing on to connect_to_socket() if non-NULL.
1250         (connect_to_socket, writen, readn, call_daemon): New functions.
1251         (_gcry_daemon_randomize, _gcry_daemon_get_random_bytes)
1252         (_gcry_daemon_create_nonce): Call call_daemon().
1253         (RANDOM_DAEMON_SOCKET): New symbol.
1254         (daemon_socket): New static variable.
1255
1256         * random.h (_gcry_daemon_initialize_basics): New parameter:
1257         SOCKETNAME.
1258         (_gcry_set_random_daemon_socket): New declaration.
1259
1260         * random.c (initialize_basics): Pass DAEMON_SOCKET_NAME to
1261         _gcry_daemon_initialize_basics.
1262         (_gcry_set_random_daemon_socket): New function, setting
1263         DAEMON_SOCKET_NAME.
1264
1265 2006-04-01  Moritz Schulte  <moritz@g10code.com>
1266
1267         * ac.c (eme_pkcs_v1_5_encode): Use KEY_SIZE directly, no need to
1268         call gcry_ac_key_get_nbits.
1269         (eme_pkcs_v1_5_decode): Likewise.
1270         (ac_es_dencode_prepare_pkcs_v1_5): Fill options_em structure with
1271         key_size.
1272         (_gcry_ac_data_dump, gcry_ac_data_dump): New functions.
1273         (_gcry_ac_data_to_sexp, _gcry_ac_data_from_sexp): More or less
1274         rewritten; changed S-Expression format so that it matches the one
1275         used in pubkey.c.
1276
1277 2006-03-15  Werner Koch  <wk@g10code.com>
1278
1279         * random-daemon.c: New.
1280         * random.c (_gcry_use_random_daemon): New.
1281         (get_random_bytes, gcry_randomize, gcry_create_nonce): Try
1282         diverting to the daemon functions.
1283
1284 2006-03-14  Werner Koch  <wk@g10code.com>
1285
1286         * random.c (lock_seed_file): New.
1287         (read_seed_file, _gcry_update_random_seed_file): Use it.
1288
1289         * random.c (gcry_create_nonce):  Detect a fork and re-seed.
1290         (read_pool): Fixed the fork detection; it used to work only for
1291         multi-threaded processes.
1292
1293 2006-03-12  Brad Hards  <bradh@frogmouth.net>  (wk)
1294
1295         * md.c (md_open): Use new variable macpads_Bsize instead of
1296         hardwiring the block size.  Changed at all places.
1297
1298 2006-03-10  Brad Hards  <bradh@frogmouth.net>  (wk, patch 2005-04-22)
1299
1300         * md.c, sha256.c:  Add support for SHA-224.
1301         (sha224_init): New.
1302
1303 2006-01-18  Brad Hards  <bradh@frogmouth.net>  (wk 2006-03-07)
1304
1305         * cipher.c (cipher_encrypt, cipher_decrypt, do_ofb_encrypt)
1306         (do_ofb_decrypt, gcry_cipher_open): Implement Output Feedback Mode.
1307
1308 2005-11-02  Moritz Schulte  <moritz@g10code.com>
1309
1310         * pubkey.c (gcry_pk_algo_name): Return "?" instead of NULL for
1311         unknown algorithm IDs.
1312         * cipher.c (cipher_algo_to_string): Likewise.
1313
1314 2005-11-01  Moritz Schulte  <moritz@g10code.com>
1315
1316         * pubkey.c (gcry_pk_algo_info): Don't forget to break after switch
1317         case.
1318
1319 2005-09-19  Werner Koch  <wk@g10code.com>
1320
1321         * dsa.c (generate): Add preliminary support for 2 and 4 keys.
1322         Return an error code if the key size is not supported.
1323         (_gcry_dsa_generate): Return an error.
1324
1325 2005-08-22  Werner Koch  <wk@g10code.com>
1326
1327         * primegen.c (check_prime): New arg RM_ROUNDS.
1328         (prime_generate_internal): Call it here with 5 rounds as used
1329         before.
1330         (gcry_prime_check): But here with 64 rounds.
1331         (is_prime): Make sure never to use less than 5 rounds.
1332
1333 2005-04-16  Moritz Schulte  <moritz@g10code.com>
1334
1335         * ac.c (_gcry_ac_init): New function.
1336
1337 2005-04-12  Moritz Schulte  <moritz@g10code.com>
1338
1339         * ac.c (_gcry_ac_io_write, _gcry_ac_io_read): Initialize err to
1340         make the compiler happy.
1341         Always use errno, now that gcry_malloc() is guaranteed to set
1342         errno on failure.
1343         (_gcry_ac_data_to_sexp): Don't forget to goto out after error in
1344         loop.
1345         (_gcry_ac_data_to_sexp): Remove unused variable: mpi_list;
1346         (_gcry_ac_data_to_sexp): Always deallocate sexp_buffer.
1347         (_gcry_ac_data_from_sexp): Don't forget to initialize data_set_new.
1348         (_gcry_ac_data_from_sexp): Handle special case, which is
1349         necessary, since gcry_sexp_nth() does not distinguish between
1350         "element does not exist" and "element is the empty list".
1351         (_gcry_ac_io_init_va): Use assert to make sure that mode and type
1352         are correct.
1353         Use gcry_error_t types where gcry_err_code_t types have been used
1354         before.
1355
1356 2005-04-11  Moritz Schulte  <moritz@g10code.com>
1357
1358         * ac.c (_gcry_ac_data_sign_scheme): Don't forget to initialize
1359         buffer.
1360
1361         * whirlpool.c: New file.
1362         * md.c (digest_table): Add whirlpool.
1363         * Makefile.am (EXTRA_libcipher_la_SOURCES): Added: whirlpool.c.
1364
1365 2005-03-30  Moritz Schulte  <moritz@g10code.com>
1366
1367         * ac.c (_gcry_ac_data_from_sexp): Use length of SEXP_CUR, not
1368         length of SEXP; do not forget to set SEXP_TMP to NULL after it has
1369         been released.
1370
1371         (struct gcry_ac_mpi): New member: name_provided.
1372         (_gcry_ac_data_set): Rename variable `name_final' to `name_cp';
1373         remove const qualifier; change code to not cast away const
1374         qualifiers; use name_provided member as well.
1375         (_gcry_ac_data_set, _gcry_ac_data_get_name): Use name_provided
1376         member of named mpi structure.
1377
1378         (gcry_ac_name_to_id): Do not forget to initialize err.
1379         (_gcry_ac_data_get_index): Do not forget to initialize mpi_return;
1380         use gcry_free() instead of free(); remove unnecessary cast; rename
1381         mpi_return and name_return to mpi_cp and name_cp; adjust code.
1382         (ac_data_mpi_copy): Do not cast away const qualifier.
1383         (ac_data_values_destroy): Likewise.
1384         (ac_data_construct): Likewise.
1385
1386         (ac_data_mpi_copy): Initialize flags to GCRY_AC_FLAG_DEALLOC.
1387         (ac_data_extract): Use GCRY_AC_FLAG_DEALLOC instead of
1388         GCRY_AC_FLAG_COPY.
1389
1390         (_gcry_ac_io_init_va, _gcry_ac_io_init, gcry_ac_io_init)
1391         (gcry_ac_io_init_va, _gcry_ac_io_write, _gcry_ac_io_read)
1392         (_gcry_ac_io_read_all, _gcry_ac_io_process): New functions.
1393         (gry_ac_em_dencode_t): Use gcry_ac_io_t in prototype instead of
1394         memroy strings directly; adjust encode/decode functions to use io
1395         objects.
1396         (emsa_pkcs_v1_5_encode_data_cb): New function ...
1397         (emsa_pkcs_v1_5_encode): ... use it here.
1398         (ac_data_dencode): Use io objects.
1399         (_gcry_ac_data_encode, _gcry_ac_data_decode, gcry_ac_data_encode)
1400         (gcry_ac_data_decode): Likewise.
1401         (_gcry_ac_data_encrypt_scheme, gcry_ac_data_encrypt_scheme)
1402         (_gcry_ac_data_decrypt_scheme, gcry_ac_data_decrypt_scheme)
1403         (_gcry_ac_data_sign_scheme, gcry_ac_data_sign_scheme)
1404         (_gcry_ac_data_verify_scheme, gcry_ac_data_verify_scheme):
1405         Likewise.
1406
1407 2005-03-23  Werner Koch  <wk@g10code.com>
1408
1409         * rndw32.c (_gcry_rndw32_gather_random_fast): While adding data
1410         use the size of the object and not the one of its address.  Bug
1411         reported by Sascha Kiefer.
1412
1413 2005-03-19  Moritz Schulte  <moritz@g10code.com>
1414
1415         * cipher.c (do_cbc_encrypt): Be careful to not overwrite data,
1416         which is to be used later on.  This happend, in case CTS is
1417         enabled and OUTBUF is equal to INBUF.
1418
1419 2005-02-25  Werner Koch  <wk@g10code.com>
1420
1421         * pubkey.c (gcry_pk_get_keygrip): Allow for shadowed-private-key.
1422
1423 2005-02-13  Moritz Schulte  <moritz@g10code.com>
1424
1425         * serpent.c: Updated from 1.2 branch:
1426
1427         s/u32_t/u32/ and s/byte_t/byte/.  Too match what we have always
1428         used and are using in all other files too
1429         (serpent_test): Moved prototype out of a fucntion.
1430
1431 2005-02-07  Moritz Schulte  <moritz@g10code.com>
1432
1433         * ac.c: Major parts rewritten.
1434         * pubkey.c (_gcry_pk_get_elements): New function.
1435
1436 2004-12-09  Werner Koch  <wk@g10code.com>
1437
1438         * serpent.c (serpent_setkey): Moved prototype of serpent_test to
1439         outer scope.
1440
1441 2004-09-11  Moritz Schulte  <moritz@g10code.com>
1442
1443         * pubkey.c (pubkey_table): Added an alias entry for GCRY_PK_ELG_E.
1444
1445 2004-08-23  Moritz Schulte  <moritz@g10code.com>
1446
1447         * ac.c: Do not include <assert.h>.
1448         * rndegd.c: Likewise.
1449         * sha1.c: Likewise.
1450         * rndunix.c: Likewise.
1451         * rndlinux.c: Likewise.
1452         * rmd160.c: Likewise.
1453         * md5.c: Likewise.
1454         * md4.c: Likewise.
1455         * cipher.c: Likewise.
1456         * crc.c: Likewise.
1457         * blowfish.c: Likewise.
1458
1459         * pubkey.c (dummy_generate, dummy_check_secret_key)
1460         (dummy_encrypt, dummy_decrypt, dummy_sign, dummy_verify): Return
1461         err code GPG_ERR_NOT_IMPLEMENTED instead of aborting through
1462         log_bug().
1463         (dummy_get_nbits): Return 0 instead of aborting though log_bug().
1464
1465 2004-08-19  Werner Koch  <wk@g10code.de>
1466
1467         * pubkey.c (sexp_data_to_mpi): Changed the zero random byte
1468         substituting code to actually do clever things.  Thanks to
1469         Matthias Urlichs for noting the implementation problem.
1470
1471 2004-08-09  Moritz Schulte  <moritz@g10code.com>
1472
1473         * pubkey.c (gcry_pk_sign): Fixed memory leak; fix provided by
1474         Modestas Vainius.
1475
1476 2004-07-16  Werner Koch  <wk@gnupg.org>
1477
1478         * rijndael.c (do_encrypt): Fix alignment problem.  Bugs found by
1479         Matthias Urlichs.
1480         (do_decrypt): Ditto.
1481         (keySched, keySched2): Use 2 macros along with unions in the key
1482         schedule context.
1483
1484 2004-07-14  Moritz Schulte  <moritz@g10code.com>
1485
1486         * rsa.c (_gcry_rsa_decrypt): Don't forget to free "a".  Thanks to
1487         Nikos Mavroyanopoulos.
1488
1489 2004-05-09  Werner Koch  <wk@gnupg.org>
1490
1491         * random.c (read_pool): Mix the PID in to better protect after a
1492         fork.
1493
1494 2004-07-04  Moritz Schulte  <moritz@g10code.com>
1495
1496         * serpent.c: Use "u32_t" instead of "unsigned long", do not
1497         declare S-Box variables as "register".  Fixes failure on
1498         OpenBSD/sparc64, reported by Nikolay Sturm.
1499
1500 2004-05-07  Werner Koch  <wk@gnupg.org>
1501
1502         * random.c (initialize): Factored out some code to ..
1503         (initialize_basics): .. new function.
1504         (_gcry_random_initialize): Just call initialize_basics unless the
1505         new arg FULL is set to TRUE.
1506         (_gcry_fast_random_poll): Don't do anything unless the random
1507         system has been really initialized.
1508
1509 2004-05-07  Moritz Schulte  <moritz@g10code.de>
1510
1511         * ac.c (gcry_ac_open): Do not dereference NULL pointer.  Reported
1512         by Umberto Salsi.
1513
1514 2004-02-20  Werner Koch  <wk@gnupg.org>
1515
1516         * primegen.c (check_prime): New args CB_FUNC and CB_ARG; call them
1517         at different stages.  Pass these arguments through all callers.
1518
1519 2004-02-06  Werner Koch  <wk@gnupg.org>
1520
1521         * des.c: Add a new OID as used by pkcs#12.
1522
1523         * rfc2268.c: New. Taken from libgcrypt.
1524         * cipher.c: Setup the rfc2268 algorithm.
1525
1526 2004-01-25  Moritz Schulte  <mo@g10code.com>
1527
1528         * primegen.c (prime_generate_internal): Do not forget to free
1529         `q_factor'; fixed by Brieuc Jeunhomme.
1530         (prime_generate_internal): Do not forget to free `prime'.
1531
1532 2004-01-14  Moritz Schulte  <mo@g10code.com>
1533
1534         * ac.c (gcry_ac_data_set): New argument: flags; slightly
1535         rewritten.
1536         (gcry_ac_data_get_name, gcry_ac_data_get_index): Likewise.
1537         (gcry_ac_key_pair_generate): New argument: misc_data; modified
1538         order of arguments.
1539         (gcry_ac_key_test): New argument: handle.
1540         (gcry_ac_key_get_nbits, gcry_ac_key_get_grip): Likewise.
1541         Use GCRY_AC_FLAG_NO_BLINDING instead of
1542         GCRY_AC_DATA_FLAG_NO_BLINDING.
1543         (gcry_ac_mpi): New member: flags.
1544         (gcry_ac_data_search, gcry_ac_data_add): Removed functions.
1545
1546 2003-12-22  Werner Koch  <wk@gnupg.org>
1547
1548         * primegen.c (is_prime): Release A2.
1549
1550 2003-12-19  Werner Koch  <wk@gnupg.org>
1551
1552         * md.c: Moved a couple of functions down below the data structure
1553         definitions.
1554         (struct gcry_md_context): New field ACTUAL_HANDLE_SIZE.
1555         (md_open): Set it here.
1556         (strcut gcry_md_list): New field ACTUAL_STRUCT_SIZE.
1557         (md_enable): Set it here.
1558         (md_close): Wipe the context memory.
1559         secure memory.
1560         * cipher.c (struct gcry_cipher_handle): New field ACTUAL_HANDLE_SIZE.
1561         (gcry_cipher_open): Set it here.
1562         (gcry_cipher_close): Use it to always wipe out the handle data.
1563
1564         * ac.c (gcry_ac_open): Make sure HANDLE gets initialized even when
1565         the function is not successful.
1566         (gcry_ac_close): Allow a NULL handle.
1567         (gcry_ac_key_destroy, gcry_ac_key_pair_destroy): Ditto.
1568         (gcry_ac_key_get_grip): Return INV_OBJ on error.
1569
1570         * primegen.c (prime_generate_internal): Fixed error code for
1571         failed malloc.  Replaced the !err if chain by gotos.
1572         (gcry_prime_group_generator): Remove the extra sanity check.
1573
1574         * md.c: Minor code and comment cleanups.
1575
1576 2003-12-16  Werner Koch  <wk@gnupg.org>
1577
1578         * primegen.c (gen_prime): Doc fix.  Thanks to Newton Hammet.
1579
1580 2003-12-11  Werner Koch  <wk@gnupg.org>
1581
1582         * rndunix.c (slow_poll): Don't use #warning but #error.
1583
1584         * rndegd.c: Changed indentation.
1585         (my_make_filename): Removd the var_arg cruft becuase we
1586         don't need it here.  Changed caller.
1587
1588         * rndlinux.c: Changed indentation.
1589         (open_device): Remove the superfluous stat call and clarify
1590         comment.
1591
1592         * rsa.c: Changed indentation.
1593         (secret): Use the standard algorithm if p, q and u are not
1594         available.
1595         (rsa_blind, rsa_unblind): Renamed from _gcry_rsa_blind,
1596         _gcry_rsa_unblind and moved more to the top.
1597
1598         * md4.c: Changed indentation.  Removed unnecessary casts.
1599         * md5.c, rmd160.c, sha1.c, tiger.c: Ditto.
1600         * rijndael.c, twofish.c: Ditto.
1601         * serpent.c: Removed unnecessary casts.
1602         * sha256.c, sha512.c: Ditto.
1603
1604 2003-12-09  Werner Koch  <wk@gnupg.org>
1605
1606         * dsa.c: Unified indentation style.
1607         * elgamal.c: Ditto.
1608         * des.c (des_key_schedule): Code beautifications.
1609         * blowfish.c: Changed indentation style.
1610         * cast5.c (do_cast_setkey): Ditto.
1611
1612         * pubkey.c (gcry_pk_encrypt): Replaced the chain of if(!err) tests
1613         by straightforward gotos. Other cleanups.
1614         (gcry_pk_decrypt): Ditto.
1615         (gcry_pk_sign): Ditto.
1616         (gcry_pk_verify): Ditto.
1617         (gcry_pk_genkey): Ditto.  Use strtoul instead of strtol.
1618         (gcry_pk_ctl): Use GPG_ERR_INV_ARG to indicate bad arguments.
1619
1620 2003-12-07  Werner Koch  <wk@gnupg.org>
1621
1622         * pubkey.c (gcry_pk_register_default): Undef the helper macro.
1623         (gcry_pk_map_name): Allow NULL for string.
1624         (sexp_to_key): Use memcpy and not strncpy.  Use gcry_free and not
1625         free.
1626         (sexp_to_sig): Ditto.
1627         (sexp_to_enc): Ditto.  Replaced the chain of if(!err) tests by
1628         straightforward gotos.
1629
1630 2003-12-05  Werner Koch  <wk@gnupg.org>
1631
1632         * cipher.c: Documentation cleanups.
1633         (gcry_cipher_mode_from_oid): Allow NULL for STRING.
1634
1635 2003-12-03  Werner Koch  <wk@gnupg.org>
1636
1637         * elgamal.c (sign, do_encrypt, gen_k): Make sure that a small K is
1638         only used for encryption.
1639
1640 2003-11-18  Werner Koch  <wk@gnupg.org>
1641
1642         * random.h (rndw32_set_dll_name): Removed unused prototype.
1643
1644         * Makefile.am (EXTRA_DIST): Added Manifest.
1645
1646 2003-11-11  Werner Koch  <wk@gnupg.org>
1647
1648         * Manifest: New.
1649
1650 2003-11-04  Werner Koch  <wk@gnupg.org>
1651
1652         * md.c (gcry_md_hash_buffer): Use shortcut for SHA1
1653         * sha1.c (_gcry_sha1_hash_buffer): New.
1654
1655         * random.c: Reformatted most functions.
1656         (mix_pool): Moved the failsafe_digest from global
1657         scope to here.
1658         (do_fast_random_poll): Use the generic fucntions even if a fast
1659         gathering function has been used.
1660         (read_pool): Detect a fork and retry.
1661         (gcry_randomize, get_random_bytes): Don't distinguish anymore
1662         between weak and strong random.
1663         (gcry_create_nonce): New.
1664
1665 2003-10-31  Werner Koch  <wk@gnupg.org>
1666
1667         * rndw32.c (slow_gatherer_windowsNT): Use a plain buffer for the
1668         disk performance values and not the W32 API structure.
1669
1670         * dsa.c (verify): s/exp/ex/ due to shadowing of a builtin.
1671         * elgamal.c (verify): Ditto.
1672
1673         * ac.c (gcry_ac_data_get_index): s/index/idx/
1674         (gcry_ac_data_copy_internal): Remove the cast in _gcry_malloc.
1675         (gcry_ac_data_add): Must use gcry_realloc instead of realloc.
1676         * pubkey.c (sexp_elements_extract): s/index/idx/ as tribute to the
1677         forehackers.
1678         (gcry_pk_encrypt): Removed shadowed definition of I. Reordered
1679         arguments to malloc for clarity.
1680         (gcry_pk_sign, gcry_pk_genkey): Ditto.
1681         * primegen.c (prime_generate_internal): s/random/randomlevel/.
1682
1683 2003-10-27  Moritz Schulte  <mo@g10code.com>
1684
1685         * pubkey.c (gcry_pk_encrypt): Don't forget to deallocate pkey.
1686
1687 2003-10-27  Werner Koch  <wk@gnupg.org>
1688
1689         * random.c (gcry_random_add_bytes): Return if buflen is zero to
1690         avoid gcc warning about unsed parameter.
1691         (MASK_LEVEL): Simplified; does now work for signed and unsigned
1692         w/o warnings.
1693
1694         * md.c (md_start_debug): Removed the const from SUFFIX, because
1695         this function is called from the control fucntion which does not
1696         require const.
1697
1698         Prefixed all (pubkey,digest,cipher}_spec_* globale variables with
1699         _gcry_.
1700
1701         * ac.c (ac_key_identifiers): Made static.
1702
1703         * random.c (getfnc_gather_random,getfnc_fast_random_poll): Move
1704         prototypes to ..
1705         * rand-internal.h: .. here
1706         * random.c (getfnc_gather_random): Include rndw32 gatherer.
1707         * rndunix.c, rndw32.c, rndegd.c: Include them here.
1708         * rndlinux.c (_gcry_rndlinux_gather_random): Prepend the _gcry_
1709         prefix.  Changed all callers.
1710         * rndegd.c (_gcry_rndegd_gather_random): Likewise.
1711         (_gcry_rndegd_connect_socket): Likewise.
1712         * rndunix.c (_gcry_rndunix_gather_random): Likewise.
1713         (waitpid): Made static.
1714         * rndw32.c: Removed the old and unused winseed.dll cruft.
1715         (_gcry_rndw32_gather_random_fast): Renamed from
1716         gather_random_fast.
1717         (_gcry_rndw32_gather_random): Renamed from gather_random.  Note,
1718         that the changes 2003-04-08 somehow got lost.
1719
1720         * sha512.c (sha512_init, sha384_init): Made static.
1721
1722         * cipher.c (do_ctr_decrypt): Removed "return" from this void
1723         function.
1724
1725 2003-10-24  Moritz Schulte  <mo@g10code.com>
1726
1727         * serpent.c: Fix an issue on big-endian systems.
1728
1729         * rndw32.c: Removed IS_MODULE -cruft.
1730         * rndlinux.c (rndlinux_gather_random): Likewise.
1731
1732 2003-10-10  Werner Koch  <wk@gnupg.org>
1733
1734         * primegen.c (gen_prime): Bail out if NBITS is less than 16.
1735         (prime_generate_internal): Initialize prime variable to suppress
1736         compiler warning.  Check pbits, initialize qbits when passed as
1737         zero.
1738
1739         * primegen.c (prime_generate_internal): New arg
1740         ALL_FACTORS. Changed all callers.
1741         (gcry_prime_generate): Make the factors arg optional. Request
1742         all_factors.  Make sure PRIME is set to NULL even on error.
1743         (gcry_prime_group_generator): New.
1744         (gcry_prime_release_factors): New.
1745
1746 2003-10-06  Werner Koch  <wk@gnupg.org>
1747
1748         * primegen.c (gen_prime): Assert that NBITS is never zero, it
1749         would cause a segv.
1750
1751 2003-09-28  Moritz Schulte  <mo@g10code.com>
1752
1753         * ac.c: Include "cipher.h".
1754
1755 2003-09-27  Moritz Schulte  <mo@g10code.com>
1756
1757         * rndegd.c (do_read): Return nread instead of nbytes; thanks to
1758         Michael Caerwyn.
1759
1760 2003-09-04  Werner Koch  <wk@gnupg.org>
1761
1762         * pubkey.c (_gcry_pk_aliased_algo_name): New.
1763         * ac.c (gcry_ac_open): Use it here.
1764
1765         * Makefile.am (EXTRA_libcipher_la_SOURCES): Add serpent.c
1766
1767 2003-09-02  Moritz Schulte  <mo@g10code.com>
1768
1769         * primegen.c (gcry_prime_check, gcry_prime_generate): New
1770         functions.
1771         (prime_generate_internal): New function, based on
1772         _gcry_generate_elg_prime.
1773         (_gcry_generate_elg_prime): Rewritten as a wrapper for
1774         prime_generate_internal.
1775
1776 2003-08-28  Werner Koch  <wk@gnupg.org>
1777
1778         * pubkey.c (gcry_pk_encrypt): Don't include the flags list in the
1779         return value.  This does not make sense and breaks any programs
1780         parsing the output strictly (e.g. current gpgsm).
1781         (gcry_pk_encrypt): If aliases for the algorithm name exists, take
1782         the first one instead of the regular name to adhere to SPKI
1783         conventions.
1784         (gcry_pk_genkey): Ditto.
1785         (gcry_pk_sign): Ditto. Removed unused KEY_ALGO_NAME.
1786
1787 2003-08-19  Moritz Schulte  <mo@g10code.com>
1788
1789         * cipher.c: Add support for Serpent
1790         * serpent.c: New file.
1791
1792 2003-08-10  Moritz Schulte  <moritz@g10code.com>
1793
1794         * rsa.c (_gcry_rsa_blind, _gcry_rsa_unblind): Declare static.
1795
1796 2003-08-09  Timo Schulz  <twoaday@freakmail.de>
1797
1798         * random.c (getfnc_gather_random): Don't check NAME_OF_DEV_RANDOM
1799         two times, but also the NAME_OF_DEV_URANDOM device.
1800
1801 2003-08-08  Moritz Schulte  <moritz@g10code.com>
1802
1803         * pubkey.c (sexp_to_enc): Fixed extraction of S-Expression: do not
1804         fail if no `flags' sub S-Expression is found.
1805
1806 2003-07-27  Werner Koch  <wk@gnupg.org>
1807
1808         * md.c (gcry_md_lookup_func_oid): Allow for empty OID lists.
1809
1810 2003-07-23  Moritz Schulte  <moritz@g10code.com>
1811
1812         * ac.c (gcry_ac_data_construct): New argument: include_flags, only
1813         include `flags' S-expression, if include_flags is true.  Adjust
1814         callers.  Thanks for triggering a bug caused by `flags'
1815         sub-S-expression where they are not expected to Ralf Schneider.
1816
1817 2003-07-21  Moritz Schulte  <moritz@g10code.com>
1818
1819         * pubkey.c (gcry_pk_lookup_func_name): Use new member name
1820         `aliases' instead of `sexp_names'.
1821
1822         * ac.c (gcry_ac_key_data_get): New function.
1823
1824         * cipher.c (gcry_cipher_lookup_func_name): Fix return value.
1825
1826 2003-07-20  Moritz Schulte  <moritz@g10code.com>
1827
1828         * blowfish.c: Adjusted for new gcry_cipher_spec_t structure.
1829         * cast5.c: Likewise.
1830         * twofish.c: Likewise.
1831         * arcfour.c: Likewise.
1832         * rijndael.c (rijndael_oids, rijndael192_oids, rijndael256_oids):
1833         New variables, adjust for new gcry_cipher_spec_t structure.
1834         * des.c (oids_tripledes): New variable, adjust for new
1835         gcry_cipher_spec_t structure.
1836
1837         * md.c (oid_table): Removed.
1838
1839         * tiger.c (oid_spec_tiger): New variable.
1840         (digest_spec_tiger): Adjusted for new gry_md_spec_t structure.
1841
1842         * sha512.c (oid_spec_sha512): New variable.
1843         (digest_spec_sha512): Adjusted for new gry_md_spec_t structure.
1844
1845         * sha512.c (oid_spec_sha384): New variable.
1846         (digest_spec_sha384): Adjusted for new gry_md_spec_t structure.
1847
1848         * sha256.c (oid_spec_sha256): New variable.
1849         (digest_spec_sha256): Adjusted for new gry_md_spec_t structure.
1850
1851         * sha1.c (oid_spec_sha1): New variable.
1852         (digest_spec_sha1): Adjusted for new gry_md_spec_t structure.
1853
1854         * rmd160.c (oid_spec_rmd160): New variable.
1855         (digest_spec_rnd160): Adjusted for new gry_md_spec_t structure.
1856
1857         * md5.c (oid_spec_md5): New variable.
1858         (digest_spec_md5): Adjusted for new gry_md_spec_t structure.
1859
1860         * md4.c (oid_spec_md4): New variable.
1861         (digest_spec_md4): Adjusted for new gry_md_spec_t structure.
1862
1863         * crc.c (digest_spec_crc32, digest_spec_crc32_rfc1510,
1864         digest_spec_crc32_rfc2440): Adjusted for new gry_md_spec_t
1865         structure.
1866
1867 2003-07-19  Moritz Schulte  <moritz@g10code.com>
1868
1869         * md.c (gcry_md_lookup_func_oid): New function.
1870         (search_oid): New function, copied from cipher.c.
1871         (gcry_md_map_name): Adjust for new search_oid_interface.
1872
1873         * cipher.c (oid_table): Removed table.
1874         (gcry_cipher_lookup_func_oid): New function.
1875         (search_oid): Rewritten to use the module functions.
1876         (gcry_cipher_map_name): Adjust for new search_oid interface.
1877         (gcry_cipher_mode_from_oid): Likewise.
1878
1879 2003-07-18  Werner Koch  <wk@gnupg.org>
1880
1881         * md.c (gcry_md_hash_buffer): Convert ERR to gpg_error_t in
1882         gpg_strerror.
1883
1884 2003-07-14  Moritz Schulte  <moritz@g10code.com>
1885
1886         * cipher.c (gcry_cipher_lookup_func_name): Also check the cipher
1887         name aliases, not just the primary name.
1888         (gcry_cipher_map_name): Remove kludge for aliasing Rijndael to
1889         AES.
1890
1891         * arcfour.c, blowfish.c, cast5.c, des.c, twofish.c: Adjust cipher
1892         specification structures.
1893
1894         * rijndael.c (rijndael_names, rijndael192_names,
1895         rijndael256_names): New variables, use them in the cipher
1896         specifications.
1897
1898         * rmd160test.c: Removed file.
1899
1900         * ac.c, arcfour.c, blowfish.c, cast5.c, cipher.c, des.c, dsa.c,
1901         elgamal.c, md.c, pubkey.c, random.c, rijndael.c, rsa.c, twofish.c:
1902         Used gcry_err* wrappers for libgpg symbols.
1903
1904         * primegen.c (gen_prime): Correct the order arguments to
1905         extra_check.
1906
1907 2003-07-12  Moritz Schulte  <moritz@g10code.com>
1908
1909         * ac.c: Replaced all public occurences of gpg_error_t with
1910         gcry_error_t.
1911         * cipher.c: Likewise.
1912         * md.c: Likewise.
1913         * pubkey.c: Likewise.
1914         * random.c: Likewise.
1915
1916         * cipher.c: Added support for TWOFISH128.
1917
1918 2003-07-08  Moritz Schulte  <moritz@g10code.com>
1919
1920         * ac.c (gcry_ac_data_copy_internal): New function, based on
1921         gcry_ac_data_copy.
1922         (gcry_ac_data_copy): Made public, use gcry_ac_data_copy_internal.
1923         (gcry_ac_key_init): Use gcry_ac_data_copy_internal.
1924
1925 2003-07-07  Moritz Schulte  <moritz@g10code.com>
1926
1927         * ac.c (gcry_ac_data_set): Only release old MPI value if it is
1928         different from the new value.  Bug reported by Simon Josefsson
1929         <jas@extundo.com>.
1930
1931         * pubkey.c (gcry_pk_list): New function.
1932         * md.c (gcry_md_list): New function.
1933
1934         * ac.c (gcry_ac_key_pair_generate): Fix calculation of format
1935         string size.
1936
1937 2003-07-05  Moritz Schulte  <moritz@g10code.com>
1938
1939         * md.c: Named struct of digest_table `digest_table_entry'.
1940         (digest_table_entry): New member: algorithm; filled in.
1941         (digest_table_entry): Removed unused member: flags.
1942         (gcry_md_register): New argument: algorithm_id, filled in.
1943         (gcry_md_register_default): Used algorithm ID from module
1944         structure.
1945         (gcry_md_map_name): Likewise.
1946         (md_enable): Likewise.
1947         (md_read): Likewise.
1948         (gcry_md_info): Likewise.
1949
1950         * pubkey.c: Named truct for pubkey_table `pubkey_table_entry'.
1951         (pubkey_table_entry): New member: algorithm; filled in.
1952         (gcry_pk_register_default): Used algorithm ID from pubkey_table.
1953         (gcry_pk_register): New argument: algorithm_id, filled in.
1954         (gcry_pk_map_name): Used algorithm ID from module structure.
1955         (gcry_pk_decrypt): Likewise.
1956         (gcry_pk_encrypt): Likewise.
1957         (gcry_pk_verify): Likewise.
1958         (gcry_pk_sign): Likewise.
1959         (gcry_pk_testkey): Likewise.
1960         (gcry_pk_genkey): Likewise.
1961         (gcry_pk_get_nbits): Likewise.
1962         (sexp_to_key): Removed unused variable: algo.
1963         (sexp_to_sig): Likewise.
1964
1965         * cipher.c: Named struct for cipher_table `cipher_table_entry'.
1966         (cipher_table_entry): New member: algorithm; filled in.
1967         (gcry_cipher_register_default): Used algorithm ID from
1968         cipher_table.
1969         (gcry_cipher_register): New argument: algorithm_id, filled in.
1970         (gcry_cipher_map_name): Used algorithm ID from module structure.
1971
1972         * arcfour.c (cipher_spec_arcfour): Removed algorithm ID.
1973         * blowfish.c (cipher_spec_blowfish): Likewise.
1974         * cast5.c (cipher_spec_cast5): Likewise.
1975         * crc.c (digest_spec_crc32): Likewise.
1976         * crc.c (digest_spec_crc32_rfc1510): Likewise.
1977         * crc.c (digest_spec_crc32_rfc2440): Likewise.
1978         * des.c (cipher_spec_des): Likewise.
1979         * des.c (cipher_spec_tripledes): Likewise.
1980         * dsa.c (pubkey_spec_dsa): Likewise.
1981         * elgamal.c (pubkey_spec_elg): Likewise.
1982         * md4.c (digest_spec_md4): Likewise.
1983         * md5.c (digest_spec_md5): Likewise.
1984         * aes.c (cipher_spec_aes): Likewise.
1985         * aes.c (cipher_spec_aes192): Likewise.
1986         * aes.c (cipher_spec_aes256): Likewise.
1987         * rsa.c (pubkey_spec_rsa): Likewise.
1988         * sha1.c (digest_spec_sha1): Likewise.
1989         * sha256.c (digest_spec_sha256): Likewise.
1990         * sha512.c (digest_spec_sha512): Likewise.
1991         * tiger.c (digest_spec_tiger): Likewise.
1992         * twofish.c (cipher_spec_twofish): Likewise.
1993         * twofish.c (cipher_spec_twofish128): Likewise.
1994
1995         * Makefile.am (EXTRA_libcipher_la_SOURCES): Fix list of source
1996         files; reported by Simon Josefsson <jas@extundo.com>.
1997
1998         * pubkey.c: Replaced all occurences of `id' with `algorithm',
1999         since `id' is a keyword in obj-c.
2000         * md.c: Likewise.
2001         * cipher.c: Likewise.
2002
2003         * crc.c, md4.c, md5.c, rmd160.c, sha1.c, sha256.c, tiger.c:
2004         Replaced all occurences of gcry_digest_spec_t with gcry_md_spec_t.
2005
2006         * dsa.c, rsa.c, elgamal.c: Replaced all occurencens of
2007         gcry_pubkey_spec_t with gcry_pk_spec_t.
2008
2009         * md.c: Replaced all occurences of gcry_digest_spec_t with
2010         gcry_md_spec_t.
2011         (gcry_digest_register_default): Renamed to ...
2012         (gcry_md_register_default): ... this; adjusted callers.
2013         (gcry_digest_lookup_func_name): Renamed to ...
2014         (gcry_md_lookup_func_name): ... this; adjusted callers.
2015         (gcry_digest_lookup_name): Renamed to ...
2016         (gcry_md_lookup_name): ... this; adjusted callers.
2017         (gcry_digest_register): Renamed to ...
2018         (gcry_md_register): ... this.
2019         (gcry_digest_unregister): Renamed to ...
2020         (gcry_md_unregister): ... this.
2021
2022         * pubkey.c (gcry_pubkey_register): Renamed to ...
2023         (gcry_pk_register): ... this.
2024         (gcry_pubkey_unregister): Renamed to ...
2025         (gcry_pk_unregister): ... this.
2026         Replaced all occurences of gcry_pubkey_spec_t with gcry_pk_spec_t.
2027         (gcry_pubkey_register_default): Renamed to ...
2028         (gcry_pk_register_default): ... this; adjusted callers.
2029         (gcry_pubkey_lookup_func_name): Renamed to ...
2030         (gcry_pk_lookup_func_name): ... this; adjusted callers.
2031         (gcry_pubkey_lookup_name): Renamed to ...
2032         (gcry_pk_lookup_name): ... this; adjusted callers.
2033
2034         * md.c (gcry_md_hash_buffer): Fix error checking.  Thanks to Simon
2035         Josefsson <jas@extunde.com>.
2036
2037 2003-07-04  Moritz Schulte  <moritz@g10code.com>
2038
2039         * cipher.c (gcry_cipher_list): New function.
2040
2041 2003-07-01  Moritz Schulte  <moritz@g10code.com>
2042
2043         * pubkey.c (sexp_to_sig): Accept a `flags' S-expression to be more
2044         consistent with sexp_to_enc.
2045
2046 2003-06-30  Moritz Schulte  <moritz@g10code.com>
2047
2048         * Makefile.am (libcipher_la_SOURCES): Added: ac.c.
2049
2050         * pubkey.c (_gcry_pk_module_lookup): New function.
2051         (_gcry_pk_module_release): New function.
2052
2053 2003-06-29  Moritz Schulte  <moritz@g10code.com>
2054
2055         * ac.c: New file.
2056
2057 2003-06-26  Werner Koch  <wk@gnupg.org>
2058
2059         * md.c (gcry_md_hash_buffer): Trigger BUG correcly with new API.
2060
2061 2003-06-19  Werner Koch  <wk@gnupg.org>
2062
2063         * md.c (gcry_md_is_enabled): Fixed.
2064
2065 2003-06-18  Werner Koch  <wk@gnupg.org>
2066
2067         * cipher.c (gcry_cipher_get_algo_keylen): New.
2068         (gcry_cipher_get_algo_blklen): New.
2069
2070 2003-06-18  Moritz Schulte  <moritz@g10code.com>
2071
2072         * arcfour.c, cipher.c, blowfish.c, md.c, cast5.c, pubkey.c, crc.c,
2073         des.c, dsa.c, elgamal.c, md4.c, md5.c, random.c, rijndael.c,
2074         rmd160.c, rsa.c, sha1.c, sha256.c, sha512.c, tiger.c, twofish.c:
2075         Replaced older types GcryDigestSpec, GcryCipherSpec and
2076         GcryPubkeySpec with newer types: gcry_digest_spec_t,
2077         gcry_cipher_spec_t and gcry_pubkey_spec_t.
2078
2079         * md.c (gcry_digest_id_new): Removed function.
2080         (gcry_digest_register): Removed code for generating a new module
2081         ID.
2082
2083         * pubkey.c (gcry_pubkey_id_new): Removed function.
2084         (gcry_pubkey_register): Removed code for generating a new module
2085         ID.
2086
2087         * cipher.c, md.c, pubkey.c: Replace old type GcryModule with newer
2088         one: gcry_module_t.
2089         (gcry_cipher_id_new): Removed function.
2090         (gcry_cipher_register): Removed code for generating a new module
2091         ID.
2092
2093         * cipher.c (gcry_cipher_register): Adjust call to
2094         _gcry_module_add.
2095         (gcry_cipher_register_default): Likewise.
2096         * pubkey.c (gcry_pubkey_register_default): Likewise.
2097         (gcry_pubkey_register): Likewise.
2098         * md.c (gcry_digest_register_default): Likewise.
2099         (gcry_digest_register): Likewise.
2100
2101         * md.c (gcry_digest_lookup_func_id): Removed function.
2102         (gcry_digest_lookup_id): Likewise.
2103         (gcry_digest_id_new): Use _gcry_module_lookup_id instead of
2104         gcry_digest_lookup_id.
2105         (digest_algo_to_string): Likewise.
2106         (check_digest_algo): Likewise.
2107         (md_enable): Likewise.
2108         (md_digest_length): Likewise.
2109         (md_asn_oid): Likewise.
2110
2111         * pubkey.c (gcry_pubkey_lookup_id): Removed function.
2112         (gcry_pubkey_lookup_func_id): Likewise.
2113         (gcry_pubkey_id_new): Use _gcry_module_lookup_id instead of
2114         gcry_pubkey_id_new.
2115         (gcry_pk_algo_name): Likewise.
2116         (disable_pubkey_algo): Likewise.
2117         (check_pubkey_algo): Likewise.
2118         (pubkey_get_npkey): Likewise.
2119         (pubkey_get_nskey): Likewise.
2120         (pubkey_get_nsig): Likewise.
2121         (pubkey_get_nenc): Likewise.
2122         (pubkey_generate): Likewise.
2123         (pubkey_check_secret_key): Likewise.
2124         (pubkey_encrypt): Likewise.
2125         (pubkey_decrypt): Likewise.
2126         (pubkey_sign): Likewise.
2127         (pubkey_verify): Likewise.
2128         (gcry_pk_algo_info): Likewise.
2129
2130         * cipher.c (gcry_cipher_lookup_func_id): Removed function.
2131         (gcry_cipher_lookup_id): Likewise.
2132         (cipher_algo_to_string): use _gcry_module_lookup_id instead of
2133         gcry_cipher_lookup_id.
2134         (disable_cipher_algo): Likewise.
2135         (check_cipher_algo): Likewise.
2136         (cipher_get_blocksize): Likewise.
2137         (gcry_cipher_open): Likewise.
2138         (gcry_cipher_id_new): Likewise.
2139
2140 2003-06-17  Moritz Schulte  <moritz@g10code.com>
2141
2142         * Makefile.am (GCRYPT_MODULES): Set to @GCRYPT_CIPHERS@,
2143         @GCRYPT_PUBKEY_CIPHERS@, @GCRYPT_DIGESTS@ and @GCRYPT_RANDOM@.
2144         (libcipher_la_DEPENDENCIES): Set to $(GCRYPT_MODULES).
2145         (libcipher_la_LIBADD): Likewise.
2146         (AM_CFLAGS): Added: @GPG_ERROR_CFLAGS@.
2147         (EXTRA_libcipher_la_SOURCES): Added all conditional sources.
2148
2149         * md.c (md_open): Use _gcry_fast_random_poll instead of
2150         fast_random_poll.
2151         * cipher.c (gcry_cipher_open): Likewise.
2152
2153         * random.h (fast_random_poll): Removed macro.
2154
2155         * blowfish.c, md4.c, md5.c, rmd160.c, sha1.c, sha256.c, sha512.c,
2156         tiger.c: Use Autoconf's WORDS_BIGENDIAN instead of our own
2157         BIG_ENDIAN_HOST.
2158
2159 2003-06-16  Moritz Schulte  <moritz@g10code.com>
2160
2161         * random.c (getfnc_gather_random): Do not special-case
2162         USE_ALL_RANDOM_MODULES, make it the default.
2163
2164         * dsa.c: Replace last occurences of old type names with newer
2165         names (i.e. replace MPI with gcry_mpi_t).
2166         * elgamal.c: Likewise.
2167         * primegen.c: Likewise.
2168         * pubkey.c: Likewise.
2169         * rsa.c: Likewise.
2170
2171 2003-06-14  Moritz Schulte  <moritz@g10code.com>
2172
2173         * des.c (des_setkey): Add selftest check.
2174         (tripledes_set3keys): Likewise.
2175         (do_tripledes_setkey): Remove selftest check.
2176         (do_des_setkey): Likewise.
2177
2178 2003-06-11  Moritz Schulte  <moritz@g10code.com>
2179
2180         * md.c (_gcry_md_init): New function.
2181         * cipher.c (_gcry_cipher_init): New function.
2182         * pubkey.c (_gcry_pk_init): New function.
2183
2184 2003-06-13  Werner Koch  <wk@gnupg.org>
2185
2186         * md.c (gcry_md_get_algo): Reverted to old API.  This is a
2187         convenience function anyway and error checking is not approriate.
2188         (gcry_md_is_secure): New.
2189         (gcry_md_is_enabled): New.
2190
2191 2003-06-12  Werner Koch  <wk@gnupg.org>
2192
2193         * cipher.c (gcry_cipher_open): Make sure HANDLE is set to NULL on
2194         error.
2195
2196 2003-06-11  Werner Koch  <wk@gnupg.org>
2197
2198         * md.c (gcry_md_open): Make sure H receives either NULL or an
2199         valid handle.
2200         (gcry_md_copy): Swapped arguments so that it is more in lione with
2201         md_open and most other API fucntions like memcpy (destination
2202         comes first).  Make sure HANDLE is set to NULL on error.
2203
2204         * rijndael.c (do_encrypt): Hack to force correct alignment.  It
2205         seems not to be not sufficient, though.  We should rework this
2206         fucntions and remove all these ugly casts.  Let the compiler
2207         optimize or have an assembler implementation.
2208
2209 2003-06-09  Moritz Schulte  <moritz@g10code.com>
2210
2211         * Makefile.am: Removed rules serpent, since that is not commited
2212         yet.
2213
2214 2003-06-08  Moritz Schulte  <moritz@g10code.com>
2215
2216         * pubkey.c (gcry_pk_encrypt): Improve calculation for size of the
2217         format string.
2218
2219 2003-06-07  Moritz Schulte  <moritz@g10code.com>
2220
2221         * arcfour.c, bithelp.h, blowfish.c, cast5.c, cipher.c, crc.c,
2222         des.c, dsa.c, elgamal.c, md4.c, md5.c, md.c, primegen.c, pubkey.c,
2223         rand-internal.h, random.c, random.h, rijndael.c, rmd160.c,
2224         rmd160test.c, rmd.h, rndeged.c, rndlinux.c, rndunix.c, rndw32.c,
2225         rsa.c, sha1.c, sha256.c, sha512.c, tiger.c, twofish.c: Edited all
2226         preprocessor instructions to remove whitespace before the '#'.
2227         This is not required by C89, but there are some compilers out
2228         there that don't like it.  Replaced any occurence of the now
2229         deprecated type names with the new ones.
2230
2231 2003-06-04  Moritz Schulte  <moritz@g10code.com>
2232
2233         * pubkey.c (gcry_pk_encrypt): Construct an arg_list and use
2234         gcry_sexp_build_array instead of gcry_sexp_build.
2235         (gcry_pk_sign): Likewise.
2236         (gcry_pk_genkey): Likewise.
2237
2238 2003-06-01  Moritz Schulte  <moritz@g10code.com>
2239
2240         * dsa.c (_gcry_dsa_generate): Do not check wether the algorithm ID
2241         does indeed belong to DSA.
2242         (_gcry_dsa_sign): Likewise.
2243         (_gcry_dsa_verify): Likewise.
2244         (_gcry_dsa_get_nbits): Likewise.
2245
2246         * elgamal.c (_gcry_elg_check_secret_key): Do not check wether the
2247         algorithm ID does indeed belong to ElGamal.
2248         (_gcry_elg_encrypt): Likewise.
2249         (_gcry_elg_decrypt): Likewise.
2250         (_gcry_elg_sign): Likewise.
2251         (_gcry_elg_verify): Likewise.
2252         (_gcry_elg_get_nbits): Likewise.
2253         (_gcry_elg_generate): Likewise.
2254
2255         * rsa.c (_gcry_rsa_generate): Do not check wether the algorithm ID
2256         does indeed belong to RSA.
2257         (_gcry_rsa_encrypt): Likewise.
2258         (_gcry_rsa_decrypt): Likewise.
2259         (_gcry_rsa_sign): Likewise.
2260         (_gcry_rsa_verify): Likewise.
2261         (_gcry_rsa_get_nbits): Likewise.
2262
2263 2003-05-30  Moritz Schulte  <moritz@g10code.com>
2264
2265         * md.c (md_get_algo): Return zero in case to algorithm is enabled.
2266
2267         * md.c (gcry_md_info): Adjusted for new no-errno-API.
2268         (md_final): Likewise.
2269         (gcry_md_get_algo): Likewise.
2270         * pubkey.c (gcry_pk_get_keygrip): Likewise.
2271         (gcry_pk_ctl): Likewise.
2272         (gcry_pk_algo_info): Likewise.
2273         * des.c (selftest): Likewise.
2274
2275 2003-05-29  Moritz Schulte  <moritz@g10code.com>
2276
2277         * md.c (md_enable): Do not forget to release module on error.
2278         (gcry_md_open): Adjusted for new no-errno-API.
2279         (md_open): Likewise.
2280         (md_copy): Likewise.
2281         (gcry_md_copy): Likewise.
2282         (gcry_md_setkey): Likewise.
2283         (gcry_md_algo_info): Likewise.
2284
2285         * cipher.c (gcry_cipher_open): Adjusted for new no-errno-API and
2286         also fixed a locking bug.
2287         (gcry_cipher_encrypt): Adjusted for new no-errno-API.
2288         (gcry_cipher_decrypt): Likewise.
2289         (gcry_cipher_ctl): Likewise.
2290         (gcry_cipher_info): Likewise.
2291         (gcry_cipher_algo_info): Likewise.
2292
2293 2003-05-28  Moritz Schulte  <moritz@g10code.com>
2294
2295         * md.c (md_enable): Adjusted for libgpg-error.
2296         (gcry_md_enable): Likewise.
2297         (gcry_digest_register_default): Likewise.
2298         (gcry_digest_register): Likewise.
2299         (check_digest_algo): Likewise.
2300         (prepare_macpads): Likewise.
2301         (gcry_md_setkey): Likewise.
2302         (gcry_md_ctl): Likewise.
2303         (gcry_md_get): Likewise.
2304         (gcry_md_algo_info): Likewise.
2305         (gcry_md_info): Likewise.
2306         * dsa.c (_gcry_dsa_generate): Likewise.
2307         (_gcry_dsa_check_secret_key): Likewise.
2308         (_gcry_dsa_sign): Likewie.
2309         (_gcry_dsa_verify): Likewise.
2310         * twofish.c (do_twofish_setkey): Likewise.
2311         (twofish_setkey): Likewise.
2312         * cipher.c (gcry_cipher_register): Likewise.
2313
2314 2003-05-25  Moritz Schulte  <moritz@g10code.com>
2315
2316         * rijndael.c (do_setkey): Adjusted for libgpg-error.
2317         (rijndael_setkey): Likewise.
2318         * random.c (gcry_random_add_bytes): Likewise.
2319         * elgamal.c (_gcry_elg_generate): Likewise.
2320         (_gcry_elg_check_secret_key): Likewise.
2321         (_gcry_elg_encrypt): Likewise.
2322         (_gcry_elg_decrypt): Likewise.
2323         (_gcry_elg_sign): Likewise.
2324         (_gcry_elg_verify): Likewise.
2325         * rsa.c (_gcry_rsa_generate): Likewise.
2326         (_gcry_rsa_check_secret_key): Likewise.
2327         (_gcry_rsa_encrypt): Likewise.
2328         (_gcry_rsa_decrypt): Likewise.
2329         (_gcry_rsa_sign): Likewise.
2330         (_gcry_rsa_verify): Likewise.
2331         * pubkey.c (dummy_generate, dummy_check_secret_key, dummy_encrypt,
2332         dummy_decrypt, dummy_sign, dummy_verify): Likewise.
2333         (gcry_pubkey_register): Likewise.
2334         (check_pubkey_algo): Likewise.
2335         (pubkey_generate): Likewise.
2336         (pubkey_check_secret_key): Likewise.
2337         (pubkey_encrypt): Likewise.
2338         (pubkey_decrypt): Likewise.
2339         (pubkey_sign): Likewise.
2340         (pubkey_verify): Likewise.
2341         (sexp_elements_extract): Likewise.
2342         (sexp_to_key): Likewise.
2343         (sexp_to_sig): Likewise.
2344         (sexp_to_enc): Likewise.
2345         (sexp_data_to_mpi): Likewise.
2346         (gcry_pk_encrypt): Likewise.
2347         (gcry_pk_decrypt): Likewise.
2348         (gcry_pk_sign): Likewise.
2349         (gcry_pk_verify): Likewise.
2350         (gcry_pk_testkey): Likewise.
2351         (gcry_pk_genkey): Likewise.
2352         (gcry_pk_ctl): Likewise.
2353         * cipher.c (dummy_setkey): Likewise.
2354         (check_cipher_algo): Likewise.
2355         (gcry_cipher_open): Likewise.
2356         (cipher_setkey): Likewise.
2357         (gcry_cipher_ctl): Likewise.
2358         (cipher_encrypt): Likewise.
2359         (gcry_cipher_encrypt): Likewise.
2360         (cipher_decrypt): Likewise.
2361         (gcry_cipher_decrypt): Likewise.
2362         (gcry_cipher_info): Likewise.
2363         (gcry_cipher_algo_info): Likewise.
2364         * cast5.c (cast_setkey): Likewise.
2365         (do_cast_setkey): Likewise.
2366         * arcfour.c (arcfour_setkey): Likewise.
2367         (do_arcfour_setkey): Likewise.
2368         * blowfish.c (do_bf_setkey): Likewise.
2369         (bf_setkey): Likewise.
2370         * des.c (do_des_setkey): Likewise.
2371         (do_tripledes_setkey): Likewise.
2372
2373 2003-05-22  Moritz Schulte  <moritz@g10code.com>
2374
2375         * tiger.c: Merged code ussing the U64_C macro from GnuPG.
2376
2377         * sha512.c: Likewise.
2378
2379 2003-05-17  Moritz Schulte  <moritz@g10code.com>
2380
2381         * pubkey.c (gcry_pk_genkey): Fix type: acquire a lock, instead of
2382         releasing it.
2383
2384 2003-05-11  Moritz Schulte  <moritz@g10code.com>
2385
2386         * pubkey.c (gcry_pk_testkey): Call REGISTER_DEFAULT_CIPHERS.
2387         (gcry_pk_ctl): Likewise.
2388
2389 2003-04-27  Moritz Schulte  <moritz@g10code.com>
2390
2391         * pubkey.c (gcry_pk_genkey): Release sexp after extracted data has
2392         been used.
2393
2394         * md.c (gcry_md_get_algo_dlen): Simplified, simply call
2395         md_digest_length to do the job.
2396
2397         * des.c (do_des_setkey): Check for selftest failure not only
2398         during initialization.
2399         (do_tripledes_setkey): Include check for selftest failure.
2400
2401         * pubkey.c (gcry_pubkey_register_default): New macro
2402         `pubkey_use_dummy', use it.
2403
2404         * elgamal.c (elg_names): New variable.
2405         (pubkey_spec_elg): Include elg_names.
2406
2407         * dsa.c (dsa_names): New variable.
2408         (pubkey_spec_dsa): Include dsa_names.
2409
2410         * rsa.c (rsa_names): New variable.
2411         (pubkey_spec_rsa): Include rsa_names.
2412
2413         * pubkey.c (gcry_pubkey_lookup_func_name): Compare name also with
2414         the names listed in `sexp_names'.
2415
2416 2003-04-24  Moritz Schulte  <moritz@g10code.com>
2417
2418         * pubkey.c (sexp_to_key): New variables: module, pubkey.  Adjusted
2419         to new module interface.
2420         (sexp_to_key): Changend type of argument `retalgo' from `int *' to
2421         `GcryModule **'.  Adjusted all callers.  Removed argument:
2422         r_algotblidx.
2423         (sexp_to_sig): Changend type of argument `retalgo' from `int *' to
2424         `GcryModule **'.  Adjusted all callers.
2425         (sexp_to_enc): Likewise.
2426
2427         (pubkey_get_npkey, pubkey_get_nskey, pubkey_get_nsig,
2428         pubkey_get_nenc): Use strlen to find out the number.
2429
2430         * rsa.c: Adjust pubkey_spec_rsa to new internal interface.
2431         * dsa.c: Likewise.
2432         * elgamal.c: Likewise.
2433
2434 2003-04-17  Moritz Schulte  <moritz@g10code.com>
2435
2436         * pubkey.c (sexp_elements_extract): New function.
2437         * pubkey.c (sexp_to_key): Removed variable `idx', added `err', use
2438         sexp_elements_extract.
2439         (sexp_to_sig): Likewise.
2440         (sexp_to_enc): Likewise.
2441
2442         * pubkey.c: Terminate list correctly.
2443         * md.c: Include sha512/sha384 in digest_table.
2444
2445 2003-04-16  Moritz Schulte  <moritz@g10code.com>
2446
2447         * Makefile.am: Include support for sha512.c.
2448
2449         * sha512.c: New file, merged from GnuPG, with few modifications
2450         for libgcrypt.
2451
2452         * rand-internal.h: Removed declarations for constructor functions.
2453
2454         * md.c (md_copy): Call _gcry_module_use for incrementing the usage
2455         counter of the digest modules.
2456
2457         * rsa.c: Do not include "rsa.h".
2458         * dsa.c: Do not include "dsa.h".
2459         * elgamal.c: Do not include "elgamal.h".
2460         * des.c: Do not include "des.h".
2461         * cast5.c: Do not include "cast5.h".
2462         * blowfish.c: Do not include "blowfish.h".
2463         * arcfour.c: Do not include "arcfour.h".
2464
2465         * Makefile.am (libcipher_la_DEPENDENCIES): Removed.
2466         (libcipher_la_LIBADD): Removed.
2467         Use Automake conditionals for conditional compilation.
2468
2469 2003-04-13  Moritz Schulte  <moritz@g10code.com>
2470
2471         * cipher.c (gcry_cipher_open): Call REGISTER_DEFAULT_CIPHERS.
2472
2473         * md.c (gcry_md_list): New member: module.
2474         (md_enable): New variable: module, changed use of module and
2475         digest.
2476         (md_enable): Initialize member: module.
2477         (md_close): Call _gcry_module_release.
2478
2479         * cipher.c (gcry_cipher_open): New variable: module, changed use of
2480         module and cipher.
2481         (struct gcry_cipher_handle): New member: module.
2482         (gcry_cipher_open): Initialize member: module.
2483         (gcry_cipher_close): Call _gcry_module_release.
2484
2485 2003-04-09  Moritz Schulte  <moritz@g10code.com>
2486
2487         * cipher.c: Include "ath.h".
2488         * md.c: Likewise.
2489         * pubkey.c: Likewise.
2490
2491         * cipher.c (ciphers_registered_lock): New variable.
2492         * md.c (digests_registered_lock): New variable.
2493         * pubkey.c (pubkeys_registered_lock): New variable.
2494
2495         * rndlinux.c (gnupgext_version, func_table): Removed definitions.
2496         (gnupgext_enum_func): Removed function.
2497         (_gcry_rndlinux_constructor): Removed function.
2498
2499         * rndegd.c (gnupgext_version, func_table): Removed definitions.
2500         (gnupgext_enum_func): Removed function.
2501         (_gcry_rndegd_constructor): Removed function.
2502
2503         * rndunix.c (gnupgext_version, func_table): Removed definitions.
2504         (gnupgext_enum_func): Removed function.
2505         (_gcry_rndunix_constructor): Removed function.
2506
2507         * rndw32.c (gnupgext_version, func_table): Removed definitions.
2508         (gnupgext_enum_func): Removed function.
2509         (_gcry_rndw32_constructor): Removed function.
2510
2511         * rndegd.c (rndegd_connect_socket): Simplify code for creating the
2512         egd socket address.
2513         (rndegd_connect_socket): Call log_fatal use instead of
2514         g10_log_fatal.
2515         (egd_gather_random): Renamed to ...
2516         (rndegd_gather_random): ... here.
2517
2518 2003-04-08  Moritz Schulte  <moritz@g10code.com>
2519
2520         * rndlinux.c: Do not include "dynload.h".
2521         * rndunix.c: Likewise.
2522         * rndw32.c: Likewise.
2523
2524         * rndegd.c (rndegd_connect_socket): Factored out from ...
2525         (egd_gather_random): here; call it.
2526         (egd_socket): New variable.
2527         (egd_gather_random): Initialize fd with egd_socket, do not declare
2528         fd static.
2529         (do_read): Merged few changes from GnuPG. FIXME - not finished?
2530         Do not include "dynload.h".
2531
2532         * rndw32.c (gather_random): Renamed to rndw32_gather_random, do
2533         not declare static.
2534         (gather_random_fast): Renamed to rndw32_gather_random_fast, do not
2535         declare static.
2536
2537         * rndunix.c (gather_random): Renamed to rndunix_gather_random, do
2538         not declare static.
2539         * rndegd.c (gather_random): Renamed to rndegd_gather_random, do
2540         not declare static.
2541         * rndlinux.c (gather_random): Renamed to rndlinux_gather_random,
2542         do not declare static.
2543
2544 2003-04-07  Moritz Schulte  <moritz@g10code.com>
2545
2546         * Makefile.am (libcipher_la_SOURCES): Removed construct.c.
2547         (libcipher_la_SOURCES): Added sha1.c, sha256.c, rmd160.c, md4.c,
2548         md5.c, tiger.c and crc.c
2549         (EXTRA_PROGRAMS): Removed sha1, sha256, rmd160, md4, md5, tiger
2550         and crc.  Removed definitions: EXTRA_md4_SOURCES,
2551         EXTRA_md5_SOURCES, EXTRA_rmd160_SOURCES, EXTRA_sha1_SOURCES,
2552         EXTRA_sha256_SOURCES, EXTRA_tiger_SOURCES and EXTRA_crc_SOURCES,
2553         BUILT_SOURCES, DISTCLEANFILES.
2554
2555         * pubkey.c: Do not include "elgamal.h", "dsa.h" and "rsa.h".
2556
2557         * Makefile.am (libcipher_la_SOURCES): Removed rsa.h, elgamal.h,
2558         dsa.h, des.h, cast5.h, arcfour.h and blowfish.h.
2559
2560         * rsa.h: Removed file.
2561         * elgamal.h: Removed file.
2562         * dsa.h: Removed file.
2563         * des.h: Removed file.
2564         * cast5.h: Removed file.
2565         * arcfour.h: Removed file.
2566         * blowfish.h: Removed file.
2567
2568         * Makefile.am (libcipher_la_SOURCES): Removed dynload.c and
2569         dynload.h.
2570
2571         * rsa.c (pubkey_spec_rsa): New variable.
2572         * dsa.c (pubkey_spec_rsa): New variable.
2573         * elgamal.c (pubkey_spec_elg): New variable.
2574
2575         * rsa.c (_gcry_rsa_get_info): Removed function.
2576         * elgamal.c (_gcry_elg_get_info): Removed function.
2577         * dsa.c (_gcry_dsa_get_info): Removed function.
2578
2579         * tiger.c (tiger_get_info): Removed function.
2580         (gnupgext_version, func_table): Removed definitions.
2581         (gnupgext_enum_func): Removed function.
2582         (_gcry_tiger_constructor): Removed function.
2583
2584         * sha1.c (sha1_get_info): Removed function.
2585         (gnupgext_version, func_table): Removed definitions.
2586         (gnupgext_enum_func): Removed function.
2587         (_gcry_sha1_constructor): Removed function.
2588
2589         * sha256.c (sha256_get_info): Removed function.
2590         (gnupgext_version, func_table): Removed definitions.
2591         (gnupgext_enum_func): Removed function.
2592         (_gcry_sha256_constructor): Removed function.
2593
2594         * rmd160.c (rmd160_get_info): Removed function.
2595         (gnupgext_version, func_table): Removed definitions.
2596         (gnupgext_enum_func): Removed function.
2597         (_gcry_rmd160_constructor): Removed function.
2598
2599         * md5.c (md5_get_info): Removed function.
2600         (gnupgext_version, func_table): Removed definitions.
2601         (gnupgext_enum_func): Removed function.
2602         (_gcry_md5_constructor): Removed function.
2603
2604         * md4.c (md4_get_info): Removed function.
2605         (gnupgext_version, func_table): Removed definitions.
2606         (gnupgext_enum_func): Removed function.
2607         (_gcry_md4_constructor): Removed function.
2608
2609         * crc.c (crc_get_info): Removed function.
2610
2611         * arcfour.c (do_arcfour_setkey): Changed type of context argument
2612         to `void *', added local variable for cast, adjusted callers.
2613         (arcfour_setkey): Likewise.
2614         (encrypt_stream): Likewise.
2615         * cast5.c (cast_setkey): Likewise.
2616         (encrypt_block): Likewise.
2617         * rijndael.c (rijndael_setkey): Likewise.
2618         (rijndael_encrypt): Likewise.
2619         (rijndael_decrypt): Likewise.
2620         * twofish.c (twofish_setkey): Likewise.
2621         (twofish_encrypt): Likewise.
2622         (twofish_decrypt): Likewise.
2623         * des.c (do_des_setkey): Likewise.
2624         (do_des_encrypt): Likewise.
2625         (do_des_encrypt): Likewise.
2626         (do_tripledes_encrypt): Likewise.
2627         (do_tripledes_encrypt): Likewise.
2628         * blowfish.c (bf_setkey: Likewise.
2629         (encrypt_block): Likewise.
2630         (decrypt_block): Likewise.
2631
2632         * arcfour.c (encrypt_stream): Likewise.
2633
2634         * rijndael.c (gnupgext_version, func_table): Removed definitions.
2635         (gnupgext_enum_func) Removed function.
2636
2637         * twofish.c (gnupgext_version, func_table): Removed definitions.
2638         (gnupgext_enum_func) Removed function.
2639
2640         * cast5.c (CIPHER_ALGO_CAST5): Removed.
2641
2642         * blowfish.c (FNCCAST_SETKEY, FNCCAST_CRYPT): Removed macros.
2643         (CIPHER_ALGO_BLOWFISH): Removed symbol.
2644         * cast5.c (FNCCAST_SETKEY, FNCCAST_CRYPT): Likewise.
2645         * des.c (selftest_failed): Removed.
2646         (initialized): New variable.
2647         (do_des_setkey): Run selftest, if not yet done.
2648         (FNCCAST_SETKEY, FNCCAST_CRYPT): Removed macros.
2649
2650         * arcfour.c (_gcry_arcfour_get_info): Removed function.
2651         * blowfish.c (_gcry_blowfish_get_info): Removed function.
2652         * cast5.c (_gcry_cast5_get_info): Removed function.
2653         * des.c (_gcry_des_get_info): Removed function.
2654         * rijndael.c (_gcry_rijndael_get_info): Removed function.
2655         * twofish.c (_gcry_twofish_get_info): Removed function.
2656
2657         * arcfour.c (cipher_spec_arcfour): New variable.
2658         * twofish.c (cipher_spec_twofish, cipher_spec_twofish128): New
2659         variables.
2660         * rijndael.c (cipher_spec_aes, cipher_spec_aes192,
2661         cipher_spec256): New variables.
2662         * des.c (cipher_spec_des, cipher_spec_tripledes): New variables.
2663         * cast5.c (cipher_spec_cast5): New variable.
2664         * blowfish.c (cipher_spec_blowfish): Likewise.
2665
2666         * twofish.c: Do not include "dynload.h".
2667         * rijndael.c: Likewise.
2668         * des.c: Likewise.
2669         * cast5.c: Likewise.
2670         * blowfish.c: Likewise.
2671         * cipher.c: Likewise.
2672         * crc.c: Likewise.
2673         * md4.c: Likewise.
2674         * md5.c: Likewise.
2675         * md.c: Likewise.
2676         * pubkey.c: Likewise.
2677         * rijndael.c: Likewise.
2678         * sha1.c: Likewise.
2679         * sha256.c: Likewise.
2680
2681         * arcfour.c: Include "cipher.h".
2682         * twofish.c: Likewise.
2683         * rijndael.c: Likewise.
2684         * des.c: Likewise.
2685         * cast5.c: Likewise.
2686         * blowfish.c: Likewise.
2687
2688         * twofish.c (twofish_setkey): Declared argument `key' const.
2689         (twofish_encrypt): Declared argument `inbuf' const.
2690         (twofish_decrypt): Likewise.
2691
2692         * rijndael.c (rijndael_setkey): Declared argument `key' const.
2693         (rijndael_encrypt): Declared argument `inbuf' const.
2694         (rijndael_decrypt): Likewise.
2695
2696         * des.c (do_des_setkey): Declared argument `key' const.
2697         (do_tripledes_setkey): Likewise.
2698         (do_des_encrypt): Declared argument `inbuf' const.
2699         (do_des_decrypt): Likewise.
2700         (do_tripledes_encrypt): Likewise.
2701         (do_tripledes_decrypt): Likewise.
2702
2703         * cast5.c (encrypt_block): Declared argument `inbuf' const.
2704         (decrypt_block): Likewise.
2705         (cast_setkey): Declared argument `key' const.
2706
2707         * blowfish.c (do_bf_setkey): Declared argument `key' const.
2708         (encrypt_block): Declared argument `inbuf' const.
2709         (encrypt_block): Likewise.
2710
2711
2712
2713         * cipher.c: Remove CIPHER_ALGO_DUMMY related code.
2714         Removed struct cipher_table_s.
2715         Changed definition of cipher_table.
2716         Removed definition of disabled_algos.
2717         (ciphers_registered, default_ciphers_registered): New variables.
2718         (REGISTER_DEFAULT_CIPHERS): New macro.
2719         (dummy_setkey): Declared argument `key' const.
2720         (dummy_encrypt_block): Declared argument `inbuf' const.
2721         (dummy_encrypt_block): Likewise.
2722         (dummy_encrypt_stream): Likewise.
2723         (dummy_encrypt_stream): Likewise.
2724         (dummy_setkey): Use `unsigned char' instead of `byte'.
2725         (dummy_encrypt_block): Likewise.
2726         (dummy_decrypt_block): Likewise.
2727         (dummy_encrypt_stream): Likewise.
2728         (dummy_decrypt_stream): Likewise.
2729         (gcry_cipher_register_default): New function.
2730         (gcry_cipher_lookup_func_id): New function.
2731         (gcry_cipher_lookup_func_name): New function.
2732         (gcry_cipher_lookup_id): New function.
2733         (gcry_cipher_lookup_name): New function.
2734         (gcry_cipher_id_new): New function.
2735         (gcry_cipher_register): New function.
2736         (gcry_cipher_unregister): New function.
2737         (setup_cipher_table): Removed function.
2738         (load_cipher_modules): Removed function.
2739         (gcry_cipher_map_name): Adjusted to use new module management.
2740         (cipher_algo_to_string): Likewise.
2741         (disable_cipher_algo): Likewise.
2742         (check_cipher_algo): Likewise.
2743         (cipher_get_keylen): Likewise.
2744         (cipher_get_blocksize): Likewise.
2745         (gcry_cipher_open): Likewise.
2746         (struct gcry_cipher_handle): Replaced members algo, algo_index,
2747         blocksize, setkey, encrypt, decrypt, stencrypt, stdecrypt with one
2748         member: cipher.
2749         (gcry_cipher_open): Adjusted code for new handle structure.
2750         (cipher_setkey): Likewise.
2751         (cipher_setiv): Likewise.
2752         (cipher_reset): Likewise.
2753         (do_ecb_encrypt): Likewise.
2754         (do_ecb_decrypt): Likewise.
2755         (do_cbc_encrypt): Likewise.
2756         (do_cbc_decrypt): Likewise.
2757         (do_cfb_encrypt): Likewise.
2758         (do_cfb_decrypt): Likewise.
2759         (do_ctr_encrypt): Likewise.
2760         (cipher_encrypt): Likewise.
2761         (gcry_cipher_encrypt): Likewise.
2762         (cipher_decrypt): Likewise.
2763         (gcry_cipher_decrypt): Likewise.
2764         (cipher_sync): Likewise.
2765         (gcry_cipher_ctl): Likewise.
2766
2767         * pubkey.c: Removed struct pubkey_table_s.
2768         Changed definition of pubkey_table.
2769         Removed definition of disabled_algos.
2770         (pubkeys_registered, default_pubkeys_registered): New variables.
2771         (REGISTER_DEFAULT_PUBKEYS): New macro.
2772         (setup_pubkey_table): Removed function.
2773         (load_pubkey_modules): Removed function.
2774         (gcry_pubkey_register_default): New function.
2775         (gcry_pubkey_lookup_func_id): New function.
2776         (gcry_pubkey_lookup_func_name): New function.
2777         (gcry_pubkey_lookup_id): New function.
2778         (gcry_pubkey_lookup_name): New function.
2779         (gcry_pubkey_id_new): New function.
2780         (gcry_pubkey_register): New function.
2781         (gcry_pubkey_unregister): New function.
2782         (gcry_pk_map_name): Adjusted to use new module management.
2783         (gcry_pk_algo_name): Likewise.
2784         (disable_pubkey_algo): Likewise.
2785         (check_pubkey_algo): Likewise.
2786         (pubkey_get_npkey): Likewise.
2787         (pubkey_get_nskey): Likewise.
2788         (pubkey_get_nsig): Likewise.
2789         (pubkey_get_nenc): Likewise.
2790         (pubkey_generate): Likewise.
2791         (pubkey_check_secret_key): Likewise.
2792         (pubkey_encrypt): Likewise.
2793         (pubkey_decrypt): Likewise.
2794         (pubkey_sign): Likewise.
2795         (pubkey_verify): Likewise.
2796         (gcry_pk_get_nbits): Likewise.
2797         (gcry_pk_algo_info): Likewise.
2798
2799         * md.c: Removed struct md_digest_list_s.
2800         (digest_list): Changed definition.
2801         (digests_registered, default_digests_registered): New variables.
2802         (REGISTER_DEFAULT_DIGESTS): New macro.
2803         (new_list_item): Removed function.
2804         (setup_md_table): Removed function.
2805         (load_digest_module): Removed function.
2806         (gcry_digest_register_default): New function.
2807         (gcry_digest_lookup_func_id): New function.
2808         (gcry_digest_lookup_func_name): New function.
2809         (gcry_digest_lookup_id): New function.
2810         (gcry_digest_lookup_name): New function.
2811         (gcry_digest_id_new): New function.
2812         (gcry_digest_register): New function.
2813         (gcry_digest_unregister): New function.
2814         (GcryDigestEntry): New type.
2815         (struct gcry_md_context): Adjusted type of `list'.
2816         (gcry_md_map_name): Adjusted to use new module management.
2817         (digest_algo_to_string): Likewise.
2818         (check_digest_algo): Likewise.
2819         (md_enable): Likewise.
2820         (md_digest_length): Likewise.
2821         (md_asn_oid): Likewise.
2822
2823 2003-04-07  Moritz Schulte  <moritz@g10code.com>
2824
2825         * pubkey.c: Replaced PUBKEY_ALGO_DSA with GCRY_PK_DSA,
2826         PUBKEY_ALGO_RSA with GCRY_PK_RSA and PUBKEY_ALGO_ELGAMAL with
2827         GCRY_PK_ELG.
2828
2829         * dsa.c: Replaced PUBKEY_ALGO_DSA with GCRY_PK_DSA.
2830
2831 2003-04-01  Moritz Schulte  <moritz@g10code.com>
2832
2833         * des.c: Removed checks for GCRY_CIPHER_3DES and GCRY_CIPHER_DES.
2834
2835 2003-03-31  Moritz Schulte  <moritz@g10code.com>
2836
2837         * tiger.c (tiger_get_info): Do not declare static.
2838         * sha256.c (sha256_get_info): Likewise.
2839         * sha1.c (sha1_get_info): Likewise.
2840         * rmd160.c (rmd160_get_info): Likewise.
2841         * md5.c (md5_get_info): Likewise.
2842         * md4.c (md4_get_info): Likewise.
2843         * crc.c (crc_get_info): Likewise.
2844
2845         * md.c (load_digest_module): Call setup_md_table during
2846         initialization.
2847         (new_list_item): Link new element into digest_list.
2848
2849         * cipher.c (do_ctr_decrypt): Made do_ctr_encrypt act as a wrapper
2850         for do_ctr_encrypt, since these functions are identical.
2851
2852 2003-03-30  Simon Josefsson  <jas@extundo.com>
2853
2854         * cipher.c (struct gcry_cipher_handle): Add counter field.
2855         (gcry_cipher_open): Add CTR.
2856         (cipher_reset): Clear counter field.
2857         (do_ctr_encrypt, do_ctr_decrypt): New functions.
2858         (cipher_encrypt, cipher_decrypt): Call CTR functions.
2859         (gcry_cipher_ctl): Add SET_CTR to set counter.
2860
2861 2003-03-30  Moritz Schulte  <moritz@g10code.com>
2862
2863         * rsa.c (_gcry_rsa_blind): New function.
2864         (_gcry_rsa_unblind): New function.
2865         (_gcry_rsa_decrypt): Use _gcry_rsa_blind and _gcry_rsa_decrypt.
2866
2867 2003-03-26  Moritz Schulte  <moritz@g10code.com>
2868
2869         * dynload.c (_gcry_enum_gnupgext_pubkeys): Adjust `encrypt' and
2870         `decrypt' function arguments.
2871         (_gcry_enum_gnupgext_pubkeys): Likewise.
2872         * dynload.h: Likewise.
2873
2874         * pubkey.c (dummy_decrypt): Add argument: int flags.
2875         (dummy_encrypt): Likewise.
2876
2877         * elgamal.c (_gcry_elg_encrypt): Add argument: int flags.
2878         (_gcry_elg_decrypt): Likewise.
2879
2880         * rsa.c (_gcry_rsa_encrypt): Add argument: int flags.
2881         (_gcry_rsa_decrypt): Likewise.
2882
2883         * pubkey.c: Add `flags' argument to members `encrypt' and
2884         `decrypt' of struct `pubkey_table_s'.
2885
2886         * rsa.h: Add `flags' argument to function declarations.
2887         * elgamal.h: Likewise.
2888
2889         * pubkey.c (sexp_data_to_mpi): New variable: int parsed_flags.
2890         (sexp_data_to_mpi): Set `parsed_flags'.
2891         (sexp_data_to_mpi): New argument: int *flags.
2892         (gcry_pk_encrypt): New variable: int flags.
2893         (gcry_pk_encrypt): Pass `flags' to pubkey_encrypt.
2894         (pubkey_encrypt): New variable: int flags.
2895         (pubkey_encrypt): Pass `flags' to pubkey encrypt function.
2896         (pubkey_decrypt): Likewise.
2897         (pubkey_decrypt): Pass `flags' to pubkey encrypt function.
2898         (gcry_pk_encrypt): Include `flags' s-exp in return list.
2899         (sexp_to_enc): New argument: int *flags.
2900         (gcry_pk_decrypt): New variable: int flags.
2901         (gcry_pk_decrypt): Pass `flags' to pubkey_decrypt.
2902         (sexp_to_enc): New variable: int parsed_flags.
2903         (sexp_to_enc): Set `parsed_flags'.
2904
2905 2003-03-22  Simon Josefsson  <jas@extundo.com>
2906
2907         * cipher.c (gcry_cipher_open, do_cbc_encrypt)
2908         (gcry_cipher_encrypt): Support GCRY_CIPHER_CBC_MAC.
2909         (gcry_cipher_ctl): Support GCRYCTL_SET_CBC_MAC.
2910
2911 2003-03-19  Werner Koch  <wk@gnupg.org>
2912
2913         * primegen.c (gen_prime): New args EXTRA_CHECK and EXTRA_CHECK_ARG
2914         to allow for a user callback.  Changed all callers.
2915         (_gcry_generate_secret_prime)
2916         (_gcry_generate_public_prime): Ditto, pass them to gen_prime.
2917         * rsa.c (check_exponent): New.
2918         (generate): Use a callback to ensure that a given exponent is
2919         actually generated.
2920
2921 2003-03-12  Moritz Schulte  <moritz@g10code.com>
2922
2923         * primegen.c: Initialize `no_of_small_prime_numbers' statically.
2924         (gen_prime): Remove calculation of `no_of_small_prime_numbers'.
2925
2926 2003-03-03  Moritz Schulte  <moritz@g10code.com>
2927
2928         * md.c (gcry_md_ctl): Rewritten to use same style like the other
2929         functions dispatchers.
2930
2931 2003-03-02  Moritz Schulte  <moritz@g10code.com>
2932
2933         * cipher.c (struct gcry_cipher_handle): New member: algo_index.
2934         (gcry_cipher_open): Allocate memory for two cipher contexts.
2935         Initialize algo_index.
2936         (cipher_setkey): Duplicate context into reserved memory.
2937         (cipher_reset): New function, which resets the context and clear
2938         the IV.
2939         (gcry_cipher_ctl): Call cipher_reset.
2940
2941 2003-02-23  Moritz Schulte  <moritz@g10code.com>
2942
2943         * cipher.c: Remove (bogus) `digitp' macro definition.
2944         * md.c: Likewise.
2945
2946         * blowfish.c (burn_stack): Removed.
2947         * arcfour.c (burn_stack): Likewise.
2948         * cast5.c (burn_stack): Likewise.
2949         * des.c (burn_stack): Likewise.
2950         * md4.c (burn_stack): Likewise.
2951         * md5.c (burn_stack): Likewise.
2952         * random.c (burn_stack): Likewise.
2953         * rijndael.c (burn_stack): Likewise.
2954         * rmd160.c (burn_stack): Likewise.
2955         * sha1.c (burn_stack): Likewise.
2956         * sha256.c (burn_stack): Likewise.
2957         * tiger.c (burn_stack): Likewise.
2958         * twofish.c (burn_stack): Likewise.
2959
2960         * blowfish.c: Changed all occurences of burn_stack to
2961         _gcry_burn_stack.
2962         * arcfour.c: Likewise.
2963         * cast5.c: Likewise.
2964         * des.c: Likewise.
2965         * md4.c: Likewise.
2966         * md5.c: Likewise.
2967         * random.c: Likewise.
2968         * rijndael.c: Likewise.
2969         * rmd160.c: Likewise.
2970         * sha1.c: Likewise.
2971         * sha256.c: Likewise.
2972         * tiger.c: Likewise.
2973         * twofish.c: Likewise.
2974
2975         * arcfour.c (_gcry_arcfour_get_info): Use GCRY_CIPHER_ARCFOUR
2976         instead of hard-coded value `301'.
2977
2978 2003-01-24  Werner Koch  <wk@gnupg.org>
2979
2980         * random.c (_gcry_register_random_progress): New.
2981         (_gcry_random_progress): New.
2982
2983         * rndlinux.c (gather_random): Call the random progress function.
2984
2985 2003-01-23  Werner Koch  <wk@gnupg.org>
2986
2987         * rsa.c (generate): New arg USE_E to request a specific public
2988         exponent.
2989         (_gcry_rsa_generate): Ditto.
2990         * elgamal.c (_gcry_elg_generate): Must add an dummy argument
2991         instead of USE_E.
2992         * dsa.c (_gcry_dsa_generate): Ditto.
2993         * pubkey.c (dummy_generate): Ditto.
2994         (pubkey_generate): Add USE_E arg and pass it down.
2995         (gcry_pk_genkey): Detect "rsa-use-e" parameter and pass it to generate.
2996
2997         * pubkey.c (sexp_to_enc): New arg RET_MODERN.
2998         (gcry_pk_decrypt): Make use of it to return a real S-expression.
2999         Return better error codes.
3000         (gcry_pk_verify): Return better error codes.
3001
3002 2003-01-21  Werner Koch  <wk@gnupg.org>
3003
3004         * random.c (gcry_random_add_bytes): Add QUALITY argument, let
3005         function return an error code and disable its core for now.
3006
3007 2003-01-21  Timo Schulz  <twoaday@freakmail.de>
3008
3009         * random.c (gcry_random_add_bytes): New. Function to add external
3010         random to the pool.
3011
3012 2003-01-20  Simon Josefsson  <jas@extundo.com>
3013
3014         * crc.c: New.
3015         * Makefile.am (EXTRA_PROGRAMS, EXTRA_crc_SOURCES): Add crc.c.
3016         * md.c (gcry_md_get_algo_dlen): Add values for CRC.
3017
3018 2003-01-20  Werner Koch  <wk@gnupg.org>
3019
3020         * sha256.c: New.
3021         * bithelp.h (ror): New.
3022         * Makfile.am: Add sha256.c.
3023         * md.c (oid_table): Add values for SHA256 et al.
3024         (gcry_md_get_algo_dlen): Likewise
3025
3026 2003-01-20  Werner Koch  <wk@gnupg.org>
3027
3028         * pubkey.c (gcry_pk_get_keygrip): Implemented keygrips for DSA
3029         and ElGamal.
3030
3031 2003-01-17  Werner Koch  <wk@gnupg.org>
3032
3033         * cipher.c (gcry_cipher_encrypt): Reworked so that the output will
3034         never contain the plaintext even if the caller did not checked the
3035         return value.
3036
3037         * md.c (gcry_md_get_algo): Changed error code to GCRYERR_GENERAL
3038         because we don't have an invalid md algo but no algorithm enabled.
3039
3040         * pubkey.c (gcry_pk_genkey): Changed error code for bounds check
3041         of table parameters to GCRYERR_INTERNAL.
3042
3043         * md.c (gcry_md_open): Partly reverted Timo's change from
3044         2002-10-10 by removing the check for the algorithm.  An algorithm
3045         of 0 is allowed and anyway we should not double check it or check
3046         it using a different function.  Also fixed the flags check.
3047
3048         * pubkey.c (gcry_pk_encrypt): Make sure that R_CIPH points to NULL
3049         on error.
3050         (gcry_pk_decrypt): Ditto for R_PLAIN.
3051         (gcry_pk_sign): Ditto for R_SIG.
3052         (gcry_pk_genkey): Ditto for R_KEY.
3053
3054 2003-01-16  Werner Koch  <wk@gnupg.org>
3055
3056         * md.c (gcry_md_write): Changed 2nd argument type to void*.
3057         (gcry_md_hash_buffer): Changed type of boths buffers to void*.
3058         (gcry_md_setkey): Changed 2nd argument type to void*.
3059
3060 2003-01-15  Werner Koch  <wk@gnupg.org>
3061
3062         * pubkey.c (sexp_data_to_mpi): New.  This handles pkcs1 padding.
3063         (gcry_pk_sign, gcry_pk_verify): Use it here.
3064         (gcry_pk_encrypt): And here.
3065         (pubkey_verify): Add debug code.
3066         (sexp_to_enc): Handle flags in the input and return the pkcs1 flag
3067         in a new parameter.
3068         (gcry_pk_decrypt): Prepare for future pkcs1 handling.
3069
3070 2002-12-19  Werner Koch  <wk@gnupg.org>
3071
3072         * random.c (_gcry_random_initialize): New.
3073
3074 2002-12-16  Werner Koch  <wk@gnupg.org>
3075
3076         * cipher.c: Added a Teletrust specific OID for 3DES.
3077
3078 2002-12-12  Werner Koch  <wk@gnupg.org>
3079
3080         * md.c: Added another oddball OIW OID (sha-1WithRSAEncryption).
3081
3082 2002-11-23  Werner Koch  <wk@gnupg.org>
3083
3084         * md.c (load_digest_module): Enlarged checked_algos bitmap.
3085         * md4.c (func_table):  Fixed entry for md4.
3086         Both by Simon Josephson.
3087         (transform): Copy data to get the alignment straight. Tested only
3088         on i386.
3089
3090 2002-11-10  Simon Josefsson  <jas@extundo.com>
3091
3092         * cipher.c (gcry_cipher_open): Don't reject CTS flag.
3093         (do_cbc_encrypt, do_cbc_decrypt, cipher_encrypt)
3094         (gcry_cipher_encrypt, cipher_decrypt)
3095         (gcry_cipher_decrypt): Support CTS flag.
3096         (gcry_cipher_ctl): Toggle CTS flag.
3097
3098 2002-11-10  Werner Koch  <wk@gnupg.org>
3099
3100         * md4.c: New. By Simon Josefsson.
3101         * Makefile.am (EXTRA_PROGRAMS): Add md4.c.
3102         * md.c (oid_table,gcry_md_get_algo_dlen): MD4 support.
3103
3104 2002-10-14  Werner Koch  <wk@gnupg.org>
3105
3106         * arcfour.c (do_encrypt_stream): Don't use increment op when
3107         assigning to the same variable.
3108
3109 2002-10-10  Timo Schulz  <ts@winpt.org>
3110
3111         * pubkey.c (gcry_pk_genkey): Check boundaries.
3112
3113         * md.c (gcry_md_open): Check that algo is available and only
3114         valid flag values are used.
3115         (gcry_md_get_algo): Add error handling.
3116
3117 2002-09-26  Werner Koch  <wk@gnupg.org>
3118
3119         * md.c: Include an OID for TIGER.
3120         * tiger.c (tiger_get_info): Use a regular OID.
3121
3122 2002-09-17  Werner Koch  <wk@gnupg.org>
3123
3124         * random.c: Replaced mutex.h by the new ath.h.  Changed all calls.
3125
3126 2002-09-16  Werner Koch  <wk@gnupg.org>
3127
3128         * arcfour.c (do_encrypt_stream): Use register modifier and modulo.
3129         According to Nikos Mavroyanopoulos this increases perfromace on
3130         i386 system noticable.  And I always tought gcc is clever enough.
3131         * md5.c (transform): Use register modifier.
3132         * rmd160.c (transform): Ditto.
3133         * sha1.c (transform): Ditto.  We hope that there are 6 free registers.
3134         * random.c (gcry_randomize): Rewrote to avoid malloc calls.
3135
3136         * rndlinux.c (gather_random): Replaced remaining fprintfs by log_*.
3137         * arcfour.c (do_arcfour_setkey): Ditto.
3138         * twofish.c (do_twofish_setkey): Ditto.
3139         * rndegd.c (gather_random): Ditto.
3140         * rijndael.c (do_setkey): Ditto.
3141         * random.c (_gcry_random_dump_stats): Ditto.
3142         * primegen.c (_gcry_generate_elg_prime): Ditto.
3143         * des.c (_gcry_des_get_info): Ditto.
3144         * cast5.c (do_cast_setkey): Ditto.
3145         * blowfish.c (do_bf_setkey): Ditto.
3146
3147 2002-08-26  Werner Koch  <wk@gnupg.org>
3148
3149         * des.c (weak_keys): Fixed one entry in the table and compared
3150         all entries against the literature.
3151         (selftest): Checksum the weak key table.
3152
3153 2002-08-21  Werner Koch  <wk@gnupg.org>
3154
3155         * pubkey.c: Enable keygrip calculation for "openpgp-rsa".
3156
3157 2002-08-17  Werner Koch  <wk@gnupg.org>
3158
3159         * cipher.c (setup_cipher_table): Don't overwrite the DES entry
3160         with the entry for DUMMY.
3161
3162 2002-08-14  Werner Koch  <wk@gnupg.org>
3163
3164         * des.c (do_des_setkey,do_des_encrypt, do_des_decrypt): New.
3165         (_gcry_des_get_info): Support plain old DES.
3166         * cipher.c (setup_cipher_table): Put DES into the table.
3167
3168 2002-07-25  Werner Koch  <wk@gnupg.org>
3169
3170         * rndunix.c (_gcry_rndunix_constructor): Prefixed with _gcry_.
3171         Noted by Stephan Austermuehle.
3172
3173 2002-07-08  Timo Schulz  <ts@winpt.org>
3174
3175         * rndw32.c: Replaced the m_ memory functions with the real
3176         gcry_ functions. Renamed all g10_ prefixed functions to log_.
3177
3178 2002-06-12  Werner Koch  <wk@gnupg.org>
3179
3180         * rsa.c (generate): Use e = 65537 for now.
3181
3182 2002-06-11  Werner Koch  <wk@gnupg.org>
3183
3184         * pubkey.c (gcry_pk_get_keygrip): Allow a "protected-private-key".
3185
3186 2002-06-05  Timo Schulz  <ts@winpt.org>
3187
3188         * cipher.c (gcry_cipher_encrypt, gcry_cipher_decrypt):
3189         Check that the input size is a multiple of the blocksize.
3190
3191 2002-05-23  Werner Koch  <wk@gnupg.org>
3192
3193         * md.c (oid_table): Add an rsadsi OID for MD5.
3194
3195 2002-05-21  Werner Koch  <wk@gnupg.org>
3196
3197         * primegen.c, elgamal.c, dsa.c (progress): Do not print anything
3198         by default.  Pass an extra identifying string to the callback and
3199         reserved 2 argumenst for current and total counters.  Changed the
3200         register function prototype.
3201
3202 2002-05-17  Werner Koch  <wk@gnupg.org>
3203
3204         * rndegd.c (rndegd_constructor): Fixed name of register function
3205         and prefixed the function name with _gcry_.
3206         * rndw32.c (rndw32_constructor): Ditto.
3207         * tiger.c (tiger_constructor): Ditto.
3208
3209         * Makefile.am: Removed all dynamic loading stuff.
3210         * dynload.c: Ditto. Now only used for the constructor system.
3211
3212 2002-05-15  Werner Koch  <wk@gnupg.org>
3213
3214         * random.c (gcry_random_bytes,gcry_random_bytes_secure)
3215         (gcry_randomize): Make sure we are initialized.
3216
3217 2002-05-14  Werner Koch  <wk@gnupg.org>
3218
3219         Changed license of most files to the LGPL.
3220
3221 2002-05-02  Werner Koch  <wk@gnupg.org>
3222
3223         * random.c (_gcry_fast_random_poll): Initialize the module so the
3224         mutex can be used.
3225
3226         * primegen.c (small_prime_numbers): Moved table from smallprime.c
3227         * smallprime.c: File removed.
3228
3229         * des.c (leftkey_swap, rightkey_swap, working_memcmp): Made static.
3230
3231         * cipher.c (gcry_cipher_map_name): Map "RIJNDAEL" to "AES".
3232         * rijndael.c (rijndael_get_info): We do only support a 128 bit
3233         blocksize so it makes sense to change the algorithm strings to
3234         AES.
3235
3236         * tiger.c (tiger_final): Removed superfluous token pasting operators.
3237         * md5.c (md5_final): Ditto.
3238
3239 2002-04-30  Werner Koch  <wk@gnupg.org>
3240
3241         * cipher.c: Fixed list of copyright years.
3242
3243 2002-03-18  Werner Koch  <wk@gnupg.org>
3244
3245         * random.c (initialize): Initialize the new pool lock mutex.
3246         (_gcry_fast_random_poll): Add locking and moved main
3247         code out to...
3248         (do_fast_random_poll): new function.
3249         (read_pool): Use the new function here.
3250         (get_random_bytes): Add locking.
3251         (_gcry_update_random_seed_file): Ditto.
3252
3253 2002-03-11  Werner Koch  <wk@gnupg.org>
3254
3255         * md.c: Add rsaSignatureWithripemd160 to OID table.
3256
3257 2002-02-20  Werner Koch  <wk@gnupg.org>
3258
3259         * sha1.c: Removed a left over comment note.  The code has been
3260         rewritten from scratch in 1998.  Thanks to Niels Möller for
3261         reporting this misleading comment.
3262
3263 2002-02-18  Werner Koch  <wk@gnupg.org>
3264
3265         * rndunix.c (rndunix_constructor): Use the the new prefixed
3266         function name.  Reported by Jordi Mallach.
3267
3268 2002-02-10  Werner Koch  <wk@gnupg.org>
3269
3270         * random.c (mix_pool): Carry an extra failsafe_digest buffer
3271         around to make the function more robust.
3272
3273 2002-02-08  Werner Koch  <wk@gnupg.org>
3274
3275         * random.c (add_randomness): Xor new data into the pool and not
3276         just copy it.  This avoids any choosen input attacks which are not
3277         serious in our setting because an outsider won't be able to mix
3278         data in and even then we keep going with a PRNG.  Thanks to Stefan
3279         Keller for pointing this out.
3280
3281 2002-01-04  Werner Koch  <wk@gnupg.org>
3282
3283         * pubkey.c (gcry_pk_genkey): Do not release skey - it is static.
3284
3285         * primegen.c (gen_prime): Of course we should use set_bit
3286         and not set_highbit to set the second high bit.
3287
3288 2001-12-18  Werner Koch  <wk@gnupg.org>
3289
3290         * rsa.c (generate): Loop until we find the exact modulus size.
3291         Changed the exponent to 41.
3292         (rsa_get_info): s/usage/r_usage/ to avoid shadow warnings.
3293         * primegen.c (gen_prime): Set 2 high order bits for secret primes.
3294
3295         * Makefile.am (DISTCLEANFILES): Include construct.c.
3296
3297 2001-12-17  Werner Koch  <wk@gnupg.org>
3298
3299         * pubkey.c (gcry_pk_get_keygrip): New - experimental.
3300
3301 2001-12-11  Werner Koch  <wk@gnupg.org>
3302
3303         * cipher.c: Added OIDs for AES.
3304         (gcry_cipher_mode_from_oid): New.
3305         (gcry_cipher_map_name): Moved OID search code to ..
3306         (search_oid): .. new function.
3307
3308 2001-12-10  Werner Koch  <wk@gnupg.org>
3309
3310         * pubkey.c (gcry_pk_encrypt): Find the signature algorithm by name
3311         and not by number.
3312
3313         * pubkey.c (gcry_pk_encrypt,gcry_pk_decrypt,gcry_pk_sign)
3314         (gcry_pk_verify,gcry_pk_testkey, gcry_pk_genkey)
3315         (gcry_pk_get_nbits): Release the arrays.  Noted by Nikos
3316         Mavroyanopoulos.
3317
3318 2001-12-06  Werner Koch  <wk@gnupg.org>
3319
3320         * cipher.c (gcry_cipher_map_name): Look also for OIDs prefixed
3321         with "oid."  or "OID.".
3322
3323 2001-12-05  Werner Koch  <wk@gnupg.org>
3324
3325         * pubkey.c (algo_info_table): Fixed entry for openpgp-rsa.
3326
3327 2001-11-24  Werner Koch  <wk@gnupg.org>
3328
3329         * pubkey.c: Added the rsaEncryption OID to the tables.
3330         (sexp_to_key): Add an arg to return the index of the algorithm,
3331         changed all callers.
3332         (gcry_pk_sign): Find the signature algorithm by name and not by
3333         number.
3334         (gcry_pk_get_nbits): Fixed so that we can now really pass a secret
3335         key to get the result.
3336
3337         * md.c (gcry_md_map_name): Look also for OIDs prefixed with "oid."
3338         or "OID." so that an OID string can be used as an S-Exp token.
3339
3340 2001-11-20  Werner Koch  <wk@gnupg.org>
3341
3342         * md.c (gcry_md_map_name): Lookup by OID if the the name begins
3343         with a digit.
3344         (oid_table): New.
3345
3346 2001-11-16  Werner Koch  <wk@gnupg.org>
3347
3348         * md.c (gcry_md_info): New operator GCRYCTL_IS_ALGO_ENABLED.
3349
3350 2001-11-07  Werner Koch  <wk@gnupg.org>
3351
3352         * md.c (gcry_md_hash_buffer): Close the handle which was left open
3353         for algorithms other than rmd160.
3354
3355 2001-08-08  Werner Koch  <wk@gnupg.org>
3356
3357         * rndw32.c (gather_random): Use toolhelp in addition to the NT
3358         gatherer for Windows2000.  Suggested by Sami Tolvanen.
3359
3360         * random.c (read_pool): Fixed length check, this used to be one
3361         byte to strict.  Made an assert out of it because the caller has
3362         already made sure that only poolsize bytes are requested.
3363         Reported by Marcus Brinkmann.
3364
3365 2001-08-03  Werner Koch  <wk@gnupg.org>
3366
3367         * cipher.c (cipher_encrypt, cipher_decrypt): Prepare to return
3368         errors. We have to change the interface to all ciphers to make
3369         this really work but we should do so to prepare for hardware
3370         encryption modules.
3371         (gcry_cipher_encrypt, gcry_cipher_decrypt): Return the error and
3372         set lasterr.
3373         (gcry_cipher_ctl): Make sure that errors from setkey are returned.
3374
3375 2001-08-02  Werner Koch  <wk@gnupg.org>
3376
3377         * rndlinux.c (gather_random): casted a size_t arg to int so that
3378         the format string is correct.  Casting is okay here and avoids
3379         translation changes.
3380
3381         * random.c (fast_random_poll): Do not check the return code of
3382         getrusage.
3383
3384         * rndunix.c: Add a signal.h header to avoid warnings on Solaris 7
3385         and 8.
3386
3387         * tiger.c (print_abc,print_data): Removed.
3388
3389         * rijndael.c, des.c, blowfish.c, twofish.c, cast5.c, arcfour.c
3390         (burn_stack): New.  Add wrappers for most functions to be able to
3391         call burn_stack after the function invocation. This methods seems
3392         to be the most portable way to zeroise the stack used. It does
3393         only work on stack frame based machines but it is highly portable
3394         and has no side effects.  Just setting the automatic variables at
3395         the end of a function to zero does not work well because the
3396         compiler will optimize them away - marking them as volatile would
3397         be bad for performance.
3398         * md5.c, sha1.c, rmd160.c, tiger.c (burn_stack): Likewise.
3399         * random.c (burn_stack): New.
3400         (mix_pool): Use it here to burn the stack of the mixblock function.
3401
3402         * primegen.c (_gcry_generate_elg_prime): Freed q at 3 places.
3403         Thanks to Tommi Komulainen.
3404
3405         * arcfour.c (arcfour_setkey): Check the minimim keylength against
3406         bytes and not bits.
3407         (selftest): Must reset the key before decryption.
3408
3409 2001-05-31  Werner Koch  <wk@gnupg.org>
3410
3411         * sha1.c (sha1_init): Made static.
3412
3413         Changed all g10_ prefixed function names as well as some mpi_
3414         function names to cope with the introduced naming changes.
3415
3416         * md.c (prepare_macpads): Made key const.
3417
3418 2001-05-28  Werner Koch  <wk@gnupg.org>
3419
3420         * rndegd.c (gather_random): Removed the use of tty_printf.
3421
3422 2001-03-29  Werner Koch  <wk@gnupg.org>
3423
3424         * md5.c (md5_final): Fixed calculation of hashed length.  Thanks
3425         to disastry@saiknes.lv for pointing out that it was horrible wrong
3426         for more than 512MB of input.
3427         * sha1.c (sha1_final): Ditto.
3428         * rmd160.c (rmd160_final): Ditto.
3429         * tiger.c (tiger_final): Ditto.
3430
3431         * blowfish.c (encrypt,do_encrypt): Changed name to do_encrypt to
3432         avoid name clashes with an encrypt function in stdlib.h of
3433         Dynix/PIX.  Thanks to Gene Carter.
3434         * elgamal.c (encrypt,do_encrypt): Ditto.
3435
3436         * twofish.c (gnupgext_enum_func): Use only when when compiled as a
3437         module.
3438         * rijndael.c (gnupgext_enum_func): Ditto.
3439
3440         * tiger.c (tiger_get_info): Return "TIGER192" and not just
3441         "TIGER".  By Edwin Woudt.
3442
3443         * random.c: Always include time.h - standard requirement.  Thanks
3444         to James Troup.
3445
3446         * rndw32.c: Fixes to the macros.
3447
3448 2001-01-11  Werner Koch  <wk@gnupg.org>
3449
3450         * cipher.c (cipher_encrypt,gcry_cipher_encrypt): Use blocksize and
3451         not 8.
3452
3453 2000-12-19  Werner Koch  <wk@gnupg.org>
3454
3455         Major change:
3456         Removed all GnuPG stuff and renamed this piece of software
3457         to gcrypt.
3458
3459 2000-11-14  Werner Koch  <wk@gnupg.org>
3460
3461         * dsa.c (test_keys): Replaced mpi_alloc by gcry_mpi_new and
3462         mpi_free by gcry_mpi_release.
3463         * elgamal.c (test_keys,generate): Ditto, also for mpi_alloc_secure.
3464         * rsa.c (test_keys,generate,rsa_verify): Ditto.
3465         * primegen.c (generate_elg_prime): Ditto.
3466         (gen_prime): Ditto and removed nlimbs.
3467
3468         * rsa.c (generate): Allocate 2 more vars in secure memory.
3469
3470         * Makefile.am (OMIT_DEPENDENCIES): Hack to work around dependency
3471         problems.
3472
3473 2000-10-09  Werner Koch  <wk@gnupg.org>
3474
3475         * arcfour.c, arcfour.h: New.
3476         * cipher.c (cipher_encrypt, cipher_decrypt): Add stream mode.
3477         (setup_cipher_table): Add Arcfour.
3478         (gcry_cipher_open): Kludge to allow stream mode.
3479
3480 Wed Oct  4 13:16:18 CEST 2000  Werner Koch  <wk@openit.de>
3481
3482         * sha1.c (transform): Use rol() macro.  Actually this is not needed
3483         for a newer gcc but there are still aoter compilers.
3484
3485         * rsa.c (test_keys): Use new random function.
3486
3487         * md.c (gcry_md_setkey): New function to overcome problems with
3488         const conflics.
3489         (gcry_md_ctl): Pass set key to the new functions.
3490
3491         * rijndael.c: New.
3492         * cipher.c: Add Rijndael support.
3493
3494 Mon Sep 18 16:35:45 CEST 2000  Werner Koch  <wk@openit.de>
3495
3496         * rndlinux.c (open_device): Loose random device checking.
3497         By Nils Ellmenreich.
3498
3499         * random.c (fast_random_poll): Check ENOSYS for getrusage.
3500         * rndunix.c:  Add 2 sources for QNX. By Sam Roberts.
3501
3502         * pubkey.c (gcry_pk_algo_info): Add GCRYCTL_GET_ALGO_USAGE.
3503
3504         * rsa.c: Changed the comment about the patent.
3505         (secret): Speed up by using the CRT.  For a 2k keys this
3506         is about 3 times faster.
3507         (stronger_key_check): New but unused code to check the secret key.
3508         * Makefile.am: Included rsa.[ch].
3509         * pubkey.c: Enabled RSA support.
3510         (pubkey_get_npkey): Removed RSA workaround.
3511
3512 Mon Jul 31 10:04:47 CEST 2000  Werner Koch  <wk@openit.de>
3513
3514   * pubkey.c: Replaced all gcry_sexp_{car,cdr}_{data,mpi} by the new
3515   gcry_sexp_nth_{data,mpi} functions.
3516
3517 Tue Jul 25 17:44:15 CEST 2000  Werner Koch  <wk@openit.de>
3518
3519   * pubkey.c (exp_to_key,sexp_to_sig,sexp_to_enc,gcry_pk_encrypt,
3520     gcry_pk_decrypt,gcry_pk_sign,gcry_pk_genkey): Changed to work with
3521     the new S-Exp interface.
3522
3523 Mon Jul 17 16:35:47 CEST 2000  Werner Koch  <wk@>
3524
3525   * random.c (gather_faked): Replaced make_timestamp by time(2) again.
3526
3527 Fri Jul 14 19:38:23 CEST 2000  Werner Koch  <wk@>
3528
3529   * md.c (gcry_md_ctl): Support GCRYCTL_{START,STOP}_DUMP.
3530
3531   * Makefile.am: Never compile mingw32 as module.
3532
3533   * Makefile.am: Tweaked module build and removed libtool
3534
3535   * Makefile.am:  Replaced -O1 by -O. Suggested by Alec Habig.
3536
3537   * elgamal.c (sign): Removed inactive code.
3538
3539   * rsa.c, rsa.h: New based on the old module version (only in CVS for now).
3540   * pubkey.c (setup_pubkey_table): Added commented support for RSA.
3541
3542   * rndunix.c (waitpid): New. For UTS 2.1.  All by Dave Dykstra.
3543   (my_popen): Do the FD_CLOEXEC only if it is available
3544   (start_gatherer): Cope with missing _SC_OPEN_MAX
3545
3546   * rndunix.c: Add some more headers for QNX. By Sam Roberts.
3547
3548   * rndegd.c (gather_random): Shortcut level 0.
3549   * rndunix.c (gather_random): Ditto.
3550   * rndw32.c (gather_random): Ditto.
3551
3552   * rndw32.c: Replaced with code from Cryptlib and commented the old stuff.
3553   * rndw32.c: Add some debuging code enabled by an environment variable.
3554
3555   * random.c (read_seed_file): Binary open for DOSish system
3556   (update_random_seed_file): Ditto.
3557   * random.c [MINGW32]: Include process.h for getpid.
3558   * random.c (fast_random_poll): Add clock_gettime() as fallback for
3559   system which support this POSIX.4 fucntion. By Sam Roberts.
3560
3561   * random.c (read_seed_file): Removed the S_ISLNK test becuase it
3562   is already covered by !S_ISREG and is not defined in Unixware.
3563   Reported by Dave Dykstra.
3564   (update_random_seed_file): Silently ignore update request when pool
3565   is not filled.
3566
3567   * random.c (read_seed_file): New.
3568   (set_random_seed_file): New.
3569   (read_pool): Try to read the seeding file.
3570   (update_random_seed_file): New.
3571
3572   (read_pool): Do an initial extra seeding when level 2 quality random
3573   is requested the first time.  This requestes at least POOLSIZE/2 bytes
3574   of entropy.  Compined with the seeding file this should make normal
3575   random bytes cheaper and increase the quality of the random bytes
3576   used for key generation.
3577
3578   * random.c (read_pool): Print a more friendly error message in
3579   cases when too much random is requested in one call.
3580
3581   * random.c (fast_random_poll): Check whether RUSAGE_SELF is defined;
3582   this is not the case for some ESIX and Unixware, although they have
3583   getrusage().
3584
3585   * primegen.c (generate_elg_prime): All primes are now generated with
3586   the lowest random quality level.  Because they are public anyway we
3587   don't need stronger random and by this we do not drain the systems
3588   entropy so much.
3589
3590   * primegen.c (register_primegen_progress): New.
3591   * dsa.c (register_pk_dsa_progress): New.
3592   * elgamal.c (register_pk_elg_progress): New.
3593
3594   * elgamal.c (wiener_map): New.
3595   (gen_k): Use a much smaller k.
3596   (generate): Calculate the qbits using the wiener map and
3597   choose an x at a size comparable to the one choosen in gen_k
3598
3599   * rmd160.c (rmd160_get_info): Moved casting to the left side due to a
3600   problem with UTS4.3.  Suggested by Dave Dykstra.
3601   * sha1.c (sha1_get_info): Ditto.
3602   * tiger.c (tiger_get_info): Ditto.
3603   * md5.c (md5_get_info): Ditto
3604   * des.c (des_get_info): Ditto.
3605   * blowfish.c (blowfish_get_info): Ditto.
3606   * cast5.c (cast5_get_info): Ditto.
3607   * twofish.c (twofish_get_info): Ditto.
3608
3609 Fri Mar 24 11:25:45 CET 2000  Werner Koch  <wk@openit.de>
3610
3611         * md.c (md_open): Add hmac arg and allocate space for the pads.
3612         (md_finalize): Add HMAC support.
3613         (md_copy): Ditto.
3614         (md_close): Ditto.
3615         (gcry_md_reset): Ditto.
3616         (gcry_md_ctl): Ditto.
3617         (prepare_macpdas): New.
3618
3619 Mon Mar 13 19:22:46 CET 2000  Werner Koch  <wk@openit.de>
3620
3621         * md.c (gcry_md_hash_buffer): Add support for the other algorithms.
3622
3623 Mon Jan 31 16:37:34 CET 2000  Werner Koch  <wk@gnupg.de>
3624
3625         * genprime.c (generate_elg_prime): Fixed returned factors which never
3626         worked for non-DSA keys.
3627
3628 Thu Jan 27 18:00:44 CET 2000  Werner Koch  <wk@gnupg.de>
3629
3630         * pubkey.c (sexp_to_key): Fixed mem leaks in case of errors.
3631
3632 Mon Jan 24 22:24:38 CET 2000  Werner Koch  <wk@gnupg.de>
3633
3634         * pubkey.c (gcry_pk_decrypt): Implemented.
3635         (gcry_pk_encrypt): Implemented.
3636         (gcry_pk_testkey): New.
3637         (gcry_pk_genkey): New.
3638         (pubkey_decrypt): Made static.
3639         (pubkey_encrypt): Ditto.
3640         (pubkey_check_secret_key): Ditto.
3641         (pubkey_generate): Ditto.
3642
3643 Mon Jan 24 13:04:28 CET 2000  Werner Koch  <wk@gnupg.de>
3644
3645         * pubkey.c (pubkey_nbits): Removed and replaced by ...
3646         (gcry_pk_get_nbits): this new one.
3647
3648 Wed Dec  8 21:58:32 CET 1999  Werner Koch  <wk@gnupg.de>
3649
3650         * dsa.c: s/mpi_powm/gcry_mpi_powm/g
3651         * elgamal.c: Ditto.
3652         * primegen.c: Ditto.
3653
3654         * : Replaced g10_opt_verbose by g10_log_verbosity().
3655
3656         * Makefile.am (INCLUDES): removed intl, add ../gcrypt
3657
3658 Fri Nov 19 17:15:20 CET 1999  Werner Koch  <wk@gnupg.de>
3659
3660         * dynload.c (cmp_filenames): New to replaced compare_filename() in
3661         module.
3662         (register_cipher_extension): Removed the tilde expansion stuff.
3663         * rndeg.c (my_make_filename): New.
3664
3665         * : Replaced header util.h by g10lib.h
3666
3667         * random.c (gather_faked): Replaced make_timestamp by time(2).
3668         Disabled wrning printed with tty_printf.
3669         * rndlinux.c (gather_random): Always use fprintf instead of tty_xxx;
3670         this should be replaced by a callback function.
3671
3672         * primegen.c (gen_prime): Use gcry_mpi_randomize.
3673         (is_prime): Ditto.
3674         * elgamal.c (test_keys): Ditto.
3675         * dsa.c (test_keys): Ditto.
3676
3677         * cipher.c (gcry_cipher_close): Die on invalid handle.
3678
3679 Mon Nov 15 21:36:02 CET 1999  Werner Koch  <wk@gnupg.de>
3680
3681         * elgamal.c (gen_k): Use the new random API.
3682         (generate): Ditto.
3683         * dsa.c (gen_k): Ditto.
3684         (generate): Ditto.
3685
3686 Sat Nov 13 17:44:23 CET 1999  Werner Koch  <wk@gnupg.de>
3687
3688         * pubkey.c (disable_pubkey_algo): Made static.
3689         (gcry_pk_ctl): New.
3690
3691         * random.c (get_random_bits): Renamed to ...
3692         (get_random_bytes): ... this and made static.
3693         (gcry_random_bytes): New.
3694         (gcry_random_bytes_secure): New.
3695         (randomize_buffer): Renamed to ...
3696         (gcry_randomize): ...this.
3697
3698         * md.c (gcry_md_hash_buffer): New.
3699
3700         * pubkey.c (gcry_pk_algo_info): 4 new commands.
3701         (pubkey_get_npkey): Made static.
3702         (pubkey_get_nskey): Made static.
3703         (pubkey_get_nsig): Made static.
3704         (pubkey_get_nenc): Made static.
3705
3706         * pubkey.c: Removed all G10ERR_xxx.
3707         * cipher.c: Changed all GCRYERR_INV_ALGO to GCRYERR_INV_CIPHER_ALGO.
3708         * md.c: Changed all GCRYERR_INV_ALGO to GCRYERR_INV_MD_ALGO.
3709         * cast5.c (cast_setkey): Changed errocodes to GCRYERR_xxx.
3710         * blowfish.c: Ditto.
3711         * des.c: Ditto.
3712         * twofish.c: Ditto.
3713         * dsa.c: Ditto.
3714         * elgamal.c: Ditto.
3715
3716         * g10c.c: Removed
3717
3718         * cipher.c (gcry_cipher_open): Replaced alloc functions and return NULL
3719         if we are out of core.
3720         * dynload.c: Replaced all memory allocation functions.
3721         * md.c: Ditto.
3722         * primegen.c: Ditto.
3723         * pubkey.c: Ditto.
3724         * random.c: Ditto.
3725         * rndw32.c: Ditto.
3726         * elgamal.c: Ditto.
3727         * dsa.c: Ditto.
3728
3729 Tue Oct 26 14:10:21 CEST 1999  Werner Koch  <wk@gnupg.de>
3730
3731         * elgamal.c (sign): Hugh found strange code here. Replaced by BUG().
3732
3733         * cipher.c: Merged with gcrypt/symapi.c.
3734
3735         * pubkey.c (string_to_pubkey_algo): Renamed function to ...
3736         (gcry_pk_map_name): ... this.
3737         (pubkey_algo_to_string): Renamed function to ...
3738         (gcry_pk_algo_name): ... this.
3739         (gcry_pk_algo_info): New.
3740         * pubkey.c: Merged with gcrypt/pkapi.c.
3741
3742         * md.c (md_reset): Clear finalized; thanks to Ulf Moeller for
3743         fixing this bug.
3744
3745         * md.c: Merged with gcrypt/mdapi.c
3746
3747 Wed Sep 15 14:39:59 CEST 1999  Michael Roth <mroth@nessie.de>
3748
3749         * des.c: Various speed improvements: One bit pre rotation
3750           trick after initial permutation (Richard Outerbridge).
3751           Finished test of SSLeay Tripple-DES patterns.
3752
3753 Wed Sep 15 16:22:17 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3754
3755         * rndw32.c: New.
3756
3757 Mon Sep 13 10:51:29 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3758
3759         * bithelp.h: New.
3760         * rmd160.h, sha1.h, md5.h: Use the rol macro from bithelp.h
3761
3762 Tue Sep  7 16:23:36 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3763
3764         * Makefile.am: Fixed seds for latest egcc. By Ollivier Robert.
3765
3766 Mon Sep  6 19:59:08 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3767
3768         * des.c (selftest): Add some testpattern
3769
3770 Mon Aug 30 20:38:33 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3771
3772         * cipher.c (do_cbc_encrypt): Fixed serious bug occuring when not using
3773         in place encryption. Pointed out by Frank Stajano.
3774
3775 Mon Jul 26 09:34:46 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3776
3777         * md5.c (md5_final): Fix for a SCO cpp bug.
3778
3779 Thu Jul 15 10:15:35 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3780
3781         * elgamal.c (elg_check_secret_key,elg_encrypt
3782         elg_decrypt,elg_sign,elg_verify): Sanity check on the args.
3783         * dsa.c (dsa_check_secret_key,dsa_sign,dsa_verify): Ditto.
3784
3785         * pubkey.c (disable_pubkey_algo): New.
3786         (check_pubkey_algo2): Look at disabled algo table.
3787         * cipher.c (disable_cipher_algo): New.
3788         (check_cipher_algo): Look at disabled algo table.
3789
3790 Wed Jul  7 13:08:40 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3791
3792         * Makefile.am: Support for libtool.
3793
3794 Fri Jul  2 11:45:54 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3795
3796         * dsa.c (gen_k): Changed algorithm to consume less random bytes
3797         * elgamal.c (gen_k): Ditto.
3798
3799         * random.c (random_dump_stats): New.
3800
3801 Thu Jul  1 12:47:31 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3802
3803         * primegen.c, elgamal.c, dsa.c (progess): New and replaced all
3804         fputc with a call to this function.
3805
3806 Sat Jun 26 12:15:59 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3807
3808         * rndegd.c (do_write): s/ssize_t/int/ due to SunOS 4.1 probs.
3809
3810         * cipher.c (do_cbc_encrypt, do_cbc_decrypt): New.
3811
3812         * dynload.c (HAVE_DL_SHL_LOAD): Map hpux API to dlopen (Dave Dykstra).
3813         * Makefile.am (install-exec-hook): Removed.
3814
3815 Sun May 23 14:20:22 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3816
3817         * cipher.c (setup_cipher_table): Enable Twofish
3818
3819         * random.c (fast_random_poll): Disable use of times() for mingw32.
3820
3821 Mon May 17 21:54:43 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3822
3823         * dynload.c (register_internal_cipher_extension): Minor init fix.
3824
3825 Tue May  4 15:47:53 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3826
3827         * primegen.c (gen_prime): Readded the Fermat test. Fixed the bug
3828         that we didn't correct for step when passing the prime to the
3829         Rabin-Miller test which led to bad performance (Stefan Keller).
3830         (check_prime): Add a first Fermat test.
3831
3832 Sun Apr 18 10:11:28 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3833
3834         * cipher.c (cipher_setiv): Add ivlen arg, changed all callers.
3835
3836         * random.c (randomize_buffer): alway use secure memory because
3837         we can't use m_is_secure() on a statically allocated buffer.
3838
3839         * twofish.c: Replaced some macros by a loop to reduce text size.
3840         * Makefile.am (twofish): No more need for sed editing.
3841
3842 Fri Apr  9 12:26:25 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3843
3844         * cipher.c (cipher_open): Reversed the changes for AUTO_CFB.
3845
3846         * blowfish.c: Dropped the Blowfish 160 mode.
3847         * cipher.c (cipher_open): Ditto.
3848         (setup_cipher_table): Ditto.  And removed support of twofish128
3849
3850 Wed Apr  7 20:51:39 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3851
3852         * random.c (get_random_bits): Can now handle requests > POOLSIZE
3853
3854         * cipher.c (cipher_open): Now uses standard CFB for automode if
3855         the blocksize is gt 8 (according to rfc2440).
3856
3857         * twofish.c: Applied Matthew Skala's patches for 256 bit key.
3858
3859 Tue Apr  6 19:58:12 CEST 1999  Werner Koch  <wk@isil.d.shuttle.de>
3860
3861         * random.c (get_random_bits): Can now handle requests > POOLSIZE
3862
3863         * cipher.c (cipher_open): Now uses standard CFB for automode if
3864         the blocksize is gt 8 (according to rfc2440).
3865
3866 Sat Mar 20 11:44:21 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
3867
3868         * rndlinux.c (tty_printf) [IS_MODULE]: Removed.
3869
3870         * rndegd.c (gather_random): Some fixes.
3871
3872 Wed Mar 17 13:09:03 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
3873
3874         * rndegd.c (do_read): New.
3875         (gather_random): Changed the implementation.
3876
3877 Mon Mar  8 20:47:17 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
3878
3879         * dynload.c (DLSYM_NEEDS_UNDERSCORE): Renamed.
3880
3881 Fri Feb 26 17:55:41 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
3882
3883         * md.c: Nearly a total rewrote.
3884
3885 Wed Feb 24 11:07:27 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
3886
3887         * cipher.c (context): Fixed alignment
3888         * md.c: Ditto.
3889
3890         * rndegd.c: New
3891
3892 Mon Feb 22 20:04:00 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
3893
3894         * rndegd.c: New.
3895
3896 Wed Feb 10 17:15:39 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
3897
3898         * Makefile.am: Modules are now figured out by configure
3899         * construct.c: New. Generated by configure. Changed all modules
3900         to work with that.
3901         * sha1.h: Removed.
3902         * md5.h: Removed.
3903
3904         * twofish.c: Changed interface to allow Twofish/256
3905
3906         * rndunix.c (start_gatherer): Die on SIGPIPE.
3907
3908 Wed Jan 20 18:59:49 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
3909
3910         * rndunix.c (gather_random): Fix to avoid infinite loop.
3911
3912 Sun Jan 17 11:04:33 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
3913
3914         * des.c (is_weak_key): Replace system memcmp due to bugs
3915         in SunOS's memcmp.
3916         (des_get_info): Return error on failed selftest.
3917         * twofish.c (twofish_setkey): Return error on failed selftest or
3918         invalid keylength.
3919         * cast5.c (cast_setkey): Ditto.
3920         * blowfish.c (bf_setkey): Return error on failed selftest.
3921
3922 Tue Jan 12 11:17:18 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
3923
3924         * random.c (random_is_faked): New.
3925
3926         * tiger.c: Only compile if we have the u64 type
3927
3928 Sat Jan  9 16:02:23 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
3929
3930         * rndunix.c (gather_random): check for setuid.
3931
3932         * Makefile.am: Add a way to staically link random modules
3933
3934 Thu Jan  7 18:00:58 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
3935
3936         * md.c (md_stop_debug): Do a flush first.
3937         (md_open): size of buffer now depends on the secure parameter
3938
3939 Sun Jan  3 15:28:44 CET 1999  Werner Koch  <wk@isil.d.shuttle.de>
3940
3941         * rndunix.c (start_gatherer): Fixed stupid ==/= bug
3942
3943 1998-12-31  Geoff Keating  <geoffk@ozemail.com.au>
3944
3945         * des.c (is_weak_key): Rewrite loop end condition.
3946
3947 Tue Dec 29 14:41:47 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
3948
3949         * random.c: add unistd.h for getpid().
3950         (RAND_MAX): Fallback value for Sun.
3951
3952 Wed Dec 23 17:12:24 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
3953
3954         * md.c (md_copy): Reset debug.
3955
3956 Mon Dec 14 21:18:49 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
3957
3958         * random.c (read_random_source): Changed the interface to the
3959         random gathering function.
3960         (gather_faked): Use new interface.
3961         * dynload.c (dynload_getfnc_fast_random_poll): Ditto.
3962         (dynload_getfnc_gather_random): Ditto.
3963         * rndlinux.c (gather_random): Ditto.
3964         * rndunix.c (gather_random): Ditto.
3965
3966 Sat Dec 12 18:40:32 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
3967
3968         * dynload.c (SYMBOL_VERSION): New to cope with system which needs
3969         underscores.
3970
3971         * rndunix.c: Rewrote large parts
3972
3973 Thu Dec 10 20:15:36 CET 1998  Werner Koch  <wk@isil.d.shuttle.de>
3974
3975         * dynload.c (load_extension): increased needed verbosity level.
3976
3977         * random.c (fast_random_poll): Fallback to a default fast random
3978         poll function.
3979         (read_random_source): Always use the faked entroy gatherer if no
3980         gather module is available.
3981         * rndlinux.c (fast_poll): Removed.
3982         * rndunix.c (fast_poll): Removed.
3983
3984
3985 Wed Nov 25 12:33:41 1998  Werner Koch  (wk@isil.d.shuttle.de)
3986
3987         * rand-*.c: Removed.
3988         * rndlinux.c : New.
3989         * rndunix.c : New.
3990         * random.c : Restructured the interface to the gather modules.
3991         (intialize): Call constructor functions
3992         (read_radnom_source): Moved to here.
3993         * dynload.c (dynload_getfnc_gather_random): New.
3994         (dynload_getfnc_fast_random_poll): New.
3995         (register_internal_cipher_extension): New.
3996         (register_cipher_extension): Support of internal modules.
3997
3998 Sun Nov  8 17:44:36 1998  Werner Koch  (wk@isil.d.shuttle.de)
3999
4000         * rand-unix.c (read_random_source): Removed the assert.
4001
4002 Mon Oct 19 18:34:30 1998  me,,,  (wk@tobold)
4003
4004         * pubkey.c: Hack to allow us to give some info about RSA keys back.
4005
4006 Thu Oct 15 11:47:57 1998  Werner Koch  (wk@isil.d.shuttle.de)
4007
4008         * dynload.c: Support for DLD
4009
4010 Wed Oct 14 12:13:07 1998  Werner Koch  (wk@isil.d.shuttle.de)
4011
4012         * rand-unix.c: Now uses names from configure for /dev/random.
4013
4014 1998-10-10  SL Baur  <steve@altair.xemacs.org>
4015
4016         * Makefile.am: fix sed -O substitutions to catch -O6, etc.
4017
4018 Tue Oct  6 10:06:32 1998  Werner Koch  (wk@isil.d.shuttle.de)
4019
4020         * rand-unix.c (HAVE_GETTIMEOFDAY): Fixed (was ..GETTIMEOFTIME :-)
4021         * rand-dummy.c (HAVE_GETTIMEOFDAY): Ditto.
4022
4023 Mon Sep 28 13:23:09 1998  Werner Koch  (wk@isil.d.shuttle.de)
4024
4025         * md.c (md_digest): New.
4026         (md_reset): New.
4027
4028 Wed Sep 23 12:27:02 1998  Werner Koch  (wk@isil.d.shuttle.de)
4029
4030         * tiger.c (TIGER_CONTEXT): moved "buf", so that it is 64 bit aligned.
4031
4032 Mon Sep 21 06:22:53 1998  Werner Koch  (wk@(none))
4033
4034         * des.c: Some patches from&n