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