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