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