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