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