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