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