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