From b15f54e39cb36540408e374edcda8871e6e71295 Mon Sep 17 00:00:00 2001 From: Matt Johnston <matt@ucc.asn.au> Date: Wed, 6 Jul 2005 03:53:40 +0000 Subject: [PATCH] Import of libtomcrypt 1.05 --HG-- branch : libtomcrypt-orig extra : convert_revision : 42edf60b8235e6aa06e306688266188818e41c03 --- Doxyfile | 2 +- TODO | 9 + build.sh | 20 + changes | 81 +++ crypt.tex | 592 +++++++++++++----- demos/encrypt.c | 4 + demos/hashsum.c | 4 + demos/multi.c | 4 + demos/small.c | 4 + demos/test.c | 27 +- demos/timing.c | 5 +- demos/tv_gen.c | 4 + doc/crypt.pdf | Bin 457121 -> 484454 bytes doc/footer.html | 6 + doc/header.html | 6 + genlist.sh | 4 + makefile | 105 +++- makefile.icc | 71 ++- makefile.msvc | 60 +- makefile.shared | 101 +-- mess.sh | 4 + notes/etc/saferp_optimizer.c | 4 + notes/etc/whirlgen.c | 4 + notes/etc/whirltest.c | 4 + notes/tech0005.txt | 18 + notes/tech0006.txt | 91 +++ parsenames.pl | 4 + run.sh | 35 ++ src/ciphers/aes/aes.c | 6 +- src/ciphers/aes/aes_tab.c | 4 + src/ciphers/anubis.c | 4 + src/ciphers/blowfish.c | 4 + src/ciphers/cast5.c | 4 + src/ciphers/des.c | 4 + src/ciphers/khazad.c | 4 + src/ciphers/noekeon.c | 4 + src/ciphers/rc2.c | 4 + src/ciphers/rc5.c | 4 + src/ciphers/rc6.c | 4 + src/ciphers/safer/safer.c | 4 + src/ciphers/safer/safer_tab.c | 4 + src/ciphers/safer/saferp.c | 4 + src/ciphers/skipjack.c | 4 + src/ciphers/twofish/twofish.c | 6 +- src/ciphers/twofish/twofish_tab.c | 4 + src/ciphers/xtea.c | 4 + src/encauth/ccm/ccm_memory.c | 5 +- src/encauth/ccm/ccm_test.c | 4 + src/encauth/eax/eax_addheader.c | 4 + src/encauth/eax/eax_decrypt.c | 4 + src/encauth/eax/eax_decrypt_verify_memory.c | 4 + src/encauth/eax/eax_done.c | 4 + src/encauth/eax/eax_encrypt.c | 4 + .../eax/eax_encrypt_authenticate_memory.c | 4 + src/encauth/eax/eax_init.c | 8 +- src/encauth/eax/eax_test.c | 4 + src/encauth/gcm/gcm_add_aad.c | 9 +- src/encauth/gcm/gcm_add_iv.c | 4 + src/encauth/gcm/gcm_done.c | 4 + src/encauth/gcm/gcm_gf_mult.c | 5 + src/encauth/gcm/gcm_init.c | 71 ++- src/encauth/gcm/gcm_memory.c | 4 + src/encauth/gcm/gcm_process.c | 4 + src/encauth/gcm/gcm_reset.c | 4 + src/encauth/gcm/gcm_test.c | 5 +- src/encauth/ocb/ocb_decrypt.c | 4 + src/encauth/ocb/ocb_decrypt_verify_memory.c | 4 + src/encauth/ocb/ocb_done_decrypt.c | 4 + src/encauth/ocb/ocb_done_encrypt.c | 4 + src/encauth/ocb/ocb_encrypt.c | 4 + .../ocb/ocb_encrypt_authenticate_memory.c | 4 + src/encauth/ocb/ocb_init.c | 4 + src/encauth/ocb/ocb_ntz.c | 4 + src/encauth/ocb/ocb_shift_xor.c | 4 + src/encauth/ocb/ocb_test.c | 4 + src/encauth/ocb/s_ocb_done.c | 4 + src/hashes/chc/chc.c | 4 + src/hashes/helper/hash_file.c | 4 + src/hashes/helper/hash_filehandle.c | 4 + src/hashes/helper/hash_memory.c | 4 + src/hashes/helper/hash_memory_multi.c | 4 + src/hashes/md2.c | 12 +- src/hashes/md4.c | 10 +- src/hashes/md5.c | 12 +- src/hashes/rmd128.c | 10 +- src/hashes/rmd160.c | 11 +- src/hashes/sha1.c | 11 +- src/hashes/sha2/sha224.c | 10 +- src/hashes/sha2/sha256.c | 12 +- src/hashes/sha2/sha384.c | 12 +- src/hashes/sha2/sha512.c | 12 +- src/hashes/tiger.c | 12 +- src/hashes/whirl/whirl.c | 10 +- src/hashes/whirl/whirltab.c | 4 + src/headers/ltc_tommath.h | 4 + src/headers/tomcrypt.h | 8 +- src/headers/tomcrypt_argchk.h | 4 + src/headers/tomcrypt_cfg.h | 4 + src/headers/tomcrypt_cipher.h | 20 +- src/headers/tomcrypt_custom.h | 76 ++- src/headers/tomcrypt_hash.h | 45 +- src/headers/tomcrypt_mac.h | 4 + src/headers/tomcrypt_macros.h | 12 +- src/headers/tomcrypt_misc.h | 4 + src/headers/tomcrypt_pk.h | 163 ++++- src/headers/tomcrypt_pkcs.h | 32 +- src/headers/tomcrypt_prng.h | 5 + src/headers/tommath_class.h | 4 + src/headers/tommath_superclass.h | 10 +- src/mac/hmac/hmac_done.c | 4 + src/mac/hmac/hmac_file.c | 4 + src/mac/hmac/hmac_init.c | 4 + src/mac/hmac/hmac_memory.c | 4 + src/mac/hmac/hmac_memory_multi.c | 4 + src/mac/hmac/hmac_process.c | 4 + src/mac/hmac/hmac_test.c | 4 + src/mac/omac/omac_done.c | 4 + src/mac/omac/omac_file.c | 4 + src/mac/omac/omac_init.c | 6 +- src/mac/omac/omac_memory.c | 4 + src/mac/omac/omac_memory_multi.c | 4 + src/mac/omac/omac_process.c | 9 +- src/mac/omac/omac_test.c | 4 + src/mac/pelican/pelican.c | 16 + src/mac/pelican/pelican_memory.c | 4 + src/mac/pelican/pelican_test.c | 4 + src/mac/pmac/pmac_done.c | 4 + src/mac/pmac/pmac_file.c | 4 + src/mac/pmac/pmac_init.c | 4 + src/mac/pmac/pmac_memory.c | 4 + src/mac/pmac/pmac_memory_multi.c | 4 + src/mac/pmac/pmac_ntz.c | 4 + src/mac/pmac/pmac_process.c | 4 + src/mac/pmac/pmac_shift_xor.c | 4 + src/mac/pmac/pmac_test.c | 4 + src/misc/base64/base64_decode.c | 4 + src/misc/base64/base64_encode.c | 4 + src/misc/burn_stack.c | 4 + src/misc/crypt/crypt.c | 13 + src/misc/crypt/crypt_argchk.c | 4 + src/misc/crypt/crypt_cipher_descriptor.c | 6 + src/misc/crypt/crypt_cipher_is_valid.c | 7 + src/misc/crypt/crypt_find_cipher.c | 7 + src/misc/crypt/crypt_find_cipher_any.c | 7 + src/misc/crypt/crypt_find_cipher_id.c | 10 +- src/misc/crypt/crypt_find_hash.c | 7 + src/misc/crypt/crypt_find_hash_any.c | 6 + src/misc/crypt/crypt_find_hash_id.c | 14 +- src/misc/crypt/crypt_find_prng.c | 7 + src/misc/crypt/crypt_hash_descriptor.c | 7 + src/misc/crypt/crypt_hash_is_valid.c | 7 + src/misc/crypt/crypt_prng_descriptor.c | 7 + src/misc/crypt/crypt_prng_is_valid.c | 7 + src/misc/crypt/crypt_register_cipher.c | 8 + src/misc/crypt/crypt_register_hash.c | 8 + src/misc/crypt/crypt_register_prng.c | 8 + src/misc/crypt/crypt_unregister_cipher.c | 7 + src/misc/crypt/crypt_unregister_hash.c | 7 + src/misc/crypt/crypt_unregister_prng.c | 9 +- src/misc/error_to_string.c | 4 + src/misc/mpi/is_prime.c | 4 + src/misc/mpi/mpi.c | 4 + src/misc/mpi/mpi_to_ltc_error.c | 4 + src/misc/mpi/rand_prime.c | 4 + src/misc/pkcs5/pkcs_5_1.c | 4 + src/misc/pkcs5/pkcs_5_2.c | 4 + src/misc/zeromem.c | 4 + src/modes/cbc/cbc_decrypt.c | 4 + src/modes/cbc/cbc_done.c | 4 + src/modes/cbc/cbc_encrypt.c | 4 + src/modes/cbc/cbc_getiv.c | 4 + src/modes/cbc/cbc_setiv.c | 4 + src/modes/cbc/cbc_start.c | 4 + src/modes/cfb/cfb_decrypt.c | 4 + src/modes/cfb/cfb_done.c | 4 + src/modes/cfb/cfb_encrypt.c | 4 + src/modes/cfb/cfb_getiv.c | 4 + src/modes/cfb/cfb_setiv.c | 4 + src/modes/cfb/cfb_start.c | 4 + src/modes/ctr/ctr_decrypt.c | 4 + src/modes/ctr/ctr_done.c | 4 + src/modes/ctr/ctr_encrypt.c | 6 +- src/modes/ctr/ctr_getiv.c | 4 + src/modes/ctr/ctr_setiv.c | 4 + src/modes/ctr/ctr_start.c | 20 +- src/modes/ecb/ecb_decrypt.c | 4 + src/modes/ecb/ecb_done.c | 6 +- src/modes/ecb/ecb_encrypt.c | 4 + src/modes/ecb/ecb_start.c | 4 + src/modes/ofb/ofb_decrypt.c | 4 + src/modes/ofb/ofb_done.c | 4 + src/modes/ofb/ofb_encrypt.c | 4 + src/modes/ofb/ofb_getiv.c | 4 + src/modes/ofb/ofb_setiv.c | 4 + src/modes/ofb/ofb_start.c | 4 + src/pk/asn1/der/bit/der_decode_bit_string.c | 101 +++ src/pk/asn1/der/bit/der_encode_bit_string.c | 87 +++ src/pk/asn1/der/bit/der_length_bit_string.c | 54 ++ src/pk/asn1/der/choice/der_decode_choice.c | 168 +++++ src/pk/asn1/der/der_get_multi_integer.c | 67 -- src/pk/asn1/der/der_put_multi_integer.c | 67 -- src/pk/asn1/der/ia5/der_decode_ia5_string.c | 95 +++ src/pk/asn1/der/ia5/der_encode_ia5_string.c | 84 +++ src/pk/asn1/der/ia5/der_length_ia5_string.c | 194 ++++++ .../der/{ => integer}/der_decode_integer.c | 68 +- .../der/{ => integer}/der_encode_integer.c | 87 ++- .../der/{ => integer}/der_length_integer.c | 36 +- .../der_decode_object_identifier.c | 99 +++ .../der_encode_object_identifier.c | 103 +++ .../der_length_object_identifier.c | 84 +++ .../asn1/der/octet/der_decode_octet_string.c | 90 +++ .../asn1/der/octet/der_encode_octet_string.c | 85 +++ .../asn1/der/octet/der_length_octet_string.c | 53 ++ .../der_decode_printable_string.c | 95 +++ .../der_encode_printable_string.c | 84 +++ .../der_length_printable_string.c | 166 +++++ .../asn1/der/sequence/der_decode_sequence.c | 234 +++++++ .../der/sequence/der_decode_sequence_multi.c | 124 ++++ .../asn1/der/sequence/der_encode_sequence.c | 281 +++++++++ .../der/sequence/der_encode_sequence_multi.c | 123 ++++ .../asn1/der/sequence/der_length_sequence.c | 144 +++++ .../short_integer/der_decode_short_integer.c | 68 ++ .../short_integer/der_encode_short_integer.c | 97 +++ .../short_integer/der_length_short_integer.c | 69 ++ src/pk/asn1/der/utctime/der_decode_utctime.c | 120 ++++ src/pk/asn1/der/utctime/der_encode_utctime.c | 80 +++ src/pk/asn1/der/utctime/der_length_utctime.c | 45 ++ src/pk/dh/dh.c | 4 + src/pk/dh/dh_sys.c | 4 + src/pk/dsa/dsa_export.c | 47 +- src/pk/dsa/dsa_free.c | 4 + src/pk/dsa/dsa_import.c | 66 +- src/pk/dsa/dsa_make_key.c | 12 +- src/pk/dsa/dsa_sign_hash.c | 99 ++- src/pk/dsa/dsa_verify_hash.c | 72 ++- src/pk/dsa/dsa_verify_key.c | 4 + src/pk/ecc/ecc.c | 480 +++++--------- src/pk/ecc/ecc_sys.c | 426 +++++-------- src/pk/packet_store_header.c | 4 + src/pk/packet_valid_header.c | 4 + src/pk/pkcs1/pkcs_1_i2osp.c | 4 + src/pk/pkcs1/pkcs_1_mgf1.c | 4 + src/pk/pkcs1/pkcs_1_oaep_decode.c | 24 +- src/pk/pkcs1/pkcs_1_oaep_encode.c | 34 +- src/pk/pkcs1/pkcs_1_os2ip.c | 4 + src/pk/pkcs1/pkcs_1_pss_decode.c | 15 +- src/pk/pkcs1/pkcs_1_pss_encode.c | 30 +- src/pk/pkcs1/pkcs_1_v15_es_decode.c | 74 --- src/pk/pkcs1/pkcs_1_v15_es_encode.c | 69 -- src/pk/pkcs1/pkcs_1_v15_sa_decode.c | 91 --- src/pk/pkcs1/pkcs_1_v15_sa_encode.c | 84 --- src/pk/rsa/rsa_decrypt_key.c | 4 + src/pk/rsa/rsa_encrypt_key.c | 4 + src/pk/rsa/rsa_export.c | 64 +- src/pk/rsa/rsa_exptmod.c | 10 + src/pk/rsa/rsa_free.c | 4 + src/pk/rsa/rsa_import.c | 76 +-- src/pk/rsa/rsa_make_key.c | 4 + src/pk/rsa/rsa_sign_hash.c | 4 + src/pk/rsa/rsa_v15_decrypt_key.c | 73 --- src/pk/rsa/rsa_v15_encrypt_key.c | 68 -- src/pk/rsa/rsa_v15_sign_hash.c | 66 -- src/pk/rsa/rsa_v15_verify_hash.c | 81 --- src/pk/rsa/rsa_verify_hash.c | 4 + src/prngs/fortuna.c | 4 + src/prngs/rc4.c | 4 + src/prngs/rng_get_bytes.c | 4 + src/prngs/rng_make_prng.c | 4 + src/prngs/sober128.c | 4 + src/prngs/sober128tab.c | 8 +- src/prngs/sprng.c | 4 + src/prngs/yarrow.c | 5 + testbuild.sh | 11 + testme.sh | 52 ++ testprof/base64_test.c | 6 +- testprof/cipher_hash_test.c | 4 + testprof/der_tests.c | 364 +++++++++-- testprof/dh_tests.c | 20 +- testprof/dsa_test.c | 15 +- testprof/ecc_test.c | 201 +++--- testprof/mac_test.c | 4 + testprof/makefile.icc | 2 +- testprof/modes_test.c | 24 +- testprof/pkcs_1_test.c | 46 +- testprof/rsa_test.c | 210 +++++-- testprof/store_test.c | 40 +- testprof/test.c | 4 + testprof/test.key | 15 + testprof/tomcrypt_test.h | 4 + testprof/x86_prof.c | 112 ++-- 290 files changed, 6829 insertions(+), 2378 deletions(-) create mode 100644 build.sh create mode 100644 mess.sh create mode 100644 notes/tech0005.txt create mode 100644 notes/tech0006.txt create mode 100644 run.sh create mode 100644 src/pk/asn1/der/bit/der_decode_bit_string.c create mode 100644 src/pk/asn1/der/bit/der_encode_bit_string.c create mode 100644 src/pk/asn1/der/bit/der_length_bit_string.c create mode 100644 src/pk/asn1/der/choice/der_decode_choice.c delete mode 100644 src/pk/asn1/der/der_get_multi_integer.c delete mode 100644 src/pk/asn1/der/der_put_multi_integer.c create mode 100644 src/pk/asn1/der/ia5/der_decode_ia5_string.c create mode 100644 src/pk/asn1/der/ia5/der_encode_ia5_string.c create mode 100644 src/pk/asn1/der/ia5/der_length_ia5_string.c rename src/pk/asn1/der/{ => integer}/der_decode_integer.c (52%) rename src/pk/asn1/der/{ => integer}/der_encode_integer.c (53%) rename src/pk/asn1/der/{ => integer}/der_length_integer.c (57%) create mode 100644 src/pk/asn1/der/object_identifier/der_decode_object_identifier.c create mode 100644 src/pk/asn1/der/object_identifier/der_encode_object_identifier.c create mode 100644 src/pk/asn1/der/object_identifier/der_length_object_identifier.c create mode 100644 src/pk/asn1/der/octet/der_decode_octet_string.c create mode 100644 src/pk/asn1/der/octet/der_encode_octet_string.c create mode 100644 src/pk/asn1/der/octet/der_length_octet_string.c create mode 100644 src/pk/asn1/der/printable_string/der_decode_printable_string.c create mode 100644 src/pk/asn1/der/printable_string/der_encode_printable_string.c create mode 100644 src/pk/asn1/der/printable_string/der_length_printable_string.c create mode 100644 src/pk/asn1/der/sequence/der_decode_sequence.c create mode 100644 src/pk/asn1/der/sequence/der_decode_sequence_multi.c create mode 100644 src/pk/asn1/der/sequence/der_encode_sequence.c create mode 100644 src/pk/asn1/der/sequence/der_encode_sequence_multi.c create mode 100644 src/pk/asn1/der/sequence/der_length_sequence.c create mode 100644 src/pk/asn1/der/short_integer/der_decode_short_integer.c create mode 100644 src/pk/asn1/der/short_integer/der_encode_short_integer.c create mode 100644 src/pk/asn1/der/short_integer/der_length_short_integer.c create mode 100644 src/pk/asn1/der/utctime/der_decode_utctime.c create mode 100644 src/pk/asn1/der/utctime/der_encode_utctime.c create mode 100644 src/pk/asn1/der/utctime/der_length_utctime.c delete mode 100644 src/pk/pkcs1/pkcs_1_v15_es_decode.c delete mode 100644 src/pk/pkcs1/pkcs_1_v15_es_encode.c delete mode 100644 src/pk/pkcs1/pkcs_1_v15_sa_decode.c delete mode 100644 src/pk/pkcs1/pkcs_1_v15_sa_encode.c delete mode 100644 src/pk/rsa/rsa_v15_decrypt_key.c delete mode 100644 src/pk/rsa/rsa_v15_encrypt_key.c delete mode 100644 src/pk/rsa/rsa_v15_sign_hash.c delete mode 100644 src/pk/rsa/rsa_v15_verify_hash.c create mode 100644 testbuild.sh create mode 100644 testme.sh create mode 100644 testprof/test.key diff --git a/Doxyfile b/Doxyfile index d42b778d..a8de8a9f 100644 --- a/Doxyfile +++ b/Doxyfile @@ -23,7 +23,7 @@ PROJECT_NAME = LibTomCrypt # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 1.02 +PROJECT_NUMBER = 1.05 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. diff --git a/TODO b/TODO index 8b137891..f4f06654 100644 --- a/TODO +++ b/TODO @@ -1 +1,10 @@ +For 1.06 +1. export ECC functions globally [e.g. mulmod and the sets] + - goal is tv_gen module and test vectors +2. ASN.1 SET and T61String +3. phase out DH code [RSA/ECC/DSA is enough] +4. Some ASN.1 demo programs [for now read the source code!] +5. Start working towards making the bignum code plugable +6. Look into other ECC point muls and consider a "precomp" interface +7. Add OID for ciphers and PRNGs to their descriptors diff --git a/build.sh b/build.sh new file mode 100644 index 00000000..a018aaca --- /dev/null +++ b/build.sh @@ -0,0 +1,20 @@ +#!/bin/bash +echo "$1 ($2, $3)..." +make clean 1>/dev/null 2>/dev/null +echo -n "building..." +CFLAGS="$2 $CFLAGS" make -j3 -f $3 test tv_gen 1>gcc_1.txt 2>gcc_2.txt || (echo "build $1 failed see gcc_2.txt for more information" && cat gcc_2.txt && exit 1) +echo -n "testing..." +if [ -a test ] && [ -f test ] && [ -x test ]; then + ((./test >test_std.txt 2>test_err.txt && ./tv_gen > tv.txt) && echo "$1 test passed." && echo "y" > testok.txt) || (echo "$1 test failed" && cat test_err.txt && exit 1) + if find *_tv.txt -type f 1>/dev/null 2>/dev/null ; then + for f in *_tv.txt; do if (diff $f notes/$f) then true; else (echo "tv_gen $f failed" && rm -f testok.txt && exit 1); fi; done + fi +fi +if [ -a testok.txt ] && [ -f testok.txt ]; then + exit 0 +fi +exit 1 + +# $Source: /cvs/libtom/libtomcrypt/build.sh,v $ +# $Revision: 1.5 $ +# $Date: 2005/06/27 13:04:05 $ diff --git a/changes b/changes index 54480cf3..65ccd164 100644 --- a/changes +++ b/changes @@ -1,3 +1,79 @@ +June 27th, 2005 +v1.05 + -- Added Technote #6 which covers the current PK compliance. + -- Fixed buffer overflow in OAEP decoder + -- Added CHOICE to the list of ASN.1 types + -- Added UTCTIME to the list of ASN.1 types + -- Added MUTEX locks around descriptor table functions [but not on the functions that are dependent on them] + All functions call *_is_valid() before using a descriptor index which means the respective table must be unlocked before + it can be accessed. However, during the operation [e.g. CCM] if the descriptor has been altered the results will be + undefined. + -- Minor updates to the manual to reflect recent changes + -- Added a catch to for an error that should never come up in rsa_exptmod(). Just being thorough. + +June 15th, 2005 +v1.04 + -- Fixed off by one [bit] error in dsa_make_key() it was too high by one bit [not a security problem just inconsistent] + -- ECC-224 curve was wrong [it was an ok curve just not NIST, so no security flaw just interoperability]. + -- Removed point compression since it slows down ECC ops to save a measly couple bytes. + This makes the ecc export format incompatible with 1.03 [it shouldn't change in the future] + -- Removed ECC-160 from timing and added the other curves + +June 9th, 2005 +v1.03 + -- Users may want to note that on a P4/GCC3.4 platform "-fno-regmove" greatly accelerates the ciphers/hashes. + -------------------------------------------------------------------------------------------------------------- + -- Made it install the testing library in the icc/static makefiles + -- Found bug in ccm_memory.c which would fail to compile when LTC_CLEAN_STACK was enabled + -- Simon Johnson proposed I do a fully automated test suite. Hence "testme.sh" was born + -- Added LTC_NO_TEST which forces test vectors off (regardless of what tomcrypt_custom.h has) + -- Added LTC_NO_TABLES which disables large tables (where possible, regardless of what tomcrypt_custom.h has) + -- New test script found a bug in twofish.c when TABLES was disabled. Yeah testing! + -- Added a LTC_FAST specific test to the testing software. + -- Updated test driver to actually halt on errors and just print them out (useful for say... automated testing...) + -- Added bounds checking to Pelican MAC + -- Added BIT and OCTET STRING to the ASN.1 side of things. + -- Pekka Riikonen pointed out that my ctr_start() function should accept the counter mode. + -- Cleaned up warnings in testprof + -- Removed redundant mu and point mapping in ecc_verify_hash() so it should be a bit faster now + -- Pekka pointed out that the AES key structure was using 32 bytes more than it ought to. + -- Added quick defines to remove entire classes of algorithms. This makes it easier if you want to build with just + one algorithm (say AES or SHA-256). Defines are LTC_NO_CIPHERS, LTC_NO_MODES, LTC_NO_HASHES, LTC_NO_MACS, + LTC_NO_PRNGS, LTC_NO_PK, LTC_NO_PKCS + -- As part of the move for ECC to X9.62 I've changed the signature algorithm to EC DSA. No API changes. + -- Pekka helped me clean up the PKCS #1 v2.1 [OAEP/PSS] code + -- Wrote new DER SEQUENCE coder/decoder + -- RSA, DSA and ECDSA now use the DER SEQUENCE code (saves a lot of code!) + -- DSA output is now a DER SEQUENCE (so not compatible with previous releases). + -- Added Technote #5 which shows how to build LTC on an AMD64 to have a variety of algorithms in only ~80KB of code. + -- Changed temp variable in LOAD/STORE macros to "ulong32" for 32-bit ops. Makes it safer on Big endian platforms + -- Added INSTALL_GROUP and INSTALL_USER which you can specify on the build to override the default USER/GROUP the library + is to be installed as + -- Removed "testprof" from the default build. + -- Added IA5, NULL and Object Identifier to the list of ASN.1 DER supported types + -- The "no_oops" target (part of zipup) now scans for non-cvs files. This helps prevent temp/scratch files from appearing in releases ;-) + -- Added DERs for missing hashes, but just the OID not the PKCS #1 v1.5 additions. + -- Removed PKCS #1 v1.5 from the tree since it's taking up space and you ought to use v2.1 anyways + -- Kevin Kenny pointed out a few stray // comments + -- INTEGER code properly supports negatives and zero padding [Pekka!] + -- Sorted asn1/der/ directory ... less of a mess now ;-) + -- Added PRINTABLE STRING type + -- Removed ECC-160 as it wasn't a standard curve + -- Made ecc_shared_secret() ANSI X9.63 compliant + -- Changed "printf" to "fprintf(stderr, " in the testbench... ;-) + -- Optimized the GCM table creation. On 1KB packets [with key switching] the new GCM is 12.7x faster than before. + -- Changed OID representation for hashes to be just a list of unsigned longs (so you can compare against them nicely after decoding a sequence) + -- ECC code now uses Montgomery reduction ... it's even faster [ECC-256 make key down from 37.4M to 4.6M cycles on an Athlon64] + -- Added SHORT_INTEGER so users can easily store DER encoded INTEGER types without using the bignum math library + -- Fixed OMAC code so that with LTC_FAST it doesn't require that LTC_FAST_TYPE divides 16 [it has to divide the block size instead] + -- ECC key export is now a simple [and documented] SEQUENCE, the "encrypt_key" also uses a new SEQUENCE format. + -- Thanks goes to the following testers + Michael Brown - Solaris 10/uSPARCII + Richard Outerbridge - MacOS + Martin Carpenter - Solaris 8/uSPARCII [Thanks for cleaning up the scripts] + Greg Rose - ... SunOS 5.8/SPARC [... what's with the SPARCS?] + Matt Johnston - MacOS X [Thanks for pointing out GCC 4 problems with -Os] + April 19th, 2005 v1.02 -- Added LTC_TEST support to gcm_test() @@ -1243,3 +1319,8 @@ v0.02 -- Changed RC5 to only allow 12 to 24 rounds -- Added more to the manual. v0.01 -- We will call this the first version. + +/* $Source: /cvs/libtom/libtomcrypt/changes,v $ */ +/* $Revision: 1.106 $ */ +/* $Date: 2005/06/27 12:37:06 $ */ + diff --git a/crypt.tex b/crypt.tex index c785e83a..cf1c37ed 100644 --- a/crypt.tex +++ b/crypt.tex @@ -47,7 +47,7 @@ \def\gap{\vspace{0.5ex}} \makeindex \begin{document} -\title{LibTomCrypt \\ Version 1.02} +\title{LibTomCrypt \\ Version 1.05} \author{Tom St Denis \\ \\ tomstdenis@gmail.com \\ @@ -57,7 +57,7 @@ http://libtomcrypt.org This text and source code library are both hereby placed in the public domain. This book has been formatted for A4 paper using the \LaTeX{} {\em book} macro package. -\vspace{10cm} +\vspace{15cm} \begin{flushright}Open Source. Open Academia. Open Minds. @@ -771,13 +771,19 @@ other modes. \index{OFB Mode} \index{CFB Mode} The library provides simple support routines for handling CBC, CTR, CFB, OFB and ECB encoded messages. Assuming the mode you want is XXX there is a structure called ``symmetric\_XXX'' that will contain the information required to -use that mode. They have identical setup routines (except ECB mode for obvious reasons): +use that mode. They have identical setup routines (except CTR and ECB mode): \index{ecb\_start()} \index{cfb\_start()} \index{cbc\_start()} \index{ofb\_start()} \index{ctr\_start()} \begin{verbatim} int XXX_start(int cipher, const unsigned char *IV, const unsigned char *key, int keylen, int num_rounds, symmetric_XXX *XXX); +int ctr_start( int cipher, + const unsigned char *IV, + const unsigned char *key, int keylen, + int num_rounds, int ctr_mode, + symmetric_CTR *ctr); + int ecb_start(int cipher, const unsigned char *key, int keylen, int num_rounds, symmetric_ECB *ecb); \end{verbatim} @@ -789,7 +795,12 @@ of the cipher you choose. It is important that the IV be random for each uniqu parameters ``key'', ``keylen'' and ``num\_rounds'' are the same as in the XXX\_setup() function call. The final parameter is a pointer to the structure you want to hold the information for the mode of operation. -Both routines return {\bf CRYPT\_OK} if the cipher initialized correctly, otherwise they return an error code. + +In the case of CTR mode there is an additional parameter ``ctr\_mode'' which specifies the mode that the counter is to be used in. +If \textbf{CTR\_COUNTER\_LITTLE\_ENDIAN} was specified then the counter will be treated as a little endian value. Otherwise, if +\textbf{CTR\_COUNTER\_BIG\_ENDIAN} was specified the counter will be treated as a big endian value. + +The routines return {\bf CRYPT\_OK} if the cipher initialized correctly, otherwise they return an error code. \subsection{Encryption and Decryption} To actually encrypt or decrypt the following routines are provided: @@ -867,6 +878,7 @@ int main(void) key, /* the secret key */ 16, /* length of secret key (16 bytes, 128 bits) */ 0, /* 0 == default # of rounds */ + CTR_COUNTER_LITTLE_ENDIAN, /* Little endian counter */ &ctr) /* where to store initialized CTR state */ ) != CRYPT_OK) { printf("ctr_start error: %s\n", error_to_string(err)); @@ -1349,7 +1361,7 @@ int send_packet(const unsigned char *pt, unsigned long ptlen, } /* process the plaintext */ - if ((err = gcm_add_process(gcm, pt, ptlen, pt, GCM_ENCRYPT)) != CRYPT_OK) { + if ((err = gcm_process(gcm, pt, ptlen, pt, GCM_ENCRYPT)) != CRYPT_OK) { return err; } @@ -1359,6 +1371,8 @@ int send_packet(const unsigned char *pt, unsigned long ptlen, return err; } + /* ... send a header describing the lengths ... */ + /* depending on the protocol and how IV is generated you may have to send it too... */ send(socket, iv, ivlen, 0); @@ -2452,8 +2466,8 @@ int main(void) \section{Introduction} RSA wrote the PKCS \#1 specifications which detail RSA Public Key Cryptography. In the specifications are -padding algorithms for encryption and signatures. The standard includes ``v1.5'' and ``v2.0'' algorithms. -To simplify matters a little the v2.0 encryption and signature padding algorithms are called OAEP and PSS +padding algorithms for encryption and signatures. The standard includes the ``v2.1'' algorithms. +To simplify matters a little the v2.1 encryption and signature padding algorithms are called OAEP and PSS respectively. \section{PKCS \#1 Encryption} @@ -2509,33 +2523,6 @@ If the function succeeds it decodes the OAEP encoded message into ``out'' of len $1$ in ``res''. If the packet is invalid it stores $0$ in ``res'' and if the function fails for another reason it returns an error code. -\subsection{PKCS \#1 v1.5 Encoding} - -\index{pkcs\_1\_v15\_es\_encode()} -\begin{verbatim} -int pkcs_1_v15_es_encode(const unsigned char *msg, unsigned long msglen, - unsigned long modulus_bitlen, - prng_state *prng, int prng_idx, - unsigned char *out, unsigned long *outlen); -\end{verbatim} - -This will PKCS v1.5 encode the data in ``msg'' of length ``msglen''. Pass the length (in bits) of your -RSA modulus in ``modulus\_bitlen''. The encoded data will be stored in ``out'' of length ``outlen''. - -\subsection{PKCS \#1 v1.5 Decoding} -\index{pkcs\_1\_v15\_es\_decode()} -\begin{verbatim} -int pkcs_1_v15_es_decode(const unsigned char *msg, unsigned long msglen, - unsigned long modulus_bitlen, - unsigned char *out, unsigned long outlen, - int *res); -\end{verbatim} - -This will PKCS v1.5 decode the message in ``msg'' of length ``msglen''. It will store the output in ``out''. Note -that the length of the output ``outlen'' is a constant. This decoder cannot determine the original message -length. If the data in ``msg'' is a valid packet then a $1$ is stored in ``res'', otherwise a $0$ is -stored. - \section{PKCS \#1 Digital Signatures} \subsection{PSS Encoding} @@ -2577,34 +2564,6 @@ it is set to zero. The rest of the parameters are as in the PSS encode call. It's important to use the same ``saltlen'' and hash for both encoding and decoding as otherwise the procedure will not work. -\subsection{PKCS \#1 v1.5 Encoding} - -\index{pkcs\_1\_v15\_sa\_encode()} -\begin{verbatim} -int pkcs_1_v15_sa_encode(const unsigned char *msghash, unsigned long msghashlen, - int hash_idx, unsigned long modulus_bitlen, - unsigned char *out, unsigned long *outlen); -\end{verbatim} - -This will PKCS \#1 v1.5 signature encode the message hash ``msghash'' of length ``msghashlen''. You have -to tell this routine which hash produced the message hash in ``hash\_idx''. The encoded hash is stored -in ``out'' of length ``outlen''. - -\subsection{PKCS \#1 v1.5 Decoding} - -\index{pkcs\_1\_v15\_sa\_decode()} -\begin{verbatim} -int pkcs_1_v15_sa_decode(const unsigned char *msghash, unsigned long msghashlen, - const unsigned char *sig, unsigned long siglen, - int hash_idx, unsigned long modulus_bitlen, - int *res); -\end{verbatim} - -This will PKCS \#1 v1.5 signature decode the data in ``sig'' of length ``siglen'' and compare the extracted -hash against ``msghash'' of length ``msghashlen''. You have to tell this routine which hash produced the -message digest in ``hash\_idx''. If the packet is valid and the hashes match ``res'' is set to $1$. Otherwise, -it is set to $0$. - \section{RSA Operations} \subsection{Background} @@ -2698,15 +2657,14 @@ to pkcs\_1\_oaep\_encode(). int rsa_decrypt_key(const unsigned char *in, unsigned long inlen, unsigned char *out, unsigned long *outlen, const unsigned char *lparam, unsigned long lparamlen, - prng_state *prng, int prng_idx, - int hash_idx, int *res, + int hash_idx, int *stat, rsa_key *key); \end{verbatim} This function will RSA decrypt ``in'' of length ``inlen'' then OAEP depad the resulting data and store it in ``out'' of length ``outlen''. The ``lparam'' and ``lparamlen'' are the same parameters you would pass to pkcs\_1\_oaep\_decode(). -If the RSA decrypted data isn't a valid OAEP packet then ``res'' is set to $0$. Otherwise, it is set to $1$. +If the RSA decrypted data isn't a valid OAEP packet then ``stat'' is set to $0$. Otherwise, it is set to $1$. \subsection{RSA Hash Signatures} Similar to RSA key encryption RSA is also used to ``digitally sign'' message digests (hashes). To facilitate this @@ -2729,7 +2687,6 @@ the output is stored in ``out'' of length ``outlen''. \begin{verbatim} int rsa_verify_hash(const unsigned char *sig, unsigned long siglen, const unsigned char *msghash, unsigned long msghashlen, - prng_state *prng, int prng_idx, int hash_idx, unsigned long saltlen, int *stat, rsa_key *key); \end{verbatim} @@ -2799,8 +2756,6 @@ int main(void) &l2, /* plaintext length */ "TestApp", /* lparam for this program */ 7, /* lparam is 7 bytes long */ - NULL, /* PRNG state */ - prng_idx, /* prng idx */ hash_idx, /* hash idx */ &res, /* validity of data */ &key) /* our RSA key */ @@ -3060,6 +3015,33 @@ provided are very close to $p$ that is $\vert \vert \phi(\beta) \vert \vert \app range in order from $\approx 2^{192}$ points to $\approx 2^{521}$. According to the source document any key size greater than or equal to 256-bits is sufficient for long term security. +\section{Key Format} +LibTomCrypt uses it's own format for ECC public and private keys. While ANSI X9.62 partially specifies key formats (it covers public keys) it does it in a less +than ideally simple manner. In the case of LibTomCrypt it is meant \textbf{solely} for NIST $GF(p)$ curves. The format of the keys is as follows: + +\begin{small} +\begin{verbatim} +ECCPublicKey ::= SEQUENCE { + flags BIT STRING(1), -- public/private flag (always zero), + keySize INTEGER, -- Curve size (in bits) divided by eight + -- and rounded down, e.g. 521 => 65 + pubkey.x INTEGER, -- The X co-ordinate of the public key point + pubkey.y INTEGER, -- The Y co-ordinate of the public key point +} + +ECCPrivateKey ::= SEQUENCE { + flags BIT STRING(1), -- public/private flag (always one), + keySize INTEGER, -- Curve size (in bits) divided by eight + -- and rounded down, e.g. 521 => 65 + pubkey.x INTEGER, -- The X co-ordinate of the public key point + pubkey.y INTEGER, -- The Y co-ordinate of the public key point + secret.k INTEGER, -- The secret key scalar +} +\end{verbatim} +\end{small} + +The first flags bit denotes whether the key is public (zero) or private (one). + \section{Core Functions} Like the DH routines there is a key structure ``ecc\_key'' used by the functions. There is a function to make a key: @@ -3069,8 +3051,8 @@ int ecc_make_key(prng_state *prng, int wprng, int keysize, ecc_key *key); \end{verbatim} -The ``keysize'' is the size of the modulus in bytes desired. Currently directly supported values are 20, 24, 28, 32, 48 and 65 bytes which -correspond to key sizes of 160, 192, 224, 256, 384 and 521 bits respectively. If you pass a key size that is between any key size +The ``keysize'' is the size of the modulus in bytes desired. Currently directly supported values are 24, 28, 32, 48 and 65 bytes which +correspond to key sizes of 192, 224, 256, 384 and 521 bits respectively. If you pass a key size that is between any key size it will round the keysize up to the next available one. The rest of the parameters work like they do in the ``dh\_make\_key()'' function. To free the ram allocated by a key call: \index{ecc\_free()} @@ -3129,11 +3111,23 @@ int ecc_decrypt_key(const unsigned char *in, unsigned long inlen, ecc_key *key); \end{verbatim} -Where ``in'' is an input symmetric key of no more than 32 bytes. Essentially these routines created a random public key +Where ``in'' is an input symmetric key of no more than 64 bytes. Essentially these routines created a random public key and find the hash of the shared secret. The message digest is than XOR'ed against the symmetric key. All of the required data is placed in ``out'' by ``ecc\_encrypt\_key()''. The hash chosen must produce a message digest at least as large as the symmetric key you are trying to share. +\subsection{Encrypt Packet Format} + +The packet format for the encrypted keys is the following ASN.1 SEQUENCE: + +\begin{verbatim} +ECCEncrypt ::= SEQUENCE { + hashID OBJECT IDENTIFIER, -- OID of hash used + pubkey OCTET STRING , -- Encapsulated ECCPublicKey (see above) + skey OCTET STRING -- xor of plaintext and "hash of shared secret" +} +\end{verbatim} + There are also functions to sign and verify the hash of a message. \index{ecc\_sign\_hash()} \index{ecc\_verify\_hash()} \begin{verbatim} @@ -3150,12 +3144,14 @@ The ``ecc\_sign\_hash'' function signs the message hash in ``in'' of length ``in The ``ecc\_verify\_hash'' function verifies the ECC signature in ``sig'' against the hash in ``hash''. It sets ``stat'' to non-zero if the signature passes or zero if it fails. +\subsection{Signature Format} +The signature code is an implementation of X9.62 EC-DSA and the output is comformant for GF(p) curves. \section{ECC Keysizes} With ECC if you try and sign a hash that is bigger than your ECC key you can run into problems. The math will still work and in effect the signature will still work. With ECC keys the strength of the signature is limited by the size of -the hash or the size of they key, whichever is smaller. For example, if you sign with SHA256 and a ECC-160 key in effect -you have 160-bits of security (e.g. as if you signed with SHA-1). +the hash or the size of they key, whichever is smaller. For example, if you sign with SHA256 and an ECC-192 key in effect +you have 192-bits of security. The library will not warn you if you make this mistake so it is important to check yourself before using the signatures. @@ -3170,6 +3166,38 @@ would require at least 256 bytes where as the DSA signature would require only a The API for the DSA is essentially the same as the other PK algorithms. Except in the case of DSA no encryption or decryption routines are provided. +\section{Key Format} +Since no useful public standard for DSA key storage was presented to me during the course of this development I made my own ASN.1 SEQUENCE which I document +now so that others can interoperate with this library. + +\begin{verbatim} +DSAPublicKey ::= SEQUENCE { + publicFlags BIT STRING(1), -- must be 0 + g INTEGER , -- base generator, check that g^q mod p == 1 + -- and that 1 < g < p - 1 + p INTEGER , -- prime modulus + q INTEGER , -- order of sub-group (must be prime) + y INTEGER , -- public key, specifically, g^x mod p, + -- check that y^q mod p == 1 + -- and that 1 < y < p - 1 +} + +DSAPrivateKey ::= SEQUENCE { + publicFlags BIT STRING(1), -- must be 1 + g INTEGER , -- base generator, check that g^q mod p == 1 + -- and that 1 < g < p - 1 + p INTEGER , -- prime modulus + q INTEGER , -- order of sub-group (must be prime) + y INTEGER , -- public key, specifically, g^x mod p, + -- check that y^q mod p == 1 + -- and that 1 < y < p - 1 + x INTEGER -- private key +} +\end{verbatim} + +The leading BIT STRING has a single bit in it which is zero for public keys and one for private keys. This makes the structure uniquely decodable and easy +to work with. + \section{Key Generation} To make a DSA key you must call the following function \begin{verbatim} @@ -3291,79 +3319,351 @@ This will import the DSA key from the buffer ``in'' of length ``inlen'' to the ` will automatically free all of the heap allocated in the process (you don't have to call dsa\_free()). \chapter{Standards Support} -\section{DER Support} -DER or ``Distinguished Encoding Rules'' is a subset of the ASN.1 encoding rules that is fully deterministic and -ideal for cryptography. In particular ASN.1 specifies an INTEGER type for storing arbitrary sized integers. DER -further limits the ASN.1 specifications to a deterministic encoding. +\section{ASN.1 Formats} +LibTomCrypt supports a variety of ASN.1 data types encoded with the Distinguished Encoding Rules (DER) suitable for various cryptographic protocols. The data types +are all provided with three basic functions with \textit{similar} prototypes. One function has been dedicated to calculate the length in octets of a given +format and two functions have been dedicated to encoding and decoding the format. -\subsection{Storing INTEGER types} -\index{der\_encode\_integer()} -\begin{alltt} -int der_encode_integer(mp_int *num, unsigned char *out, unsigned long *outlen); -\end{alltt} +On top of the basic data types are the SEQUENCE and\footnote{Planned for LTC 1.06} SET data types which are collections of other ASN.1 types. They are provided +in the same manner as the other data types except they use list of objects known as the \textbf{ltc\_asn1\_list} structure. It is defined as + +\index{ltc\_asn1\_list structure} +\begin{verbatim} +typedef struct { + int type; + void *data; + unsigned long size; + int used; +} ltc_asn1_list; +\end{verbatim} -This will store the integer in ``num'' to the output buffer ``out'' of length ``outlen''. It only stores -non--negative numbers. It stores the number of octets used back in ``outlen''. +The ``type'' field is one of the following ASN.1 field definitions. The ``data'' pointer is a void pointer to the data to be encoded (or the destination) and the +``size'' field is specific to what you are encoding (e.g. number of bits in the BIT STRING data type). The ``used'' field is primarily for the CHOICE decoder +and reflects if the particular member of a list was the decoded data type. To help build the lists in an orderly fashion the macro +``LTC\_SET\_ASN1(list, index, Type, Data, Size)'' has been provided. -\subsection{Reading INTEGER types} -\index{der\_decode\_integer()} -\begin{alltt} -int der_decode_integer(const unsigned char *in, unsigned long *inlen, mp_int *num); -\end{alltt} -This will decode the DER encoded INTEGER in ``in'' of length ``inlen'' and store the resulting integer -in ``num''. It will store the bytes read in ``inlen'' which is handy if you have to parse multiple -data items out of a binary packet. +It will assign to the ``index''th position in the ``list'' the tripplet (Type, Data, Size). An example usage would be: + +\begin{small} +\begin{verbatim} +... +ltc_asn1_list sequence[3]; +unsigned long three=3; + +LTC_SET_ASN1(sequence, 0, LTC_ASN1_IA5_STRING, "hello", 5); +LTC_SET_ASN1(sequence, 1, LTC_ASN1_SHORT_INTEGER, &three, 1); +LTC_SET_ASN1(sequence, 2, LTC_ASN1_NULL, NULL, 0); +\end{verbatim} +\end{small} + +The macro is relatively safe with respect to modifying variables, for instance the following code is equivalent. + +\begin{small} +\begin{verbatim} +... +ltc_asn1_list sequence[3]; +unsigned long three=3; +int x=0; +LTC_SET_ASN1(sequence, x++, LTC_ASN1_IA5_STRING, "hello", 5); +LTC_SET_ASN1(sequence, x++, LTC_ASN1_SHORT_INTEGER, &three, 1); +LTC_SET_ASN1(sequence, x++, LTC_ASN1_NULL, NULL, 0); +\end{verbatim} +\end{small} + +\begin{figure}[here] +\begin{center} +\begin{small} +\begin{tabular}{|l|l|} +\hline \textbf{Definition} & \textbf{ASN.1 Type} \\ +\hline LTC\_ASN1\_EOL & End of a ASN.1 list structure. \\ +\hline LTC\_ASN1\_INTEGER & INTEGER (uses mp\_int) \\ +\hline LTC\_ASN1\_SHORT\_INTEGER & INTEGER (32--bit using unsigned long) \\ +\hline LTC\_ASN1\_BIT\_STRING & BIT STRING (one bit per char) \\ +\hline LTC\_ASN1\_OCTET\_STRING & OCTET STRING (one octet per char) \\ +\hline LTC\_ASN1\_NULL & NULL \\ +\hline LTC\_ASN1\_OBJECT\_IDENTIFIER & OBJECT IDENTIFIER (words are in unsigned long) \\ +\hline LTC\_ASN1\_IA5\_STRING & IA5 STRING (one octet per char) \\ +\hline LTC\_ASN1\_PRINTABLE\_STRING & PRINTABLE STIRNG (one octet per char) \\ +\hline LTC\_ASN1\_UTCTIME & UTCTIME (see ltc\_utctime structure) \\ +\hline LTC\_ASN1\_SEQUENCE & SEQUENCE OF \\ +\hline LTC\_ASN1\_CHOICE & CHOICE \\ +\hline +\end{tabular} +\caption{List of ASN.1 Supported Types} +\end{small} +\end{center} +\end{figure} + +\subsection{SEQUENCE Type} +The SEQUENCE data type is a collection of other ASN.1 data types encapsulated with a small header which is a useful way of sending multiple data types in one packet. + +\subsubsection{SEUQNECE Encoding} +To encode a sequence a \textbf{ltc\_asn1\_list} array must be initialized with the members of the sequence and their respective pointers. The encoding is performed +with the following function. + +\index{der\_encode\_sequence()} +\begin{verbatim} +int der_encode_sequence(ltc_asn1_list *list, unsigned long inlen, + unsigned char *out, unsigned long *outlen); +\end{verbatim} +This encodes a sequence of items pointed to by ``list'' where the list has ``inlen'' items in it. The SEQUENCE will be encoded to ``out'' and of length ``outlen''. The +function will terminate when it reads all the items out of the list (upto ``inlen'') or it encounters an item in the list with a type of \textbf{LTC\_ASN1\_EOL}. + +The ``data'' pointer in the list would be the same pointer you would pass to the respective ASN.1 encoder (e.g. der\_encode\_bit\_string()) and it is simply passed on +verbatim to the dependent encoder. The list can contain other SEQUENCE or SET types which enables you to have nested SEQUENCE and SET definitions. In these cases +the ``data'' pointer is simply a pointer to another \textbf{ltc\_asn1\_list}. + +\subsubsection{SEQUENCE Decoding} + +\index{der\_decode\_sequence()} + +Decoding a SEQUENCE is similar to encoding. You set up an array of \textbf{ltc\_asn1\_list} where in this case the ``size'' member is the maximum size +(in certain cases). For types such as IA5 STRING, BIT STRING, OCTET STRING (etc) the ``size'' field is updated after successful decoding to reflect how many +units of the respective type has been loaded. + +\begin{verbatim} +int der_decode_sequence(const unsigned char *in, unsigned long inlen, + ltc_asn1_list *list, unsigned long outlen); +\end{verbatim} + +This will decode upto ``outlen'' items from the input buffer ``in'' of length ``inlen'' octets. The function will stop (gracefully) when it runs out of items to decode. +It will fail (for among other reasons) when it runs out of input bytes to read, a data type is invalid or a heap failure occured. + +For the following types the ``size'' field will be updated to reflect the number of units read of the given type. +\begin{enumerate} + \item BIT STRING + \item OCTET STRING + \item OBJECT IDENTIFIER + \item IA5 STRING + \item PRINTABLE STRING +\end{enumerate} -\subsection{INTEGER length} +\subsubsection{SEQUENCE Length} + +The length of a SEQUENCE can be determined with the following function. + +\index{der\_length\_sequence()} +\begin{verbatim} +int der_length_sequence(ltc_asn1_list *list, unsigned long inlen, + unsigned long *outlen); +\end{verbatim} + +This will get the encoding size for the given ``list'' of length ``inlen'' and store it in ``outlen''. + +\subsubsection{SEQUENCE Multiple Argument Lists} + +For small or simple sequences an encoding or decoding can be performed with one of the following two functions. + +\index{der\_encode\_sequence\_multi()} +\index{der\_decode\_sequence\_multi()} + +\begin{verbatim} +int der_encode_sequence_multi(unsigned char *out, unsigned long *outlen, ...); +int der_decode_sequence_multi(const unsigned char *in, unsigned long inlen, ...); +\end{verbatim} + +These either encode or decode (respectively) a SEQUENCE data type where the items in the sequence are specified after the length parameter. + +The list of items are specified as a triple of the form ``(type, size, data)'' where ``type'' is an \textbf{int}, ``size'' is a \textbf{unsigned long} +and ``data'' is \textbf{void} pointer. The list of items must be terminated with an item with the type \textbf{LTC\_ASN1\_EOL}. + +It's ideal that you cast the ``size'' values to unsigned long to ensure that the proper data type is passed to the function. Constants such as ``1'' without +a cast or prototype are of type \textbf{int} by default. Appending \textit{UL} or prepending \textit{(unsigned long)} is enough to cast it to the correct type. + +\subsection{ASN.1 INTEGER} + +To encode or decode INTEGER data types use the following functions. + +\index{der\_encode\_integer()} +\index{der\_decode\_integer()} \index{der\_length\_integer()} -\begin{alltt} +\begin{verbatim} +int der_encode_integer(mp_int *num, unsigned char *out, unsigned long *outlen); +int der_decode_integer(const unsigned char *in, unsigned long inlen, mp_int *num); int der_length_integer(mp_int *num, unsigned long *len); -\end{alltt} -This will determine the length of the DER encoding of the integer ``num'' and store it in ``len''. +\end{verbatim} -\subsection{Multiple INTEGER types} -To simplify the DER encoding/decoding there are two functions two handle multple types at once. +These will encode or decode a signed INTEGER data type using the ``mp\_int'' data type to store the large INTEGER. To encode smaller values without allocating +an mp\_int to store the value the ``short'' INTEGER functions were made available. -\index{der\_put\_multi\_integer()} -\index{der\_get\_multi\_integer()} -\begin{alltt} -int der_put_multi_integer(unsigned char *dst, unsigned long *outlen, mp_int *num, ...); -int der_get_multi_integer(const unsigned char *src, unsigned long *inlen, mp_int *num, ...); -\end{alltt} +\index{der\_encode\_short\_integer()} +\index{der\_decode\_short\_integer()} +\index{der\_length\_short\_integer()} +\begin{verbatim} +int der_encode_short_integer(unsigned long num, + unsigned char *out, unsigned long *outlen); + +int der_decode_short_integer(const unsigned char *in, unsigned long inlen, + unsigned long *num); + +int der_length_short_integer(unsigned long num, unsigned long *outlen); +\end{verbatim} -These will handle multiple encodings/decodings at once. They work like their single operand counterparts -except they handle a \textbf{NULL} terminated list of operands. +These will encode or decode an unsigned \textbf{unsigned long} type (only reads upto 32--bits). For values in the range $0 \dots 2^{32} - 1$ the integer +and short integer functions can encode and decode each others outputs. +\subsection{ASN.1 BIT STRING} + +\index{der\_encode\_bit\_string()} +\index{der\_decode\_bit\_string()} +\index{der\_length\_bit\_string()} \begin{verbatim} -#include <tomcrypt.h> -int main(void) -{ - mp_int a, b, c, d; - unsigned char buffer[1000]; - unsigned long len; - int err; +int der_encode_bit_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); - /* init a,b,c,d with some values ... */ +int der_decode_bit_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); - /* ok we want to store them now... */ - len = sizeof(buffer); - if ((err = der_put_multi_integer(buffer, &len, - &a, &b, &c, &d, NULL)) != CRYPT_OK) { - // error - } - printf("I stored %lu bytes in buf\n", len); +int der_length_bit_string(unsigned long nbits, unsigned long *outlen); +\end{verbatim} - /* ok say we want to get them back for fun */ - /* len set previously...otherwise set it to the size of the packet */ - if ((err = der_get_multi_integer(buffer, &len, - &a, &b, &c, &d, NULL)) != CRYPT_OK) { - // error - } - printf("I read %lu bytes from buf\n", len); -} +These will encode or decode a BIT STRING data type. The bits are passed in (or read out) using one \textbf{char} per bit. A non--zero value will be interpretted +as a one bit and a zero value a zero bit. + +\subsection{ASN.1 OCTET STRING} + +\index{der\_encode\_octet\_string()} +\index{der\_decode\_octet\_string()} +\index{der\_length\_octet\_string()} +\begin{verbatim} +int der_encode_octet_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); + +int der_decode_octet_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); + +int der_length_octet_string(unsigned long noctets, unsigned long *outlen); \end{verbatim} + +These will encode or decode an OCTET STRING data type. The octets are stored using one \textbf{char} each. + +\subsection{ASN.1 OBJECT IDENTIFIER} + +\index{der\_encode\_object\_identifier()} +\index{der\_decode\_object\_identifier()} +\index{der\_length\_object\_identifier()} +\begin{verbatim} +int der_encode_object_identifier(unsigned long *words, unsigned long nwords, + unsigned char *out, unsigned long *outlen); + +int der_decode_object_identifier(const unsigned char *in, unsigned long inlen, + unsigned long *words, unsigned long *outlen); + +int der_length_object_identifier(unsigned long *words, unsigned long nwords, + unsigned long *outlen); +\end{verbatim} + +These will encode or decode an OBJECT IDENTIFIER object. The words of the OID are stored in individual \textbf{unsigned long} elements and must be in the range +$0 \ldots 2^{32} - 1$. + +\subsection{ASN.1 IA5 STRING} + +\index{der\_encode\_ia5\_string()} +\index{der\_decode\_ia5\_string()} +\index{der\_length\_ia5\_string()} +\begin{verbatim} +int der_encode_ia5_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); + +int der_decode_ia5_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); + +int der_length_ia5_string(const unsigned char *octets, unsigned long noctets, + unsigned long *outlen); +\end{verbatim} + +These will encode or decode an IA5 STRING. The characters are read or stored in individual \textbf{char} elements. This functions performs internal character +to numerical conversions based on the conventions of the compiler being used. For instance, on an x86\_32 machine 'A' == 65 but the same may not be true on +say a SPARC machine. Internally these functions have a table of literal characters and their numerical ASCII values. This provides a stable conversion provided +that the build platform honours the runtime platforms character conventions. + +If you're worried try building the test suite and running it. It has hard coded test vectors to ensure it is operating properly. + +\subsection{ASN.1 PRINTABLE STRING} + +\index{der\_encode\_printable\_string()} +\index{der\_decode\_printable\_string()} +\index{der\_length\_printable\_string()} +\begin{verbatim} +int der_encode_printable_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); + +int der_decode_printable_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); + +int der_length_printable_string(const unsigned char *octets, unsigned long noctets, + unsigned long *outlen); +\end{verbatim} + +These will encode or decode an PRINTABLE STRING. The characters are read or stored in individual \textbf{char} elements. This functions performs internal character +to numerical conversions based on the conventions of the compiler being used. For instance, on an x86\_32 machine 'A' == 65 but the same may not be true on +say a SPARC machine. Internally these functions have a table of literal characters and their numerical ASCII values. This provides a stable conversion provided +that the build platform honours the runtime platforms character conventions. + +If you're worried try building the test suite and running it. It has hard coded test vectors to ensure it is operating properly. + +\subsection{ASN.1 UTCTIME} + +The UTCTIME type is to store a date and time in ASN.1 format. It uses the following structure to organize the time. + +\begin{verbatim} +typedef struct { + unsigned YY, /* year 00--99 */ + MM, /* month 01--12 */ + DD, /* day 01--31 */ + hh, /* hour 00--23 */ + mm, /* minute 00--59 */ + ss, /* second 00--59 */ + off_dir, /* timezone offset direction 0 == +, 1 == - */ + off_hh, /* timezone offset hours */ + off_mm; /* timezone offset minutes */ +} ltc_utctime; +\end{verbatim} + +The time can be offset plus or minus a set amount of hours (off\_hh) and minutes (off\_mm). When ``off\_dir'' is zero the time will be added otherwise it +will be subtracted. + +For instance, the array $\lbrace 5, 6, 20, 22, 4, 00, 0, 5, 0 \rbrace$ represents the current time of 2005, June 20th, 22:04:00 with a time offset of +05h00. + +\index{der\_encode\_utctime()} +\index{der\_decode\_utctime()} +\index{der\_length\_utctime()} +\begin{verbatim} +int der_encode_utctime(ltc_utctime *utctime, + unsigned char *out, unsigned long *outlen); + +int der_decode_utctime(const unsigned char *in, unsigned long *inlen, + ltc_utctime *out); + +int der_length_utctime(ltc_utctime *utctime, unsigned long *outlen); +\end{verbatim} + +The encoder will store time in one of the two ASN.1 formats, either ``YYMMDDhhmmssZ'' or ``YYMMDDhhmmss$\pm$hhmm'' and perform minimal error checking on the +input. The decoder will read all valid ASN.1 formats and perform range checking on the values (not complete but rational) useful for catching packet errors. + +It is suggested that decoded data be further scrutinized (e.g. days of month in particular). + +\subsection{ASN.1 CHOICE} + +The CHOICE ASN.1 type represents a union of ASN.1 types all of which are stored in a ``ltc\_asn1\_list''. There is no encoder for the CHOICE type, only a +decoder. The decoder will scan through the provided list attempting to use the appropriate decoder on the input packet. The list can contain any ASN.1 data +type\footnote{Except it cannot have LTC\_ASN1\_INTEGER and LTC\_ASN1\_SHORT\_INTEGER simultaneously.} except for other CHOICE types. + +There is no encoder for the CHOICE type as the actual DER encoding is the encoding of the chosen type. + +\index{der\_decode\_choice()} +\begin{verbatim} +int der_decode_choice(const unsigned char *in, unsigned long *inlen, + ltc_asn1_list *list, unsigned long outlen); +\end{verbatim} + +This will decode the input in the ``in'' field of length ``inlen''. It uses the provided ASN.1 list specified in the ``list'' field which has ``outlen'' elements. +The ``inlen'' field will be updated with the length of the decoded data type as well as the respective entry in the ``list'' field will have the ``used'' flag +set to non--zero to reflect it was the data type decoded. + \section{Password Based Cryptography} \subsection{PKCS \#5} +\index{PKCS \#5} In order to securely handle user passwords for the purposes of creating session keys and chaining IVs the PKCS \#5 was drafted. PKCS \#5 is made up of two algorithms, Algorithm One and Algorithm Two. Algorithm One is the older fairly limited algorithm which has been implemented for completeness. Algorithm Two is a bit more modern and more flexible to work with. @@ -3436,7 +3736,6 @@ int main(void) \} \end{alltt} - \chapter{Miscellaneous} \section{Base64 Encoding and Decoding} The library provides functions to encode and decode a RFC1521 base64 coding scheme. This means that it can decode what it @@ -3634,7 +3933,6 @@ $n$ it requires $\sqrt n$ work. The following table sumarizes the work required \begin{center} \begin{tabular}{|c|c|} \hline ECC Key Size (bits) & Work Factor ($log_2$) \\ - \hline 160 & 80 \\ \hline 192 & 96 \\ \hline 224 & 112 \\ \hline 256 & 128 \\ @@ -3792,8 +4090,8 @@ will increase by approximately 500 bytes. If this is defined but TWOFISH\_SMALL it will not speed up the encryption or decryption functions. \subsection{GCM\_TABLES} -When defined GCM will use a 64KB table (per GCM state) which will greatly lower up the per--packet latency. -It also increases the initialization time. +When defined GCM will use a 64KB table (per GCM state) which will greatly speed up the per--packet latency. +It also increases the initialization time and isn't suitable when you are going to use a key a few times only. \subsection{SMALL\_CODE} When this is defined some of the code such as the Rijndael and SAFER+ ciphers are replaced with smaller code variants. @@ -3824,6 +4122,13 @@ data type you can perform integer operations with. Ideally it should be four or of your block cipher (e.g. 16 bytes for AES). This means sadly if you're on a platform with 57--bit words (or something) you can't use this mode. So sad. +\subsection{LTC\_PTHREAD} +When this is activated all of the descriptor table functions will use pthread locking to ensure thread safe updates to the tables. Note that +it doesn't prevent a thread that is passively using a table from being messed up by another thread that updates the table. + +Generally the rule of thumb is to setup the tables once at startup and then leave them be. This added build flag simply makes updating +the tables safer. + \section{MPI Tweaks} \subsection{RSA Only Tweak} If you plan on only using RSA with moduli in the range of 1024 to 2560 bits you can enable a series of tweaks @@ -4030,8 +4335,8 @@ To initialize a cipher (for ECB mode) the function setup() was provided. It acc can specify the number of rounds they want through ``num\_rounds'' where $num\_rounds = 0$ means use the default. The destination of a scheduled key is stored in ``skey''. -This is where things get tricky. Currently there is no provision to allocate memory during initialization since there is no ``cipher done'' function. So you have -to either use an existing member of the symmetric\_key union or alias your own structure over top of it provided symmetric\_key is not smaller. +Inside the ``symmetric\_key'' union there is a ``void *data'' which you can use to allocate data if you need a data structure that doesn't fit with the existing +ones provided. Just make sure in your ``done()'' function that you free the allocated memory. \subsection{Single block ECB} To process a single block in ECB mode the ecb\_encrypt() and ecb\_decrypt() functions were provided. The plaintext and ciphertext buffers are allowed to overlap so you @@ -4062,7 +4367,8 @@ updated by the function before returning. \subsubsection{Accelerated CTR} This function is meant for accelerated CTR encryption. It is accessible through the accel\_ctr\_encrypt pointer. The ``blocks'' value is the number of complete blocks to process. The ``IV'' is the CTR counter vector. It is an input upon calling this function and must be -updated by the function before returning. The ``mode'' value indicates whether the counter is big ($mode = 1$) or little ($mode = 0$) endian. +updated by the function before returning. The ``mode'' value indicates whether the counter is big (mode = CTR\_COUNTER\_BIG\_ENDIAN) or +little (mode = CTR\_COUNTER\_LITTLE\_ENDIAN) endian. This function (and the way it's called) differs from the other two since ctr\_encrypt() allows any size input plaintext. The accelerator will only be called if the following conditions are met. @@ -4101,10 +4407,10 @@ struct ltc_hash_descriptor { unsigned long hashsize; /** Input block size in octets */ unsigned long blocksize; - /** ASN.1 DER identifier */ - unsigned char DER[64]; + /** ASN.1 OID */ + unsigned long OID[16]; /** Length of DER encoding */ - unsigned long DERlen; + unsigned long OIDlen; /** Init a hash state @param hash The hash to initialize @return CRYPT_OK if successful @@ -4144,8 +4450,8 @@ The ``hashsize'' variable indicates the length of the output in octets. The `blocksize'' variable indicates the length of input (in octets) that the hash processes in a given invokation. -\subsection{DER Identifier} -This is the DER identifier (including the SEQUENCE header). This is used solely for PKCS \#1 style signatures. +\subsection{OID Identifier} +This is the universal ASN.1 Object Identifier for the hash. \subsection{Initialization} The init function initializes the hash and prepares it to process message bytes. @@ -4251,3 +4557,7 @@ but should at least maintain the same level of state entropy. \input{crypt.ind} \end{document} + +% $Source: /cvs/libtom/libtomcrypt/crypt.tex,v $ +% $Revision: 1.39 $ +% $Date: 2005/06/27 13:08:28 $ diff --git a/demos/encrypt.c b/demos/encrypt.c index 67627f7b..d8eb2934 100644 --- a/demos/encrypt.c +++ b/demos/encrypt.c @@ -235,3 +235,7 @@ int main(int argc, char *argv[]) } return 0; } + +/* $Source: /cvs/libtom/libtomcrypt/demos/encrypt.c,v $ */ +/* $Revision: 1.2 $ */ +/* $Date: 2005/05/05 14:35:56 $ */ diff --git a/demos/hashsum.c b/demos/hashsum.c index 23946ccc..653b6efd 100644 --- a/demos/hashsum.c +++ b/demos/hashsum.c @@ -113,3 +113,7 @@ void register_algs(void) #endif } + +/* $Source: /cvs/libtom/libtomcrypt/demos/hashsum.c,v $ */ +/* $Revision: 1.2 $ */ +/* $Date: 2005/05/05 14:35:56 $ */ diff --git a/demos/multi.c b/demos/multi.c index fdc8dc6b..af4d6b6f 100644 --- a/demos/multi.c +++ b/demos/multi.c @@ -104,3 +104,7 @@ int main(void) return EXIT_SUCCESS; } + +/* $Source: /cvs/libtom/libtomcrypt/demos/multi.c,v $ */ +/* $Revision: 1.2 $ */ +/* $Date: 2005/05/05 14:35:56 $ */ diff --git a/demos/small.c b/demos/small.c index bc9793bc..6bdd8421 100644 --- a/demos/small.c +++ b/demos/small.c @@ -8,3 +8,7 @@ int main(void) register_hash(&sha256_desc); return 0; } + +/* $Source: /cvs/libtom/libtomcrypt/demos/small.c,v $ */ +/* $Revision: 1.2 $ */ +/* $Date: 2005/05/05 14:35:56 $ */ diff --git a/demos/test.c b/demos/test.c index 290861d9..f6c71704 100644 --- a/demos/test.c +++ b/demos/test.c @@ -2,18 +2,23 @@ int main(void) { + int x; reg_algs(); printf("build == \n%s\n", crypt_build_settings); - printf("\ncipher_test..."); fflush(stdout); printf(cipher_hash_test() ? "failed" : "passed"); - printf("\nmodes_test..."); fflush(stdout); printf(modes_test() ? "failed" : "passed"); - printf("\nmac_test..."); fflush(stdout); printf(mac_test() ? "failed" : "passed"); - printf("\npkcs_1_test..."); fflush(stdout); printf(pkcs_1_test() ? "failed" : "passed"); - printf("\nstore_test..."); fflush(stdout); printf(store_test() ? "failed" : "passed"); - printf("\nrsa_test..."); fflush(stdout); printf(rsa_test() ? "failed" : "passed"); - printf("\necc_test..."); fflush(stdout); printf(ecc_tests() ? "failed" : "passed"); - printf("\ndsa_test..."); fflush(stdout); printf(dsa_test() ? "failed" : "passed"); - printf("\ndh_test..."); fflush(stdout); printf(dh_tests() ? "failed" : "passed"); - printf("\nder_test..."); fflush(stdout); printf(der_tests() ? "failed" : "passed"); - + printf("\nstore_test...."); fflush(stdout); x = store_test(); printf(x ? "failed" : "passed");if (x) exit(EXIT_FAILURE); + printf("\ncipher_test..."); fflush(stdout); x = cipher_hash_test(); printf(x ? "failed" : "passed");if (x) exit(EXIT_FAILURE); + printf("\nmodes_test...."); fflush(stdout); x = modes_test(); printf(x ? "failed" : "passed");if (x) exit(EXIT_FAILURE); + printf("\nder_test......"); fflush(stdout); x = der_tests(); printf(x ? "failed" : "passed");if (x) exit(EXIT_FAILURE); + printf("\nmac_test......"); fflush(stdout); x = mac_test(); printf(x ? "failed" : "passed");if (x) exit(EXIT_FAILURE); + printf("\npkcs_1_test..."); fflush(stdout); x = pkcs_1_test(); printf(x ? "failed" : "passed");if (x) exit(EXIT_FAILURE); + printf("\nrsa_test......"); fflush(stdout); x = rsa_test(); printf(x ? "failed" : "passed");if (x) exit(EXIT_FAILURE); + printf("\necc_test......"); fflush(stdout); x = ecc_tests(); printf(x ? "failed" : "passed");if (x) exit(EXIT_FAILURE); + printf("\ndsa_test......"); fflush(stdout); x = dsa_test(); printf(x ? "failed" : "passed");if (x) exit(EXIT_FAILURE); + printf("\ndh_test......."); fflush(stdout); x = dh_tests(); printf(x ? "failed" : "passed");if (x) exit(EXIT_FAILURE); + printf("\n"); return EXIT_SUCCESS; } + +/* $Source: /cvs/libtom/libtomcrypt/demos/test.c,v $ */ +/* $Revision: 1.12 $ */ +/* $Date: 2005/06/19 12:06:58 $ */ diff --git a/demos/timing.c b/demos/timing.c index 54c0462d..368d6e40 100644 --- a/demos/timing.c +++ b/demos/timing.c @@ -17,7 +17,10 @@ time_sqr(); time_rsa(); time_ecc(); time_dh(); - return EXIT_SUCCESS; } + +/* $Source: /cvs/libtom/libtomcrypt/demos/timing.c,v $ */ +/* $Revision: 1.17 $ */ +/* $Date: 2005/06/23 02:16:26 $ */ diff --git a/demos/tv_gen.c b/demos/tv_gen.c index c37d1af6..edaae3ef 100644 --- a/demos/tv_gen.c +++ b/demos/tv_gen.c @@ -664,3 +664,7 @@ int main(void) + +/* $Source: /cvs/libtom/libtomcrypt/demos/tv_gen.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/05/05 14:35:56 $ */ diff --git a/doc/crypt.pdf b/doc/crypt.pdf index 9eb60c6cbab9ccb3269caec6440559309afe833b..1c56c51f7ffe88024566a020536d618f51d4539b 100644 GIT binary patch delta 395450 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≫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%0D6=Q^0MT-g$>)MJ5zP4)wvAdu%`Z!m|L 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%0DnM$zgi41R&b)DH9oZaP+CyQ=z*g? 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�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 delta 369671 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�Habbe*<X?!z3Y| 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ⅇl2jq{`B2I+4XE8LH*yV7-rg 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≪Gkuq3ZdKVMAw$&vvA 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%0A)z&kBg#Vf#{g_(!7EbWjJOFI2j=?T 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	%?zOUb&e>PVd2$OQ?h%q+LSAEQu>j; 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 diff --git a/doc/footer.html b/doc/footer.html index fe5338c1..a1895ac8 100644 --- a/doc/footer.html +++ b/doc/footer.html @@ -2,3 +2,9 @@ Code by <a href="http://www.libtomcrypt.org/">Tom</a><br> Docs using <img src="doxygen.png" alt="doxygen" align="middle" border=0> <a href="http://jlcooke.ca/tom/hidden_image.png"> + +<!-- +/* $Source: /cvs/libtom/libtomcrypt/doc/footer.html,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/07 10:09:20 $ */ +--> diff --git a/doc/header.html b/doc/header.html index 426d4e3c..231475d1 100644 --- a/doc/header.html +++ b/doc/header.html @@ -4,3 +4,9 @@ <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.3.8 --> + +<!-- +/* $Source: /cvs/libtom/libtomcrypt/doc/header.html,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/07 10:09:20 $ */ +--> diff --git a/genlist.sh b/genlist.sh index 73daa1d6..832e8e79 100644 --- a/genlist.sh +++ b/genlist.sh @@ -4,3 +4,7 @@ export a=`echo -n "src/ciphers/aes/aes_enc.o *(MPIOBJECT) " ; find . -type f | s perl ./parsenames.pl OBJECTS "$a" export a=`find . -type f | grep [.]/src | grep [.]h | sed -e 'se\./ee' | xargs` perl ./parsenames.pl HEADERS "$a" + +# $Source: /cvs/libtom/libtomcrypt/genlist.sh,v $ +# $Revision: 1.3 $ +# $Date: 2005/05/05 14:49:27 $ diff --git a/makefile b/makefile index b38aa17c..fba5f73b 100644 --- a/makefile +++ b/makefile @@ -4,7 +4,7 @@ # Modified by Clay Culver # The version -VERSION=1.02 +VERSION=1.05 # Compiler and Linker Names #CC=gcc @@ -21,6 +21,8 @@ CFLAGS += -c -I./testprof/ -I./src/headers/ -Wall -Wsign-compare -W -Wshadow -Wn #CFLAGS += -Wsystem-headers -Wdeclaration-after-statement -Wbad-function-cast -Wcast-align -Wstrict-prototypes -Wmissing-prototypes \ # -Wmissing-declarations -Wpointer-arith +ifndef IGNORE_SPEED + # optimize for SPEED CFLAGS += -O3 -funroll-loops @@ -30,6 +32,8 @@ CFLAGS += -fomit-frame-pointer # optimize for SIZE #CFLAGS += -Os -DLTC_SMALL_CODE +endif + # older GCCs can't handle the "rotate with immediate" ROLc/RORc/etc macros # define this to help #CFLAGS += -DLTC_NO_ROLC @@ -58,13 +62,24 @@ INCPATH=/usr/include DATAPATH=/usr/share/doc/libtomcrypt/pdf #Who do we install as? +ifdef INSTALL_USER +USER=$(INSTALL_USER) +else USER=root +endif + +ifdef INSTALL_GROUP +GROUP=$(INSTALL_GROUP) +else GROUP=wheel +endif #List of objects to compile. #Leave MPI built-in or force developer to link against libtommath? +ifndef IGNORE_MPI MPIOBJECT=src/misc/mpi/mpi.o +endif OBJECTS=src/ciphers/aes/aes_enc.o $(MPIOBJECT) src/ciphers/aes/aes.o src/ciphers/anubis.o \ src/ciphers/blowfish.o src/ciphers/cast5.o src/ciphers/des.o src/ciphers/khazad.o src/ciphers/noekeon.o \ @@ -115,29 +130,43 @@ src/modes/ctr/ctr_getiv.o src/modes/ctr/ctr_setiv.o src/modes/ctr/ctr_start.o \ src/modes/ecb/ecb_decrypt.o src/modes/ecb/ecb_done.o src/modes/ecb/ecb_encrypt.o \ src/modes/ecb/ecb_start.o src/modes/ofb/ofb_decrypt.o src/modes/ofb/ofb_done.o \ src/modes/ofb/ofb_encrypt.o src/modes/ofb/ofb_getiv.o src/modes/ofb/ofb_setiv.o \ -src/modes/ofb/ofb_start.o src/pk/asn1/der/der_decode_integer.o src/pk/asn1/der/der_encode_integer.o \ -src/pk/asn1/der/der_get_multi_integer.o src/pk/asn1/der/der_length_integer.o \ -src/pk/asn1/der/der_put_multi_integer.o src/pk/dh/dh.o src/pk/dsa/dsa_export.o src/pk/dsa/dsa_free.o \ -src/pk/dsa/dsa_import.o src/pk/dsa/dsa_make_key.o src/pk/dsa/dsa_sign_hash.o \ -src/pk/dsa/dsa_verify_hash.o src/pk/dsa/dsa_verify_key.o src/pk/ecc/ecc.o src/pk/packet_store_header.o \ -src/pk/packet_valid_header.o src/pk/pkcs1/pkcs_1_i2osp.o src/pk/pkcs1/pkcs_1_mgf1.o \ -src/pk/pkcs1/pkcs_1_oaep_decode.o src/pk/pkcs1/pkcs_1_oaep_encode.o src/pk/pkcs1/pkcs_1_os2ip.o \ -src/pk/pkcs1/pkcs_1_pss_decode.o src/pk/pkcs1/pkcs_1_pss_encode.o src/pk/pkcs1/pkcs_1_v15_es_decode.o \ -src/pk/pkcs1/pkcs_1_v15_es_encode.o src/pk/pkcs1/pkcs_1_v15_sa_decode.o \ -src/pk/pkcs1/pkcs_1_v15_sa_encode.o src/pk/rsa/rsa_decrypt_key.o src/pk/rsa/rsa_encrypt_key.o \ +src/modes/ofb/ofb_start.o src/pk/asn1/der/bit/der_decode_bit_string.o \ +src/pk/asn1/der/bit/der_encode_bit_string.o src/pk/asn1/der/bit/der_length_bit_string.o \ +src/pk/asn1/der/choice/der_decode_choice.o src/pk/asn1/der/ia5/der_decode_ia5_string.o \ +src/pk/asn1/der/ia5/der_encode_ia5_string.o src/pk/asn1/der/ia5/der_length_ia5_string.o \ +src/pk/asn1/der/integer/der_decode_integer.o src/pk/asn1/der/integer/der_encode_integer.o \ +src/pk/asn1/der/integer/der_length_integer.o \ +src/pk/asn1/der/object_identifier/der_decode_object_identifier.o \ +src/pk/asn1/der/object_identifier/der_encode_object_identifier.o \ +src/pk/asn1/der/object_identifier/der_length_object_identifier.o \ +src/pk/asn1/der/octet/der_decode_octet_string.o src/pk/asn1/der/octet/der_encode_octet_string.o \ +src/pk/asn1/der/octet/der_length_octet_string.o \ +src/pk/asn1/der/printable_string/der_decode_printable_string.o \ +src/pk/asn1/der/printable_string/der_encode_printable_string.o \ +src/pk/asn1/der/printable_string/der_length_printable_string.o \ +src/pk/asn1/der/sequence/der_decode_sequence.o src/pk/asn1/der/sequence/der_decode_sequence_multi.o \ +src/pk/asn1/der/sequence/der_encode_sequence.o src/pk/asn1/der/sequence/der_encode_sequence_multi.o \ +src/pk/asn1/der/sequence/der_length_sequence.o \ +src/pk/asn1/der/short_integer/der_decode_short_integer.o \ +src/pk/asn1/der/short_integer/der_encode_short_integer.o \ +src/pk/asn1/der/short_integer/der_length_short_integer.o src/pk/asn1/der/utctime/der_decode_utctime.o \ +src/pk/asn1/der/utctime/der_encode_utctime.o src/pk/asn1/der/utctime/der_length_utctime.o \ +src/pk/dh/dh.o src/pk/dsa/dsa_export.o src/pk/dsa/dsa_free.o src/pk/dsa/dsa_import.o \ +src/pk/dsa/dsa_make_key.o src/pk/dsa/dsa_sign_hash.o src/pk/dsa/dsa_verify_hash.o \ +src/pk/dsa/dsa_verify_key.o src/pk/ecc/ecc.o src/pk/packet_store_header.o src/pk/packet_valid_header.o \ +src/pk/pkcs1/pkcs_1_i2osp.o src/pk/pkcs1/pkcs_1_mgf1.o src/pk/pkcs1/pkcs_1_oaep_decode.o \ +src/pk/pkcs1/pkcs_1_oaep_encode.o src/pk/pkcs1/pkcs_1_os2ip.o src/pk/pkcs1/pkcs_1_pss_decode.o \ +src/pk/pkcs1/pkcs_1_pss_encode.o src/pk/rsa/rsa_decrypt_key.o src/pk/rsa/rsa_encrypt_key.o \ src/pk/rsa/rsa_export.o src/pk/rsa/rsa_exptmod.o src/pk/rsa/rsa_free.o src/pk/rsa/rsa_import.o \ -src/pk/rsa/rsa_make_key.o src/pk/rsa/rsa_sign_hash.o src/pk/rsa/rsa_v15_decrypt_key.o \ -src/pk/rsa/rsa_v15_encrypt_key.o src/pk/rsa/rsa_v15_sign_hash.o src/pk/rsa/rsa_v15_verify_hash.o \ -src/pk/rsa/rsa_verify_hash.o src/prngs/fortuna.o src/prngs/rc4.o src/prngs/rng_get_bytes.o \ -src/prngs/rng_make_prng.o src/prngs/sober128.o src/prngs/sprng.o src/prngs/yarrow.o - -HEADERS=src/headers/tommath_superclass.h src/headers/tomcrypt_cfg.h \ -src/headers/tomcrypt_mac.h src/headers/tomcrypt_macros.h \ -src/headers/tomcrypt_custom.h src/headers/tomcrypt_argchk.h \ -src/headers/tomcrypt_cipher.h src/headers/tomcrypt_pk.h \ -src/headers/tommath_class.h src/headers/ltc_tommath.h src/headers/tomcrypt_hash.h \ -src/headers/tomcrypt_misc.h src/headers/tomcrypt.h src/headers/tomcrypt_pkcs.h \ -src/headers/tomcrypt_prng.h testprof/tomcrypt_test.h +src/pk/rsa/rsa_make_key.o src/pk/rsa/rsa_sign_hash.o src/pk/rsa/rsa_verify_hash.o src/prngs/fortuna.o \ +src/prngs/rc4.o src/prngs/rng_get_bytes.o src/prngs/rng_make_prng.o src/prngs/sober128.o \ +src/prngs/sprng.o src/prngs/yarrow.o + +HEADERS=src/headers/tommath_superclass.h src/headers/tomcrypt_cfg.h src/headers/tomcrypt_mac.h \ +src/headers/tomcrypt_macros.h src/headers/tomcrypt_custom.h src/headers/tomcrypt_argchk.h \ +src/headers/tomcrypt_cipher.h src/headers/tomcrypt_pk.h src/headers/tommath_class.h \ +src/headers/ltc_tommath.h src/headers/tomcrypt_hash.h src/headers/tomcrypt_misc.h \ +src/headers/tomcrypt.h src/headers/tomcrypt_pkcs.h src/headers/tomcrypt_prng.h testprof/tomcrypt_test.h TESTOBJECTS=demos/test.o HASHOBJECTS=demos/hashsum.o @@ -171,7 +200,7 @@ src/hashes/sha2/sha512.o: src/hashes/sha2/sha512.c src/hashes/sha2/sha384.c src/hashes/sha2/sha256.o: src/hashes/sha2/sha256.c src/hashes/sha2/sha224.c #This rule makes the libtomcrypt library. -library: $(LIBTEST) $(LIBNAME) +library: $(LIBNAME) $(LIBTEST): cd testprof ; CFLAGS="$(CFLAGS)" make @@ -193,15 +222,15 @@ small: library $(SMALLOBJECTS) $(CC) $(SMALLOBJECTS) $(LIBNAME) -o $(SMALL) $(WARN) tv_gen: library $(TVS) - $(CC) $(TVS) $(LIBNAME) $(EXTRALIBS) -o $(TV) + $(CC) $(TVS) $(LIBNAME) -o $(TV) multi: library $(MULTIS) $(CC) $(MULTIS) $(LIBNAME) -o $(MULTI) -timing: library $(TIMINGS) - $(CC) $(TIMINGS) $(LIBTEST) $(LIBNAME) -o $(TIMING) +timing: library $(LIBTEST) $(TIMINGS) + $(CC) $(TIMINGS) $(LIBTEST) $(LIBNAME) $(EXTRALIBS) -o $(TIMING) -test: library $(TESTS) +test: library $(LIBTEST) $(TESTS) $(CC) $(TESTS) $(LIBTEST) $(LIBNAME) -o $(TEST) @@ -216,11 +245,17 @@ install: library docs install -g $(GROUP) -o $(USER) $(HEADERS) $(DESTDIR)$(INCPATH) install -g $(GROUP) -o $(USER) doc/crypt.pdf $(DESTDIR)$(DATAPATH) -install_lib: library +install_test: $(LIBTEST) install -d -g $(GROUP) -o $(USER) $(DESTDIR)$(LIBPATH) install -d -g $(GROUP) -o $(USER) $(DESTDIR)$(INCPATH) - install -g $(GROUP) -o $(USER) $(LIBNAME) $(DESTDIR)$(LIBPATH) - install -g $(GROUP) -o $(USER) $(HEADERS) $(DESTDIR)$(INCPATH) + install -g $(GROUP) -o $(USER) $(LIBTEST) $(DESTDIR)$(LIBPATH) + +profile: + CFLAGS="$(CFLAGS) -fprofile-generate" make timing EXTRALIBS=-lgcov + ./timing + rm -f timing `find . -type f | grep [.][ao] | xargs` + CFLAGS="$(CFLAGS) -fprofile-use" make timing EXTRALIBS=-lgcov + #This rule cleans the source tree of all compiled code, not including the pdf #documentation. @@ -242,6 +277,7 @@ clean: rm -f $(TV) $(PROF) $(SMALL) $(CRYPT) $(HASHSUM) $(MULTI) $(TIMING) $(TEST) rm -rf doc/doxygen rm -f doc/*.pdf + rm -f *.txt #build the doxy files (requires Doxygen, tetex and patience) doxy: @@ -274,6 +310,8 @@ docdvi: crypt.tex #zipup the project (take that!) no_oops: clean cd .. ; cvs commit + echo Scanning for scratch/dirty files + find . -type f | grep -v CVS | xargs -n 1 bash mess.sh zipup: no_oops docs cd .. ; rm -rf crypt* libtomcrypt-$(VERSION) ; mkdir libtomcrypt-$(VERSION) ; \ @@ -283,3 +321,8 @@ zipup: no_oops docs zip -9r crypt-$(VERSION).zip libtomcrypt-$(VERSION) ; \ gpg -b -a crypt-$(VERSION).tar.bz2 ; gpg -b -a crypt-$(VERSION).zip ; \ mv -fv crypt* ~ ; rm -rf libtomcrypt-$(VERSION) + + +# $Source: /cvs/libtom/libtomcrypt/makefile,v $ +# $Revision: 1.70 $ +# $Date: 2005/06/19 18:03:24 $ diff --git a/makefile.icc b/makefile.icc index 41848dcc..a9ab38fb 100644 --- a/makefile.icc +++ b/makefile.icc @@ -22,7 +22,7 @@ CC=icc #ARFLAGS=r # Compilation flags. Note the += does not write over the user's CFLAGS! -CFLAGS += -c -I./src/headers/ -DINTEL_CC +CFLAGS += -c -Isrc/headers/ -Itestprof/ -DINTEL_CC #The default rule for make builds the libtomcrypt library. default:library @@ -41,7 +41,13 @@ default:library # B - Blend of P4 and PM [mobile] # # Default to just generic max opts +ifdef LTC_SMALL +CFLAGS += -O2 -xP -ip +endif + +ifndef IGNORE_SPEED CFLAGS += -O3 -xP -ip +endif # want to see stuff? #CFLAGS += -opt_report @@ -122,29 +128,43 @@ src/modes/ctr/ctr_getiv.o src/modes/ctr/ctr_setiv.o src/modes/ctr/ctr_start.o \ src/modes/ecb/ecb_decrypt.o src/modes/ecb/ecb_done.o src/modes/ecb/ecb_encrypt.o \ src/modes/ecb/ecb_start.o src/modes/ofb/ofb_decrypt.o src/modes/ofb/ofb_done.o \ src/modes/ofb/ofb_encrypt.o src/modes/ofb/ofb_getiv.o src/modes/ofb/ofb_setiv.o \ -src/modes/ofb/ofb_start.o src/pk/asn1/der/der_decode_integer.o src/pk/asn1/der/der_encode_integer.o \ -src/pk/asn1/der/der_get_multi_integer.o src/pk/asn1/der/der_length_integer.o \ -src/pk/asn1/der/der_put_multi_integer.o src/pk/dh/dh.o src/pk/dsa/dsa_export.o src/pk/dsa/dsa_free.o \ -src/pk/dsa/dsa_import.o src/pk/dsa/dsa_make_key.o src/pk/dsa/dsa_sign_hash.o \ -src/pk/dsa/dsa_verify_hash.o src/pk/dsa/dsa_verify_key.o src/pk/ecc/ecc.o src/pk/packet_store_header.o \ -src/pk/packet_valid_header.o src/pk/pkcs1/pkcs_1_i2osp.o src/pk/pkcs1/pkcs_1_mgf1.o \ -src/pk/pkcs1/pkcs_1_oaep_decode.o src/pk/pkcs1/pkcs_1_oaep_encode.o src/pk/pkcs1/pkcs_1_os2ip.o \ -src/pk/pkcs1/pkcs_1_pss_decode.o src/pk/pkcs1/pkcs_1_pss_encode.o src/pk/pkcs1/pkcs_1_v15_es_decode.o \ -src/pk/pkcs1/pkcs_1_v15_es_encode.o src/pk/pkcs1/pkcs_1_v15_sa_decode.o \ -src/pk/pkcs1/pkcs_1_v15_sa_encode.o src/pk/rsa/rsa_decrypt_key.o src/pk/rsa/rsa_encrypt_key.o \ +src/modes/ofb/ofb_start.o src/pk/asn1/der/bit/der_decode_bit_string.o \ +src/pk/asn1/der/bit/der_encode_bit_string.o src/pk/asn1/der/bit/der_length_bit_string.o \ +src/pk/asn1/der/choice/der_decode_choice.o src/pk/asn1/der/ia5/der_decode_ia5_string.o \ +src/pk/asn1/der/ia5/der_encode_ia5_string.o src/pk/asn1/der/ia5/der_length_ia5_string.o \ +src/pk/asn1/der/integer/der_decode_integer.o src/pk/asn1/der/integer/der_encode_integer.o \ +src/pk/asn1/der/integer/der_length_integer.o \ +src/pk/asn1/der/object_identifier/der_decode_object_identifier.o \ +src/pk/asn1/der/object_identifier/der_encode_object_identifier.o \ +src/pk/asn1/der/object_identifier/der_length_object_identifier.o \ +src/pk/asn1/der/octet/der_decode_octet_string.o src/pk/asn1/der/octet/der_encode_octet_string.o \ +src/pk/asn1/der/octet/der_length_octet_string.o \ +src/pk/asn1/der/printable_string/der_decode_printable_string.o \ +src/pk/asn1/der/printable_string/der_encode_printable_string.o \ +src/pk/asn1/der/printable_string/der_length_printable_string.o \ +src/pk/asn1/der/sequence/der_decode_sequence.o src/pk/asn1/der/sequence/der_decode_sequence_multi.o \ +src/pk/asn1/der/sequence/der_encode_sequence.o src/pk/asn1/der/sequence/der_encode_sequence_multi.o \ +src/pk/asn1/der/sequence/der_length_sequence.o \ +src/pk/asn1/der/short_integer/der_decode_short_integer.o \ +src/pk/asn1/der/short_integer/der_encode_short_integer.o \ +src/pk/asn1/der/short_integer/der_length_short_integer.o src/pk/asn1/der/utctime/der_decode_utctime.o \ +src/pk/asn1/der/utctime/der_encode_utctime.o src/pk/asn1/der/utctime/der_length_utctime.o \ +src/pk/dh/dh.o src/pk/dsa/dsa_export.o src/pk/dsa/dsa_free.o src/pk/dsa/dsa_import.o \ +src/pk/dsa/dsa_make_key.o src/pk/dsa/dsa_sign_hash.o src/pk/dsa/dsa_verify_hash.o \ +src/pk/dsa/dsa_verify_key.o src/pk/ecc/ecc.o src/pk/packet_store_header.o src/pk/packet_valid_header.o \ +src/pk/pkcs1/pkcs_1_i2osp.o src/pk/pkcs1/pkcs_1_mgf1.o src/pk/pkcs1/pkcs_1_oaep_decode.o \ +src/pk/pkcs1/pkcs_1_oaep_encode.o src/pk/pkcs1/pkcs_1_os2ip.o src/pk/pkcs1/pkcs_1_pss_decode.o \ +src/pk/pkcs1/pkcs_1_pss_encode.o src/pk/rsa/rsa_decrypt_key.o src/pk/rsa/rsa_encrypt_key.o \ src/pk/rsa/rsa_export.o src/pk/rsa/rsa_exptmod.o src/pk/rsa/rsa_free.o src/pk/rsa/rsa_import.o \ -src/pk/rsa/rsa_make_key.o src/pk/rsa/rsa_sign_hash.o src/pk/rsa/rsa_v15_decrypt_key.o \ -src/pk/rsa/rsa_v15_encrypt_key.o src/pk/rsa/rsa_v15_sign_hash.o src/pk/rsa/rsa_v15_verify_hash.o \ -src/pk/rsa/rsa_verify_hash.o src/prngs/fortuna.o src/prngs/rc4.o src/prngs/rng_get_bytes.o \ -src/prngs/rng_make_prng.o src/prngs/sober128.o src/prngs/sprng.o src/prngs/yarrow.o - -HEADERS=src/headers/tommath_superclass.h src/headers/tomcrypt_cfg.h \ -src/headers/tomcrypt_mac.h src/headers/tomcrypt_macros.h \ -src/headers/tomcrypt_custom.h src/headers/tomcrypt_argchk.h \ -src/headers/tomcrypt_cipher.h src/headers/tomcrypt_pk.h \ -src/headers/tommath_class.h src/headers/ltc_tommath.h src/headers/tomcrypt_hash.h \ -src/headers/tomcrypt_misc.h src/headers/tomcrypt.h src/headers/tomcrypt_pkcs.h \ -src/headers/tomcrypt_prng.h testprof/tomcrypt_test.h +src/pk/rsa/rsa_make_key.o src/pk/rsa/rsa_sign_hash.o src/pk/rsa/rsa_verify_hash.o src/prngs/fortuna.o \ +src/prngs/rc4.o src/prngs/rng_get_bytes.o src/prngs/rng_make_prng.o src/prngs/sober128.o \ +src/prngs/sprng.o src/prngs/yarrow.o + +HEADERS=src/headers/tommath_superclass.h src/headers/tomcrypt_cfg.h src/headers/tomcrypt_mac.h \ +src/headers/tomcrypt_macros.h src/headers/tomcrypt_custom.h src/headers/tomcrypt_argchk.h \ +src/headers/tomcrypt_cipher.h src/headers/tomcrypt_pk.h src/headers/tommath_class.h \ +src/headers/ltc_tommath.h src/headers/tomcrypt_hash.h src/headers/tomcrypt_misc.h \ +src/headers/tomcrypt.h src/headers/tomcrypt_pkcs.h src/headers/tomcrypt_prng.h testprof/tomcrypt_test.h #ciphers come in two flavours... enc+dec and enc aes_enc.o: aes.c aes_tab.c @@ -214,4 +234,9 @@ install: library install -d -g root -o root $(DESTDIR)$(LIBPATH) install -d -g root -o root $(DESTDIR)$(INCPATH) install -g root -o root $(LIBNAME) $(DESTDIR)$(LIBPATH) + install -g root -o root $(LIBTEST) $(DESTDIR)$(LIBPATH) install -g root -o root $(HEADERS) $(DESTDIR)$(INCPATH) + +# $Source: /cvs/libtom/libtomcrypt/makefile.icc,v $ +# $Revision: 1.33 $ +# $Date: 2005/06/19 18:22:31 $ diff --git a/makefile.msvc b/makefile.msvc index 16d4b8d2..ae010794 100644 --- a/makefile.msvc +++ b/makefile.msvc @@ -57,29 +57,43 @@ src/modes/ctr/ctr_getiv.obj src/modes/ctr/ctr_setiv.obj src/modes/ctr/ctr_start. src/modes/ecb/ecb_decrypt.obj src/modes/ecb/ecb_done.obj src/modes/ecb/ecb_encrypt.obj \ src/modes/ecb/ecb_start.obj src/modes/ofb/ofb_decrypt.obj src/modes/ofb/ofb_done.obj \ src/modes/ofb/ofb_encrypt.obj src/modes/ofb/ofb_getiv.obj src/modes/ofb/ofb_setiv.obj \ -src/modes/ofb/ofb_start.obj src/pk/asn1/der/der_decode_integer.obj src/pk/asn1/der/der_encode_integer.obj \ -src/pk/asn1/der/der_get_multi_integer.obj src/pk/asn1/der/der_length_integer.obj \ -src/pk/asn1/der/der_put_multi_integer.obj src/pk/dh/dh.obj src/pk/dsa/dsa_export.obj src/pk/dsa/dsa_free.obj \ -src/pk/dsa/dsa_import.obj src/pk/dsa/dsa_make_key.obj src/pk/dsa/dsa_sign_hash.obj \ -src/pk/dsa/dsa_verify_hash.obj src/pk/dsa/dsa_verify_key.obj src/pk/ecc/ecc.obj src/pk/packet_store_header.obj \ -src/pk/packet_valid_header.obj src/pk/pkcs1/pkcs_1_i2osp.obj src/pk/pkcs1/pkcs_1_mgf1.obj \ -src/pk/pkcs1/pkcs_1_oaep_decode.obj src/pk/pkcs1/pkcs_1_oaep_encode.obj src/pk/pkcs1/pkcs_1_os2ip.obj \ -src/pk/pkcs1/pkcs_1_pss_decode.obj src/pk/pkcs1/pkcs_1_pss_encode.obj src/pk/pkcs1/pkcs_1_v15_es_decode.obj \ -src/pk/pkcs1/pkcs_1_v15_es_encode.obj src/pk/pkcs1/pkcs_1_v15_sa_decode.obj \ -src/pk/pkcs1/pkcs_1_v15_sa_encode.obj src/pk/rsa/rsa_decrypt_key.obj src/pk/rsa/rsa_encrypt_key.obj \ +src/modes/ofb/ofb_start.obj src/pk/asn1/der/bit/der_decode_bit_string.obj \ +src/pk/asn1/der/bit/der_encode_bit_string.obj src/pk/asn1/der/bit/der_length_bit_string.obj \ +src/pk/asn1/der/choice/der_decode_choice.obj src/pk/asn1/der/ia5/der_decode_ia5_string.obj \ +src/pk/asn1/der/ia5/der_encode_ia5_string.obj src/pk/asn1/der/ia5/der_length_ia5_string.obj \ +src/pk/asn1/der/integer/der_decode_integer.obj src/pk/asn1/der/integer/der_encode_integer.obj \ +src/pk/asn1/der/integer/der_length_integer.obj \ +src/pk/asn1/der/object_identifier/der_decode_object_identifier.obj \ +src/pk/asn1/der/object_identifier/der_encode_object_identifier.obj \ +src/pk/asn1/der/object_identifier/der_length_object_identifier.obj \ +src/pk/asn1/der/octet/der_decode_octet_string.obj src/pk/asn1/der/octet/der_encode_octet_string.obj \ +src/pk/asn1/der/octet/der_length_octet_string.obj \ +src/pk/asn1/der/printable_string/der_decode_printable_string.obj \ +src/pk/asn1/der/printable_string/der_encode_printable_string.obj \ +src/pk/asn1/der/printable_string/der_length_printable_string.obj \ +src/pk/asn1/der/sequence/der_decode_sequence.obj src/pk/asn1/der/sequence/der_decode_sequence_multi.obj \ +src/pk/asn1/der/sequence/der_encode_sequence.obj src/pk/asn1/der/sequence/der_encode_sequence_multi.obj \ +src/pk/asn1/der/sequence/der_length_sequence.obj \ +src/pk/asn1/der/short_integer/der_decode_short_integer.obj \ +src/pk/asn1/der/short_integer/der_encode_short_integer.obj \ +src/pk/asn1/der/short_integer/der_length_short_integer.obj src/pk/asn1/der/utctime/der_decode_utctime.obj \ +src/pk/asn1/der/utctime/der_encode_utctime.obj src/pk/asn1/der/utctime/der_length_utctime.obj \ +src/pk/dh/dh.obj src/pk/dsa/dsa_export.obj src/pk/dsa/dsa_free.obj src/pk/dsa/dsa_import.obj \ +src/pk/dsa/dsa_make_key.obj src/pk/dsa/dsa_sign_hash.obj src/pk/dsa/dsa_verify_hash.obj \ +src/pk/dsa/dsa_verify_key.obj src/pk/ecc/ecc.obj src/pk/packet_store_header.obj src/pk/packet_valid_header.obj \ +src/pk/pkcs1/pkcs_1_i2osp.obj src/pk/pkcs1/pkcs_1_mgf1.obj src/pk/pkcs1/pkcs_1_oaep_decode.obj \ +src/pk/pkcs1/pkcs_1_oaep_encode.obj src/pk/pkcs1/pkcs_1_os2ip.obj src/pk/pkcs1/pkcs_1_pss_decode.obj \ +src/pk/pkcs1/pkcs_1_pss_encode.obj src/pk/rsa/rsa_decrypt_key.obj src/pk/rsa/rsa_encrypt_key.obj \ src/pk/rsa/rsa_export.obj src/pk/rsa/rsa_exptmod.obj src/pk/rsa/rsa_free.obj src/pk/rsa/rsa_import.obj \ -src/pk/rsa/rsa_make_key.obj src/pk/rsa/rsa_sign_hash.obj src/pk/rsa/rsa_v15_decrypt_key.obj \ -src/pk/rsa/rsa_v15_encrypt_key.obj src/pk/rsa/rsa_v15_sign_hash.obj src/pk/rsa/rsa_v15_verify_hash.obj \ -src/pk/rsa/rsa_verify_hash.obj src/prngs/fortuna.obj src/prngs/rc4.obj src/prngs/rng_get_bytes.obj \ -src/prngs/rng_make_prng.obj src/prngs/sober128.obj src/prngs/sprng.obj src/prngs/yarrow.obj +src/pk/rsa/rsa_make_key.obj src/pk/rsa/rsa_sign_hash.obj src/pk/rsa/rsa_verify_hash.obj src/prngs/fortuna.obj \ +src/prngs/rc4.obj src/prngs/rng_get_bytes.obj src/prngs/rng_make_prng.obj src/prngs/sober128.obj \ +src/prngs/sprng.obj src/prngs/yarrow.obj -HEADERS=src/headers/tommath_superclass.h src/headers/tomcrypt_cfg.h \ -src/headers/tomcrypt_mac.h src/headers/tomcrypt_macros.h \ -src/headers/tomcrypt_custom.h src/headers/tomcrypt_argchk.h \ -src/headers/tomcrypt_cipher.h src/headers/tomcrypt_pk.h \ -src/headers/tommath_class.h src/headers/ltc_tommath.h src/headers/tomcrypt_hash.h \ -src/headers/tomcrypt_misc.h src/headers/tomcrypt.h src/headers/tomcrypt_pkcs.h \ -src/headers/tomcrypt_prng.h testprof/tomcrypt_test.h +HEADERS=src/headers/tommath_superclass.h src/headers/tomcrypt_cfg.h src/headers/tomcrypt_mac.h \ +src/headers/tomcrypt_macros.h src/headers/tomcrypt_custom.h src/headers/tomcrypt_argchk.h \ +src/headers/tomcrypt_cipher.h src/headers/tomcrypt_pk.h src/headers/tommath_class.h \ +src/headers/ltc_tommath.h src/headers/tomcrypt_hash.h src/headers/tomcrypt_misc.h \ +src/headers/tomcrypt.h src/headers/tomcrypt_pkcs.h src/headers/tomcrypt_prng.h testprof/tomcrypt_test.h #ciphers come in two flavours... enc+dec and enc src/ciphers/aes/aes_enc.obj: src/ciphers/aes/aes.c src/ciphers/aes/aes_tab.c @@ -102,3 +116,7 @@ test: demos/test.c library timing: demos/timing.c library cl $(CFLAGS) demos/timing.c testprof/tomcrypt_prof.lib tomcrypt.lib advapi32.lib + +# $Source: /cvs/libtom/libtomcrypt/makefile.msvc,v $ +# $Revision: 1.15 $ +# $Date: 2005/06/27 12:37:06 $ diff --git a/makefile.shared b/makefile.shared index 207ceeaa..62cc87bb 100644 --- a/makefile.shared +++ b/makefile.shared @@ -6,7 +6,7 @@ # Tom St Denis # The version -VERSION=0:102 +VERSION=0:105 # Compiler and Linker Names CC=libtool --mode=compile gcc @@ -18,14 +18,18 @@ CFLAGS += -c -I./src/headers/ -Wall -Wsign-compare -W -Wshadow #CFLAGS += -Wsystem-headers -Wdeclaration-after-statement -Wbad-function-cast -Wcast-align -Wstrict-prototypes -Wmissing-prototypes \ # -Wmissing-declarations -Wpointer-arith +ifndef IGNORE_SPEED + # optimize for SPEED -CFLAGS += -O3 -funroll-all-loops +CFLAGS += -O3 -funroll-loops # add -fomit-frame-pointer. hinders debugging! CFLAGS += -fomit-frame-pointer # optimize for SIZE -#CFLAGS += -Os +#CFLAGS += -Os -DLTC_SMALL_CODE + +endif # compile for DEBUGING (required for ccmalloc checking!!!) #CFLAGS += -g3 @@ -45,7 +49,6 @@ TV=tv_gen TEST=test TIMING=timing - #LIBPATH-The directory for libtomcrypt to be installed to. #INCPATH-The directory to install the header files for libtomcrypt. #DATAPATH-The directory to install the pdf docs. @@ -55,16 +58,27 @@ INCPATH=/usr/include DATAPATH=/usr/share/doc/libtomcrypt/pdf #Who do we install as? +ifdef INSTALL_USER +USER=$(INSTALL_USER) +else USER=root -GROUP=wheel +endif + +ifdef INSTALL_GROUP +GROUP=$(INSTALL_GROUP) +else +GROUP=wheel +endif #List of objects to compile. #Leave MPI built-in or force developer to link against libtommath? +ifndef IGNORE_MPI MPIOBJECT=src/misc/mpi/mpi.o - +else #If you don't want mpi.o then add this -#MPISHARED=$(LIBPATH)/libtommath.la +MPISHARED=$(LIBPATH)/libtommath.la +endif OBJECTS=src/ciphers/aes/aes_enc.o $(MPIOBJECT) src/ciphers/aes/aes.o src/ciphers/anubis.o \ src/ciphers/blowfish.o src/ciphers/cast5.o src/ciphers/des.o src/ciphers/khazad.o src/ciphers/noekeon.o \ @@ -115,29 +129,43 @@ src/modes/ctr/ctr_getiv.o src/modes/ctr/ctr_setiv.o src/modes/ctr/ctr_start.o \ src/modes/ecb/ecb_decrypt.o src/modes/ecb/ecb_done.o src/modes/ecb/ecb_encrypt.o \ src/modes/ecb/ecb_start.o src/modes/ofb/ofb_decrypt.o src/modes/ofb/ofb_done.o \ src/modes/ofb/ofb_encrypt.o src/modes/ofb/ofb_getiv.o src/modes/ofb/ofb_setiv.o \ -src/modes/ofb/ofb_start.o src/pk/asn1/der/der_decode_integer.o src/pk/asn1/der/der_encode_integer.o \ -src/pk/asn1/der/der_get_multi_integer.o src/pk/asn1/der/der_length_integer.o \ -src/pk/asn1/der/der_put_multi_integer.o src/pk/dh/dh.o src/pk/dsa/dsa_export.o src/pk/dsa/dsa_free.o \ -src/pk/dsa/dsa_import.o src/pk/dsa/dsa_make_key.o src/pk/dsa/dsa_sign_hash.o \ -src/pk/dsa/dsa_verify_hash.o src/pk/dsa/dsa_verify_key.o src/pk/ecc/ecc.o src/pk/packet_store_header.o \ -src/pk/packet_valid_header.o src/pk/pkcs1/pkcs_1_i2osp.o src/pk/pkcs1/pkcs_1_mgf1.o \ -src/pk/pkcs1/pkcs_1_oaep_decode.o src/pk/pkcs1/pkcs_1_oaep_encode.o src/pk/pkcs1/pkcs_1_os2ip.o \ -src/pk/pkcs1/pkcs_1_pss_decode.o src/pk/pkcs1/pkcs_1_pss_encode.o src/pk/pkcs1/pkcs_1_v15_es_decode.o \ -src/pk/pkcs1/pkcs_1_v15_es_encode.o src/pk/pkcs1/pkcs_1_v15_sa_decode.o \ -src/pk/pkcs1/pkcs_1_v15_sa_encode.o src/pk/rsa/rsa_decrypt_key.o src/pk/rsa/rsa_encrypt_key.o \ +src/modes/ofb/ofb_start.o src/pk/asn1/der/bit/der_decode_bit_string.o \ +src/pk/asn1/der/bit/der_encode_bit_string.o src/pk/asn1/der/bit/der_length_bit_string.o \ +src/pk/asn1/der/choice/der_decode_choice.o src/pk/asn1/der/ia5/der_decode_ia5_string.o \ +src/pk/asn1/der/ia5/der_encode_ia5_string.o src/pk/asn1/der/ia5/der_length_ia5_string.o \ +src/pk/asn1/der/integer/der_decode_integer.o src/pk/asn1/der/integer/der_encode_integer.o \ +src/pk/asn1/der/integer/der_length_integer.o \ +src/pk/asn1/der/object_identifier/der_decode_object_identifier.o \ +src/pk/asn1/der/object_identifier/der_encode_object_identifier.o \ +src/pk/asn1/der/object_identifier/der_length_object_identifier.o \ +src/pk/asn1/der/octet/der_decode_octet_string.o src/pk/asn1/der/octet/der_encode_octet_string.o \ +src/pk/asn1/der/octet/der_length_octet_string.o \ +src/pk/asn1/der/printable_string/der_decode_printable_string.o \ +src/pk/asn1/der/printable_string/der_encode_printable_string.o \ +src/pk/asn1/der/printable_string/der_length_printable_string.o \ +src/pk/asn1/der/sequence/der_decode_sequence.o src/pk/asn1/der/sequence/der_decode_sequence_multi.o \ +src/pk/asn1/der/sequence/der_encode_sequence.o src/pk/asn1/der/sequence/der_encode_sequence_multi.o \ +src/pk/asn1/der/sequence/der_length_sequence.o \ +src/pk/asn1/der/short_integer/der_decode_short_integer.o \ +src/pk/asn1/der/short_integer/der_encode_short_integer.o \ +src/pk/asn1/der/short_integer/der_length_short_integer.o src/pk/asn1/der/utctime/der_decode_utctime.o \ +src/pk/asn1/der/utctime/der_encode_utctime.o src/pk/asn1/der/utctime/der_length_utctime.o \ +src/pk/dh/dh.o src/pk/dsa/dsa_export.o src/pk/dsa/dsa_free.o src/pk/dsa/dsa_import.o \ +src/pk/dsa/dsa_make_key.o src/pk/dsa/dsa_sign_hash.o src/pk/dsa/dsa_verify_hash.o \ +src/pk/dsa/dsa_verify_key.o src/pk/ecc/ecc.o src/pk/packet_store_header.o src/pk/packet_valid_header.o \ +src/pk/pkcs1/pkcs_1_i2osp.o src/pk/pkcs1/pkcs_1_mgf1.o src/pk/pkcs1/pkcs_1_oaep_decode.o \ +src/pk/pkcs1/pkcs_1_oaep_encode.o src/pk/pkcs1/pkcs_1_os2ip.o src/pk/pkcs1/pkcs_1_pss_decode.o \ +src/pk/pkcs1/pkcs_1_pss_encode.o src/pk/rsa/rsa_decrypt_key.o src/pk/rsa/rsa_encrypt_key.o \ src/pk/rsa/rsa_export.o src/pk/rsa/rsa_exptmod.o src/pk/rsa/rsa_free.o src/pk/rsa/rsa_import.o \ -src/pk/rsa/rsa_make_key.o src/pk/rsa/rsa_sign_hash.o src/pk/rsa/rsa_v15_decrypt_key.o \ -src/pk/rsa/rsa_v15_encrypt_key.o src/pk/rsa/rsa_v15_sign_hash.o src/pk/rsa/rsa_v15_verify_hash.o \ -src/pk/rsa/rsa_verify_hash.o src/prngs/fortuna.o src/prngs/rc4.o src/prngs/rng_get_bytes.o \ -src/prngs/rng_make_prng.o src/prngs/sober128.o src/prngs/sprng.o src/prngs/yarrow.o - -HEADERS=src/headers/tommath_superclass.h src/headers/tomcrypt_cfg.h \ -src/headers/tomcrypt_mac.h src/headers/tomcrypt_macros.h \ -src/headers/tomcrypt_custom.h src/headers/tomcrypt_argchk.h \ -src/headers/tomcrypt_cipher.h src/headers/tomcrypt_pk.h \ -src/headers/tommath_class.h src/headers/ltc_tommath.h src/headers/tomcrypt_hash.h \ -src/headers/tomcrypt_misc.h src/headers/tomcrypt.h src/headers/tomcrypt_pkcs.h \ -src/headers/tomcrypt_prng.h testprof/tomcrypt_test.h +src/pk/rsa/rsa_make_key.o src/pk/rsa/rsa_sign_hash.o src/pk/rsa/rsa_verify_hash.o src/prngs/fortuna.o \ +src/prngs/rc4.o src/prngs/rng_get_bytes.o src/prngs/rng_make_prng.o src/prngs/sober128.o \ +src/prngs/sprng.o src/prngs/yarrow.o + +HEADERS=src/headers/tommath_superclass.h src/headers/tomcrypt_cfg.h src/headers/tomcrypt_mac.h \ +src/headers/tomcrypt_macros.h src/headers/tomcrypt_custom.h src/headers/tomcrypt_argchk.h \ +src/headers/tomcrypt_cipher.h src/headers/tomcrypt_pk.h src/headers/tommath_class.h \ +src/headers/ltc_tommath.h src/headers/tomcrypt_hash.h src/headers/tomcrypt_misc.h \ +src/headers/tomcrypt.h src/headers/tomcrypt_pkcs.h src/headers/tomcrypt_prng.h testprof/tomcrypt_test.h TESTOBJECTS=demos/test.o HASHOBJECTS=demos/hashsum.o @@ -164,7 +192,7 @@ src/hashes/sha2/sha512.o: src/hashes/sha2/sha512.c src/hashes/sha2/sha384.c src/hashes/sha2/sha256.o: src/hashes/sha2/sha256.c src/hashes/sha2/sha224.c #This rule makes the libtomcrypt library. -library: $(LIBTEST) $(LIBNAME) +library: $(LIBNAME) $(LIBTEST): cd testprof ; CFLAGS="$(CFLAGS)" GROUP=$(GROUP) USER=$(USER) VERSION=$(VERSION) LIBPATH=$(LIBPATH) LIBNAME=$(LIBTEST) make -f makefile.shared @@ -180,19 +208,22 @@ $(LIBNAME): $(OBJECTS) #This rule makes the hash program included with libtomcrypt hashsum: library gcc $(CFLAGS) demos/hashsum.c -o hashsum.o - gcc -o hashsum hashsum.o -ltomcrypt_prof -ltomcrypt $(MPISHARED) + gcc -o hashsum hashsum.o -ltomcrypt $(MPISHARED) #makes the crypt program crypt: library gcc $(CFLAGS) demos/encrypt.c -o encrypt.o - gcc -o crypt encrypt.o -ltomcrypt_prof -ltomcrypt $(MPISHARED) + gcc -o crypt encrypt.o -ltomcrypt $(MPISHARED) tv_gen: library $(TVS) - gcc -o tv_gen $(TVS) -ltomcrypt_prof -ltomcrypt $(MPISHARED) + gcc -o tv_gen $(TVS) -ltomcrypt $(MPISHARED) -test: library $(TESTS) +test: library $(LIBTEST) $(TESTS) gcc -o $(TEST) $(TESTS) -ltomcrypt_prof -ltomcrypt $(MPISHARED) -timing: library $(TIMINGS) +timing: library $(LIBTEST) $(TIMINGS) gcc -o $(TIMING) $(TIMINGS) -ltomcrypt_prof -ltomcrypt $(MPISHARED) +# $Source: /cvs/libtom/libtomcrypt/makefile.shared,v $ +# $Revision: 1.19 $ +# $Date: 2005/06/27 12:37:06 $ diff --git a/mess.sh b/mess.sh new file mode 100644 index 00000000..bf639ce3 --- /dev/null +++ b/mess.sh @@ -0,0 +1,4 @@ +#!/bin/bash +if cvs log $1 >/dev/null 2>/dev/null; then exit 0; else echo "$1 shouldn't be here" ; exit 1; fi + + diff --git a/notes/etc/saferp_optimizer.c b/notes/etc/saferp_optimizer.c index 664661ad..32de878b 100644 --- a/notes/etc/saferp_optimizer.c +++ b/notes/etc/saferp_optimizer.c @@ -171,3 +171,7 @@ printf(" }\n}\n\n"); return 0; } + +/* $Source: /cvs/libtom/libtomcrypt/notes/etc/saferp_optimizer.c,v $ */ +/* $Revision: 1.2 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/notes/etc/whirlgen.c b/notes/etc/whirlgen.c index 2880d3f5..c06687e3 100644 --- a/notes/etc/whirlgen.c +++ b/notes/etc/whirlgen.c @@ -89,3 +89,7 @@ int main(void) } + +/* $Source: /cvs/libtom/libtomcrypt/notes/etc/whirlgen.c,v $ */ +/* $Revision: 1.2 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/notes/etc/whirltest.c b/notes/etc/whirltest.c index 9184f770..226e0129 100644 --- a/notes/etc/whirltest.c +++ b/notes/etc/whirltest.c @@ -13,3 +13,7 @@ int main(void) } } + +/* $Source: /cvs/libtom/libtomcrypt/notes/etc/whirltest.c,v $ */ +/* $Revision: 1.2 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/notes/tech0005.txt b/notes/tech0005.txt new file mode 100644 index 00000000..8f393d50 --- /dev/null +++ b/notes/tech0005.txt @@ -0,0 +1,18 @@ +Tech Note 0005 +Minimizing Code Space +Tom St Denis + +Introduction +------------ + +Tweaking... + +You can disable whole classes of algorithms on the command line with the LTC_NO_* defines. From there you can manually turn on what you want to enable. + +The following build with GCC 3.4.3 on an AMD64 box gets you AES, CTR mode, SHA-256, HMAC, Yarrow, full RSA PKCS #1, PKCS #5, ASN.1 DER and MPI in +roughly 80KB of code. + +CFLAGS="-DSC_RSA_1 -DLTC_NO_CIPHERS -DLTC_NO_HASHES -DLTC_NO_PRNGS -DLTC_NO_MACS -DLTC_NO_MODES -DLTC_NO_PK -DRIJNDAEL -DCTR -DSHA256 \ +-DHMAC -DYARROW -DMRSA -DMPI -Os -fomit-frame-pointer" make IGNORE_SPEED=1 + +Neato eh? diff --git a/notes/tech0006.txt b/notes/tech0006.txt new file mode 100644 index 00000000..ecbe8b08 --- /dev/null +++ b/notes/tech0006.txt @@ -0,0 +1,91 @@ +Tech Note 0006 +PK Standards Compliance +Tom St Denis + +RSA +---- + +PKCS #1 compliance. + +Key Format: RSAPublicKey and RSAPrivateKey as per PKCS #1 v2.1 +Encryption: OAEP as per PKCS #1 +Signature : PSS as per PKCS #1 + +DSA +---- + +The NIST DSA algorithm + +Key Format: HomeBrew [see below] +Signature : ANSI X9.62 format [see below]. + +Keys are stored as + +DSAPublicKey ::= SEQUENCE { + publicFlags BIT STRING(1), -- must be 0 + g INTEGER , -- base generator, check that g^q mod p == 1 + -- and that 1 < g < p - 1 + p INTEGER , -- prime modulus + q INTEGER , -- order of sub-group (must be prime) + y INTEGER , -- public key, specifically, g^x mod p, + -- check that y^q mod p == 1 + -- and that 1 < y < p - 1 +} + +DSAPrivateKey ::= SEQUENCE { + publicFlags BIT STRING(1), -- must be 1 + g INTEGER , -- base generator, check that g^q mod p == 1 + -- and that 1 < g < p - 1 + p INTEGER , -- prime modulus + q INTEGER , -- order of sub-group (must be prime) + y INTEGER , -- public key, specifically, g^x mod p, + -- check that y^q mod p == 1 + -- and that 1 < y < p - 1 + x INTEGER -- private key +} + +Signatures are stored as + +DSASignature ::= SEQUENCE { + r, s INTEGER -- signature parameters +} + +ECC +---- + +The ANSI X9.62 and X9.63 algorithms [partial]. Supports all NIST GF(p) curves. + +Key Format : Homebrew [see below, only GF(p) NIST curves supported] +Signature : X9.62 compliant +Encryption : Homebrew [based on X9.63, differs in that the public point is stored as an ECCPublicKey] +Shared Secret: X9.63 compliant + +ECCPublicKey ::= SEQUENCE { + flags BIT STRING(1), -- public/private flag (always zero), + keySize INTEGER, -- Curve size (in bits) divided by eight + -- and rounded down, e.g. 521 => 65 + pubkey.x INTEGER, -- The X co-ordinate of the public key point + pubkey.y INTEGER, -- The Y co-ordinate of the public key point +} + +ECCPrivateKey ::= SEQUENCE { + flags BIT STRING(1), -- public/private flag (always one), + keySize INTEGER, -- Curve size (in bits) divided by eight + -- and rounded down, e.g. 521 => 65 + pubkey.x INTEGER, -- The X co-ordinate of the public key point + pubkey.y INTEGER, -- The Y co-ordinate of the public key point + secret.k INTEGER, -- The secret key scalar +} + +The encryption works by finding the X9.63 shared secret and hashing it. The hash is then simply XOR'ed against the message [which must be at most the size +of the hash digest]. The format of the encrypted text is as follows + +ECCEncrypted ::= SEQUENCE { + hashOID OBJECT IDENTIFIER, -- The OID of the hash used + pubkey OCTET STRING , -- Encapsulation of a random ECCPublicKey + skey OCTET STRING -- The encrypted text (which the hash was XOR'ed against) +} + +% $Source: /cvs/libtom/libtomcrypt/notes/tech0006.txt,v $ +% $Revision: 1.2 $ +% $Date: 2005/06/18 02:26:27 $ diff --git a/parsenames.pl b/parsenames.pl index d6466c5b..761f0362 100644 --- a/parsenames.pl +++ b/parsenames.pl @@ -20,3 +20,7 @@ foreach my $obj (@a) { if ($ARGV[0] eq "HEADERS") { print "testprof/tomcrypt_test.h"; } print "\n\n"; + +# $Source: /cvs/libtom/libtomcrypt/parsenames.pl,v $ +# $Revision: 1.3 $ +# $Date: 2005/05/05 14:49:27 $ diff --git a/run.sh b/run.sh new file mode 100644 index 00000000..b652110f --- /dev/null +++ b/run.sh @@ -0,0 +1,35 @@ +#!/bin/bash +bash build.sh " $1" "$2 -O2" "$3 IGNORE_SPEED=1" +if [ -a testok.txt ] && [ -f testok.txt ]; then + echo +else + echo + echo "Test failed" + exit 1 +fi + +rm -f testok.txt +bash build.sh " $1" "$2 -Os" " $3 IGNORE_SPEED=1 LTC_SMALL=1" +if [ -a testok.txt ] && [ -f testok.txt ]; then + echo +else + echo + echo "Test failed" + exit 1 +fi + +rm -f testok.txt +bash build.sh " $1" " $2" " $3" +if [ -a testok.txt ] && [ -f testok.txt ]; then + echo +else + echo + echo "Test failed" + exit 1 +fi + +exit 0 + +# $Source: /cvs/libtom/libtomcrypt/run.sh,v $ +# $Revision: 1.13 $ +# $Date: 2005/05/11 18:59:53 $ diff --git a/src/ciphers/aes/aes.c b/src/ciphers/aes/aes.c index e698efd7..8c95215c 100644 --- a/src/ciphers/aes/aes.c +++ b/src/ciphers/aes/aes.c @@ -127,7 +127,7 @@ int SETUP(const unsigned char *key, int keylen, int num_rounds, symmetric_key *s #endif LTC_ARGCHK(key != NULL); LTC_ARGCHK(skey != NULL); - + if (keylen != 16 && keylen != 24 && keylen != 32) { return CRYPT_INVALID_KEYSIZE; } @@ -747,3 +747,7 @@ int ECB_KS(int *keysize) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/ciphers/aes/aes.c,v $ */ +/* $Revision: 1.8 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/ciphers/aes/aes_tab.c b/src/ciphers/aes/aes_tab.c index 0ad1dfe0..31d276e9 100644 --- a/src/ciphers/aes/aes_tab.c +++ b/src/ciphers/aes/aes_tab.c @@ -1018,3 +1018,7 @@ static const ulong32 rcon[] = { 0x10000000UL, 0x20000000UL, 0x40000000UL, 0x80000000UL, 0x1B000000UL, 0x36000000UL, /* for 128-bit blocks, Rijndael never uses more than 10 rcon values */ }; + +/* $Source: /cvs/libtom/libtomcrypt/src/ciphers/aes/aes_tab.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/ciphers/anubis.c b/src/ciphers/anubis.c index 7e2af60b..511eac2a 100644 --- a/src/ciphers/anubis.c +++ b/src/ciphers/anubis.c @@ -1548,3 +1548,7 @@ int anubis_keysize(int *keysize) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/ciphers/anubis.c,v $ */ +/* $Revision: 1.7 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/ciphers/blowfish.c b/src/ciphers/blowfish.c index 2f0385d4..35029835 100644 --- a/src/ciphers/blowfish.c +++ b/src/ciphers/blowfish.c @@ -581,3 +581,7 @@ int blowfish_keysize(int *keysize) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/ciphers/blowfish.c,v $ */ +/* $Revision: 1.7 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/ciphers/cast5.c b/src/ciphers/cast5.c index 2b8e4a56..f4b045c5 100644 --- a/src/ciphers/cast5.c +++ b/src/ciphers/cast5.c @@ -709,3 +709,7 @@ int cast5_keysize(int *keysize) } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/ciphers/cast5.c,v $ */ +/* $Revision: 1.7 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/ciphers/des.c b/src/ciphers/des.c index d42c5faa..9c5b59b0 100644 --- a/src/ciphers/des.c +++ b/src/ciphers/des.c @@ -1888,3 +1888,7 @@ int des3_keysize(int *keysize) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/ciphers/des.c,v $ */ +/* $Revision: 1.8 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/ciphers/khazad.c b/src/ciphers/khazad.c index 46269237..d07134ce 100644 --- a/src/ciphers/khazad.c +++ b/src/ciphers/khazad.c @@ -845,3 +845,7 @@ int khazad_keysize(int *keysize) } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/ciphers/khazad.c,v $ */ +/* $Revision: 1.7 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/ciphers/noekeon.c b/src/ciphers/noekeon.c index 194cdbe6..e502dfe5 100644 --- a/src/ciphers/noekeon.c +++ b/src/ciphers/noekeon.c @@ -290,3 +290,7 @@ int noekeon_keysize(int *keysize) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/ciphers/noekeon.c,v $ */ +/* $Revision: 1.7 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/ciphers/rc2.c b/src/ciphers/rc2.c index 6382941b..e91f83a2 100644 --- a/src/ciphers/rc2.c +++ b/src/ciphers/rc2.c @@ -348,3 +348,7 @@ int rc2_keysize(int *keysize) + +/* $Source: /cvs/libtom/libtomcrypt/src/ciphers/rc2.c,v $ */ +/* $Revision: 1.7 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/ciphers/rc5.c b/src/ciphers/rc5.c index 32f666fe..9465ac86 100644 --- a/src/ciphers/rc5.c +++ b/src/ciphers/rc5.c @@ -308,3 +308,7 @@ int rc5_keysize(int *keysize) + +/* $Source: /cvs/libtom/libtomcrypt/src/ciphers/rc5.c,v $ */ +/* $Revision: 1.7 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/ciphers/rc6.c b/src/ciphers/rc6.c index 996c0153..ae6f1143 100644 --- a/src/ciphers/rc6.c +++ b/src/ciphers/rc6.c @@ -337,3 +337,7 @@ int rc6_keysize(int *keysize) #endif /*RC6*/ + +/* $Source: /cvs/libtom/libtomcrypt/src/ciphers/rc6.c,v $ */ +/* $Revision: 1.7 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/ciphers/safer/safer.c b/src/ciphers/safer/safer.c index e6e073ad..bad00a04 100644 --- a/src/ciphers/safer/safer.c +++ b/src/ciphers/safer/safer.c @@ -481,3 +481,7 @@ int safer_sk128_test(void) + +/* $Source: /cvs/libtom/libtomcrypt/src/ciphers/safer/safer.c,v $ */ +/* $Revision: 1.8 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/ciphers/safer/safer_tab.c b/src/ciphers/safer/safer_tab.c index f63ba6cf..47fbd1c1 100644 --- a/src/ciphers/safer/safer_tab.c +++ b/src/ciphers/safer/safer_tab.c @@ -62,3 +62,7 @@ const unsigned char safer_lbox[256] = { #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/ciphers/safer/safer_tab.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/ciphers/safer/saferp.c b/src/ciphers/safer/saferp.c index 17112f43..6d0d5893 100644 --- a/src/ciphers/safer/saferp.c +++ b/src/ciphers/safer/saferp.c @@ -549,3 +549,7 @@ int saferp_keysize(int *keysize) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/ciphers/safer/saferp.c,v $ */ +/* $Revision: 1.7 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/ciphers/skipjack.c b/src/ciphers/skipjack.c index e2431afb..4cb3bf26 100644 --- a/src/ciphers/skipjack.c +++ b/src/ciphers/skipjack.c @@ -329,3 +329,7 @@ int skipjack_keysize(int *keysize) } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/ciphers/skipjack.c,v $ */ +/* $Revision: 1.7 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/ciphers/twofish/twofish.c b/src/ciphers/twofish/twofish.c index 7dbe9b75..61aa9502 100644 --- a/src/ciphers/twofish/twofish.c +++ b/src/ciphers/twofish/twofish.c @@ -576,7 +576,7 @@ void twofish_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_k b = RORc(b ^ (t2 + t1 + k[3]), 1); t2 = g1_func(b, skey); - t1 = g_func(a, key) + t2; + t1 = g_func(a, skey) + t2; c = ROLc(c, 1) ^ (t1 + k[0]); d = RORc(d ^ (t2 + t1 + k[1]), 1); k -= 4; @@ -700,3 +700,7 @@ int twofish_keysize(int *keysize) + +/* $Source: /cvs/libtom/libtomcrypt/src/ciphers/twofish/twofish.c,v $ */ +/* $Revision: 1.8 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/ciphers/twofish/twofish_tab.c b/src/ciphers/twofish/twofish_tab.c index 0bffade7..47d4717f 100644 --- a/src/ciphers/twofish/twofish_tab.c +++ b/src/ciphers/twofish/twofish_tab.c @@ -490,3 +490,7 @@ static const ulong32 rs_tab7[256] = { #endif /* TWOFISH_ALL_TABLES */ #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/ciphers/twofish/twofish_tab.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/ciphers/xtea.c b/src/ciphers/xtea.c index 98546df8..a45a13a9 100644 --- a/src/ciphers/xtea.c +++ b/src/ciphers/xtea.c @@ -201,3 +201,7 @@ int xtea_keysize(int *keysize) + +/* $Source: /cvs/libtom/libtomcrypt/src/ciphers/xtea.c,v $ */ +/* $Revision: 1.7 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/encauth/ccm/ccm_memory.c b/src/encauth/ccm/ccm_memory.c index 34a254d9..48dc4b72 100644 --- a/src/encauth/ccm/ccm_memory.c +++ b/src/encauth/ccm/ccm_memory.c @@ -293,7 +293,6 @@ int ccm_memory(int cipher, #ifdef LTC_CLEAN_STACK zeromem(skey, sizeof(*skey)); - zeromem(B, sizeof(B)); zeromem(PAD, sizeof(PAD)); zeromem(CTRPAD, sizeof(CTRPAD)); #endif @@ -304,3 +303,7 @@ int ccm_memory(int cipher, } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/encauth/ccm/ccm_memory.c,v $ */ +/* $Revision: 1.9 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/encauth/ccm/ccm_test.c b/src/encauth/ccm/ccm_test.c index ee78523c..c33502a4 100644 --- a/src/encauth/ccm/ccm_test.c +++ b/src/encauth/ccm/ccm_test.c @@ -168,3 +168,7 @@ int ccm_test(void) } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/encauth/ccm/ccm_test.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/encauth/eax/eax_addheader.c b/src/encauth/eax/eax_addheader.c index 30040252..cfb325df 100644 --- a/src/encauth/eax/eax_addheader.c +++ b/src/encauth/eax/eax_addheader.c @@ -32,3 +32,7 @@ int eax_addheader(eax_state *eax, const unsigned char *header, } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/encauth/eax/eax_addheader.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/encauth/eax/eax_decrypt.c b/src/encauth/eax/eax_decrypt.c index 8711d2d1..13e23cc6 100644 --- a/src/encauth/eax/eax_decrypt.c +++ b/src/encauth/eax/eax_decrypt.c @@ -44,3 +44,7 @@ int eax_decrypt(eax_state *eax, const unsigned char *ct, unsigned char *pt, } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/encauth/eax/eax_decrypt.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/encauth/eax/eax_decrypt_verify_memory.c b/src/encauth/eax/eax_decrypt_verify_memory.c index 3fcab46b..d6d72ab8 100644 --- a/src/encauth/eax/eax_decrypt_verify_memory.c +++ b/src/encauth/eax/eax_decrypt_verify_memory.c @@ -102,3 +102,7 @@ LBL_ERR: } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/encauth/eax/eax_decrypt_verify_memory.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/encauth/eax/eax_done.c b/src/encauth/eax/eax_done.c index 1d436517..10e2c231 100644 --- a/src/encauth/eax/eax_done.c +++ b/src/encauth/eax/eax_done.c @@ -88,3 +88,7 @@ LBL_ERR: } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/encauth/eax/eax_done.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/encauth/eax/eax_encrypt.c b/src/encauth/eax/eax_encrypt.c index da23a8ce..a6465887 100644 --- a/src/encauth/eax/eax_encrypt.c +++ b/src/encauth/eax/eax_encrypt.c @@ -45,3 +45,7 @@ int eax_encrypt(eax_state *eax, const unsigned char *pt, unsigned char *ct, #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/encauth/eax/eax_encrypt.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/encauth/eax/eax_encrypt_authenticate_memory.c b/src/encauth/eax/eax_encrypt_authenticate_memory.c index 8a601cf8..97606165 100644 --- a/src/encauth/eax/eax_encrypt_authenticate_memory.c +++ b/src/encauth/eax/eax_encrypt_authenticate_memory.c @@ -76,3 +76,7 @@ LBL_ERR: } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/encauth/eax/eax_encrypt_authenticate_memory.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/encauth/eax/eax_init.c b/src/encauth/eax/eax_init.c index 5a20db04..942b25f4 100644 --- a/src/encauth/eax/eax_init.c +++ b/src/encauth/eax/eax_init.c @@ -108,11 +108,9 @@ int eax_init(eax_state *eax, int cipher, /* note we don't finish the headeromac, this allows us to add more header later */ /* setup the CTR mode */ - if ((err = ctr_start(cipher, eax->N, key, keylen, 0, &eax->ctr)) != CRYPT_OK) { + if ((err = ctr_start(cipher, eax->N, key, keylen, 0, CTR_COUNTER_BIG_ENDIAN, &eax->ctr)) != CRYPT_OK) { goto LBL_ERR; } - /* use big-endian counter */ - eax->ctr.mode = 1; /* setup the OMAC for the ciphertext */ if ((err = omac_init(&eax->ctomac, cipher, key, keylen)) != CRYPT_OK) { @@ -140,3 +138,7 @@ LBL_ERR: } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/encauth/eax/eax_init.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/encauth/eax/eax_test.c b/src/encauth/eax/eax_test.c index 777dea1a..b08f5ab7 100644 --- a/src/encauth/eax/eax_test.c +++ b/src/encauth/eax/eax_test.c @@ -276,3 +276,7 @@ int eax_test(void) } #endif /* EAX_MODE */ + +/* $Source: /cvs/libtom/libtomcrypt/src/encauth/eax/eax_test.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/encauth/gcm/gcm_add_aad.c b/src/encauth/gcm/gcm_add_aad.c index cdcc0d90..03cb279c 100644 --- a/src/encauth/gcm/gcm_add_aad.c +++ b/src/encauth/gcm/gcm_add_aad.c @@ -27,8 +27,11 @@ int gcm_add_aad(gcm_state *gcm, const unsigned char *adata, unsigned long adatalen) { - unsigned long x, y; + unsigned long x; int err; +#ifdef LTC_FAST + unsigned long y; +#endif LTC_ARGCHK(gcm != NULL); if (adatalen > 0) { @@ -115,3 +118,7 @@ int gcm_add_aad(gcm_state *gcm, } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/encauth/gcm/gcm_add_aad.c,v $ */ +/* $Revision: 1.14 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/encauth/gcm/gcm_add_iv.c b/src/encauth/gcm/gcm_add_iv.c index 7faf4c02..107cf357 100644 --- a/src/encauth/gcm/gcm_add_iv.c +++ b/src/encauth/gcm/gcm_add_iv.c @@ -88,3 +88,7 @@ int gcm_add_iv(gcm_state *gcm, #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/encauth/gcm/gcm_add_iv.c,v $ */ +/* $Revision: 1.6 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/encauth/gcm/gcm_done.c b/src/encauth/gcm/gcm_done.c index 8b3a6ddd..96ef7f34 100644 --- a/src/encauth/gcm/gcm_done.c +++ b/src/encauth/gcm/gcm_done.c @@ -75,3 +75,7 @@ int gcm_done(gcm_state *gcm, #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/encauth/gcm/gcm_done.c,v $ */ +/* $Revision: 1.7 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/encauth/gcm/gcm_gf_mult.c b/src/encauth/gcm/gcm_gf_mult.c index a870c910..06db22b6 100644 --- a/src/encauth/gcm/gcm_gf_mult.c +++ b/src/encauth/gcm/gcm_gf_mult.c @@ -31,6 +31,7 @@ static void gcm_rightshift(unsigned char *a) static const unsigned char mask[] = { 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 }; static const unsigned char poly[] = { 0x00, 0xE1 }; + /** GCM GF multiplier (internal use only) @param a First value @@ -87,3 +88,7 @@ void gcm_mult_h(gcm_state *gcm, unsigned char *I) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/encauth/gcm/gcm_gf_mult.c,v $ */ +/* $Revision: 1.16 $ */ +/* $Date: 2005/05/21 14:33:42 $ */ diff --git a/src/encauth/gcm/gcm_init.c b/src/encauth/gcm/gcm_init.c index 35a5ab8f..249b61da 100644 --- a/src/encauth/gcm/gcm_init.c +++ b/src/encauth/gcm/gcm_init.c @@ -17,6 +17,46 @@ #ifdef GCM_MODE +#ifdef GCM_TABLES + +/* this is x*2^128 mod p(x) ... the results are 16 bytes each stored in a packed format. Since only the + * lower 16 bits are not zero'ed I removed the upper 14 bytes */ +static const unsigned char gcm_shift_table[256*2] = { +0x00, 0x00, 0x01, 0xc2, 0x03, 0x84, 0x02, 0x46, 0x07, 0x08, 0x06, 0xca, 0x04, 0x8c, 0x05, 0x4e, +0x0e, 0x10, 0x0f, 0xd2, 0x0d, 0x94, 0x0c, 0x56, 0x09, 0x18, 0x08, 0xda, 0x0a, 0x9c, 0x0b, 0x5e, +0x1c, 0x20, 0x1d, 0xe2, 0x1f, 0xa4, 0x1e, 0x66, 0x1b, 0x28, 0x1a, 0xea, 0x18, 0xac, 0x19, 0x6e, +0x12, 0x30, 0x13, 0xf2, 0x11, 0xb4, 0x10, 0x76, 0x15, 0x38, 0x14, 0xfa, 0x16, 0xbc, 0x17, 0x7e, +0x38, 0x40, 0x39, 0x82, 0x3b, 0xc4, 0x3a, 0x06, 0x3f, 0x48, 0x3e, 0x8a, 0x3c, 0xcc, 0x3d, 0x0e, +0x36, 0x50, 0x37, 0x92, 0x35, 0xd4, 0x34, 0x16, 0x31, 0x58, 0x30, 0x9a, 0x32, 0xdc, 0x33, 0x1e, +0x24, 0x60, 0x25, 0xa2, 0x27, 0xe4, 0x26, 0x26, 0x23, 0x68, 0x22, 0xaa, 0x20, 0xec, 0x21, 0x2e, +0x2a, 0x70, 0x2b, 0xb2, 0x29, 0xf4, 0x28, 0x36, 0x2d, 0x78, 0x2c, 0xba, 0x2e, 0xfc, 0x2f, 0x3e, +0x70, 0x80, 0x71, 0x42, 0x73, 0x04, 0x72, 0xc6, 0x77, 0x88, 0x76, 0x4a, 0x74, 0x0c, 0x75, 0xce, +0x7e, 0x90, 0x7f, 0x52, 0x7d, 0x14, 0x7c, 0xd6, 0x79, 0x98, 0x78, 0x5a, 0x7a, 0x1c, 0x7b, 0xde, +0x6c, 0xa0, 0x6d, 0x62, 0x6f, 0x24, 0x6e, 0xe6, 0x6b, 0xa8, 0x6a, 0x6a, 0x68, 0x2c, 0x69, 0xee, +0x62, 0xb0, 0x63, 0x72, 0x61, 0x34, 0x60, 0xf6, 0x65, 0xb8, 0x64, 0x7a, 0x66, 0x3c, 0x67, 0xfe, +0x48, 0xc0, 0x49, 0x02, 0x4b, 0x44, 0x4a, 0x86, 0x4f, 0xc8, 0x4e, 0x0a, 0x4c, 0x4c, 0x4d, 0x8e, +0x46, 0xd0, 0x47, 0x12, 0x45, 0x54, 0x44, 0x96, 0x41, 0xd8, 0x40, 0x1a, 0x42, 0x5c, 0x43, 0x9e, +0x54, 0xe0, 0x55, 0x22, 0x57, 0x64, 0x56, 0xa6, 0x53, 0xe8, 0x52, 0x2a, 0x50, 0x6c, 0x51, 0xae, +0x5a, 0xf0, 0x5b, 0x32, 0x59, 0x74, 0x58, 0xb6, 0x5d, 0xf8, 0x5c, 0x3a, 0x5e, 0x7c, 0x5f, 0xbe, +0xe1, 0x00, 0xe0, 0xc2, 0xe2, 0x84, 0xe3, 0x46, 0xe6, 0x08, 0xe7, 0xca, 0xe5, 0x8c, 0xe4, 0x4e, +0xef, 0x10, 0xee, 0xd2, 0xec, 0x94, 0xed, 0x56, 0xe8, 0x18, 0xe9, 0xda, 0xeb, 0x9c, 0xea, 0x5e, +0xfd, 0x20, 0xfc, 0xe2, 0xfe, 0xa4, 0xff, 0x66, 0xfa, 0x28, 0xfb, 0xea, 0xf9, 0xac, 0xf8, 0x6e, +0xf3, 0x30, 0xf2, 0xf2, 0xf0, 0xb4, 0xf1, 0x76, 0xf4, 0x38, 0xf5, 0xfa, 0xf7, 0xbc, 0xf6, 0x7e, +0xd9, 0x40, 0xd8, 0x82, 0xda, 0xc4, 0xdb, 0x06, 0xde, 0x48, 0xdf, 0x8a, 0xdd, 0xcc, 0xdc, 0x0e, +0xd7, 0x50, 0xd6, 0x92, 0xd4, 0xd4, 0xd5, 0x16, 0xd0, 0x58, 0xd1, 0x9a, 0xd3, 0xdc, 0xd2, 0x1e, +0xc5, 0x60, 0xc4, 0xa2, 0xc6, 0xe4, 0xc7, 0x26, 0xc2, 0x68, 0xc3, 0xaa, 0xc1, 0xec, 0xc0, 0x2e, +0xcb, 0x70, 0xca, 0xb2, 0xc8, 0xf4, 0xc9, 0x36, 0xcc, 0x78, 0xcd, 0xba, 0xcf, 0xfc, 0xce, 0x3e, +0x91, 0x80, 0x90, 0x42, 0x92, 0x04, 0x93, 0xc6, 0x96, 0x88, 0x97, 0x4a, 0x95, 0x0c, 0x94, 0xce, +0x9f, 0x90, 0x9e, 0x52, 0x9c, 0x14, 0x9d, 0xd6, 0x98, 0x98, 0x99, 0x5a, 0x9b, 0x1c, 0x9a, 0xde, +0x8d, 0xa0, 0x8c, 0x62, 0x8e, 0x24, 0x8f, 0xe6, 0x8a, 0xa8, 0x8b, 0x6a, 0x89, 0x2c, 0x88, 0xee, +0x83, 0xb0, 0x82, 0x72, 0x80, 0x34, 0x81, 0xf6, 0x84, 0xb8, 0x85, 0x7a, 0x87, 0x3c, 0x86, 0xfe, +0xa9, 0xc0, 0xa8, 0x02, 0xaa, 0x44, 0xab, 0x86, 0xae, 0xc8, 0xaf, 0x0a, 0xad, 0x4c, 0xac, 0x8e, +0xa7, 0xd0, 0xa6, 0x12, 0xa4, 0x54, 0xa5, 0x96, 0xa0, 0xd8, 0xa1, 0x1a, 0xa3, 0x5c, 0xa2, 0x9e, +0xb5, 0xe0, 0xb4, 0x22, 0xb6, 0x64, 0xb7, 0xa6, 0xb2, 0xe8, 0xb3, 0x2a, 0xb1, 0x6c, 0xb0, 0xae, +0xbb, 0xf0, 0xba, 0x32, 0xb8, 0x74, 0xb9, 0xb6, 0xbc, 0xf8, 0xbd, 0x3a, 0xbf, 0x7c, 0xbe, 0xbe }; + +#endif + /** Initialize a GCM state @param gcm The GCM state to initialize @@ -31,7 +71,7 @@ int gcm_init(gcm_state *gcm, int cipher, int err; unsigned char B[16]; #ifdef GCM_TABLES - int x, y; + int x, y, z, t; #endif LTC_ARGCHK(gcm != NULL); @@ -72,17 +112,34 @@ int gcm_init(gcm_state *gcm, int cipher, #ifdef GCM_TABLES /* setup tables */ + + /* generate the first table as it has no shifting (from which we make the other tables) */ zeromem(B, 16); - for (x = 0; x < 16; x++) { - for (y = 0; y < 256; y++) { - B[x] = y; - gcm_gf_mult(gcm->H, B, &gcm->PC[x][y][0]); - } - B[x] = 0; + for (y = 0; y < 256; y++) { + B[0] = y; + gcm_gf_mult(gcm->H, B, &gcm->PC[0][y][0]); } + + /* now generate the rest of the tables based the previous table */ + for (x = 1; x < 16; x++) { + for (y = 0; y < 256; y++) { + /* now shift it right by 8 bits */ + t = gcm->PC[x-1][y][15]; + for (z = 15; z > 0; z--) { + gcm->PC[x][y][z] = gcm->PC[x-1][y][z-1]; + } + gcm->PC[x][y][0] = gcm_shift_table[t<<1]; + gcm->PC[x][y][1] ^= gcm_shift_table[(t<<1)+1]; + } + } + #endif return CRYPT_OK; } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/encauth/gcm/gcm_init.c,v $ */ +/* $Revision: 1.15 $ */ +/* $Date: 2005/05/21 15:05:19 $ */ diff --git a/src/encauth/gcm/gcm_memory.c b/src/encauth/gcm/gcm_memory.c index e062413d..ee10d3f5 100644 --- a/src/encauth/gcm/gcm_memory.c +++ b/src/encauth/gcm/gcm_memory.c @@ -87,3 +87,7 @@ LTC_ERR: } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/encauth/gcm/gcm_memory.c,v $ */ +/* $Revision: 1.19 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/encauth/gcm/gcm_process.c b/src/encauth/gcm/gcm_process.c index 577967bb..f512e283 100644 --- a/src/encauth/gcm/gcm_process.c +++ b/src/encauth/gcm/gcm_process.c @@ -141,3 +141,7 @@ int gcm_process(gcm_state *gcm, #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/encauth/gcm/gcm_process.c,v $ */ +/* $Revision: 1.8 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/encauth/gcm/gcm_reset.c b/src/encauth/gcm/gcm_reset.c index e73bf66c..b336a929 100644 --- a/src/encauth/gcm/gcm_reset.c +++ b/src/encauth/gcm/gcm_reset.c @@ -38,3 +38,7 @@ int gcm_reset(gcm_state *gcm) } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/encauth/gcm/gcm_reset.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/encauth/gcm/gcm_test.c b/src/encauth/gcm/gcm_test.c index bc6ad7e3..7106188b 100644 --- a/src/encauth/gcm/gcm_test.c +++ b/src/encauth/gcm/gcm_test.c @@ -281,7 +281,6 @@ int gcm_test(void) }; int idx, err; unsigned long x, y; - gcm_state gcm; unsigned char out[2][64], T[2][16]; /* find aes */ @@ -363,3 +362,7 @@ int gcm_test(void) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/encauth/gcm/gcm_test.c,v $ */ +/* $Revision: 1.15 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/encauth/ocb/ocb_decrypt.c b/src/encauth/ocb/ocb_decrypt.c index d3bf4802..a0f27548 100644 --- a/src/encauth/ocb/ocb_decrypt.c +++ b/src/encauth/ocb/ocb_decrypt.c @@ -71,3 +71,7 @@ int ocb_decrypt(ocb_state *ocb, const unsigned char *ct, unsigned char *pt) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/encauth/ocb/ocb_decrypt.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/encauth/ocb/ocb_decrypt_verify_memory.c b/src/encauth/ocb/ocb_decrypt_verify_memory.c index 378a8af4..0173eff1 100644 --- a/src/encauth/ocb/ocb_decrypt_verify_memory.c +++ b/src/encauth/ocb/ocb_decrypt_verify_memory.c @@ -80,3 +80,7 @@ LBL_ERR: } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/encauth/ocb/ocb_decrypt_verify_memory.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/encauth/ocb/ocb_done_decrypt.c b/src/encauth/ocb/ocb_done_decrypt.c index 9f8b1b9f..fb149bdd 100644 --- a/src/encauth/ocb/ocb_done_decrypt.c +++ b/src/encauth/ocb/ocb_done_decrypt.c @@ -74,3 +74,7 @@ LBL_ERR: #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/encauth/ocb/ocb_done_decrypt.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/encauth/ocb/ocb_done_encrypt.c b/src/encauth/ocb/ocb_done_encrypt.c index 1a075691..27126e74 100644 --- a/src/encauth/ocb/ocb_done_encrypt.c +++ b/src/encauth/ocb/ocb_done_encrypt.c @@ -40,3 +40,7 @@ int ocb_done_encrypt(ocb_state *ocb, const unsigned char *pt, unsigned long ptle #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/encauth/ocb/ocb_done_encrypt.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/encauth/ocb/ocb_encrypt.c b/src/encauth/ocb/ocb_encrypt.c index ba39c60f..2a48551d 100644 --- a/src/encauth/ocb/ocb_encrypt.c +++ b/src/encauth/ocb/ocb_encrypt.c @@ -64,3 +64,7 @@ int ocb_encrypt(ocb_state *ocb, const unsigned char *pt, unsigned char *ct) } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/encauth/ocb/ocb_encrypt.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/encauth/ocb/ocb_encrypt_authenticate_memory.c b/src/encauth/ocb/ocb_encrypt_authenticate_memory.c index bcc9cfbc..beb72c8d 100644 --- a/src/encauth/ocb/ocb_encrypt_authenticate_memory.c +++ b/src/encauth/ocb/ocb_encrypt_authenticate_memory.c @@ -78,3 +78,7 @@ LBL_ERR: } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/encauth/ocb/ocb_encrypt_authenticate_memory.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/encauth/ocb/ocb_init.c b/src/encauth/ocb/ocb_init.c index 57e04afc..9266d5c4 100644 --- a/src/encauth/ocb/ocb_init.c +++ b/src/encauth/ocb/ocb_init.c @@ -127,3 +127,7 @@ int ocb_init(ocb_state *ocb, int cipher, } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/encauth/ocb/ocb_init.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/encauth/ocb/ocb_ntz.c b/src/encauth/ocb/ocb_ntz.c index 4ffe7e8a..9b83c53c 100644 --- a/src/encauth/ocb/ocb_ntz.c +++ b/src/encauth/ocb/ocb_ntz.c @@ -36,3 +36,7 @@ int ocb_ntz(unsigned long x) } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/encauth/ocb/ocb_ntz.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/encauth/ocb/ocb_shift_xor.c b/src/encauth/ocb/ocb_shift_xor.c index b63b0227..b03de4b8 100644 --- a/src/encauth/ocb/ocb_shift_xor.c +++ b/src/encauth/ocb/ocb_shift_xor.c @@ -33,3 +33,7 @@ void ocb_shift_xor(ocb_state *ocb, unsigned char *Z) } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/encauth/ocb/ocb_shift_xor.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/encauth/ocb/ocb_test.c b/src/encauth/ocb/ocb_test.c index d6cb14b4..7a7fc771 100644 --- a/src/encauth/ocb/ocb_test.c +++ b/src/encauth/ocb/ocb_test.c @@ -231,3 +231,7 @@ int ocb_test(void) -- hard to stream [you can't emit ciphertext until full block] -- The setup is somewhat complicated... */ + +/* $Source: /cvs/libtom/libtomcrypt/src/encauth/ocb/ocb_test.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/encauth/ocb/s_ocb_done.c b/src/encauth/ocb/s_ocb_done.c index 6f6e63dd..7399b54f 100644 --- a/src/encauth/ocb/s_ocb_done.c +++ b/src/encauth/ocb/s_ocb_done.c @@ -138,3 +138,7 @@ int s_ocb_done(ocb_state *ocb, const unsigned char *pt, unsigned long ptlen, #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/encauth/ocb/s_ocb_done.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/hashes/chc/chc.c b/src/hashes/chc/chc.c index 67dd0902..4ff39f0b 100644 --- a/src/hashes/chc/chc.c +++ b/src/hashes/chc/chc.c @@ -291,3 +291,7 @@ int chc_test(void) } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/hashes/chc/chc.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/hashes/helper/hash_file.c b/src/hashes/helper/hash_file.c index 78c290a3..50f726ab 100644 --- a/src/hashes/helper/hash_file.c +++ b/src/hashes/helper/hash_file.c @@ -51,3 +51,7 @@ int hash_file(int hash, const char *fname, unsigned char *out, unsigned long *ou #endif } + +/* $Source: /cvs/libtom/libtomcrypt/src/hashes/helper/hash_file.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/hashes/helper/hash_filehandle.c b/src/hashes/helper/hash_filehandle.c index c02c5a78..201ef837 100644 --- a/src/hashes/helper/hash_filehandle.c +++ b/src/hashes/helper/hash_filehandle.c @@ -64,3 +64,7 @@ int hash_filehandle(int hash, FILE *in, unsigned char *out, unsigned long *outle #endif } + +/* $Source: /cvs/libtom/libtomcrypt/src/hashes/helper/hash_filehandle.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/hashes/helper/hash_memory.c b/src/hashes/helper/hash_memory.c index 9786948f..7e849b45 100644 --- a/src/hashes/helper/hash_memory.c +++ b/src/hashes/helper/hash_memory.c @@ -62,3 +62,7 @@ LBL_ERR: return err; } + +/* $Source: /cvs/libtom/libtomcrypt/src/hashes/helper/hash_memory.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/hashes/helper/hash_memory_multi.c b/src/hashes/helper/hash_memory_multi.c index ce22283f..8fcb8e92 100644 --- a/src/hashes/helper/hash_memory_multi.c +++ b/src/hashes/helper/hash_memory_multi.c @@ -80,3 +80,7 @@ LBL_ERR: va_end(args); return err; } + +/* $Source: /cvs/libtom/libtomcrypt/src/hashes/helper/hash_memory_multi.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/hashes/md2.c b/src/hashes/md2.c index 5381771f..db60fbde 100644 --- a/src/hashes/md2.c +++ b/src/hashes/md2.c @@ -24,11 +24,9 @@ const struct ltc_hash_descriptor md2_desc = 16, 16, - /* DER encoding */ - { 0x30, 0x20, 0x30, 0x0C, 0x06, 0x08, 0x2A, 0x86, - 0x48, 0x86, 0xF7, 0x0D, 0x02, 0x02, 0x05, 0x00, - 0x04, 0x10 }, - 18, + /* OID */ + { 1, 2, 840, 113549, 2, 2, }, + 6, &md2_init, &md2_process, @@ -246,3 +244,7 @@ int md2_test(void) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/hashes/md2.c,v $ */ +/* $Revision: 1.5 $ */ +/* $Date: 2005/05/23 02:42:07 $ */ diff --git a/src/hashes/md4.c b/src/hashes/md4.c index 477f5b08..17ef35ea 100644 --- a/src/hashes/md4.c +++ b/src/hashes/md4.c @@ -24,9 +24,9 @@ const struct ltc_hash_descriptor md4_desc = 16, 64, - /* DER encoding (not yet supported) */ - { 0x00 }, - 0, + /* OID */ + { 1, 2, 840, 113549, 2, 4, }, + 6, &md4_init, &md4_process, @@ -300,3 +300,7 @@ int md4_test(void) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/hashes/md4.c,v $ */ +/* $Revision: 1.5 $ */ +/* $Date: 2005/05/23 02:42:07 $ */ diff --git a/src/hashes/md5.c b/src/hashes/md5.c index e2e5c741..fb8ff31f 100644 --- a/src/hashes/md5.c +++ b/src/hashes/md5.c @@ -25,11 +25,9 @@ const struct ltc_hash_descriptor md5_desc = 16, 64, - /* DER identifier */ - { 0x30, 0x20, 0x30, 0x0C, 0x06, 0x08, 0x2A, 0x86, - 0x48, 0x86, 0xF7, 0x0D, 0x02, 0x05, 0x05, 0x00, - 0x04, 0x10 }, - 18, + /* OID */ + { 1, 2, 840, 113549, 2, 5, }, + 6, &md5_init, &md5_process, @@ -363,3 +361,7 @@ int md5_test(void) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/hashes/md5.c,v $ */ +/* $Revision: 1.5 $ */ +/* $Date: 2005/05/23 02:42:07 $ */ diff --git a/src/hashes/rmd128.c b/src/hashes/rmd128.c index 1c304a1c..1c663e46 100644 --- a/src/hashes/rmd128.c +++ b/src/hashes/rmd128.c @@ -30,9 +30,9 @@ const struct ltc_hash_descriptor rmd128_desc = 16, 64, - /* DER identifier (not supported) */ - { 0x00 }, - 0, + /* OID */ + { 1, 0, 10118, 3, 0, 50 }, + 6, &rmd128_init, &rmd128_process, @@ -403,3 +403,7 @@ int rmd128_test(void) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/hashes/rmd128.c,v $ */ +/* $Revision: 1.6 $ */ +/* $Date: 2005/05/23 02:42:07 $ */ diff --git a/src/hashes/rmd160.c b/src/hashes/rmd160.c index a6171529..6124f592 100644 --- a/src/hashes/rmd160.c +++ b/src/hashes/rmd160.c @@ -30,10 +30,9 @@ const struct ltc_hash_descriptor rmd160_desc = 20, 64, - /* DER identifier */ - { 0x30, 0x21, 0x30, 0x09, 0x06, 0x05, 0x2B, 0x24, - 0x03, 0x02, 0x01, 0x05, 0x00, 0x04, 0x14 }, - 15, + /* OID */ + { 1, 3, 36, 3, 2, 1, }, + 6, &rmd160_init, &rmd160_process, @@ -463,3 +462,7 @@ int rmd160_test(void) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/hashes/rmd160.c,v $ */ +/* $Revision: 1.5 $ */ +/* $Date: 2005/05/23 02:42:07 $ */ diff --git a/src/hashes/sha1.c b/src/hashes/sha1.c index 267729bc..a75d04d9 100644 --- a/src/hashes/sha1.c +++ b/src/hashes/sha1.c @@ -25,10 +25,9 @@ const struct ltc_hash_descriptor sha1_desc = 20, 64, - /* DER identifier */ - { 0x30, 0x21, 0x30, 0x09, 0x06, 0x05, 0x2B, 0x0E, - 0x03, 0x02, 0x1A, 0x05, 0x00, 0x04, 0x14 }, - 15, + /* OID */ + { 1, 3, 14, 3, 2, 26, }, + 6, &sha1_init, &sha1_process, @@ -282,3 +281,7 @@ int sha1_test(void) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/hashes/sha1.c,v $ */ +/* $Revision: 1.5 $ */ +/* $Date: 2005/05/23 02:42:07 $ */ diff --git a/src/hashes/sha2/sha224.c b/src/hashes/sha2/sha224.c index 8c0dcde4..bff2fdf6 100644 --- a/src/hashes/sha2/sha224.c +++ b/src/hashes/sha2/sha224.c @@ -20,9 +20,9 @@ const struct ltc_hash_descriptor sha224_desc = 28, 64, - /* DER identifier (not supported) */ - { 0x00 }, - 0, + /* OID */ + { 2, 16, 840, 1, 101, 3, 4, 2, 4, }, + 9, &sha224_init, &sha256_process, @@ -118,3 +118,7 @@ int sha224_test(void) #endif } + +/* $Source: /cvs/libtom/libtomcrypt/src/hashes/sha2/sha224.c,v $ */ +/* $Revision: 1.5 $ */ +/* $Date: 2005/05/23 02:42:07 $ */ diff --git a/src/hashes/sha2/sha256.c b/src/hashes/sha2/sha256.c index 85eba2a3..c48c0f69 100644 --- a/src/hashes/sha2/sha256.c +++ b/src/hashes/sha2/sha256.c @@ -24,11 +24,9 @@ const struct ltc_hash_descriptor sha256_desc = 32, 64, - /* DER identifier */ - { 0x30, 0x31, 0x30, 0x0D, 0x06, 0x09, 0x60, 0x86, - 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05, - 0x00, 0x04, 0x20 }, - 19, + /* OID */ + { 2, 16, 840, 1, 101, 3, 4, 2, 1, }, + 9, &sha256_init, &sha256_process, @@ -335,3 +333,7 @@ int sha256_test(void) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/hashes/sha2/sha256.c,v $ */ +/* $Revision: 1.5 $ */ +/* $Date: 2005/05/23 02:42:07 $ */ diff --git a/src/hashes/sha2/sha384.c b/src/hashes/sha2/sha384.c index 912145c3..43f8fb61 100644 --- a/src/hashes/sha2/sha384.c +++ b/src/hashes/sha2/sha384.c @@ -20,11 +20,9 @@ const struct ltc_hash_descriptor sha384_desc = 48, 128, - /* DER identifier */ - { 0x30, 0x41, 0x30, 0x0D, 0x06, 0x09, 0x60, 0x86, - 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x02, 0x05, - 0x00, 0x04, 0x30 }, - 19, + /* OID */ + { 2, 16, 840, 1, 101, 3, 4, 2, 2, }, + 9, &sha384_init, &sha512_process, @@ -130,3 +128,7 @@ int sha384_test(void) + +/* $Source: /cvs/libtom/libtomcrypt/src/hashes/sha2/sha384.c,v $ */ +/* $Revision: 1.5 $ */ +/* $Date: 2005/05/23 02:42:07 $ */ diff --git a/src/hashes/sha2/sha512.c b/src/hashes/sha2/sha512.c index 3238f2b0..7b6805ba 100644 --- a/src/hashes/sha2/sha512.c +++ b/src/hashes/sha2/sha512.c @@ -24,11 +24,9 @@ const struct ltc_hash_descriptor sha512_desc = 64, 128, - /* DER identifier */ - { 0x30, 0x51, 0x30, 0x0D, 0x06, 0x09, 0x60, 0x86, - 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x03, 0x05, - 0x00, 0x04, 0x40 }, - 19, + /* OID */ + { 2, 16, 840, 1, 101, 3, 4, 2, 3, }, + 9, &sha512_init, &sha512_process, @@ -314,3 +312,7 @@ int sha512_test(void) + +/* $Source: /cvs/libtom/libtomcrypt/src/hashes/sha2/sha512.c,v $ */ +/* $Revision: 1.5 $ */ +/* $Date: 2005/05/23 02:42:07 $ */ diff --git a/src/hashes/tiger.c b/src/hashes/tiger.c index a1cd8883..250c1860 100644 --- a/src/hashes/tiger.c +++ b/src/hashes/tiger.c @@ -25,11 +25,9 @@ const struct ltc_hash_descriptor tiger_desc = 24, 64, - /* DER identifier */ - { 0x30, 0x29, 0x30, 0x0D, 0x06, 0x09, 0x2B, 0x06, - 0x01, 0x04, 0x01, 0xDA, 0x47, 0x0C, 0x02, 0x05, - 0x00, 0x04, 0x18 }, - 19, + /* OID */ + { 1, 3, 6, 1, 4, 1, 11591, 12, 2, }, + 9, &tiger_init, &tiger_process, @@ -809,3 +807,7 @@ Hash of "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-ABCDEFG + +/* $Source: /cvs/libtom/libtomcrypt/src/hashes/tiger.c,v $ */ +/* $Revision: 1.5 $ */ +/* $Date: 2005/05/23 02:42:07 $ */ diff --git a/src/hashes/whirl/whirl.c b/src/hashes/whirl/whirl.c index ff0b4367..1bd7983b 100644 --- a/src/hashes/whirl/whirl.c +++ b/src/hashes/whirl/whirl.c @@ -25,9 +25,9 @@ const struct ltc_hash_descriptor whirlpool_desc = 64, 64, - /* DER encoding (not yet supported) */ - { 0x00 }, - 0, + /* OID */ + { 1, 0, 10118, 3, 0, 55 }, + 6, &whirlpool_init, &whirlpool_process, @@ -307,3 +307,7 @@ int whirlpool_test(void) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/hashes/whirl/whirl.c,v $ */ +/* $Revision: 1.5 $ */ +/* $Date: 2005/05/23 02:42:07 $ */ diff --git a/src/hashes/whirl/whirltab.c b/src/hashes/whirl/whirltab.c index fb99bea8..c83d0b2f 100644 --- a/src/hashes/whirl/whirltab.c +++ b/src/hashes/whirl/whirltab.c @@ -577,3 +577,7 @@ CONST64(0xca2dbf07ad5a8333), CONST64(0x6302aa71c81949d9), }; + +/* $Source: /cvs/libtom/libtomcrypt/src/hashes/whirl/whirltab.c,v $ */ +/* $Revision: 1.2 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/headers/ltc_tommath.h b/src/headers/ltc_tommath.h index 05212e51..2d62b4e9 100644 --- a/src/headers/ltc_tommath.h +++ b/src/headers/ltc_tommath.h @@ -575,3 +575,7 @@ extern const char *mp_s_rmap; #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/headers/ltc_tommath.h,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/headers/tomcrypt.h b/src/headers/tomcrypt.h index 0d34c745..8369c74d 100644 --- a/src/headers/tomcrypt.h +++ b/src/headers/tomcrypt.h @@ -16,8 +16,8 @@ extern "C" { #endif /* version */ -#define CRYPT 0x0102 -#define SCRYPT "1.02" +#define CRYPT 0x0105 +#define SCRYPT "1.05" /* max size of either a cipher/hash block or symmetric key [largest of the two] */ #define MAXBLOCKSIZE 128 @@ -79,3 +79,7 @@ enum { #endif /* TOMCRYPT_H_ */ + +/* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt.h,v $ */ +/* $Revision: 1.7 $ */ +/* $Date: 2005/06/19 18:03:25 $ */ diff --git a/src/headers/tomcrypt_argchk.h b/src/headers/tomcrypt_argchk.h index 5c8759db..ef344ee5 100644 --- a/src/headers/tomcrypt_argchk.h +++ b/src/headers/tomcrypt_argchk.h @@ -19,3 +19,7 @@ void crypt_argchk(char *v, char *s, int d); #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_argchk.h,v $ */ +/* $Revision: 1.2 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/headers/tomcrypt_cfg.h b/src/headers/tomcrypt_cfg.h index a0022d13..1d5bc6c1 100644 --- a/src/headers/tomcrypt_cfg.h +++ b/src/headers/tomcrypt_cfg.h @@ -106,3 +106,7 @@ int XMEMCMP(const void *s1, const void *s2, size_t n); #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_cfg.h,v $ */ +/* $Revision: 1.7 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/headers/tomcrypt_cipher.h b/src/headers/tomcrypt_cipher.h index af184c28..4f003022 100644 --- a/src/headers/tomcrypt_cipher.h +++ b/src/headers/tomcrypt_cipher.h @@ -32,7 +32,7 @@ struct saferp_key { #ifdef RIJNDAEL struct rijndael_key { - ulong32 eK[64], dK[64]; + ulong32 eK[60], dK[60]; int Nr; }; #endif @@ -599,8 +599,15 @@ int cbc_done(symmetric_CBC *cbc); #endif #ifdef CTR -int ctr_start(int cipher, const unsigned char *IV, const unsigned char *key, - int keylen, int num_rounds, symmetric_CTR *ctr); + +#define CTR_COUNTER_LITTLE_ENDIAN 0 +#define CTR_COUNTER_BIG_ENDIAN 1 + +int ctr_start( int cipher, + const unsigned char *IV, + const unsigned char *key, int keylen, + int num_rounds, int ctr_mode, + symmetric_CTR *ctr); int ctr_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_CTR *ctr); int ctr_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_CTR *ctr); int ctr_getiv(unsigned char *IV, unsigned long *len, symmetric_CTR *ctr); @@ -611,9 +618,12 @@ int ctr_done(symmetric_CTR *ctr); int find_cipher(const char *name); int find_cipher_any(const char *name, int blocklen, int keylen); int find_cipher_id(unsigned char ID); - int register_cipher(const struct ltc_cipher_descriptor *cipher); int unregister_cipher(const struct ltc_cipher_descriptor *cipher); - int cipher_is_valid(int idx); +LTC_MUTEX_PROTO(ltc_cipher_mutex); + +/* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_cipher.h,v $ */ +/* $Revision: 1.16 $ */ +/* $Date: 2005/06/19 18:00:28 $ */ diff --git a/src/headers/tomcrypt_custom.h b/src/headers/tomcrypt_custom.h index d786f0bf..db900480 100644 --- a/src/headers/tomcrypt_custom.h +++ b/src/headers/tomcrypt_custom.h @@ -1,6 +1,3 @@ -/* This header is meant to be included before mycrypt.h in projects where - * you don't want to throw all the defines in a makefile. - */ #ifndef TOMCRYPT_CUSTOM_H_ #define TOMCRYPT_CUSTOM_H_ @@ -20,7 +17,9 @@ /* #define LTC_SMALL_CODE */ /* Enable self-test test vector checking */ -#define LTC_TEST +#ifndef LTC_NO_TEST + #define LTC_TEST +#endif /* clean the stack of functions which put private information on stack */ /* #define LTC_CLEAN_STACK */ @@ -38,6 +37,8 @@ /* #define LTC_NO_BSWAP */ /* ---> Symmetric Block Ciphers <--- */ +#ifndef LTC_NO_CIPHERS + #define BLOWFISH #define RC2 #define RC5 @@ -48,8 +49,12 @@ /* _TABLES tells it to use tables during setup, _SMALL means to use the smaller scheduled key format * (saves 4KB of ram), _ALL_TABLES enables all tables during setup */ #define TWOFISH -#define TWOFISH_TABLES -/* #define TWOFISH_ALL_TABLES */ +#ifndef LTC_NO_TABLES + #define TWOFISH_TABLES + /* #define TWOFISH_ALL_TABLES */ +#else + #define TWOFISH_SMALL +#endif /* #define TWOFISH_SMALL */ /* DES includes EDE triple-DES */ #define DES @@ -61,15 +66,23 @@ #define ANUBIS #define ANUBIS_TWEAK +#endif /* LTC_NO_CIPHERS */ + /* ---> Block Cipher Modes of Operation <--- */ +#ifndef LTC_NO_MODES + #define CFB #define OFB #define ECB #define CBC #define CTR +#endif /* LTC_NO_MODES */ + /* ---> One-Way Hash Functions <--- */ +#ifndef LTC_NO_HASHES + #define CHC_HASH #define WHIRLPOOL #define SHA512 @@ -84,7 +97,11 @@ #define RIPEMD128 #define RIPEMD160 +#endif /* LTC_NO_HASHES */ + /* ---> MAC functions <--- */ +#ifndef LTC_NO_MACS + #define HMAC #define OMAC #define PMAC @@ -95,6 +112,7 @@ #endif /* ---> Encrypt + Authenticate Modes <--- */ + #define EAX_MODE #if defined(EAX_MODE) && !(defined(CTR) && defined(OMAC)) #error EAX_MODE requires CTR and OMAC mode @@ -104,13 +122,20 @@ #define CCM_MODE #define GCM_MODE + /* Use 64KiB tables */ -#define GCM_TABLES +#ifndef LTC_NO_TABLES + #define GCM_TABLES +#endif + +#endif /* LTC_NO_MACS */ /* Various tidbits of modern neatoness */ #define BASE64 /* --> Pseudo Random Number Generators <--- */ +#ifndef LTC_NO_PRNGS + /* Yarrow */ #define YARROW /* which descriptor of AES to use? */ @@ -142,7 +167,11 @@ /* try /dev/urandom before trying /dev/random */ #define TRY_URANDOM_FIRST +#endif /* LTC_NO_PRNGS */ + /* ---> Public Key Crypto <--- */ +#ifndef LTC_NO_PK + #define MRSA /* Digital Signature Algorithm */ @@ -168,7 +197,6 @@ /* ECC */ #define MECC /* Supported Key Sizes */ -#define ECC160 #define ECC192 #define ECC224 #define ECC256 @@ -178,7 +206,11 @@ /* Include the MPI functionality? (required by the PK algorithms) */ #define MPI +#endif /* LTC_NO_PK */ + /* PKCS #1 (RSA) and #5 (Password Handling) stuff */ +#ifndef LTC_NO_PKCS + #define PKCS_1 #define PKCS_5 @@ -192,5 +224,33 @@ #error RSA/DSA requires ASN.1 DER functionality, make sure LTC_DER is enabled #endif +#endif /* LTC_NO_PKCS */ + +#endif + + +/* THREAD management */ + +#ifdef LTC_PTHREAD + +#include <pthread.h> + +#define LTC_MUTEX_GLOBAL(x) pthread_mutex_t x = PTHREAD_MUTEX_INITIALIZER; +#define LTC_MUTEX_PROTO(x) extern pthread_mutex_t x; +#define LTC_MUTEX_LOCK(x) pthread_mutex_lock(x); +#define LTC_MUTEX_UNLOCK(x) pthread_mutex_unlock(x); + +#else + +/* default no functions */ +#define LTC_MUTEX_GLOBAL(x) +#define LTC_MUTEX_PROTO(x) +#define LTC_MUTEX_LOCK(x) +#define LTC_MUTEX_UNLOCK(x) + #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_custom.h,v $ */ +/* $Revision: 1.17 $ */ +/* $Date: 2005/06/19 18:00:28 $ */ diff --git a/src/headers/tomcrypt_hash.h b/src/headers/tomcrypt_hash.h index d295a598..a0534f97 100644 --- a/src/headers/tomcrypt_hash.h +++ b/src/headers/tomcrypt_hash.h @@ -132,10 +132,11 @@ extern struct ltc_hash_descriptor { unsigned long hashsize; /** Input block size in octets */ unsigned long blocksize; - /** ASN.1 DER identifier */ - unsigned char DER[64]; + /** ASN.1 OID */ + unsigned long OID[16]; /** Length of DER encoding */ - unsigned long DERlen; + unsigned long OIDlen; + /** Init a hash state @param hash The hash to initialize @return CRYPT_OK if successful @@ -278,6 +279,8 @@ int register_hash(const struct ltc_hash_descriptor *hash); int unregister_hash(const struct ltc_hash_descriptor *hash); int hash_is_valid(int idx); +LTC_MUTEX_PROTO(ltc_hash_mutex); + int hash_memory(int hash, const unsigned char *in, unsigned long inlen, unsigned char *out, unsigned long *outlen); @@ -292,29 +295,29 @@ int func_name (hash_state * md, const unsigned char *in, unsigned long inlen) { \ unsigned long n; \ int err; \ - LTC_ARGCHK(md != NULL); \ - LTC_ARGCHK(in != NULL); \ + LTC_ARGCHK(md != NULL); \ + LTC_ARGCHK(in != NULL); \ if (md-> state_var .curlen > sizeof(md-> state_var .buf)) { \ return CRYPT_INVALID_ARG; \ } \ - while (inlen > 0) { \ - if (md-> state_var .curlen == 0 && inlen >= block_size) { \ - if ((err = compress_name (md, (unsigned char *)in)) != CRYPT_OK) { \ - return err; \ - } \ + while (inlen > 0) { \ + if (md-> state_var .curlen == 0 && inlen >= block_size) { \ + if ((err = compress_name (md, (unsigned char *)in)) != CRYPT_OK) { \ + return err; \ + } \ md-> state_var .length += block_size * 8; \ - in += block_size; \ - inlen -= block_size; \ + in += block_size; \ + inlen -= block_size; \ } else { \ - n = MIN(inlen, (block_size - md-> state_var .curlen)); \ - memcpy(md-> state_var .buf + md-> state_var.curlen, in, (size_t)n); \ + n = MIN(inlen, (block_size - md-> state_var .curlen)); \ + memcpy(md-> state_var .buf + md-> state_var.curlen, in, (size_t)n); \ md-> state_var .curlen += n; \ - in += n; \ - inlen -= n; \ + in += n; \ + inlen -= n; \ if (md-> state_var .curlen == block_size) { \ - if ((err = compress_name (md, md-> state_var .buf)) != CRYPT_OK) {\ - return err; \ - } \ + if ((err = compress_name (md, md-> state_var .buf)) != CRYPT_OK) { \ + return err; \ + } \ md-> state_var .length += 8*block_size; \ md-> state_var .curlen = 0; \ } \ @@ -322,3 +325,7 @@ int func_name (hash_state * md, const unsigned char *in, unsigned long inlen) } \ return CRYPT_OK; \ } + +/* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_hash.h,v $ */ +/* $Revision: 1.12 $ */ +/* $Date: 2005/06/19 18:00:28 $ */ diff --git a/src/headers/tomcrypt_mac.h b/src/headers/tomcrypt_mac.h index 6b5e1ce5..411b1bce 100644 --- a/src/headers/tomcrypt_mac.h +++ b/src/headers/tomcrypt_mac.h @@ -295,3 +295,7 @@ int pelican_memory(const unsigned char *key, unsigned long keylen, unsigned char *out); #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_mac.h,v $ */ +/* $Revision: 1.7 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/headers/tomcrypt_macros.h b/src/headers/tomcrypt_macros.h index f083984a..488931fd 100644 --- a/src/headers/tomcrypt_macros.h +++ b/src/headers/tomcrypt_macros.h @@ -132,7 +132,7 @@ asm __volatile__ ( \ #ifdef ENDIAN_32BITWORD #define STORE32L(x, y) \ - { unsigned long __t = (x); memcpy(y, &__t, 4); } + { ulong32 __t = (x); memcpy(y, &__t, 4); } #define LOAD32L(x, y) \ memcpy(&(x), y, 4); @@ -152,7 +152,7 @@ asm __volatile__ ( \ #else /* 64-bit words then */ #define STORE32L(x, y) \ - { unsigned long __t = (x); memcpy(y, &__t, 4); } + { ulong32 __t = (x); memcpy(y, &__t, 4); } #define LOAD32L(x, y) \ { memcpy(&(x), y, 4); x &= 0xFFFFFFFF; } @@ -193,7 +193,7 @@ asm __volatile__ ( \ #ifdef ENDIAN_32BITWORD #define STORE32H(x, y) \ - { unsigned long __t = (x); memcpy(y, &__t, 4); } + { ulong32 __t = (x); memcpy(y, &__t, 4); } #define LOAD32H(x, y) \ memcpy(&(x), y, 4); @@ -213,7 +213,7 @@ asm __volatile__ ( \ #else /* 64-bit words then */ #define STORE32H(x, y) \ - { unsigned long __t = (x); memcpy(y, &__t, 4); } + { ulong32 __t = (x); memcpy(y, &__t, 4); } #define LOAD32H(x, y) \ { memcpy(&(x), y, 4); x &= 0xFFFFFFFF; } @@ -371,3 +371,7 @@ static inline unsigned long ROR64c(unsigned long word, const int i) #else #define byte(x, n) (((x) >> (8 * (n))) & 255) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_macros.h,v $ */ +/* $Revision: 1.7 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/headers/tomcrypt_misc.h b/src/headers/tomcrypt_misc.h index bed5015f..3b447952 100644 --- a/src/headers/tomcrypt_misc.h +++ b/src/headers/tomcrypt_misc.h @@ -15,3 +15,7 @@ const char *error_to_string(int err); int mpi_to_ltc_error(int err); extern const char *crypt_build_settings; + +/* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_misc.h,v $ */ +/* $Revision: 1.2 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/headers/tomcrypt_pk.h b/src/headers/tomcrypt_pk.h index 065ca996..4f047def 100644 --- a/src/headers/tomcrypt_pk.h +++ b/src/headers/tomcrypt_pk.h @@ -84,9 +84,6 @@ int packet_valid_header(unsigned char *src, int section, int subsection); #define MIN_RSA_SIZE 1024 #define MAX_RSA_SIZE 4096 -/* Stack required for temps (plus padding) */ -// #define RSA_STACK (8 + (MAX_RSA_SIZE/8)) - typedef struct Rsa_key { int type; mp_int e, d, N, p, q, qP, dP, dQ; @@ -123,26 +120,6 @@ int rsa_verify_hash(const unsigned char *sig, unsigned long siglen, int hash_idx, unsigned long saltlen, int *stat, rsa_key *key); -/* these use PKCS #1 v1.5 padding */ -int rsa_v15_encrypt_key(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - prng_state *prng, int prng_idx, - rsa_key *key); - -int rsa_v15_decrypt_key(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long outlen, - int *stat, rsa_key *key); - -int rsa_v15_sign_hash(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *siglen, - int hash_idx, rsa_key *key); - -int rsa_v15_verify_hash(const unsigned char *sig, unsigned long siglen, - const unsigned char *hash, unsigned long hashlen, - int hash_idx, int *stat, - rsa_key *key); - - /* PKCS #1 import/export */ int rsa_export(unsigned char *out, unsigned long *outlen, int type, rsa_key *key); int rsa_import(const unsigned char *in, unsigned long inlen, rsa_key *key); @@ -244,10 +221,19 @@ typedef struct { int dsa_make_key(prng_state *prng, int wprng, int group_size, int modulus_size, dsa_key *key); void dsa_free(dsa_key *key); + +int dsa_sign_hash_raw(const unsigned char *in, unsigned long inlen, + mp_int *r, mp_int *s, + prng_state *prng, int wprng, dsa_key *key); + int dsa_sign_hash(const unsigned char *in, unsigned long inlen, unsigned char *out, unsigned long *outlen, prng_state *prng, int wprng, dsa_key *key); +int dsa_verify_hash_raw( mp_int *r, mp_int *s, + const unsigned char *hash, unsigned long hashlen, + int *stat, dsa_key *key); + int dsa_verify_hash(const unsigned char *sig, unsigned long siglen, const unsigned char *hash, unsigned long hashlen, int *stat, dsa_key *key); @@ -262,9 +248,134 @@ int dsa_verify_key(dsa_key *key, int *stat); #ifdef LTC_DER /* DER handling */ + +enum { + LTC_ASN1_EOL, + LTC_ASN1_INTEGER, + LTC_ASN1_SHORT_INTEGER, + LTC_ASN1_BIT_STRING, + LTC_ASN1_OCTET_STRING, + LTC_ASN1_NULL, + LTC_ASN1_OBJECT_IDENTIFIER, + LTC_ASN1_IA5_STRING, + LTC_ASN1_PRINTABLE_STRING, + LTC_ASN1_UTCTIME, + + LTC_ASN1_CHOICE, + LTC_ASN1_SEQUENCE +}; + +typedef struct { + int type; + void *data; + unsigned long size; + int used; +} ltc_asn1_list; + +#define LTC_SET_ASN1(list, index, Type, Data, Size) \ + do { \ + int LTC_MACRO_temp = (index); \ + ltc_asn1_list *LTC_MACRO_list = (list); \ + LTC_MACRO_list[LTC_MACRO_temp].type = (Type); \ + LTC_MACRO_list[LTC_MACRO_temp].data = (Data); \ + LTC_MACRO_list[LTC_MACRO_temp].size = (Size); \ + LTC_MACRO_list[LTC_MACRO_temp].used = 0; \ + } while (0); + +/* SEQUENCE */ +int der_encode_sequence(ltc_asn1_list *list, unsigned long inlen, + unsigned char *out, unsigned long *outlen); + +int der_decode_sequence(const unsigned char *in, unsigned long inlen, + ltc_asn1_list *list, unsigned long outlen); + +int der_length_sequence(ltc_asn1_list *list, unsigned long inlen, + unsigned long *outlen); + +/* VA list handy helpers */ +int der_encode_sequence_multi(unsigned char *out, unsigned long *outlen, ...); +int der_decode_sequence_multi(const unsigned char *in, unsigned long inlen, ...); + +/* INTEGER */ int der_encode_integer(mp_int *num, unsigned char *out, unsigned long *outlen); -int der_decode_integer(const unsigned char *in, unsigned long *inlen, mp_int *num); +int der_decode_integer(const unsigned char *in, unsigned long inlen, mp_int *num); int der_length_integer(mp_int *num, unsigned long *len); -int der_put_multi_integer(unsigned char *dst, unsigned long *outlen, mp_int *num, ...); -int der_get_multi_integer(const unsigned char *src, unsigned long *inlen, mp_int *num, ...); + +/* INTEGER -- handy for 0..2^32-1 values */ +int der_decode_short_integer(const unsigned char *in, unsigned long inlen, unsigned long *num); +int der_encode_short_integer(unsigned long num, unsigned char *out, unsigned long *outlen); +int der_length_short_integer(unsigned long num, unsigned long *outlen); + +/* BIT STRING */ +int der_encode_bit_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); +int der_decode_bit_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); +int der_length_bit_string(unsigned long nbits, unsigned long *outlen); + +/* OCTET STRING */ +int der_encode_octet_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); +int der_decode_octet_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); +int der_length_octet_string(unsigned long noctets, unsigned long *outlen); + +/* OBJECT IDENTIFIER */ +int der_encode_object_identifier(unsigned long *words, unsigned long nwords, + unsigned char *out, unsigned long *outlen); +int der_decode_object_identifier(const unsigned char *in, unsigned long inlen, + unsigned long *words, unsigned long *outlen); +int der_length_object_identifier(unsigned long *words, unsigned long nwords, unsigned long *outlen); +unsigned long der_object_identifier_bits(unsigned long x); + +/* IA5 STRING */ +int der_encode_ia5_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); +int der_decode_ia5_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); +int der_length_ia5_string(const unsigned char *octets, unsigned long noctets, unsigned long *outlen); + +int der_ia5_char_encode(int c); +int der_ia5_value_decode(int v); + +/* Printable STRING */ +int der_encode_printable_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); +int der_decode_printable_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); +int der_length_printable_string(const unsigned char *octets, unsigned long noctets, unsigned long *outlen); + +int der_printable_char_encode(int c); +int der_printable_value_decode(int v); + +/* CHOICE */ +int der_decode_choice(const unsigned char *in, unsigned long *inlen, + ltc_asn1_list *list, unsigned long outlen); + +/* UTCTime */ +typedef struct { + unsigned YY, /* year */ + MM, /* month */ + DD, /* day */ + hh, /* hour */ + mm, /* minute */ + ss, /* second */ + off_dir, /* timezone offset direction 0 == +, 1 == - */ + off_hh, /* timezone offset hours */ + off_mm; /* timezone offset minutes */ +} ltc_utctime; + +int der_encode_utctime(ltc_utctime *utctime, + unsigned char *out, unsigned long *outlen); + +int der_decode_utctime(const unsigned char *in, unsigned long *inlen, + ltc_utctime *out); + +int der_length_utctime(ltc_utctime *utctime, unsigned long *outlen); + + #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_pk.h,v $ */ +/* $Revision: 1.30 $ */ +/* $Date: 2005/06/19 11:23:03 $ */ diff --git a/src/headers/tomcrypt_pkcs.h b/src/headers/tomcrypt_pkcs.h index 9fd0581a..8d850de3 100644 --- a/src/headers/tomcrypt_pkcs.h +++ b/src/headers/tomcrypt_pkcs.h @@ -10,7 +10,7 @@ int pkcs_1_mgf1(const unsigned char *seed, unsigned long seedlen, int pkcs_1_i2osp(mp_int *n, unsigned long modulus_len, unsigned char *out); int pkcs_1_os2ip(mp_int *n, unsigned char *in, unsigned long inlen); -/* *** v2.0 padding */ +/* *** v2.1 padding */ int pkcs_1_oaep_encode(const unsigned char *msg, unsigned long msglen, const unsigned char *lparam, unsigned long lparamlen, unsigned long modulus_bitlen, prng_state *prng, @@ -34,32 +34,6 @@ int pkcs_1_pss_decode(const unsigned char *msghash, unsigned long msghashlen, unsigned long saltlen, int hash_idx, unsigned long modulus_bitlen, int *res); -/* *** v1.5 padding */ -/* encryption padding */ -int pkcs_1_v15_es_encode(const unsigned char *msg, unsigned long msglen, - unsigned long modulus_bitlen, - prng_state *prng, int prng_idx, - unsigned char *out, unsigned long *outlen); - -/* note "outlen" is fixed, you have to tell this decoder how big - * the original message was. Unlike the OAEP decoder it cannot auto-detect it. - */ -int pkcs_1_v15_es_decode(const unsigned char *msg, unsigned long msglen, - unsigned long modulus_bitlen, - unsigned char *out, unsigned long outlen, - int *res); - -/* signature padding */ -int pkcs_1_v15_sa_encode(const unsigned char *msghash, unsigned long msghashlen, - int hash_idx, unsigned long modulus_bitlen, - unsigned char *out, unsigned long *outlen); - -int pkcs_1_v15_sa_decode(const unsigned char *msghash, unsigned long msghashlen, - const unsigned char *sig, unsigned long siglen, - int hash_idx, unsigned long modulus_bitlen, - int *res); - - #endif /* PKCS_1 */ /* ===> PKCS #5 -- Password Based Cryptography <=== */ @@ -78,3 +52,7 @@ int pkcs_5_alg2(const unsigned char *password, unsigned long password_len, unsigned char *out, unsigned long *outlen); #endif /* PKCS_5 */ + +/* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_pkcs.h,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/14 11:46:08 $ */ diff --git a/src/headers/tomcrypt_prng.h b/src/headers/tomcrypt_prng.h index 2ae5749e..f96d4083 100644 --- a/src/headers/tomcrypt_prng.h +++ b/src/headers/tomcrypt_prng.h @@ -178,6 +178,7 @@ int find_prng(const char *name); int register_prng(const struct ltc_prng_descriptor *prng); int unregister_prng(const struct ltc_prng_descriptor *prng); int prng_is_valid(int idx); +LTC_MUTEX_PROTO(ltc_prng_mutex); /* Slow RNG you **might** be able to use to seed a PRNG with. Be careful as this * might not work on all platforms as planned @@ -188,3 +189,7 @@ unsigned long rng_get_bytes(unsigned char *out, int rng_make_prng(int bits, int wprng, prng_state *prng, void (*callback)(void)); + +/* $Source: /cvs/libtom/libtomcrypt/src/headers/tomcrypt_prng.h,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/06/19 18:00:28 $ */ diff --git a/src/headers/tommath_class.h b/src/headers/tommath_class.h index 6d05b7b7..02dd7cf7 100644 --- a/src/headers/tommath_class.h +++ b/src/headers/tommath_class.h @@ -992,3 +992,7 @@ #else #define LTM_LAST #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/headers/tommath_class.h,v $ */ +/* $Revision: 1.2 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/headers/tommath_superclass.h b/src/headers/tommath_superclass.h index b50ecb09..89f3f574 100644 --- a/src/headers/tommath_superclass.h +++ b/src/headers/tommath_superclass.h @@ -1,10 +1,14 @@ /* super class file for PK algos */ /* default ... include all MPI */ +#ifndef SC_RSA_1 + #define LTM_ALL +#endif + /* RSA only (does not support DH/DSA/ECC) */ -// #define SC_RSA_1 +/* #define SC_RSA_1 */ /* For reference.... On an Athlon64 optimizing for speed... @@ -70,3 +74,7 @@ #endif #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/headers/tommath_superclass.h,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/05/14 13:27:20 $ */ diff --git a/src/mac/hmac/hmac_done.c b/src/mac/hmac/hmac_done.c index fdf20be9..f64d0449 100644 --- a/src/mac/hmac/hmac_done.c +++ b/src/mac/hmac/hmac_done.c @@ -103,3 +103,7 @@ LBL_ERR: } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/mac/hmac/hmac_done.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/mac/hmac/hmac_file.c b/src/mac/hmac/hmac_file.c index edbb6a60..f88d692e 100644 --- a/src/mac/hmac/hmac_file.c +++ b/src/mac/hmac/hmac_file.c @@ -87,3 +87,7 @@ int hmac_file(int hash, const char *fname, #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/mac/hmac/hmac_file.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/mac/hmac/hmac_init.c b/src/mac/hmac/hmac_init.c index d060a5b4..e64d47f4 100644 --- a/src/mac/hmac/hmac_init.c +++ b/src/mac/hmac/hmac_init.c @@ -106,3 +106,7 @@ done: } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/mac/hmac/hmac_init.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/mac/hmac/hmac_memory.c b/src/mac/hmac/hmac_memory.c index 036ee369..99959f49 100644 --- a/src/mac/hmac/hmac_memory.c +++ b/src/mac/hmac/hmac_memory.c @@ -71,3 +71,7 @@ LBL_ERR: #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/mac/hmac/hmac_memory.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/mac/hmac/hmac_memory_multi.c b/src/mac/hmac/hmac_memory_multi.c index 4a5b9be6..b7a6d96b 100644 --- a/src/mac/hmac/hmac_memory_multi.c +++ b/src/mac/hmac/hmac_memory_multi.c @@ -86,3 +86,7 @@ LBL_ERR: #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/mac/hmac/hmac_memory_multi.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/mac/hmac/hmac_process.c b/src/mac/hmac/hmac_process.c index 30e64c37..29192820 100644 --- a/src/mac/hmac/hmac_process.c +++ b/src/mac/hmac/hmac_process.c @@ -37,3 +37,7 @@ int hmac_process(hmac_state *hmac, const unsigned char *in, unsigned long inlen) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/mac/hmac/hmac_process.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/mac/hmac/hmac_test.c b/src/mac/hmac/hmac_test.c index 0d542d43..87758f57 100644 --- a/src/mac/hmac/hmac_test.c +++ b/src/mac/hmac/hmac_test.c @@ -310,3 +310,7 @@ Key First" #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/mac/hmac/hmac_test.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/mac/omac/omac_done.c b/src/mac/omac/omac_done.c index 0a91a141..37292d54 100644 --- a/src/mac/omac/omac_done.c +++ b/src/mac/omac/omac_done.c @@ -78,3 +78,7 @@ int omac_done(omac_state *omac, unsigned char *out, unsigned long *outlen) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/mac/omac/omac_done.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/mac/omac/omac_file.c b/src/mac/omac/omac_file.c index 1e3d2f6b..63784b01 100644 --- a/src/mac/omac/omac_file.c +++ b/src/mac/omac/omac_file.c @@ -77,3 +77,7 @@ int omac_file(int cipher, } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/mac/omac/omac_file.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/mac/omac/omac_init.c b/src/mac/omac/omac_init.c index d39219d8..8866772a 100644 --- a/src/mac/omac/omac_init.c +++ b/src/mac/omac/omac_init.c @@ -39,7 +39,7 @@ int omac_init(omac_state *omac, int cipher, const unsigned char *key, unsigned l } #ifdef LTC_FAST - if (16 % sizeof(LTC_FAST_TYPE)) { + if (cipher_descriptor[cipher].block_length % sizeof(LTC_FAST_TYPE)) { return CRYPT_INVALID_ARG; } #endif @@ -93,3 +93,7 @@ int omac_init(omac_state *omac, int cipher, const unsigned char *key, unsigned l } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/mac/omac/omac_init.c,v $ */ +/* $Revision: 1.5 $ */ +/* $Date: 2005/06/06 10:22:44 $ */ diff --git a/src/mac/omac/omac_memory.c b/src/mac/omac/omac_memory.c index 51d0ce24..3b1521c3 100644 --- a/src/mac/omac/omac_memory.c +++ b/src/mac/omac/omac_memory.c @@ -69,3 +69,7 @@ LBL_ERR: } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/mac/omac/omac_memory.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/mac/omac/omac_memory_multi.c b/src/mac/omac/omac_memory_multi.c index 76e4eb08..52f7323f 100644 --- a/src/mac/omac/omac_memory_multi.c +++ b/src/mac/omac/omac_memory_multi.c @@ -84,3 +84,7 @@ LBL_ERR: } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/mac/omac/omac_memory_multi.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/mac/omac/omac_process.c b/src/mac/omac/omac_process.c index 6b603f79..ca3ec6be 100644 --- a/src/mac/omac/omac_process.c +++ b/src/mac/omac/omac_process.c @@ -27,7 +27,8 @@ */ int omac_process(omac_state *omac, const unsigned char *in, unsigned long inlen) { - int err, n, x; + unsigned long n, x; + int err; LTC_ARGCHK(omac != NULL); LTC_ARGCHK(in != NULL); @@ -57,7 +58,7 @@ int omac_process(omac_state *omac, const unsigned char *in, unsigned long inlen) while (inlen != 0) { /* ok if the block is full we xor in prev, encrypt and replace prev */ if (omac->buflen == omac->blklen) { - for (x = 0; x < omac->blklen; x++) { + for (x = 0; x < (unsigned long)omac->blklen; x++) { omac->block[x] ^= omac->prev[x]; } cipher_descriptor[omac->cipher_idx].ecb_encrypt(omac->block, omac->prev, &omac->key); @@ -77,3 +78,7 @@ int omac_process(omac_state *omac, const unsigned char *in, unsigned long inlen) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/mac/omac/omac_process.c,v $ */ +/* $Revision: 1.6 $ */ +/* $Date: 2005/05/05 14:35:58 $ */ diff --git a/src/mac/omac/omac_test.c b/src/mac/omac/omac_test.c index 42e42bd1..1bc9ead5 100644 --- a/src/mac/omac/omac_test.c +++ b/src/mac/omac/omac_test.c @@ -104,3 +104,7 @@ int omac_test(void) } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/mac/omac/omac_test.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/mac/pelican/pelican.c b/src/mac/pelican/pelican.c index fb7ce58c..85bf9ee2 100644 --- a/src/mac/pelican/pelican.c +++ b/src/mac/pelican/pelican.c @@ -102,6 +102,12 @@ int pelican_process(pelican_state *pelmac, const unsigned char *in, unsigned lon LTC_ARGCHK(pelmac != NULL); LTC_ARGCHK(in != NULL); + + /* check range */ + if (pelmac->buflen < 0 || pelmac->buflen > 15) { + return CRYPT_INVALID_ARG; + } + #ifdef LTC_FAST if (pelmac->buflen == 0) { while (inlen & ~15) { @@ -136,6 +142,12 @@ int pelican_done(pelican_state *pelmac, unsigned char *out) { LTC_ARGCHK(pelmac != NULL); LTC_ARGCHK(out != NULL); + + /* check range */ + if (pelmac->buflen < 0 || pelmac->buflen > 16) { + return CRYPT_INVALID_ARG; + } + if (pelmac->buflen == 16) { four_rounds(pelmac); pelmac->buflen = 0; @@ -147,3 +159,7 @@ int pelican_done(pelican_state *pelmac, unsigned char *out) } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/mac/pelican/pelican.c,v $ */ +/* $Revision: 1.16 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/mac/pelican/pelican_memory.c b/src/mac/pelican/pelican_memory.c index 9e0fc7b3..093340d7 100644 --- a/src/mac/pelican/pelican_memory.c +++ b/src/mac/pelican/pelican_memory.c @@ -53,3 +53,7 @@ int pelican_memory(const unsigned char *key, unsigned long keylen, #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/mac/pelican/pelican_memory.c,v $ */ +/* $Revision: 1.5 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/mac/pelican/pelican_test.c b/src/mac/pelican/pelican_test.c index e694f61a..06ec3f07 100644 --- a/src/mac/pelican/pelican_test.c +++ b/src/mac/pelican/pelican_test.c @@ -114,3 +114,7 @@ int pelican_test(void) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/mac/pelican/pelican_test.c,v $ */ +/* $Revision: 1.9 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/mac/pmac/pmac_done.c b/src/mac/pmac/pmac_done.c index 610e433a..09c430c0 100644 --- a/src/mac/pmac/pmac_done.c +++ b/src/mac/pmac/pmac_done.c @@ -66,3 +66,7 @@ int pmac_done(pmac_state *state, unsigned char *out, unsigned long *outlen) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/mac/pmac/pmac_done.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/mac/pmac/pmac_file.c b/src/mac/pmac/pmac_file.c index 5b7dd242..1034c6ff 100644 --- a/src/mac/pmac/pmac_file.c +++ b/src/mac/pmac/pmac_file.c @@ -78,3 +78,7 @@ int pmac_file(int cipher, } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/mac/pmac/pmac_file.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/mac/pmac/pmac_init.c b/src/mac/pmac/pmac_init.c index a02b20c5..5bd94a01 100644 --- a/src/mac/pmac/pmac_init.c +++ b/src/mac/pmac/pmac_init.c @@ -138,3 +138,7 @@ int pmac_init(pmac_state *pmac, int cipher, const unsigned char *key, unsigned l } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/mac/pmac/pmac_init.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/mac/pmac/pmac_memory.c b/src/mac/pmac/pmac_memory.c index a04cd78f..fcdef999 100644 --- a/src/mac/pmac/pmac_memory.c +++ b/src/mac/pmac/pmac_memory.c @@ -68,3 +68,7 @@ LBL_ERR: } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/mac/pmac/pmac_memory.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/mac/pmac/pmac_memory_multi.c b/src/mac/pmac/pmac_memory_multi.c index 289d2e0c..2cc8572d 100644 --- a/src/mac/pmac/pmac_memory_multi.c +++ b/src/mac/pmac/pmac_memory_multi.c @@ -83,3 +83,7 @@ LBL_ERR: } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/mac/pmac/pmac_memory_multi.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/mac/pmac/pmac_ntz.c b/src/mac/pmac/pmac_ntz.c index 97f0a15a..7ec45509 100644 --- a/src/mac/pmac/pmac_ntz.c +++ b/src/mac/pmac/pmac_ntz.c @@ -33,3 +33,7 @@ int pmac_ntz(unsigned long x) } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/mac/pmac/pmac_ntz.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/mac/pmac/pmac_process.c b/src/mac/pmac/pmac_process.c index 5cee5ecc..9ebd44ec 100644 --- a/src/mac/pmac/pmac_process.c +++ b/src/mac/pmac/pmac_process.c @@ -90,3 +90,7 @@ int pmac_process(pmac_state *pmac, const unsigned char *in, unsigned long inlen) } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/mac/pmac/pmac_process.c,v $ */ +/* $Revision: 1.5 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/mac/pmac/pmac_shift_xor.c b/src/mac/pmac/pmac_shift_xor.c index 18c6141e..f24c22b4 100644 --- a/src/mac/pmac/pmac_shift_xor.c +++ b/src/mac/pmac/pmac_shift_xor.c @@ -38,3 +38,7 @@ void pmac_shift_xor(pmac_state *pmac) } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/mac/pmac/pmac_shift_xor.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/mac/pmac/pmac_test.c b/src/mac/pmac/pmac_test.c index 6c610f9f..6d88703b 100644 --- a/src/mac/pmac/pmac_test.c +++ b/src/mac/pmac/pmac_test.c @@ -159,3 +159,7 @@ int pmac_test(void) + +/* $Source: /cvs/libtom/libtomcrypt/src/mac/pmac/pmac_test.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/misc/base64/base64_decode.c b/src/misc/base64/base64_decode.c index ac6db57e..551add18 100644 --- a/src/misc/base64/base64_decode.c +++ b/src/misc/base64/base64_decode.c @@ -98,3 +98,7 @@ int base64_decode(const unsigned char *in, unsigned long inlen, #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/base64/base64_decode.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/misc/base64/base64_encode.c b/src/misc/base64/base64_encode.c index 047980c9..59786438 100644 --- a/src/misc/base64/base64_encode.c +++ b/src/misc/base64/base64_encode.c @@ -74,3 +74,7 @@ int base64_encode(const unsigned char *in, unsigned long inlen, #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/base64/base64_encode.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/misc/burn_stack.c b/src/misc/burn_stack.c index 3bc69ab1..7ac65185 100644 --- a/src/misc/burn_stack.c +++ b/src/misc/burn_stack.c @@ -28,3 +28,7 @@ void burn_stack(unsigned long len) } + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/burn_stack.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/misc/crypt/crypt.c b/src/misc/crypt/crypt.c index 83f1414a..6d85ceb1 100644 --- a/src/misc/crypt/crypt.c +++ b/src/misc/crypt/crypt.c @@ -295,8 +295,21 @@ const char *crypt_build_settings = #endif #if defined(LTC_NO_ASM) " LTC_NO_ASM " +#endif +#if defined(LTC_NO_TEST) + " LTC_NO_TEST " +#endif +#if defined(LTC_NO_TABLES) + " LTC_NO_TABLES " +#endif +#if defined(LTC_PTHREAD) + " LTC_PTHREAD " #endif "\n" "\n\n\n" ; + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt.c,v $ */ +/* $Revision: 1.11 $ */ +/* $Date: 2005/06/19 18:00:28 $ */ diff --git a/src/misc/crypt/crypt_argchk.c b/src/misc/crypt/crypt_argchk.c index d345c8d0..699c6cf2 100644 --- a/src/misc/crypt/crypt_argchk.c +++ b/src/misc/crypt/crypt_argchk.c @@ -24,3 +24,7 @@ void crypt_argchk(char *v, char *s, int d) (void)raise(SIGABRT); } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt_argchk.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/misc/crypt/crypt_cipher_descriptor.c b/src/misc/crypt/crypt_cipher_descriptor.c index e2744496..127e85c0 100644 --- a/src/misc/crypt/crypt_cipher_descriptor.c +++ b/src/misc/crypt/crypt_cipher_descriptor.c @@ -19,3 +19,9 @@ struct ltc_cipher_descriptor cipher_descriptor[TAB_SIZE] = { { NULL, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL } }; +LTC_MUTEX_GLOBAL(ltc_cipher_mutex); + + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt_cipher_descriptor.c,v $ */ +/* $Revision: 1.8 $ */ +/* $Date: 2005/06/19 18:00:28 $ */ diff --git a/src/misc/crypt/crypt_cipher_is_valid.c b/src/misc/crypt/crypt_cipher_is_valid.c index b1794025..7830303e 100644 --- a/src/misc/crypt/crypt_cipher_is_valid.c +++ b/src/misc/crypt/crypt_cipher_is_valid.c @@ -22,8 +22,15 @@ */ int cipher_is_valid(int idx) { + LTC_MUTEX_LOCK(<c_cipher_mutex); if (idx < 0 || idx >= TAB_SIZE || cipher_descriptor[idx].name == NULL) { + LTC_MUTEX_UNLOCK(<c_cipher_mutex); return CRYPT_INVALID_CIPHER; } + LTC_MUTEX_UNLOCK(<c_cipher_mutex); return CRYPT_OK; } + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt_cipher_is_valid.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/06/19 18:00:28 $ */ diff --git a/src/misc/crypt/crypt_find_cipher.c b/src/misc/crypt/crypt_find_cipher.c index b83109c1..e7fba732 100644 --- a/src/misc/crypt/crypt_find_cipher.c +++ b/src/misc/crypt/crypt_find_cipher.c @@ -24,11 +24,18 @@ int find_cipher(const char *name) { int x; LTC_ARGCHK(name != NULL); + LTC_MUTEX_LOCK(<c_cipher_mutex); for (x = 0; x < TAB_SIZE; x++) { if (cipher_descriptor[x].name != NULL && !strcmp(cipher_descriptor[x].name, name)) { + LTC_MUTEX_UNLOCK(<c_cipher_mutex); return x; } } + LTC_MUTEX_UNLOCK(<c_cipher_mutex); return -1; } + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt_find_cipher.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/06/19 18:00:28 $ */ diff --git a/src/misc/crypt/crypt_find_cipher_any.c b/src/misc/crypt/crypt_find_cipher_any.c index 42e59c05..6dd0e6dc 100644 --- a/src/misc/crypt/crypt_find_cipher_any.c +++ b/src/misc/crypt/crypt_find_cipher_any.c @@ -31,13 +31,20 @@ int find_cipher_any(const char *name, int blocklen, int keylen) x = find_cipher(name); if (x != -1) return x; + LTC_MUTEX_LOCK(<c_cipher_mutex); for (x = 0; x < TAB_SIZE; x++) { if (cipher_descriptor[x].name == NULL) { continue; } if (blocklen <= (int)cipher_descriptor[x].block_length && keylen <= (int)cipher_descriptor[x].max_key_length) { + LTC_MUTEX_UNLOCK(<c_cipher_mutex); return x; } } + LTC_MUTEX_UNLOCK(<c_cipher_mutex); return -1; } + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt_find_cipher_any.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/06/19 18:00:28 $ */ diff --git a/src/misc/crypt/crypt_find_cipher_id.c b/src/misc/crypt/crypt_find_cipher_id.c index 986baf58..5f5f8743 100644 --- a/src/misc/crypt/crypt_find_cipher_id.c +++ b/src/misc/crypt/crypt_find_cipher_id.c @@ -23,10 +23,18 @@ int find_cipher_id(unsigned char ID) { int x; + LTC_MUTEX_LOCK(<c_cipher_mutex); for (x = 0; x < TAB_SIZE; x++) { if (cipher_descriptor[x].ID == ID) { - return (cipher_descriptor[x].name == NULL) ? -1 : x; + x = (cipher_descriptor[x].name == NULL) ? -1 : x; + LTC_MUTEX_UNLOCK(<c_cipher_mutex); + return x; } } + LTC_MUTEX_UNLOCK(<c_cipher_mutex); return -1; } + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt_find_cipher_id.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/06/19 18:00:28 $ */ diff --git a/src/misc/crypt/crypt_find_hash.c b/src/misc/crypt/crypt_find_hash.c index d66201c1..d02a449e 100644 --- a/src/misc/crypt/crypt_find_hash.c +++ b/src/misc/crypt/crypt_find_hash.c @@ -24,10 +24,17 @@ int find_hash(const char *name) { int x; LTC_ARGCHK(name != NULL); + LTC_MUTEX_LOCK(<c_hash_mutex); for (x = 0; x < TAB_SIZE; x++) { if (hash_descriptor[x].name != NULL && strcmp(hash_descriptor[x].name, name) == 0) { + LTC_MUTEX_UNLOCK(<c_hash_mutex); return x; } } + LTC_MUTEX_UNLOCK(<c_hash_mutex); return -1; } + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt_find_hash.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/06/19 18:00:28 $ */ diff --git a/src/misc/crypt/crypt_find_hash_any.c b/src/misc/crypt/crypt_find_hash_any.c index 0d6d430f..1172f22c 100644 --- a/src/misc/crypt/crypt_find_hash_any.c +++ b/src/misc/crypt/crypt_find_hash_any.c @@ -28,6 +28,7 @@ x = find_hash(name); if (x != -1) return x; + LTC_MUTEX_LOCK(<c_hash_mutex); y = MAXBLOCKSIZE+1; z = -1; for (x = 0; x < TAB_SIZE; x++) { @@ -39,5 +40,10 @@ y = hash_descriptor[x].hashsize; } } + LTC_MUTEX_UNLOCK(<c_hash_mutex); return z; } + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt_find_hash_any.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/06/19 18:00:28 $ */ diff --git a/src/misc/crypt/crypt_find_hash_id.c b/src/misc/crypt/crypt_find_hash_id.c index 8628d537..8cd0d388 100644 --- a/src/misc/crypt/crypt_find_hash_id.c +++ b/src/misc/crypt/crypt_find_hash_id.c @@ -23,10 +23,18 @@ int find_hash_id(unsigned char ID) { int x; + LTC_MUTEX_LOCK(<c_hash_mutex); for (x = 0; x < TAB_SIZE; x++) { - if (hash_descriptor[x].ID == ID) { - return (hash_descriptor[x].name == NULL) ? -1 : x; - } + if (hash_descriptor[x].ID == ID) { + x = (hash_descriptor[x].name == NULL) ? -1 : x; + LTC_MUTEX_UNLOCK(<c_hash_mutex); + return x; + } } + LTC_MUTEX_UNLOCK(<c_hash_mutex); return -1; } + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt_find_hash_id.c,v $ */ +/* $Revision: 1.5 $ */ +/* $Date: 2005/06/19 18:03:25 $ */ diff --git a/src/misc/crypt/crypt_find_prng.c b/src/misc/crypt/crypt_find_prng.c index c01a023a..503813df 100644 --- a/src/misc/crypt/crypt_find_prng.c +++ b/src/misc/crypt/crypt_find_prng.c @@ -24,11 +24,18 @@ int find_prng(const char *name) { int x; LTC_ARGCHK(name != NULL); + LTC_MUTEX_LOCK(<c_prng_mutex); for (x = 0; x < TAB_SIZE; x++) { if ((prng_descriptor[x].name != NULL) && strcmp(prng_descriptor[x].name, name) == 0) { + LTC_MUTEX_UNLOCK(<c_prng_mutex); return x; } } + LTC_MUTEX_UNLOCK(<c_prng_mutex); return -1; } + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt_find_prng.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/06/19 18:00:28 $ */ diff --git a/src/misc/crypt/crypt_hash_descriptor.c b/src/misc/crypt/crypt_hash_descriptor.c index cbd6d03e..f8583d8f 100644 --- a/src/misc/crypt/crypt_hash_descriptor.c +++ b/src/misc/crypt/crypt_hash_descriptor.c @@ -18,3 +18,10 @@ struct ltc_hash_descriptor hash_descriptor[TAB_SIZE] = { { NULL, 0, 0, 0, { 0 }, 0, NULL, NULL, NULL, NULL } }; + +LTC_MUTEX_GLOBAL(ltc_hash_mutex); + + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt_hash_descriptor.c,v $ */ +/* $Revision: 1.6 $ */ +/* $Date: 2005/06/19 18:00:28 $ */ diff --git a/src/misc/crypt/crypt_hash_is_valid.c b/src/misc/crypt/crypt_hash_is_valid.c index c9784b84..a8130d46 100644 --- a/src/misc/crypt/crypt_hash_is_valid.c +++ b/src/misc/crypt/crypt_hash_is_valid.c @@ -22,8 +22,15 @@ */ int hash_is_valid(int idx) { + LTC_MUTEX_LOCK(<c_hash_mutex); if (idx < 0 || idx >= TAB_SIZE || hash_descriptor[idx].name == NULL) { + LTC_MUTEX_UNLOCK(<c_hash_mutex); return CRYPT_INVALID_HASH; } + LTC_MUTEX_UNLOCK(<c_hash_mutex); return CRYPT_OK; } + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt_hash_is_valid.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/06/19 18:00:28 $ */ diff --git a/src/misc/crypt/crypt_prng_descriptor.c b/src/misc/crypt/crypt_prng_descriptor.c index 8a995104..7335f5db 100644 --- a/src/misc/crypt/crypt_prng_descriptor.c +++ b/src/misc/crypt/crypt_prng_descriptor.c @@ -17,3 +17,10 @@ struct ltc_prng_descriptor prng_descriptor[TAB_SIZE] = { { NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL } }; + +LTC_MUTEX_GLOBAL(ltc_prng_mutex); + + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt_prng_descriptor.c,v $ */ +/* $Revision: 1.5 $ */ +/* $Date: 2005/06/19 18:00:28 $ */ diff --git a/src/misc/crypt/crypt_prng_is_valid.c b/src/misc/crypt/crypt_prng_is_valid.c index 7795bbb9..a7a7ed69 100644 --- a/src/misc/crypt/crypt_prng_is_valid.c +++ b/src/misc/crypt/crypt_prng_is_valid.c @@ -22,8 +22,15 @@ */ int prng_is_valid(int idx) { + LTC_MUTEX_LOCK(<c_prng_mutex); if (idx < 0 || idx >= TAB_SIZE || prng_descriptor[idx].name == NULL) { + LTC_MUTEX_UNLOCK(<c_prng_mutex); return CRYPT_INVALID_PRNG; } + LTC_MUTEX_UNLOCK(<c_prng_mutex); return CRYPT_OK; } + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt_prng_is_valid.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/06/19 18:00:28 $ */ diff --git a/src/misc/crypt/crypt_register_cipher.c b/src/misc/crypt/crypt_register_cipher.c index 74349e66..c55d7c0d 100644 --- a/src/misc/crypt/crypt_register_cipher.c +++ b/src/misc/crypt/crypt_register_cipher.c @@ -27,8 +27,10 @@ int register_cipher(const struct ltc_cipher_descriptor *cipher) LTC_ARGCHK(cipher != NULL); /* is it already registered? */ + LTC_MUTEX_LOCK(<c_cipher_mutex); for (x = 0; x < TAB_SIZE; x++) { if (cipher_descriptor[x].name != NULL && cipher_descriptor[x].ID == cipher->ID) { + LTC_MUTEX_UNLOCK(<c_cipher_mutex); return x; } } @@ -37,10 +39,16 @@ int register_cipher(const struct ltc_cipher_descriptor *cipher) for (x = 0; x < TAB_SIZE; x++) { if (cipher_descriptor[x].name == NULL) { XMEMCPY(&cipher_descriptor[x], cipher, sizeof(struct ltc_cipher_descriptor)); + LTC_MUTEX_UNLOCK(<c_cipher_mutex); return x; } } /* no spot */ + LTC_MUTEX_UNLOCK(<c_cipher_mutex); return -1; } + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt_register_cipher.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/06/19 18:00:28 $ */ diff --git a/src/misc/crypt/crypt_register_hash.c b/src/misc/crypt/crypt_register_hash.c index d5cf5b83..0ff521fc 100644 --- a/src/misc/crypt/crypt_register_hash.c +++ b/src/misc/crypt/crypt_register_hash.c @@ -27,8 +27,10 @@ int register_hash(const struct ltc_hash_descriptor *hash) LTC_ARGCHK(hash != NULL); /* is it already registered? */ + LTC_MUTEX_LOCK(<c_hash_mutex); for (x = 0; x < TAB_SIZE; x++) { if (memcmp(&hash_descriptor[x], hash, sizeof(struct ltc_hash_descriptor)) == 0) { + LTC_MUTEX_UNLOCK(<c_hash_mutex); return x; } } @@ -37,10 +39,16 @@ int register_hash(const struct ltc_hash_descriptor *hash) for (x = 0; x < TAB_SIZE; x++) { if (hash_descriptor[x].name == NULL) { XMEMCPY(&hash_descriptor[x], hash, sizeof(struct ltc_hash_descriptor)); + LTC_MUTEX_UNLOCK(<c_hash_mutex); return x; } } /* no spot */ + LTC_MUTEX_UNLOCK(<c_hash_mutex); return -1; } + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt_register_hash.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/06/19 18:00:28 $ */ diff --git a/src/misc/crypt/crypt_register_prng.c b/src/misc/crypt/crypt_register_prng.c index 6a1be779..5ab4a499 100644 --- a/src/misc/crypt/crypt_register_prng.c +++ b/src/misc/crypt/crypt_register_prng.c @@ -27,8 +27,10 @@ int register_prng(const struct ltc_prng_descriptor *prng) LTC_ARGCHK(prng != NULL); /* is it already registered? */ + LTC_MUTEX_LOCK(<c_prng_mutex); for (x = 0; x < TAB_SIZE; x++) { if (memcmp(&prng_descriptor[x], prng, sizeof(struct ltc_prng_descriptor)) == 0) { + LTC_MUTEX_UNLOCK(<c_prng_mutex); return x; } } @@ -37,10 +39,16 @@ int register_prng(const struct ltc_prng_descriptor *prng) for (x = 0; x < TAB_SIZE; x++) { if (prng_descriptor[x].name == NULL) { XMEMCPY(&prng_descriptor[x], prng, sizeof(struct ltc_prng_descriptor)); + LTC_MUTEX_UNLOCK(<c_prng_mutex); return x; } } /* no spot */ + LTC_MUTEX_UNLOCK(<c_prng_mutex); return -1; } + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt_register_prng.c,v $ */ +/* $Revision: 1.5 $ */ +/* $Date: 2005/06/19 18:00:28 $ */ diff --git a/src/misc/crypt/crypt_unregister_cipher.c b/src/misc/crypt/crypt_unregister_cipher.c index 0511de54..4081ca88 100644 --- a/src/misc/crypt/crypt_unregister_cipher.c +++ b/src/misc/crypt/crypt_unregister_cipher.c @@ -27,12 +27,19 @@ int unregister_cipher(const struct ltc_cipher_descriptor *cipher) LTC_ARGCHK(cipher != NULL); /* is it already registered? */ + LTC_MUTEX_LOCK(<c_cipher_mutex); for (x = 0; x < TAB_SIZE; x++) { if (memcmp(&cipher_descriptor[x], cipher, sizeof(struct ltc_cipher_descriptor)) == 0) { cipher_descriptor[x].name = NULL; cipher_descriptor[x].ID = 255; + LTC_MUTEX_UNLOCK(<c_cipher_mutex); return CRYPT_OK; } } + LTC_MUTEX_UNLOCK(<c_cipher_mutex); return CRYPT_ERROR; } + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt_unregister_cipher.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/06/19 18:00:28 $ */ diff --git a/src/misc/crypt/crypt_unregister_hash.c b/src/misc/crypt/crypt_unregister_hash.c index 25e36f20..fdd25b29 100644 --- a/src/misc/crypt/crypt_unregister_hash.c +++ b/src/misc/crypt/crypt_unregister_hash.c @@ -27,11 +27,18 @@ int unregister_hash(const struct ltc_hash_descriptor *hash) LTC_ARGCHK(hash != NULL); /* is it already registered? */ + LTC_MUTEX_LOCK(<c_hash_mutex); for (x = 0; x < TAB_SIZE; x++) { if (memcmp(&hash_descriptor[x], hash, sizeof(struct ltc_hash_descriptor)) == 0) { hash_descriptor[x].name = NULL; + LTC_MUTEX_UNLOCK(<c_hash_mutex); return CRYPT_OK; } } + LTC_MUTEX_UNLOCK(<c_hash_mutex); return CRYPT_ERROR; } + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt_unregister_hash.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/06/19 18:00:28 $ */ diff --git a/src/misc/crypt/crypt_unregister_prng.c b/src/misc/crypt/crypt_unregister_prng.c index 55cc5543..4aff6de1 100644 --- a/src/misc/crypt/crypt_unregister_prng.c +++ b/src/misc/crypt/crypt_unregister_prng.c @@ -25,13 +25,20 @@ int unregister_prng(const struct ltc_prng_descriptor *prng) int x; LTC_ARGCHK(prng != NULL); - + /* is it already registered? */ + LTC_MUTEX_LOCK(<c_prng_mutex); for (x = 0; x < TAB_SIZE; x++) { if (memcmp(&prng_descriptor[x], prng, sizeof(struct ltc_prng_descriptor)) != 0) { prng_descriptor[x].name = NULL; + LTC_MUTEX_UNLOCK(<c_prng_mutex); return CRYPT_OK; } } + LTC_MUTEX_UNLOCK(<c_prng_mutex); return CRYPT_ERROR; } + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/crypt/crypt_unregister_prng.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/06/19 18:00:28 $ */ diff --git a/src/misc/error_to_string.c b/src/misc/error_to_string.c index 3a325a29..6167a708 100644 --- a/src/misc/error_to_string.c +++ b/src/misc/error_to_string.c @@ -68,3 +68,7 @@ const char *error_to_string(int err) } } + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/error_to_string.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/misc/mpi/is_prime.c b/src/misc/mpi/is_prime.c index f58391fc..9ee4ed25 100644 --- a/src/misc/mpi/is_prime.c +++ b/src/misc/mpi/is_prime.c @@ -30,3 +30,7 @@ int is_prime(mp_int *N, int *result) } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/mpi/is_prime.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/misc/mpi/mpi.c b/src/misc/mpi/mpi.c index ba3a7ed5..56dfa02c 100644 --- a/src/misc/mpi/mpi.c +++ b/src/misc/mpi/mpi.c @@ -9042,3 +9042,7 @@ int KARATSUBA_MUL_CUTOFF = 74, /* Min. number of digits before Karatsub /* EOF */ + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/mpi/mpi.c,v $ */ +/* $Revision: 1.5 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/misc/mpi/mpi_to_ltc_error.c b/src/misc/mpi/mpi_to_ltc_error.c index 3a4ea176..bc39ea17 100644 --- a/src/misc/mpi/mpi_to_ltc_error.c +++ b/src/misc/mpi/mpi_to_ltc_error.c @@ -42,3 +42,7 @@ int mpi_to_ltc_error(int err) } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/mpi/mpi_to_ltc_error.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/misc/mpi/rand_prime.c b/src/misc/mpi/rand_prime.c index 97ddf731..9c5921a2 100644 --- a/src/misc/mpi/rand_prime.c +++ b/src/misc/mpi/rand_prime.c @@ -64,3 +64,7 @@ int rand_prime(mp_int *N, long len, prng_state *prng, int wprng) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/mpi/rand_prime.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/misc/pkcs5/pkcs_5_1.c b/src/misc/pkcs5/pkcs_5_1.c index ec473721..90411b7f 100644 --- a/src/misc/pkcs5/pkcs_5_1.c +++ b/src/misc/pkcs5/pkcs_5_1.c @@ -100,3 +100,7 @@ LBL_ERR: } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/pkcs5/pkcs_5_1.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/misc/pkcs5/pkcs_5_2.c b/src/misc/pkcs5/pkcs_5_2.c index aac811ba..08d8a18c 100644 --- a/src/misc/pkcs5/pkcs_5_2.c +++ b/src/misc/pkcs5/pkcs_5_2.c @@ -123,3 +123,7 @@ LBL_ERR: #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/pkcs5/pkcs_5_2.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/misc/zeromem.c b/src/misc/zeromem.c index c640bb4d..1ab07dcf 100644 --- a/src/misc/zeromem.c +++ b/src/misc/zeromem.c @@ -28,3 +28,7 @@ void zeromem(void *out, size_t outlen) *mem++ = 0; } } + +/* $Source: /cvs/libtom/libtomcrypt/src/misc/zeromem.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/modes/cbc/cbc_decrypt.c b/src/modes/cbc/cbc_decrypt.c index c79631c3..fc3fdd58 100644 --- a/src/modes/cbc/cbc_decrypt.c +++ b/src/modes/cbc/cbc_decrypt.c @@ -89,3 +89,7 @@ int cbc_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, s } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/modes/cbc/cbc_decrypt.c,v $ */ +/* $Revision: 1.9 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/modes/cbc/cbc_done.c b/src/modes/cbc/cbc_done.c index daa91103..afaa9bb9 100644 --- a/src/modes/cbc/cbc_done.c +++ b/src/modes/cbc/cbc_done.c @@ -36,3 +36,7 @@ int cbc_done(symmetric_CBC *cbc) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/modes/cbc/cbc_done.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/modes/cbc/cbc_encrypt.c b/src/modes/cbc/cbc_encrypt.c index 00ca05f1..a6b41b10 100644 --- a/src/modes/cbc/cbc_encrypt.c +++ b/src/modes/cbc/cbc_encrypt.c @@ -90,3 +90,7 @@ int cbc_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, s } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/modes/cbc/cbc_encrypt.c,v $ */ +/* $Revision: 1.7 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/modes/cbc/cbc_getiv.c b/src/modes/cbc/cbc_getiv.c index 0f5c3e43..ab418b19 100644 --- a/src/modes/cbc/cbc_getiv.c +++ b/src/modes/cbc/cbc_getiv.c @@ -39,3 +39,7 @@ int cbc_getiv(unsigned char *IV, unsigned long *len, symmetric_CBC *cbc) } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/modes/cbc/cbc_getiv.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/modes/cbc/cbc_setiv.c b/src/modes/cbc/cbc_setiv.c index f2e8b31c..c38e7132 100644 --- a/src/modes/cbc/cbc_setiv.c +++ b/src/modes/cbc/cbc_setiv.c @@ -38,3 +38,7 @@ int cbc_setiv(const unsigned char *IV, unsigned long len, symmetric_CBC *cbc) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/modes/cbc/cbc_setiv.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/modes/cbc/cbc_start.c b/src/modes/cbc/cbc_start.c index 680faabe..833bb876 100644 --- a/src/modes/cbc/cbc_start.c +++ b/src/modes/cbc/cbc_start.c @@ -56,3 +56,7 @@ int cbc_start(int cipher, const unsigned char *IV, const unsigned char *key, } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/modes/cbc/cbc_start.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/modes/cfb/cfb_decrypt.c b/src/modes/cfb/cfb_decrypt.c index 8b788986..3d51ba58 100644 --- a/src/modes/cfb/cfb_decrypt.c +++ b/src/modes/cfb/cfb_decrypt.c @@ -59,3 +59,7 @@ int cfb_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, s #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/modes/cfb/cfb_decrypt.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/modes/cfb/cfb_done.c b/src/modes/cfb/cfb_done.c index 04e775c3..89247618 100644 --- a/src/modes/cfb/cfb_done.c +++ b/src/modes/cfb/cfb_done.c @@ -36,3 +36,7 @@ int cfb_done(symmetric_CFB *cfb) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/modes/cfb/cfb_done.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/modes/cfb/cfb_encrypt.c b/src/modes/cfb/cfb_encrypt.c index b9603687..cca01164 100644 --- a/src/modes/cfb/cfb_encrypt.c +++ b/src/modes/cfb/cfb_encrypt.c @@ -57,3 +57,7 @@ int cfb_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, s } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/modes/cfb/cfb_encrypt.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/modes/cfb/cfb_getiv.c b/src/modes/cfb/cfb_getiv.c index e59c1e4a..5c5b4c42 100644 --- a/src/modes/cfb/cfb_getiv.c +++ b/src/modes/cfb/cfb_getiv.c @@ -39,3 +39,7 @@ int cfb_getiv(unsigned char *IV, unsigned long *len, symmetric_CFB *cfb) } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/modes/cfb/cfb_getiv.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/modes/cfb/cfb_setiv.c b/src/modes/cfb/cfb_setiv.c index e475ad9e..d075a0d4 100644 --- a/src/modes/cfb/cfb_setiv.c +++ b/src/modes/cfb/cfb_setiv.c @@ -47,3 +47,7 @@ int cfb_setiv(const unsigned char *IV, unsigned long len, symmetric_CFB *cfb) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/modes/cfb/cfb_setiv.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/modes/cfb/cfb_start.c b/src/modes/cfb/cfb_start.c index 7157fc38..755e1739 100644 --- a/src/modes/cfb/cfb_start.c +++ b/src/modes/cfb/cfb_start.c @@ -61,3 +61,7 @@ int cfb_start(int cipher, const unsigned char *IV, const unsigned char *key, } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/modes/cfb/cfb_start.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/modes/ctr/ctr_decrypt.c b/src/modes/ctr/ctr_decrypt.c index daa78a80..e1d1d510 100644 --- a/src/modes/ctr/ctr_decrypt.c +++ b/src/modes/ctr/ctr_decrypt.c @@ -36,3 +36,7 @@ int ctr_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, s #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/modes/ctr/ctr_decrypt.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/modes/ctr/ctr_done.c b/src/modes/ctr/ctr_done.c index 88508baa..f2e79bae 100644 --- a/src/modes/ctr/ctr_done.c +++ b/src/modes/ctr/ctr_done.c @@ -36,3 +36,7 @@ int ctr_done(symmetric_CTR *ctr) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/modes/ctr/ctr_done.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/modes/ctr/ctr_encrypt.c b/src/modes/ctr/ctr_encrypt.c index a96b8068..79795aeb 100644 --- a/src/modes/ctr/ctr_encrypt.c +++ b/src/modes/ctr/ctr_encrypt.c @@ -60,7 +60,7 @@ int ctr_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, s /* is the pad empty? */ if (ctr->padlen == ctr->blocklen) { /* increment counter */ - if (ctr->mode == 0) { + if (ctr->mode == CTR_COUNTER_LITTLE_ENDIAN) { /* little-endian */ for (x = 0; x < ctr->blocklen; x++) { ctr->ctr[x] = (ctr->ctr[x] + (unsigned char)1) & (unsigned char)255; @@ -102,3 +102,7 @@ int ctr_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, s } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/modes/ctr/ctr_encrypt.c,v $ */ +/* $Revision: 1.13 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/modes/ctr/ctr_getiv.c b/src/modes/ctr/ctr_getiv.c index 3997033d..50ce6a07 100644 --- a/src/modes/ctr/ctr_getiv.c +++ b/src/modes/ctr/ctr_getiv.c @@ -39,3 +39,7 @@ int ctr_getiv(unsigned char *IV, unsigned long *len, symmetric_CTR *ctr) } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/modes/ctr/ctr_getiv.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/modes/ctr/ctr_setiv.c b/src/modes/ctr/ctr_setiv.c index 2aab190d..64d4c431 100644 --- a/src/modes/ctr/ctr_setiv.c +++ b/src/modes/ctr/ctr_setiv.c @@ -52,3 +52,7 @@ int ctr_setiv(const unsigned char *IV, unsigned long len, symmetric_CTR *ctr) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/modes/ctr/ctr_setiv.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/modes/ctr/ctr_start.c b/src/modes/ctr/ctr_start.c index db8c464e..7c7eebb8 100644 --- a/src/modes/ctr/ctr_start.c +++ b/src/modes/ctr/ctr_start.c @@ -21,19 +21,23 @@ /** Initialize a CTR context @param cipher The index of the cipher desired - @param count The initial vector + @param IV The initial vector @param key The secret key @param keylen The length of the secret key (octets) @param num_rounds Number of rounds in the cipher desired (0 for default) + @param ctr_mode The counter mode (CTR_COUNTER_LITTLE_ENDIAN or CTR_COUNTER_BIG_ENDIAN) @param ctr The CTR state to initialize @return CRYPT_OK if successful */ -int ctr_start(int cipher, const unsigned char *count, const unsigned char *key, int keylen, - int num_rounds, symmetric_CTR *ctr) +int ctr_start( int cipher, + const unsigned char *IV, + const unsigned char *key, int keylen, + int num_rounds, int ctr_mode, + symmetric_CTR *ctr) { int x, err; - LTC_ARGCHK(count != NULL); + LTC_ARGCHK(IV != NULL); LTC_ARGCHK(key != NULL); LTC_ARGCHK(ctr != NULL); @@ -51,12 +55,16 @@ int ctr_start(int cipher, const unsigned char *count, const unsigned char *key, ctr->blocklen = cipher_descriptor[cipher].block_length; ctr->cipher = cipher; ctr->padlen = 0; - ctr->mode = 0; + ctr->mode = ctr_mode; for (x = 0; x < ctr->blocklen; x++) { - ctr->ctr[x] = count[x]; + ctr->ctr[x] = IV[x]; } cipher_descriptor[ctr->cipher].ecb_encrypt(ctr->ctr, ctr->pad, &ctr->key); return CRYPT_OK; } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/modes/ctr/ctr_start.c,v $ */ +/* $Revision: 1.6 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/modes/ecb/ecb_decrypt.c b/src/modes/ecb/ecb_decrypt.c index 8db4d370..aa836615 100644 --- a/src/modes/ecb/ecb_decrypt.c +++ b/src/modes/ecb/ecb_decrypt.c @@ -53,3 +53,7 @@ int ecb_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, s } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/modes/ecb/ecb_decrypt.c,v $ */ +/* $Revision: 1.5 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/modes/ecb/ecb_done.c b/src/modes/ecb/ecb_done.c index 31a42fae..a0726152 100644 --- a/src/modes/ecb/ecb_done.c +++ b/src/modes/ecb/ecb_done.c @@ -18,7 +18,7 @@ #ifdef ECB /** Terminate the chain - @param rcb The ECB chain to terminate + @param ecb The ECB chain to terminate @return CRYPT_OK on success */ int ecb_done(symmetric_ECB *ecb) @@ -36,3 +36,7 @@ int ecb_done(symmetric_ECB *ecb) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/modes/ecb/ecb_done.c,v $ */ +/* $Revision: 1.5 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/modes/ecb/ecb_encrypt.c b/src/modes/ecb/ecb_encrypt.c index dc045e9d..21e03851 100644 --- a/src/modes/ecb/ecb_encrypt.c +++ b/src/modes/ecb/ecb_encrypt.c @@ -53,3 +53,7 @@ int ecb_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, s } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/modes/ecb/ecb_encrypt.c,v $ */ +/* $Revision: 1.5 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/modes/ecb/ecb_start.c b/src/modes/ecb/ecb_start.c index a8b6d450..f7baa81b 100644 --- a/src/modes/ecb/ecb_start.c +++ b/src/modes/ecb/ecb_start.c @@ -42,3 +42,7 @@ int ecb_start(int cipher, const unsigned char *key, int keylen, int num_rounds, } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/modes/ecb/ecb_start.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/modes/ofb/ofb_decrypt.c b/src/modes/ofb/ofb_decrypt.c index f7254102..cf5f19d2 100644 --- a/src/modes/ofb/ofb_decrypt.c +++ b/src/modes/ofb/ofb_decrypt.c @@ -37,3 +37,7 @@ int ofb_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, s #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/modes/ofb/ofb_decrypt.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/modes/ofb/ofb_done.c b/src/modes/ofb/ofb_done.c index ff72ddc1..5e114f4e 100644 --- a/src/modes/ofb/ofb_done.c +++ b/src/modes/ofb/ofb_done.c @@ -36,3 +36,7 @@ int ofb_done(symmetric_OFB *ofb) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/modes/ofb/ofb_done.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/modes/ofb/ofb_encrypt.c b/src/modes/ofb/ofb_encrypt.c index 4409ac8d..d66979a2 100644 --- a/src/modes/ofb/ofb_encrypt.c +++ b/src/modes/ofb/ofb_encrypt.c @@ -52,3 +52,7 @@ int ofb_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, s } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/modes/ofb/ofb_encrypt.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/modes/ofb/ofb_getiv.c b/src/modes/ofb/ofb_getiv.c index eb8ef1e4..f945fff2 100644 --- a/src/modes/ofb/ofb_getiv.c +++ b/src/modes/ofb/ofb_getiv.c @@ -39,3 +39,7 @@ int ofb_getiv(unsigned char *IV, unsigned long *len, symmetric_OFB *ofb) } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/modes/ofb/ofb_getiv.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/modes/ofb/ofb_setiv.c b/src/modes/ofb/ofb_setiv.c index 96b3f1cb..f6786015 100644 --- a/src/modes/ofb/ofb_setiv.c +++ b/src/modes/ofb/ofb_setiv.c @@ -47,3 +47,7 @@ int ofb_setiv(const unsigned char *IV, unsigned long len, symmetric_OFB *ofb) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/modes/ofb/ofb_setiv.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/modes/ofb/ofb_start.c b/src/modes/ofb/ofb_start.c index 977e6a3a..083e381e 100644 --- a/src/modes/ofb/ofb_start.c +++ b/src/modes/ofb/ofb_start.c @@ -54,3 +54,7 @@ int ofb_start(int cipher, const unsigned char *IV, const unsigned char *key, } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/modes/ofb/ofb_start.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/pk/asn1/der/bit/der_decode_bit_string.c b/src/pk/asn1/der/bit/der_decode_bit_string.c new file mode 100644 index 00000000..da5b989d --- /dev/null +++ b/src/pk/asn1/der/bit/der_decode_bit_string.c @@ -0,0 +1,101 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org + */ +#include "tomcrypt.h" + +/** + @file der_decode_bit_string.c + ASN.1 DER, encode a BIT STRING, Tom St Denis +*/ + + +#ifdef LTC_DER + +/** + Store a BIT STRING + @param in The DER encoded BIT STRING + @param inlen The size of the DER BIT STRING + @param out [out] The array of bits stored (one per char) + @param outlen [in/out] The number of bits stored + @return CRYPT_OK if successful +*/ +int der_decode_bit_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + unsigned long dlen, blen, x, y; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* packet must be at least 4 bytes */ + if (inlen < 4) { + return CRYPT_INVALID_ARG; + } + + /* check for 0x03 */ + if ((in[0]&0x1F) != 0x03) { + return CRYPT_INVALID_PACKET; + } + + /* offset in the data */ + x = 1; + + /* get the length of the data */ + if (in[x] & 0x80) { + /* long format get number of length bytes */ + y = in[x++] & 127; + + /* invalid if 0 or > 2 */ + if (y == 0 || y > 2) { + return CRYPT_INVALID_PACKET; + } + + /* read the data len */ + dlen = 0; + while (y--) { + dlen = (dlen << 8) | (unsigned long)in[x++]; + } + } else { + /* short format */ + dlen = in[x++] & 127; + } + + /* is the data len too long or too short? */ + if ((dlen == 0) || (dlen + x > inlen)) { + return CRYPT_INVALID_PACKET; + } + + /* get padding count */ + blen = ((dlen - 1) << 3) - (in[x++] & 7); + + /* too many bits? */ + if (blen > *outlen) { + return CRYPT_BUFFER_OVERFLOW; + } + + /* decode/store the bits */ + for (y = 0; y < blen; y++) { + out[y] = (in[x] & (1 << (7 - (y & 7)))) ? 1 : 0; + if ((y & 7) == 7) { + ++x; + } + } + + /* we done */ + *outlen = blen; + return CRYPT_OK; +} + +#endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/bit/der_decode_bit_string.c,v $ */ +/* $Revision: 1.1 $ */ +/* $Date: 2005/05/16 15:08:11 $ */ diff --git a/src/pk/asn1/der/bit/der_encode_bit_string.c b/src/pk/asn1/der/bit/der_encode_bit_string.c new file mode 100644 index 00000000..569c15b2 --- /dev/null +++ b/src/pk/asn1/der/bit/der_encode_bit_string.c @@ -0,0 +1,87 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org + */ +#include "tomcrypt.h" + +/** + @file der_encode_bit_string.c + ASN.1 DER, encode a BIT STRING, Tom St Denis +*/ + + +#ifdef LTC_DER + +/** + Store a BIT STRING + @param in The array of bits to store (one per char) + @param inlen The number of bits tostore + @param out [out] The destination for the DER encoded BIT STRING + @param outlen [in/out] The max size and resulting size of the DER BIT STRING + @return CRYPT_OK if successful +*/ +int der_encode_bit_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + unsigned long len, x, y, buf; + int err; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* avoid overflows */ + if ((err = der_length_bit_string(inlen, &len)) != CRYPT_OK) { + return err; + } + + if (len > *outlen) { + return CRYPT_BUFFER_OVERFLOW; + } + + /* store header (include bit padding count in length) */ + x = 0; + y = (inlen >> 3) + ((inlen&7) ? 1 : 0) + 1; + + out[x++] = 0x03; + if (y < 128) { + out[x++] = y; + } else if (y < 256) { + out[x++] = 0x81; + out[x++] = y; + } else if (y < 65536) { + out[x++] = 0x82; + out[x++] = (y>>8)&255; + out[x++] = y&255; + } + + /* store number of zero padding bits */ + out[x++] = (8 - inlen) & 7; + + /* store the bits in big endian format */ + for (y = buf = 0; y < inlen; y++) { + buf |= (in[y] ? 1 : 0) << (7 - (y & 7)); + if ((y & 7) == 7) { + out[x++] = buf; + buf = 0; + } + } + /* store last byte */ + if (inlen & 7) { + out[x++] = buf; + } + *outlen = x; + return CRYPT_OK; +} + +#endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/bit/der_encode_bit_string.c,v $ */ +/* $Revision: 1.1 $ */ +/* $Date: 2005/05/16 15:08:11 $ */ diff --git a/src/pk/asn1/der/bit/der_length_bit_string.c b/src/pk/asn1/der/bit/der_length_bit_string.c new file mode 100644 index 00000000..dd6ea6d2 --- /dev/null +++ b/src/pk/asn1/der/bit/der_length_bit_string.c @@ -0,0 +1,54 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org + */ +#include "tomcrypt.h" + +/** + @file der_length_bit_string.c + ASN.1 DER, get length of BIT STRING, Tom St Denis +*/ + +#ifdef LTC_DER +/** + Gets length of DER encoding of BIT STRING + @param nbits The number of bits in the string to encode + @param outlen [out] The length of the DER encoding for the given string + @return CRYPT_OK if successful +*/ +int der_length_bit_string(unsigned long nbits, unsigned long *outlen) +{ + unsigned long nbytes; + LTC_ARGCHK(outlen != NULL); + + /* get the number of the bytes */ + nbytes = (nbits >> 3) + ((nbits & 7) ? 1 : 0) + 1; + + if (nbytes < 128) { + /* 03 LL PP DD DD DD ... */ + *outlen = 2 + nbytes; + } else if (nbytes < 256) { + /* 03 81 LL PP DD DD DD ... */ + *outlen = 3 + nbytes; + } else if (nbytes < 65536) { + /* 03 82 LL LL PP DD DD DD ... */ + *outlen = 4 + nbytes; + } else { + return CRYPT_INVALID_ARG; + } + + return CRYPT_OK; +} + +#endif + + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/bit/der_length_bit_string.c,v $ */ +/* $Revision: 1.1 $ */ +/* $Date: 2005/05/16 15:08:11 $ */ diff --git a/src/pk/asn1/der/choice/der_decode_choice.c b/src/pk/asn1/der/choice/der_decode_choice.c new file mode 100644 index 00000000..61cba11a --- /dev/null +++ b/src/pk/asn1/der/choice/der_decode_choice.c @@ -0,0 +1,168 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org + */ +#include "tomcrypt.h" + +/** + @file der_decode_choice.c + ASN.1 DER, decode a CHOICE, Tom St Denis +*/ + +#ifdef LTC_DER + +/** + Decode a CHOICE + @param in The DER encoded input + @param inlen [in/out] The size of the input and resulting size of read type + @param list The list of items to decode + @param outlen The number of items in the list + @return CRYPT_OK on success +*/ +int der_decode_choice(const unsigned char *in, unsigned long *inlen, + ltc_asn1_list *list, unsigned long outlen) +{ + unsigned long size, x, z; + void *data; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(inlen != NULL); + LTC_ARGCHK(list != NULL); + + /* get blk size */ + if (*inlen < 2) { + return CRYPT_INVALID_PACKET; + } + + /* set all of the "used" flags to zero */ + for (x = 0; x < outlen; x++) { + list[x].used = 0; + } + + /* now scan until we have a winner */ + for (x = 0; x < outlen; x++) { + size = list[x].size; + data = list[x].data; + + switch (list[x].type) { + case LTC_ASN1_INTEGER: + if (der_decode_integer(in, *inlen, data) == CRYPT_OK) { + if (der_length_integer(data, &z) == CRYPT_OK) { + list[x].used = 1; + *inlen = z; + return CRYPT_OK; + } + } + break; + + case LTC_ASN1_SHORT_INTEGER: + if (der_decode_short_integer(in, *inlen, data) == CRYPT_OK) { + if (der_length_short_integer(size, &z) == CRYPT_OK) { + list[x].used = 1; + *inlen = z; + return CRYPT_OK; + } + } + break; + + case LTC_ASN1_BIT_STRING: + if (der_decode_bit_string(in, *inlen, data, &size) == CRYPT_OK) { + if (der_length_bit_string(size, &z) == CRYPT_OK) { + list[x].used = 1; + list[x].size = size; + *inlen = z; + return CRYPT_OK; + } + } + break; + + case LTC_ASN1_OCTET_STRING: + if (der_decode_octet_string(in, *inlen, data, &size) == CRYPT_OK) { + if (der_length_octet_string(size, &z) == CRYPT_OK) { + list[x].used = 1; + list[x].size = size; + *inlen = z; + return CRYPT_OK; + } + } + break; + + case LTC_ASN1_NULL: + if (*inlen == 2 && in[x] == 0x05 && in[x+1] == 0x00) { + *inlen = 2; + return CRYPT_OK; + } + break; + + case LTC_ASN1_OBJECT_IDENTIFIER: + if (der_decode_object_identifier(in, *inlen, data, &size) == CRYPT_OK) { + if (der_length_object_identifier(data, size, &z) == CRYPT_OK) { + list[x].used = 1; + list[x].size = size; + *inlen = z; + return CRYPT_OK; + } + } + break; + + case LTC_ASN1_IA5_STRING: + if (der_decode_ia5_string(in, *inlen, data, &size) == CRYPT_OK) { + if (der_length_ia5_string(data, size, &z) == CRYPT_OK) { + list[x].used = 1; + list[x].size = size; + *inlen = z; + return CRYPT_OK; + } + } + break; + + + case LTC_ASN1_PRINTABLE_STRING: + if (der_decode_printable_string(in, *inlen, data, &size) == CRYPT_OK) { + if (der_length_printable_string(data, size, &z) == CRYPT_OK) { + list[x].used = 1; + list[x].size = size; + *inlen = z; + return CRYPT_OK; + } + } + break; + + case LTC_ASN1_UTCTIME: + z = *inlen; + if (der_decode_utctime(in, &z, data) == CRYPT_OK) { + list[x].used = 1; + *inlen = z; + return CRYPT_OK; + } + break; + + case LTC_ASN1_SEQUENCE: + if (der_decode_sequence(in, *inlen, data, size) == CRYPT_OK) { + if (der_length_sequence(data, size, &z) == CRYPT_OK) { + list[x].used = 1; + *inlen = z; + return CRYPT_OK; + } + } + break; + + default: + return CRYPT_INVALID_ARG; + } + } + + return CRYPT_INVALID_PACKET; +} + +#endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/choice/der_decode_choice.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/06/19 11:25:01 $ */ diff --git a/src/pk/asn1/der/der_get_multi_integer.c b/src/pk/asn1/der/der_get_multi_integer.c deleted file mode 100644 index 75ae0bc7..00000000 --- a/src/pk/asn1/der/der_get_multi_integer.c +++ /dev/null @@ -1,67 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - * - * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org - */ -#include <stdarg.h> -#include "tomcrypt.h" - -/** - @file der_get_multi_integer.c - ASN.1 DER, read multiple integers, Tom St Denis -*/ - - -#ifdef LTC_DER - -/* will read multiple DER INTEGER encoded mp_ints from src - * of upto [inlen] bytes. It will store the number of bytes - * read back into [inlen]. - */ -/** - Read multiple mp_int integers one after another - @param src The DER encoded integers - @param inlen [in] The length of the src buffer, [out] the amount of bytes read - @param num The first mp_int to decode - @param ... A NULL terminated list of mp_ints to decode - @return CRYPT_OK if successful -*/ -int der_get_multi_integer(const unsigned char *src, unsigned long *inlen, - mp_int *num, ...) -{ - va_list args; - mp_int *next; - unsigned long wrote, len; - int err; - - LTC_ARGCHK(src != NULL); - LTC_ARGCHK(inlen != NULL); - - /* setup va list */ - next = num; - len = *inlen; - wrote = 0; - va_start(args, num); - - while (next != NULL) { - if ((err = der_decode_integer(src, inlen, next)) != CRYPT_OK) { - va_end(args); - return err; - } - wrote += *inlen; - src += *inlen; - len -= *inlen; - *inlen = len; - next = va_arg(args, mp_int*); - } - va_end(args); - *inlen = wrote; - return CRYPT_OK; -} - -#endif diff --git a/src/pk/asn1/der/der_put_multi_integer.c b/src/pk/asn1/der/der_put_multi_integer.c deleted file mode 100644 index af2ca888..00000000 --- a/src/pk/asn1/der/der_put_multi_integer.c +++ /dev/null @@ -1,67 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - * - * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org - */ -#include <stdarg.h> -#include "tomcrypt.h" - -/** - @file der_put_multi_integer.c - ASN.1 DER, store multiple integers, Tom St Denis -*/ - - -#ifdef LTC_DER - -/* store multiple mp_ints in DER INTEGER format to the out, will not - * overflow the length you give it [outlen] and store the number of - * bytes used in [outlen] - */ -/** - Store multiple mp_int integers one after another - @param out [out] The destination for the DER encoded integers - @param outlen [in/out] The max size and resulting size of the DER encoded integers - @param num The first mp_int to encode - @param ... A NULL terminated list of mp_ints to encode - @return CRYPT_OK if successful -*/ -int der_put_multi_integer(unsigned char *out, unsigned long *outlen, - mp_int *num, ...) -{ - va_list args; - mp_int *next; - unsigned long wrote, len; - int err; - - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* setup va list */ - next = num; - len = *outlen; - wrote = 0; - va_start(args, num); - - while (next != NULL) { - if ((err = der_encode_integer(next, out, outlen)) != CRYPT_OK) { - va_end(args); - return err; - } - wrote += *outlen; - out += *outlen; - len -= *outlen; - *outlen = len; - next = va_arg(args, mp_int*); - } - va_end(args); - *outlen = wrote; - return CRYPT_OK; -} - -#endif diff --git a/src/pk/asn1/der/ia5/der_decode_ia5_string.c b/src/pk/asn1/der/ia5/der_decode_ia5_string.c new file mode 100644 index 00000000..ac0a4af8 --- /dev/null +++ b/src/pk/asn1/der/ia5/der_decode_ia5_string.c @@ -0,0 +1,95 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org + */ +#include "tomcrypt.h" + +/** + @file der_decode_ia5_string.c + ASN.1 DER, encode a IA5 STRING, Tom St Denis +*/ + + +#ifdef LTC_DER + +/** + Store a IA5 STRING + @param in The DER encoded IA5 STRING + @param inlen The size of the DER IA5 STRING + @param out [out] The array of octets stored (one per char) + @param outlen [in/out] The number of octets stored + @return CRYPT_OK if successful +*/ +int der_decode_ia5_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + unsigned long x, y, len; + int t; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* must have header at least */ + if (inlen < 2) { + return CRYPT_INVALID_PACKET; + } + + /* check for 0x16 */ + if ((in[0] & 0x1F) != 0x16) { + return CRYPT_INVALID_PACKET; + } + x = 1; + + /* decode the length */ + if (in[x] & 0x80) { + /* valid # of bytes in length are 1,2,3 */ + y = in[x] & 0x7F; + if ((y == 0) || (y > 3) || ((x + y) > inlen)) { + return CRYPT_INVALID_PACKET; + } + + /* read the length in */ + len = 0; + ++x; + while (y--) { + len = (len << 8) | in[x++]; + } + } else { + len = in[x++] & 0x7F; + } + + /* is it too long? */ + if (len > *outlen) { + return CRYPT_BUFFER_OVERFLOW; + } + + if (len + x > inlen) { + return CRYPT_INVALID_PACKET; + } + + /* read the data */ + for (y = 0; y < len; y++) { + t = der_ia5_value_decode(in[x++]); + if (t == -1) { + return CRYPT_INVALID_ARG; + } + out[y] = t; + } + + *outlen = y; + + return CRYPT_OK; +} + +#endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/ia5/der_decode_ia5_string.c,v $ */ +/* $Revision: 1.1 $ */ +/* $Date: 2005/05/16 15:08:11 $ */ diff --git a/src/pk/asn1/der/ia5/der_encode_ia5_string.c b/src/pk/asn1/der/ia5/der_encode_ia5_string.c new file mode 100644 index 00000000..a79b46ed --- /dev/null +++ b/src/pk/asn1/der/ia5/der_encode_ia5_string.c @@ -0,0 +1,84 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org + */ +#include "tomcrypt.h" + +/** + @file der_encode_ia5_string.c + ASN.1 DER, encode a IA5 STRING, Tom St Denis +*/ + +#ifdef LTC_DER + +/** + Store an IA5 STRING + @param in The array of IA5 to store (one per char) + @param inlen The number of IA5 to store + @param out [out] The destination for the DER encoded IA5 STRING + @param outlen [in/out] The max size and resulting size of the DER IA5 STRING + @return CRYPT_OK if successful +*/ +int der_encode_ia5_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + unsigned long x, y, len; + int err; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* get the size */ + if ((err = der_length_ia5_string(in, inlen, &len)) != CRYPT_OK) { + return err; + } + + /* too big? */ + if (len > *outlen) { + return CRYPT_BUFFER_OVERFLOW; + } + + /* encode the header+len */ + x = 0; + out[x++] = 0x16; + if (inlen < 128) { + out[x++] = inlen; + } else if (inlen < 256) { + out[x++] = 0x81; + out[x++] = inlen; + } else if (inlen < 65536UL) { + out[x++] = 0x82; + out[x++] = (inlen>>8)&255; + out[x++] = inlen&255; + } else if (inlen < 16777216UL) { + out[x++] = 0x83; + out[x++] = (inlen>>16)&255; + out[x++] = (inlen>>8)&255; + out[x++] = inlen&255; + } else { + return CRYPT_INVALID_ARG; + } + + /* store octets */ + for (y = 0; y < inlen; y++) { + out[x++] = der_ia5_char_encode(in[y]); + } + + /* retun length */ + *outlen = x; + + return CRYPT_OK; +} + +#endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/ia5/der_encode_ia5_string.c,v $ */ +/* $Revision: 1.1 $ */ +/* $Date: 2005/05/16 15:08:11 $ */ diff --git a/src/pk/asn1/der/ia5/der_length_ia5_string.c b/src/pk/asn1/der/ia5/der_length_ia5_string.c new file mode 100644 index 00000000..d07d630a --- /dev/null +++ b/src/pk/asn1/der/ia5/der_length_ia5_string.c @@ -0,0 +1,194 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org + */ +#include "tomcrypt.h" + +/** + @file der_length_ia5_string.c + ASN.1 DER, get length of IA5 STRING, Tom St Denis +*/ + +#ifdef LTC_DER + +static const struct { + int code, value; +} ia5_table[] = { +{ '\0', 0 }, +{ '\a', 7 }, +{ '\b', 8 }, +{ '\t', 9 }, +{ '\n', 10 }, +{ '\f', 12 }, +{ '\r', 13 }, +{ ' ', 32 }, +{ '!', 33 }, +{ '"', 34 }, +{ '#', 35 }, +{ '$', 36 }, +{ '%', 37 }, +{ '&', 38 }, +{ '\'', 39 }, +{ '(', 40 }, +{ ')', 41 }, +{ '*', 42 }, +{ '+', 43 }, +{ ',', 44 }, +{ '-', 45 }, +{ '.', 46 }, +{ '/', 47 }, +{ '0', 48 }, +{ '1', 49 }, +{ '2', 50 }, +{ '3', 51 }, +{ '4', 52 }, +{ '5', 53 }, +{ '6', 54 }, +{ '7', 55 }, +{ '8', 56 }, +{ '9', 57 }, +{ ':', 58 }, +{ ';', 59 }, +{ '<', 60 }, +{ '=', 61 }, +{ '>', 62 }, +{ '?', 63 }, +{ '@', 64 }, +{ 'A', 65 }, +{ 'B', 66 }, +{ 'C', 67 }, +{ 'D', 68 }, +{ 'E', 69 }, +{ 'F', 70 }, +{ 'G', 71 }, +{ 'H', 72 }, +{ 'I', 73 }, +{ 'J', 74 }, +{ 'K', 75 }, +{ 'L', 76 }, +{ 'M', 77 }, +{ 'N', 78 }, +{ 'O', 79 }, +{ 'P', 80 }, +{ 'Q', 81 }, +{ 'R', 82 }, +{ 'S', 83 }, +{ 'T', 84 }, +{ 'U', 85 }, +{ 'V', 86 }, +{ 'W', 87 }, +{ 'X', 88 }, +{ 'Y', 89 }, +{ 'Z', 90 }, +{ '[', 91 }, +{ '\\', 92 }, +{ ']', 93 }, +{ '^', 94 }, +{ '_', 95 }, +{ '`', 96 }, +{ 'a', 97 }, +{ 'b', 98 }, +{ 'c', 99 }, +{ 'd', 100 }, +{ 'e', 101 }, +{ 'f', 102 }, +{ 'g', 103 }, +{ 'h', 104 }, +{ 'i', 105 }, +{ 'j', 106 }, +{ 'k', 107 }, +{ 'l', 108 }, +{ 'm', 109 }, +{ 'n', 110 }, +{ 'o', 111 }, +{ 'p', 112 }, +{ 'q', 113 }, +{ 'r', 114 }, +{ 's', 115 }, +{ 't', 116 }, +{ 'u', 117 }, +{ 'v', 118 }, +{ 'w', 119 }, +{ 'x', 120 }, +{ 'y', 121 }, +{ 'z', 122 }, +{ '{', 123 }, +{ '|', 124 }, +{ '}', 125 }, +{ '~', 126 } +}; + +int der_ia5_char_encode(int c) +{ + int x; + for (x = 0; x < (int)(sizeof(ia5_table)/sizeof(ia5_table[0])); x++) { + if (ia5_table[x].code == c) { + return ia5_table[x].value; + } + } + return -1; +} + +int der_ia5_value_decode(int v) +{ + int x; + for (x = 0; x < (int)(sizeof(ia5_table)/sizeof(ia5_table[0])); x++) { + if (ia5_table[x].value == v) { + return ia5_table[x].code; + } + } + return -1; +} + +/** + Gets length of DER encoding of IA5 STRING + @param octets The values you want to encode + @param noctets The number of octets in the string to encode + @param outlen [out] The length of the DER encoding for the given string + @return CRYPT_OK if successful +*/ +int der_length_ia5_string(const unsigned char *octets, unsigned long noctets, unsigned long *outlen) +{ + unsigned long x; + + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(octets != NULL); + + /* scan string for validity */ + for (x = 0; x < noctets; x++) { + if (der_ia5_char_encode(octets[x]) == -1) { + return CRYPT_INVALID_ARG; + } + } + + if (noctets < 128) { + /* 16 LL DD DD DD ... */ + *outlen = 2 + noctets; + } else if (noctets < 256) { + /* 16 81 LL DD DD DD ... */ + *outlen = 3 + noctets; + } else if (noctets < 65536UL) { + /* 16 82 LL LL DD DD DD ... */ + *outlen = 4 + noctets; + } else if (noctets < 16777216UL) { + /* 16 83 LL LL LL DD DD DD ... */ + *outlen = 5 + noctets; + } else { + return CRYPT_INVALID_ARG; + } + + return CRYPT_OK; +} + +#endif + + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/ia5/der_length_ia5_string.c,v $ */ +/* $Revision: 1.1 $ */ +/* $Date: 2005/05/16 15:08:11 $ */ diff --git a/src/pk/asn1/der/der_decode_integer.c b/src/pk/asn1/der/integer/der_decode_integer.c similarity index 52% rename from src/pk/asn1/der/der_decode_integer.c rename to src/pk/asn1/der/integer/der_decode_integer.c index b798bd45..e68b2c95 100644 --- a/src/pk/asn1/der/der_decode_integer.c +++ b/src/pk/asn1/der/integer/der_decode_integer.c @@ -18,81 +18,93 @@ #ifdef LTC_DER -/* decodes a DER INTEGER in [in]. You have to tell this function - * how many bytes are available [inlen]. It will then attempt to - * read the INTEGER. If all goes well it stores the number of bytes - * read in [inlen] and the number in [num]. - */ /** Read a mp_int integer @param in The DER encoded data - @param inlen [in] Size of the in data, [out] number of bytes read + @param inlen Size of DER encoded data @param num The first mp_int to decode @return CRYPT_OK if successful */ -int der_decode_integer(const unsigned char *in, unsigned long *inlen, mp_int *num) +int der_decode_integer(const unsigned char *in, unsigned long inlen, mp_int *num) { - unsigned long tmplen, y, z; + unsigned long x, y, z; + int err; LTC_ARGCHK(num != NULL); LTC_ARGCHK(in != NULL); - LTC_ARGCHK(inlen != NULL); - - /* save copy of max output size */ - tmplen = *inlen; - *inlen = 0; /* min DER INTEGER is 0x02 01 00 == 0 */ - if (tmplen < (1 + 1 + 1)) { + if (inlen < (1 + 1 + 1)) { return CRYPT_INVALID_PACKET; } - /* ok expect 0x02 when we AND with 0011 1111 [3F] */ - if ((*in++ & 0x3F) != 0x02) { + /* ok expect 0x02 when we AND with 0001 1111 [1F] */ + x = 0; + if ((in[x++] & 0x1F) != 0x02) { return CRYPT_INVALID_PACKET; } - ++(*inlen); /* now decode the len stuff */ - z = *in++; - ++(*inlen); + z = in[x++]; if ((z & 0x80) == 0x00) { /* short form */ /* will it overflow? */ - if (*inlen + z > tmplen) { + if (x + z > inlen) { return CRYPT_INVALID_PACKET; } /* no so read it */ - (*inlen) += z; - return mpi_to_ltc_error(mp_read_unsigned_bin(num, (unsigned char *)in, z)); + if ((err = mpi_to_ltc_error(mp_read_unsigned_bin(num, (unsigned char *)in + x, z))) != CRYPT_OK) { + return err; + } } else { /* long form */ z &= 0x7F; /* will number of length bytes overflow? (or > 4) */ - if (((*inlen + z) > tmplen) || (z > 4)) { + if (((x + z) > inlen) || (z > 4) || (z == 0)) { return CRYPT_INVALID_PACKET; } /* now read it in */ y = 0; while (z--) { - y = ((unsigned long)(*in++)) | (y << 8); - ++(*inlen); + y = ((unsigned long)(in[x++])) | (y << 8); } /* now will reading y bytes overrun? */ - if ((*inlen + y) > tmplen) { + if ((x + y) > inlen) { return CRYPT_INVALID_PACKET; } /* no so read it */ - (*inlen) += y; - return mpi_to_ltc_error(mp_read_unsigned_bin(num, (unsigned char *)in, y)); + if ((err = mpi_to_ltc_error(mp_read_unsigned_bin(num, (unsigned char *)in + x, y))) != CRYPT_OK) { + return err; + } } + + /* see if it's negative */ + if (in[x] & 0x80) { + mp_int tmp; + if (mp_init(&tmp) != MP_OKAY) { + return CRYPT_MEM; + } + + if (mp_2expt(&tmp, mp_count_bits(num)) != MP_OKAY || mp_sub(num, &tmp, num) != MP_OKAY) { + mp_clear(&tmp); + return CRYPT_MEM; + } + mp_clear(&tmp); + } + + return CRYPT_OK; + } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/integer/der_decode_integer.c,v $ */ +/* $Revision: 1.2 $ */ +/* $Date: 2005/06/01 00:06:05 $ */ diff --git a/src/pk/asn1/der/der_encode_integer.c b/src/pk/asn1/der/integer/der_encode_integer.c similarity index 53% rename from src/pk/asn1/der/der_encode_integer.c rename to src/pk/asn1/der/integer/der_encode_integer.c index c5c5267b..f0f41be3 100644 --- a/src/pk/asn1/der/der_encode_integer.c +++ b/src/pk/asn1/der/integer/der_encode_integer.c @@ -28,7 +28,7 @@ */ int der_encode_integer(mp_int *num, unsigned char *out, unsigned long *outlen) { - unsigned long tmplen, x, y, z; + unsigned long tmplen, y; int err, leading_zero; LTC_ARGCHK(num != NULL); @@ -44,48 +44,43 @@ int der_encode_integer(mp_int *num, unsigned char *out, unsigned long *outlen) return CRYPT_BUFFER_OVERFLOW; } - /* we only need a leading zero if the msb of the first byte is one */ - if ((mp_count_bits(num) & 7) == 7 || mp_iszero(num) == MP_YES) { - leading_zero = 1; + if (mp_cmp_d(num, 0) != MP_LT) { + /* we only need a leading zero if the msb of the first byte is one */ + if ((mp_count_bits(num) & 7) == 0 || mp_iszero(num) == MP_YES) { + leading_zero = 1; + } else { + leading_zero = 0; + } + + /* get length of num in bytes (plus 1 since we force the msbyte to zero) */ + y = mp_unsigned_bin_size(num) + leading_zero; } else { leading_zero = 0; - } + y = mp_count_bits(num); + y = y + (8 - (y & 7)); + y = y >> 3; - /* get length of num in bytes (plus 1 since we force the msbyte to zero) */ - y = mp_unsigned_bin_size(num) + leading_zero; + } /* now store initial data */ *out++ = 0x02; if (y < 128) { /* short form */ *out++ = (unsigned char)y; + } else if (y < 256) { + *out++ = 0x81; + *out++ = y; + } else if (y < 65536UL) { + *out++ = 0x82; + *out++ = (y>>8)&255; + *out++ = y; + } else if (y < 16777216UL) { + *out++ = 0x83; + *out++ = (y>>16)&255; + *out++ = (y>>8)&255; + *out++ = y; } else { - /* long form (relies on y != 0) */ - - /* get length of length... ;-) */ - x = y; - z = 0; - while (x) { - ++z; - x >>= 8; - } - - /* store length of length */ - *out++ = 0x80 | ((unsigned char)z); - - /* now store length */ - - /* first shift length up so msbyte != 0 */ - x = y; - while ((x & 0xFF000000) == 0) { - x <<= 8; - } - - /* now store length */ - while (z--) { - *out++ = (unsigned char)((x >> 24) & 0xFF); - x <<= 8; - } + return CRYPT_INVALID_ARG; } /* now store msbyte of zero if num is non-zero */ @@ -94,11 +89,31 @@ int der_encode_integer(mp_int *num, unsigned char *out, unsigned long *outlen) } /* if it's not zero store it as big endian */ - if (mp_iszero(num) == MP_NO) { + if (mp_cmp_d(num, 0) == MP_GT) { /* now store the mpint */ if ((err = mp_to_unsigned_bin(num, out)) != MP_OKAY) { return mpi_to_ltc_error(err); } + } else if (mp_iszero(num) != MP_YES) { + mp_int tmp; + /* negative */ + if (mp_init(&tmp) != MP_OKAY) { + return CRYPT_MEM; + } + + /* 2^roundup and subtract */ + y = mp_count_bits(num); + y = y + (8 - (y & 7)); + if (mp_2expt(&tmp, y) != MP_OKAY || mp_add(&tmp, num, &tmp) != MP_OKAY) { + mp_clear(&tmp); + return CRYPT_MEM; + } + + if ((err = mp_to_unsigned_bin(&tmp, out)) != MP_OKAY) { + mp_clear(&tmp); + return mpi_to_ltc_error(err); + } + mp_clear(&tmp); } /* we good */ @@ -107,3 +122,7 @@ int der_encode_integer(mp_int *num, unsigned char *out, unsigned long *outlen) } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/integer/der_encode_integer.c,v $ */ +/* $Revision: 1.1 $ */ +/* $Date: 2005/05/16 15:08:11 $ */ diff --git a/src/pk/asn1/der/der_length_integer.c b/src/pk/asn1/der/integer/der_length_integer.c similarity index 57% rename from src/pk/asn1/der/der_length_integer.c rename to src/pk/asn1/der/integer/der_length_integer.c index f86738ad..1bfee458 100644 --- a/src/pk/asn1/der/der_length_integer.c +++ b/src/pk/asn1/der/integer/der_length_integer.c @@ -31,25 +31,33 @@ int der_length_integer(mp_int *num, unsigned long *outlen) LTC_ARGCHK(num != NULL); LTC_ARGCHK(outlen != NULL); - /* we only need a leading zero if the msb of the first byte is one */ - if ((mp_count_bits(num) & 7) == 7 || mp_iszero(num) == MP_YES) { - leading_zero = 1; + if (mp_cmp_d(num, 0) != MP_LT) { + /* positive */ + + /* we only need a leading zero if the msb of the first byte is one */ + if ((mp_count_bits(num) & 7) == 0 || mp_iszero(num) == MP_YES) { + leading_zero = 1; + } else { + leading_zero = 0; + } + + /* size for bignum */ + z = len = leading_zero + mp_unsigned_bin_size(num); } else { + /* it's negative */ + /* find power of 2 that is a multiple of eight and greater than count bits */ leading_zero = 0; + z = mp_count_bits(num); + z = z + (8 - (z & 7)); + len = z = z >> 3; } - /* size for bignum */ - z = len = leading_zero + mp_unsigned_bin_size(num); - - /* we need a 0x02 */ - ++len; - /* now we need a length */ if (z < 128) { /* short form */ ++len; } else { - /* long form (relies on z != 0) */ + /* long form (relies on z != 0), assumes length bytes < 128 */ ++len; while (z) { @@ -58,8 +66,16 @@ int der_length_integer(mp_int *num, unsigned long *outlen) } } + /* we need a 0x02 to indicate it's INTEGER */ + ++len; + + /* return length */ *outlen = len; return CRYPT_OK; } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/integer/der_length_integer.c,v $ */ +/* $Revision: 1.1 $ */ +/* $Date: 2005/05/16 15:08:11 $ */ diff --git a/src/pk/asn1/der/object_identifier/der_decode_object_identifier.c b/src/pk/asn1/der/object_identifier/der_decode_object_identifier.c new file mode 100644 index 00000000..c69c9a3a --- /dev/null +++ b/src/pk/asn1/der/object_identifier/der_decode_object_identifier.c @@ -0,0 +1,99 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org + */ +#include "tomcrypt.h" + +/** + @file der_decode_object_identifier.c + ASN.1 DER, Decode Object Identifier, Tom St Denis +*/ + +#ifdef LTC_DER +/** + Decode OID data and store the array of integers in words + @param in The OID DER encoded data + @param inlen The length of the OID data + @param words [out] The destination of the OID words + @param outlen [in/out] The number of OID words + @return CRYPT_OK if successful +*/ +int der_decode_object_identifier(const unsigned char *in, unsigned long inlen, + unsigned long *words, unsigned long *outlen) +{ + unsigned long x, y, t, len; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(words != NULL); + LTC_ARGCHK(outlen != NULL); + + /* header is at least 3 bytes */ + if (inlen < 3) { + return CRYPT_INVALID_PACKET; + } + + /* must be room for at least two words */ + if (*outlen < 2) { + return CRYPT_BUFFER_OVERFLOW; + } + + /* decode the packet header */ + x = 0; + if ((in[x++] & 0x1F) != 0x06) { + return CRYPT_INVALID_PACKET; + } + + /* get the length */ + if (in[x] < 128) { + len = in[x++]; + } else { + if (in[x] < 0x81 || in[x] > 0x82) { + return CRYPT_INVALID_PACKET; + } + y = in[x++] & 0x7F; + len = 0; + while (y--) { + len = (len << 8) | (unsigned long)in[x++]; + } + } + + if (len < 1 || (len + x) > inlen) { + return CRYPT_INVALID_PACKET; + } + + /* decode word1 and word2 */ + --len; + t = in[x++]; + words[0] = t/40; + words[1] = t%40; + + /* decode rest */ + y = 2; + t = 0; + while (len--) { + t = (t << 7) | (in[x] & 0x7F); + if (!(in[x++] & 0x80)) { + /* store t */ + if (y >= *outlen) { + return CRYPT_BUFFER_OVERFLOW; + } + words[y++] = t; + t = 0; + } + } + + *outlen = y; + return CRYPT_OK; +} + +#endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/object_identifier/der_decode_object_identifier.c,v $ */ +/* $Revision: 1.1 $ */ +/* $Date: 2005/05/16 15:08:11 $ */ diff --git a/src/pk/asn1/der/object_identifier/der_encode_object_identifier.c b/src/pk/asn1/der/object_identifier/der_encode_object_identifier.c new file mode 100644 index 00000000..16eb1126 --- /dev/null +++ b/src/pk/asn1/der/object_identifier/der_encode_object_identifier.c @@ -0,0 +1,103 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org + */ +#include "tomcrypt.h" + +/** + @file der_encode_object_identifier.c + ASN.1 DER, Encode Object Identifier, Tom St Denis +*/ + +#ifdef LTC_DER +/** + Encode an OID + @param words The words to encode (upto 32-bits each) + @param nwords The number of words in the OID + @param out [out] Destination of OID data + @param outlen [in/out] The max and resulting size of the OID + @return CRYPT_OK if successful +*/ +int der_encode_object_identifier(unsigned long *words, unsigned long nwords, + unsigned char *out, unsigned long *outlen) +{ + unsigned long i, x, y, z, t, mask; + int err; + + LTC_ARGCHK(words != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* check length */ + if ((err = der_length_object_identifier(words, nwords, &x)) != CRYPT_OK) { + return err; + } + if (x > *outlen) { + return CRYPT_BUFFER_OVERFLOW; + } + + /* compute length to store OID data */ + z = 1; + for (y = 2; y < nwords; y++) { + t = der_object_identifier_bits(words[y]); + z += t/7 + ((t%7) ? 1 : 0); + } + + /* store header + length */ + x = 0; + out[x++] = 0x06; + if (z < 128) { + out[x++] = z; + } else if (z < 256) { + out[x++] = 0x81; + out[x++] = z; + } else if (z < 65536UL) { + out[x++] = 0x82; + out[x++] = (z>>8)&255; + out[x++] = z&255; + } else { + return CRYPT_INVALID_ARG; + } + + /* store first byte */ + out[x++] = words[0] * 40 + words[1]; + + for (i = 2; i < nwords; i++) { + /* store 7 bit words in little endian */ + t = words[i] & 0xFFFFFFFF; + if (t) { + y = x; + mask = 0; + while (t) { + out[x++] = (t & 0x7F) | mask; + t >>= 7; + mask |= 0x80; /* upper bit is set on all but the last byte */ + } + /* now swap bytes y...x-1 */ + z = x - 1; + while (y < z) { + t = out[y]; out[y] = out[z]; out[z] = t; + ++y; + --z; + } + } else { + /* zero word */ + out[x++] = 0x00; + } + } + + *outlen = x; + return CRYPT_OK; +} + +#endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/object_identifier/der_encode_object_identifier.c,v $ */ +/* $Revision: 1.1 $ */ +/* $Date: 2005/05/16 15:08:11 $ */ diff --git a/src/pk/asn1/der/object_identifier/der_length_object_identifier.c b/src/pk/asn1/der/object_identifier/der_length_object_identifier.c new file mode 100644 index 00000000..d03d1a79 --- /dev/null +++ b/src/pk/asn1/der/object_identifier/der_length_object_identifier.c @@ -0,0 +1,84 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org + */ +#include "tomcrypt.h" + +/** + @file der_length_object_identifier.c + ASN.1 DER, get length of Object Identifier, Tom St Denis +*/ + +#ifdef LTC_DER + +unsigned long der_object_identifier_bits(unsigned long x) +{ + unsigned long c; + x &= 0xFFFFFFFF; + c = 0; + while (x) { + ++c; + x >>= 1; + } + return c; +} + + +/** + Gets length of DER encoding of Object Identifier + @param nwords The number of OID words + @param words The actual OID words to get the size of + @param outlen [out] The length of the DER encoding for the given string + @return CRYPT_OK if successful +*/ +int der_length_object_identifier(unsigned long *words, unsigned long nwords, unsigned long *outlen) +{ + unsigned long y, z, t; + + LTC_ARGCHK(words != NULL); + LTC_ARGCHK(outlen != NULL); + + + /* must be >= 2 words */ + if (nwords < 2) { + return CRYPT_INVALID_ARG; + } + + /* word1 = 0,1,2 and word2 0..39 */ + if (words[0] > 2 || words[1] > 39) { + return CRYPT_INVALID_ARG; + } + + /* leading byte of first two words */ + z = 1; + for (y = 2; y < nwords; y++) { + t = der_object_identifier_bits(words[y]); + z += t/7 + ((t%7) ? 1 : 0); + } + + /* now depending on the length our length encoding changes */ + if (z < 128) { + z += 2; + } else if (z < 256) { + z += 3; + } else if (z < 65536UL) { + z += 4; + } else { + return CRYPT_INVALID_ARG; + } + + *outlen = z; + return CRYPT_OK; +} + +#endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/object_identifier/der_length_object_identifier.c,v $ */ +/* $Revision: 1.1 $ */ +/* $Date: 2005/05/16 15:08:11 $ */ diff --git a/src/pk/asn1/der/octet/der_decode_octet_string.c b/src/pk/asn1/der/octet/der_decode_octet_string.c new file mode 100644 index 00000000..2d3800f1 --- /dev/null +++ b/src/pk/asn1/der/octet/der_decode_octet_string.c @@ -0,0 +1,90 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org + */ +#include "tomcrypt.h" + +/** + @file der_decode_octet_string.c + ASN.1 DER, encode a OCTET STRING, Tom St Denis +*/ + + +#ifdef LTC_DER + +/** + Store a OCTET STRING + @param in The DER encoded OCTET STRING + @param inlen The size of the DER OCTET STRING + @param out [out] The array of octets stored (one per char) + @param outlen [in/out] The number of octets stored + @return CRYPT_OK if successful +*/ +int der_decode_octet_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + unsigned long x, y, len; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* must have header at least */ + if (inlen < 2) { + return CRYPT_INVALID_PACKET; + } + + /* check for 0x04 */ + if ((in[0] & 0x1F) != 0x04) { + return CRYPT_INVALID_PACKET; + } + x = 1; + + /* decode the length */ + if (in[x] & 0x80) { + /* valid # of bytes in length are 1,2,3 */ + y = in[x] & 0x7F; + if ((y == 0) || (y > 3) || ((x + y) > inlen)) { + return CRYPT_INVALID_PACKET; + } + + /* read the length in */ + len = 0; + ++x; + while (y--) { + len = (len << 8) | in[x++]; + } + } else { + len = in[x++] & 0x7F; + } + + /* is it too long? */ + if (len > *outlen) { + return CRYPT_BUFFER_OVERFLOW; + } + + if (len + x > inlen) { + return CRYPT_INVALID_PACKET; + } + + /* read the data */ + for (y = 0; y < len; y++) { + out[y] = in[x++]; + } + + *outlen = y; + + return CRYPT_OK; +} + +#endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/octet/der_decode_octet_string.c,v $ */ +/* $Revision: 1.1 $ */ +/* $Date: 2005/05/16 15:08:11 $ */ diff --git a/src/pk/asn1/der/octet/der_encode_octet_string.c b/src/pk/asn1/der/octet/der_encode_octet_string.c new file mode 100644 index 00000000..f34b708e --- /dev/null +++ b/src/pk/asn1/der/octet/der_encode_octet_string.c @@ -0,0 +1,85 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org + */ +#include "tomcrypt.h" + +/** + @file der_encode_octet_string.c + ASN.1 DER, encode a OCTET STRING, Tom St Denis +*/ + + +#ifdef LTC_DER + +/** + Store an OCTET STRING + @param in The array of OCTETS to store (one per char) + @param inlen The number of OCTETS to store + @param out [out] The destination for the DER encoded OCTET STRING + @param outlen [in/out] The max size and resulting size of the DER OCTET STRING + @return CRYPT_OK if successful +*/ +int der_encode_octet_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + unsigned long x, y, len; + int err; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* get the size */ + if ((err = der_length_octet_string(inlen, &len)) != CRYPT_OK) { + return err; + } + + /* too big? */ + if (len > *outlen) { + return CRYPT_BUFFER_OVERFLOW; + } + + /* encode the header+len */ + x = 0; + out[x++] = 0x04; + if (inlen < 128) { + out[x++] = inlen; + } else if (inlen < 256) { + out[x++] = 0x81; + out[x++] = inlen; + } else if (inlen < 65536UL) { + out[x++] = 0x82; + out[x++] = (inlen>>8)&255; + out[x++] = inlen&255; + } else if (inlen < 16777216UL) { + out[x++] = 0x83; + out[x++] = (inlen>>16)&255; + out[x++] = (inlen>>8)&255; + out[x++] = inlen&255; + } else { + return CRYPT_INVALID_ARG; + } + + /* store octets */ + for (y = 0; y < inlen; y++) { + out[x++] = in[y]; + } + + /* retun length */ + *outlen = x; + + return CRYPT_OK; +} + +#endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/octet/der_encode_octet_string.c,v $ */ +/* $Revision: 1.1 $ */ +/* $Date: 2005/05/16 15:08:11 $ */ diff --git a/src/pk/asn1/der/octet/der_length_octet_string.c b/src/pk/asn1/der/octet/der_length_octet_string.c new file mode 100644 index 00000000..9a0bed38 --- /dev/null +++ b/src/pk/asn1/der/octet/der_length_octet_string.c @@ -0,0 +1,53 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org + */ +#include "tomcrypt.h" + +/** + @file der_length_octet_string.c + ASN.1 DER, get length of OCTET STRING, Tom St Denis +*/ + +#ifdef LTC_DER +/** + Gets length of DER encoding of OCTET STRING + @param noctets The number of octets in the string to encode + @param outlen [out] The length of the DER encoding for the given string + @return CRYPT_OK if successful +*/ +int der_length_octet_string(unsigned long noctets, unsigned long *outlen) +{ + LTC_ARGCHK(outlen != NULL); + + if (noctets < 128) { + /* 04 LL DD DD DD ... */ + *outlen = 2 + noctets; + } else if (noctets < 256) { + /* 04 81 LL DD DD DD ... */ + *outlen = 3 + noctets; + } else if (noctets < 65536UL) { + /* 04 82 LL LL DD DD DD ... */ + *outlen = 4 + noctets; + } else if (noctets < 16777216UL) { + /* 04 83 LL LL LL DD DD DD ... */ + *outlen = 5 + noctets; + } else { + return CRYPT_INVALID_ARG; + } + + return CRYPT_OK; +} + +#endif + + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/octet/der_length_octet_string.c,v $ */ +/* $Revision: 1.1 $ */ +/* $Date: 2005/05/16 15:08:11 $ */ diff --git a/src/pk/asn1/der/printable_string/der_decode_printable_string.c b/src/pk/asn1/der/printable_string/der_decode_printable_string.c new file mode 100644 index 00000000..cbc92392 --- /dev/null +++ b/src/pk/asn1/der/printable_string/der_decode_printable_string.c @@ -0,0 +1,95 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org + */ +#include "tomcrypt.h" + +/** + @file der_decode_printable_string.c + ASN.1 DER, encode a printable STRING, Tom St Denis +*/ + + +#ifdef LTC_DER + +/** + Store a printable STRING + @param in The DER encoded printable STRING + @param inlen The size of the DER printable STRING + @param out [out] The array of octets stored (one per char) + @param outlen [in/out] The number of octets stored + @return CRYPT_OK if successful +*/ +int der_decode_printable_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + unsigned long x, y, len; + int t; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* must have header at least */ + if (inlen < 2) { + return CRYPT_INVALID_PACKET; + } + + /* check for 0x13 */ + if ((in[0] & 0x1F) != 0x13) { + return CRYPT_INVALID_PACKET; + } + x = 1; + + /* decode the length */ + if (in[x] & 0x80) { + /* valid # of bytes in length are 1,2,3 */ + y = in[x] & 0x7F; + if ((y == 0) || (y > 3) || ((x + y) > inlen)) { + return CRYPT_INVALID_PACKET; + } + + /* read the length in */ + len = 0; + ++x; + while (y--) { + len = (len << 8) | in[x++]; + } + } else { + len = in[x++] & 0x7F; + } + + /* is it too long? */ + if (len > *outlen) { + return CRYPT_BUFFER_OVERFLOW; + } + + if (len + x > inlen) { + return CRYPT_INVALID_PACKET; + } + + /* read the data */ + for (y = 0; y < len; y++) { + t = der_printable_value_decode(in[x++]); + if (t == -1) { + return CRYPT_INVALID_ARG; + } + out[y] = t; + } + + *outlen = y; + + return CRYPT_OK; +} + +#endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/printable_string/der_decode_printable_string.c,v $ */ +/* $Revision: 1.1 $ */ +/* $Date: 2005/05/21 02:29:54 $ */ diff --git a/src/pk/asn1/der/printable_string/der_encode_printable_string.c b/src/pk/asn1/der/printable_string/der_encode_printable_string.c new file mode 100644 index 00000000..ab4e8bf2 --- /dev/null +++ b/src/pk/asn1/der/printable_string/der_encode_printable_string.c @@ -0,0 +1,84 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org + */ +#include "tomcrypt.h" + +/** + @file der_encode_printable_string.c + ASN.1 DER, encode a printable STRING, Tom St Denis +*/ + +#ifdef LTC_DER + +/** + Store an printable STRING + @param in The array of printable to store (one per char) + @param inlen The number of printable to store + @param out [out] The destination for the DER encoded printable STRING + @param outlen [in/out] The max size and resulting size of the DER printable STRING + @return CRYPT_OK if successful +*/ +int der_encode_printable_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + unsigned long x, y, len; + int err; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* get the size */ + if ((err = der_length_printable_string(in, inlen, &len)) != CRYPT_OK) { + return err; + } + + /* too big? */ + if (len > *outlen) { + return CRYPT_BUFFER_OVERFLOW; + } + + /* encode the header+len */ + x = 0; + out[x++] = 0x13; + if (inlen < 128) { + out[x++] = inlen; + } else if (inlen < 256) { + out[x++] = 0x81; + out[x++] = inlen; + } else if (inlen < 65536UL) { + out[x++] = 0x82; + out[x++] = (inlen>>8)&255; + out[x++] = inlen&255; + } else if (inlen < 16777216UL) { + out[x++] = 0x83; + out[x++] = (inlen>>16)&255; + out[x++] = (inlen>>8)&255; + out[x++] = inlen&255; + } else { + return CRYPT_INVALID_ARG; + } + + /* store octets */ + for (y = 0; y < inlen; y++) { + out[x++] = der_printable_char_encode(in[y]); + } + + /* retun length */ + *outlen = x; + + return CRYPT_OK; +} + +#endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/printable_string/der_encode_printable_string.c,v $ */ +/* $Revision: 1.1 $ */ +/* $Date: 2005/05/21 02:29:54 $ */ diff --git a/src/pk/asn1/der/printable_string/der_length_printable_string.c b/src/pk/asn1/der/printable_string/der_length_printable_string.c new file mode 100644 index 00000000..34065f23 --- /dev/null +++ b/src/pk/asn1/der/printable_string/der_length_printable_string.c @@ -0,0 +1,166 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org + */ +#include "tomcrypt.h" + +/** + @file der_length_printable_string.c + ASN.1 DER, get length of Printable STRING, Tom St Denis +*/ + +#ifdef LTC_DER + +static const struct { + int code, value; +} printable_table[] = { +{ ' ', 32 }, +{ '\'', 39 }, +{ '(', 40 }, +{ ')', 41 }, +{ '+', 43 }, +{ ',', 44 }, +{ '-', 45 }, +{ '.', 46 }, +{ '/', 47 }, +{ '0', 48 }, +{ '1', 49 }, +{ '2', 50 }, +{ '3', 51 }, +{ '4', 52 }, +{ '5', 53 }, +{ '6', 54 }, +{ '7', 55 }, +{ '8', 56 }, +{ '9', 57 }, +{ ':', 58 }, +{ '=', 61 }, +{ '?', 63 }, +{ 'A', 65 }, +{ 'B', 66 }, +{ 'C', 67 }, +{ 'D', 68 }, +{ 'E', 69 }, +{ 'F', 70 }, +{ 'G', 71 }, +{ 'H', 72 }, +{ 'I', 73 }, +{ 'J', 74 }, +{ 'K', 75 }, +{ 'L', 76 }, +{ 'M', 77 }, +{ 'N', 78 }, +{ 'O', 79 }, +{ 'P', 80 }, +{ 'Q', 81 }, +{ 'R', 82 }, +{ 'S', 83 }, +{ 'T', 84 }, +{ 'U', 85 }, +{ 'V', 86 }, +{ 'W', 87 }, +{ 'X', 88 }, +{ 'Y', 89 }, +{ 'Z', 90 }, +{ 'a', 97 }, +{ 'b', 98 }, +{ 'c', 99 }, +{ 'd', 100 }, +{ 'e', 101 }, +{ 'f', 102 }, +{ 'g', 103 }, +{ 'h', 104 }, +{ 'i', 105 }, +{ 'j', 106 }, +{ 'k', 107 }, +{ 'l', 108 }, +{ 'm', 109 }, +{ 'n', 110 }, +{ 'o', 111 }, +{ 'p', 112 }, +{ 'q', 113 }, +{ 'r', 114 }, +{ 's', 115 }, +{ 't', 116 }, +{ 'u', 117 }, +{ 'v', 118 }, +{ 'w', 119 }, +{ 'x', 120 }, +{ 'y', 121 }, +{ 'z', 122 }, +}; + +int der_printable_char_encode(int c) +{ + int x; + for (x = 0; x < (int)(sizeof(printable_table)/sizeof(printable_table[0])); x++) { + if (printable_table[x].code == c) { + return printable_table[x].value; + } + } + return -1; +} + +int der_printable_value_decode(int v) +{ + int x; + for (x = 0; x < (int)(sizeof(printable_table)/sizeof(printable_table[0])); x++) { + if (printable_table[x].value == v) { + return printable_table[x].code; + } + } + return -1; +} + +/** + Gets length of DER encoding of Printable STRING + @param octets The values you want to encode + @param noctets The number of octets in the string to encode + @param outlen [out] The length of the DER encoding for the given string + @return CRYPT_OK if successful +*/ +int der_length_printable_string(const unsigned char *octets, unsigned long noctets, unsigned long *outlen) +{ + unsigned long x; + + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(octets != NULL); + + /* scan string for validity */ + for (x = 0; x < noctets; x++) { + if (der_printable_char_encode(octets[x]) == -1) { + return CRYPT_INVALID_ARG; + } + } + + if (noctets < 128) { + /* 16 LL DD DD DD ... */ + *outlen = 2 + noctets; + } else if (noctets < 256) { + /* 16 81 LL DD DD DD ... */ + *outlen = 3 + noctets; + } else if (noctets < 65536UL) { + /* 16 82 LL LL DD DD DD ... */ + *outlen = 4 + noctets; + } else if (noctets < 16777216UL) { + /* 16 83 LL LL LL DD DD DD ... */ + *outlen = 5 + noctets; + } else { + return CRYPT_INVALID_ARG; + } + + return CRYPT_OK; +} + +#endif + + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/printable_string/der_length_printable_string.c,v $ */ +/* $Revision: 1.1 $ */ +/* $Date: 2005/05/21 02:29:54 $ */ diff --git a/src/pk/asn1/der/sequence/der_decode_sequence.c b/src/pk/asn1/der/sequence/der_decode_sequence.c new file mode 100644 index 00000000..335a882b --- /dev/null +++ b/src/pk/asn1/der/sequence/der_decode_sequence.c @@ -0,0 +1,234 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org + */ +#include "tomcrypt.h" +#include <stdarg.h> + + +/** + @file der_decode_sequence.c + ASN.1 DER, decode a SEQUENCE, Tom St Denis +*/ + +#ifdef LTC_DER + +/** + Decode a SEQUENCE + @param in The DER encoded input + @param inlen The size of the input + @param list The list of items to decode + @param outlen The number of items in the list + @return CRYPT_OK on success +*/ +int der_decode_sequence(const unsigned char *in, unsigned long inlen, + ltc_asn1_list *list, unsigned long outlen) +{ + int err, type; + unsigned long size, x, y, z, i, blksize; + void *data; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(list != NULL); + + /* get blk size */ + if (inlen < 2) { + return CRYPT_INVALID_PACKET; + } + + /* sequence type? */ + x = 0; + if (in[x++] != 0x30) { + return CRYPT_INVALID_PACKET; + } + + if (in[x] < 128) { + blksize = in[x++]; + } else if (in[x] & 0x80) { + if (in[x] < 0x81 || in[x] > 0x83) { + return CRYPT_INVALID_PACKET; + } + y = in[x++] & 0x7F; + + /* would reading the len bytes overrun? */ + if (x + y > inlen) { + return CRYPT_INVALID_PACKET; + } + + /* read len */ + blksize = 0; + while (y--) { + blksize = (blksize << 8) | (unsigned long)in[x++]; + } + } + + /* would this blksize overflow? */ + if (x + blksize > inlen) { + return CRYPT_INVALID_PACKET; + } + + /* ok read data */ + inlen = blksize; + for (i = 0; i < outlen; i++) { + type = list[i].type; + size = list[i].size; + data = list[i].data; + + if (type == LTC_ASN1_EOL) { + break; + } + + switch (type) { + case LTC_ASN1_INTEGER: + z = inlen; + if ((err = der_decode_integer(in + x, z, data)) != CRYPT_OK) { + goto LBL_ERR; + } + if ((err = der_length_integer(data, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + x += z; + inlen -= z; + break; + + + case LTC_ASN1_SHORT_INTEGER: + z = inlen; + if ((err = der_decode_short_integer(in + x, z, data)) != CRYPT_OK) { + goto LBL_ERR; + } + if ((err = der_length_short_integer(size, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + x += z; + inlen -= z; + break; + + case LTC_ASN1_BIT_STRING: + z = inlen; + if ((err = der_decode_bit_string(in + x, z, data, &size)) != CRYPT_OK) { + goto LBL_ERR; + } + list[i].size = size; + if ((err = der_length_bit_string(size, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + x += z; + inlen -= z; + break; + + case LTC_ASN1_OCTET_STRING: + z = inlen; + if ((err = der_decode_octet_string(in + x, z, data, &size)) != CRYPT_OK) { + goto LBL_ERR; + } + list[i].size = size; + if ((err = der_length_octet_string(size, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + x += z; + inlen -= z; + break; + + case LTC_ASN1_NULL: + if (inlen < 2 || in[x] != 0x05 || in[x+1] != 0x00) { + err = CRYPT_INVALID_PACKET; + goto LBL_ERR; + } + x += 2; + inlen -= 2; + break; + + case LTC_ASN1_OBJECT_IDENTIFIER: + z = inlen; + if ((err = der_decode_object_identifier(in + x, z, data, &size)) != CRYPT_OK) { + goto LBL_ERR; + } + list[i].size = size; + if ((err = der_length_object_identifier(data, size, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + x += z; + inlen -= z; + break; + + case LTC_ASN1_IA5_STRING: + z = inlen; + if ((err = der_decode_ia5_string(in + x, z, data, &size)) != CRYPT_OK) { + goto LBL_ERR; + } + list[i].size = size; + if ((err = der_length_ia5_string(data, size, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + x += z; + inlen -= z; + break; + + + case LTC_ASN1_PRINTABLE_STRING: + z = inlen; + if ((err = der_decode_printable_string(in + x, z, data, &size)) != CRYPT_OK) { + goto LBL_ERR; + } + list[i].size = size; + if ((err = der_length_printable_string(data, size, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + x += z; + inlen -= z; + break; + + case LTC_ASN1_UTCTIME: + z = inlen; + if ((err = der_decode_utctime(in + x, &z, data)) != CRYPT_OK) { + goto LBL_ERR; + } + x += z; + inlen -= z; + break; + + case LTC_ASN1_SEQUENCE: + z = inlen; + if ((err = der_decode_sequence(in + x, z, data, size)) != CRYPT_OK) { + goto LBL_ERR; + } + if ((err = der_length_sequence(data, size, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + x += z; + inlen -= z; + break; + + + case LTC_ASN1_CHOICE: + z = inlen; + if ((err = der_decode_choice(in + x, &z, data, size)) != CRYPT_OK) { + goto LBL_ERR; + } + x += z; + inlen -= z; + break; + + default: + err = CRYPT_INVALID_ARG; + goto LBL_ERR; + } + } + err = CRYPT_OK; + +LBL_ERR: + return err; +} + +#endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/sequence/der_decode_sequence.c,v $ */ +/* $Revision: 1.8 $ */ +/* $Date: 2005/06/18 19:20:23 $ */ diff --git a/src/pk/asn1/der/sequence/der_decode_sequence_multi.c b/src/pk/asn1/der/sequence/der_decode_sequence_multi.c new file mode 100644 index 00000000..a4a1038f --- /dev/null +++ b/src/pk/asn1/der/sequence/der_decode_sequence_multi.c @@ -0,0 +1,124 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org + */ +#include "tomcrypt.h" +#include <stdarg.h> + + +/** + @file der_decode_sequence_multi.c + ASN.1 DER, decode a SEQUENCE, Tom St Denis +*/ + +#ifdef LTC_DER + +int der_decode_sequence_multi(const unsigned char *in, unsigned long inlen, ...) +{ + int err, type; + unsigned long size, x; + void *data; + va_list args; + ltc_asn1_list *list; + + LTC_ARGCHK(in != NULL); + + /* get size of output that will be required */ + va_start(args, inlen); + x = 0; + for (;;) { + type = va_arg(args, int); + size = va_arg(args, unsigned long); + data = va_arg(args, void*); + + if (type == LTC_ASN1_EOL) { + break; + } + + switch (type) { + case LTC_ASN1_INTEGER: + case LTC_ASN1_SHORT_INTEGER: + case LTC_ASN1_BIT_STRING: + case LTC_ASN1_OCTET_STRING: + case LTC_ASN1_NULL: + case LTC_ASN1_OBJECT_IDENTIFIER: + case LTC_ASN1_IA5_STRING: + case LTC_ASN1_PRINTABLE_STRING: + case LTC_ASN1_UTCTIME: + case LTC_ASN1_SEQUENCE: + case LTC_ASN1_CHOICE: + ++x; + break; + + default: + va_end(args); + return CRYPT_INVALID_ARG; + } + } + va_end(args); + + /* allocate structure for x elements */ + if (x == 0) { + return CRYPT_NOP; + } + + list = XCALLOC(sizeof(*list), x); + if (list == NULL) { + return CRYPT_MEM; + } + + /* fill in the structure */ + va_start(args, inlen); + x = 0; + for (;;) { + type = va_arg(args, int); + size = va_arg(args, unsigned long); + data = va_arg(args, void*); + + if (type == LTC_ASN1_EOL) { + break; + } + + switch (type) { + case LTC_ASN1_INTEGER: + case LTC_ASN1_SHORT_INTEGER: + case LTC_ASN1_BIT_STRING: + case LTC_ASN1_OCTET_STRING: + case LTC_ASN1_NULL: + case LTC_ASN1_OBJECT_IDENTIFIER: + case LTC_ASN1_IA5_STRING: + case LTC_ASN1_PRINTABLE_STRING: + case LTC_ASN1_UTCTIME: + case LTC_ASN1_SEQUENCE: + case LTC_ASN1_CHOICE: + list[x].type = type; + list[x].size = size; + list[x++].data = data; + break; + + default: + va_end(args); + err = CRYPT_INVALID_ARG; + goto LBL_ERR; + } + } + va_end(args); + + err = der_decode_sequence(in, inlen, list, x); +LBL_ERR: + XFREE(list); + return err; +} + +#endif + + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/sequence/der_decode_sequence_multi.c,v $ */ +/* $Revision: 1.7 $ */ +/* $Date: 2005/06/18 19:20:23 $ */ diff --git a/src/pk/asn1/der/sequence/der_encode_sequence.c b/src/pk/asn1/der/sequence/der_encode_sequence.c new file mode 100644 index 00000000..d53153c6 --- /dev/null +++ b/src/pk/asn1/der/sequence/der_encode_sequence.c @@ -0,0 +1,281 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org + */ +#include "tomcrypt.h" +#include <stdarg.h> + + +/** + @file der_encode_sequence.c + ASN.1 DER, encode a SEQUENCE, Tom St Denis +*/ + +#ifdef LTC_DER + +/** + Encode a SEQUENCE + @param list The list of items to encode + @param inlen The number of items in the list + @param out [out] The destination + @param outlen [in/out] The size of the output + @return CRYPT_OK on success +*/ +int der_encode_sequence(ltc_asn1_list *list, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + int err, type; + unsigned long size, x, y, z, i; + void *data; + + LTC_ARGCHK(list != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* get size of output that will be required */ + y = 0; + for (i = 0; i < inlen; i++) { + type = list[i].type; + size = list[i].size; + data = list[i].data; + + if (type == LTC_ASN1_EOL) { + break; + } + + switch (type) { + case LTC_ASN1_INTEGER: + if ((err = der_length_integer(data, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + y += x; + break; + + case LTC_ASN1_SHORT_INTEGER: + if ((err = der_length_short_integer(*((unsigned long*)data), &x)) != CRYPT_OK) { + goto LBL_ERR; + } + y += x; + break; + + case LTC_ASN1_BIT_STRING: + if ((err = der_length_bit_string(size, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + y += x; + break; + + case LTC_ASN1_OCTET_STRING: + if ((err = der_length_octet_string(size, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + y += x; + break; + + case LTC_ASN1_NULL: + y += 2; + break; + + case LTC_ASN1_OBJECT_IDENTIFIER: + if ((err = der_length_object_identifier(data, size, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + y += x; + break; + + case LTC_ASN1_IA5_STRING: + if ((err = der_length_ia5_string(data, size, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + y += x; + break; + + case LTC_ASN1_PRINTABLE_STRING: + if ((err = der_length_printable_string(data, size, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + y += x; + break; + + case LTC_ASN1_UTCTIME: + if ((err = der_length_utctime(data, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + y += x; + break; + + case LTC_ASN1_SEQUENCE: + if ((err = der_length_sequence(data, size, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + y += x; + break; + + + default: + err = CRYPT_INVALID_ARG; + goto LBL_ERR; + } + } + + /* calc header size */ + z = y; + if (y < 128) { + y += 2; + } else if (y < 256) { + /* 0x30 0x81 LL */ + y += 3; + } else if (y < 65536UL) { + /* 0x30 0x82 LL LL */ + y += 4; + } else if (y < 16777216UL) { + /* 0x30 0x83 LL LL LL */ + y += 5; + } else { + err = CRYPT_INVALID_ARG; + goto LBL_ERR; + } + + /* too big ? */ + if (*outlen < y) { + err = CRYPT_BUFFER_OVERFLOW; + goto LBL_ERR; + } + + /* store header */ + x = 0; + out[x++] = 0x30; + if (z < 128) { + out[x++] = z; + } else if (z < 256) { + out[x++] = 0x81; + out[x++] = z; + } else if (z < 65536UL) { + out[x++] = 0x82; + out[x++] = (z>>8UL)&255; + out[x++] = z&255; + } else if (z < 16777216UL) { + out[x++] = 0x83; + out[x++] = (z>>16UL)&255; + out[x++] = (z>>8UL)&255; + out[x++] = z&255; + } + + /* store data */ + *outlen -= x; + for (i = 0; i < inlen; i++) { + type = list[i].type; + size = list[i].size; + data = list[i].data; + + if (type == LTC_ASN1_EOL) { + break; + } + + switch (type) { + case LTC_ASN1_INTEGER: + z = *outlen; + if ((err = der_encode_integer(data, out + x, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + x += z; + *outlen -= z; + break; + + case LTC_ASN1_SHORT_INTEGER: + z = *outlen; + if ((err = der_encode_short_integer(*((unsigned long*)data), out + x, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + x += z; + *outlen -= z; + break; + + case LTC_ASN1_BIT_STRING: + z = *outlen; + if ((err = der_encode_bit_string(data, size, out + x, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + x += z; + *outlen -= z; + break; + + case LTC_ASN1_OCTET_STRING: + z = *outlen; + if ((err = der_encode_octet_string(data, size, out + x, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + x += z; + *outlen -= z; + break; + + case LTC_ASN1_NULL: + out[x++] = 0x05; + out[x++] = 0x00; + *outlen -= 2; + break; + + case LTC_ASN1_OBJECT_IDENTIFIER: + z = *outlen; + if ((err = der_encode_object_identifier(data, size, out + x, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + x += z; + *outlen -= z; + break; + + case LTC_ASN1_IA5_STRING: + z = *outlen; + if ((err = der_encode_ia5_string(data, size, out + x, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + x += z; + *outlen -= z; + break; + + case LTC_ASN1_PRINTABLE_STRING: + z = *outlen; + if ((err = der_encode_printable_string(data, size, out + x, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + x += z; + *outlen -= z; + break; + + case LTC_ASN1_UTCTIME: + z = *outlen; + if ((err = der_encode_utctime(data, out + x, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + x += z; + *outlen -= z; + break; + + case LTC_ASN1_SEQUENCE: + z = *outlen; + if ((err = der_encode_sequence(data, size, out + x, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + x += z; + *outlen -= z; + break; + + default: + err = CRYPT_INVALID_ARG; + goto LBL_ERR; + } + } + *outlen = x; + err = CRYPT_OK; + +LBL_ERR: + return err; +} + +#endif diff --git a/src/pk/asn1/der/sequence/der_encode_sequence_multi.c b/src/pk/asn1/der/sequence/der_encode_sequence_multi.c new file mode 100644 index 00000000..9ff48b9f --- /dev/null +++ b/src/pk/asn1/der/sequence/der_encode_sequence_multi.c @@ -0,0 +1,123 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org + */ +#include "tomcrypt.h" +#include <stdarg.h> + + +/** + @file der_encode_sequence_multi.c + ASN.1 DER, encode a SEQUENCE, Tom St Denis +*/ + +#ifdef LTC_DER + +int der_encode_sequence_multi(unsigned char *out, unsigned long *outlen, ...) +{ + int err, type; + unsigned long size, x; + void *data; + va_list args; + ltc_asn1_list *list; + + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* get size of output that will be required */ + va_start(args, outlen); + x = 0; + for (;;) { + type = va_arg(args, int); + size = va_arg(args, unsigned long); + data = va_arg(args, void*); + + if (type == LTC_ASN1_EOL) { + break; + } + + switch (type) { + case LTC_ASN1_INTEGER: + case LTC_ASN1_SHORT_INTEGER: + case LTC_ASN1_BIT_STRING: + case LTC_ASN1_OCTET_STRING: + case LTC_ASN1_NULL: + case LTC_ASN1_OBJECT_IDENTIFIER: + case LTC_ASN1_IA5_STRING: + case LTC_ASN1_PRINTABLE_STRING: + case LTC_ASN1_UTCTIME: + case LTC_ASN1_SEQUENCE: + ++x; + break; + + default: + va_end(args); + return CRYPT_INVALID_ARG; + } + } + va_end(args); + + /* allocate structure for x elements */ + if (x == 0) { + return CRYPT_NOP; + } + + list = XCALLOC(sizeof(*list), x); + if (list == NULL) { + return CRYPT_MEM; + } + + /* fill in the structure */ + va_start(args, outlen); + x = 0; + for (;;) { + type = va_arg(args, int); + size = va_arg(args, unsigned long); + data = va_arg(args, void*); + + if (type == LTC_ASN1_EOL) { + break; + } + + switch (type) { + case LTC_ASN1_INTEGER: + case LTC_ASN1_SHORT_INTEGER: + case LTC_ASN1_BIT_STRING: + case LTC_ASN1_OCTET_STRING: + case LTC_ASN1_NULL: + case LTC_ASN1_OBJECT_IDENTIFIER: + case LTC_ASN1_IA5_STRING: + case LTC_ASN1_PRINTABLE_STRING: + case LTC_ASN1_UTCTIME: + case LTC_ASN1_SEQUENCE: + list[x].type = type; + list[x].size = size; + list[x++].data = data; + break; + + default: + va_end(args); + err = CRYPT_INVALID_ARG; + goto LBL_ERR; + } + } + va_end(args); + + err = der_encode_sequence(list, x, out, outlen); +LBL_ERR: + XFREE(list); + return err; +} + +#endif + + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/sequence/der_encode_sequence_multi.c,v $ */ +/* $Revision: 1.6 $ */ +/* $Date: 2005/06/18 19:20:23 $ */ diff --git a/src/pk/asn1/der/sequence/der_length_sequence.c b/src/pk/asn1/der/sequence/der_length_sequence.c new file mode 100644 index 00000000..91204519 --- /dev/null +++ b/src/pk/asn1/der/sequence/der_length_sequence.c @@ -0,0 +1,144 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org + */ +#include "tomcrypt.h" +#include <stdarg.h> + + +/** + @file der_length_sequence.c + ASN.1 DER, length a SEQUENCE, Tom St Denis +*/ + +#ifdef LTC_DER + +/** + Get the length of a DER sequence + @param list The sequences of items in the SEQUENCE + @param inlen The number of items + @param outlen [out] The length required in octets to store it + @return CRYPT_OK on success +*/ +int der_length_sequence(ltc_asn1_list *list, unsigned long inlen, + unsigned long *outlen) +{ + int err, type; + unsigned long size, x, y, z, i; + void *data; + + LTC_ARGCHK(list != NULL); + LTC_ARGCHK(outlen != NULL); + + /* get size of output that will be required */ + y = 0; + for (i = 0; i < inlen; i++) { + type = list[i].type; + size = list[i].size; + data = list[i].data; + + if (type == LTC_ASN1_EOL) { + break; + } + + switch (type) { + case LTC_ASN1_INTEGER: + if ((err = der_length_integer(data, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + y += x; + break; + + case LTC_ASN1_SHORT_INTEGER: + if ((err = der_length_short_integer(*((unsigned long *)data), &x)) != CRYPT_OK) { + goto LBL_ERR; + } + y += x; + break; + + case LTC_ASN1_BIT_STRING: + if ((err = der_length_bit_string(size, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + y += x; + break; + + case LTC_ASN1_OCTET_STRING: + if ((err = der_length_octet_string(size, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + y += x; + break; + + case LTC_ASN1_NULL: + y += 2; + break; + + case LTC_ASN1_OBJECT_IDENTIFIER: + if ((err = der_length_object_identifier(data, size, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + y += x; + break; + + case LTC_ASN1_IA5_STRING: + if ((err = der_length_ia5_string(data, size, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + y += x; + break; + + case LTC_ASN1_PRINTABLE_STRING: + if ((err = der_length_printable_string(data, size, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + y += x; + break; + + case LTC_ASN1_SEQUENCE: + if ((err = der_length_sequence(data, size, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + y += x; + break; + + + default: + err = CRYPT_INVALID_ARG; + goto LBL_ERR; + } + } + + /* calc header size */ + z = y; + if (y < 128) { + y += 2; + } else if (y < 256) { + /* 0x30 0x81 LL */ + y += 3; + } else if (y < 65536UL) { + /* 0x30 0x82 LL LL */ + y += 4; + } else if (y < 16777216UL) { + /* 0x30 0x83 LL LL LL */ + y += 5; + } else { + err = CRYPT_INVALID_ARG; + goto LBL_ERR; + } + + /* store size */ + *outlen = y; + err = CRYPT_OK; + +LBL_ERR: + return err; +} + +#endif diff --git a/src/pk/asn1/der/short_integer/der_decode_short_integer.c b/src/pk/asn1/der/short_integer/der_decode_short_integer.c new file mode 100644 index 00000000..7d3d3b73 --- /dev/null +++ b/src/pk/asn1/der/short_integer/der_decode_short_integer.c @@ -0,0 +1,68 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org + */ +#include "tomcrypt.h" + +/** + @file der_decode_short_integer.c + ASN.1 DER, decode an integer, Tom St Denis +*/ + + +#ifdef LTC_DER + +/** + Read a mp_int integer + @param in The DER encoded data + @param inlen Size of data + @param num [out] The integer to decode + @return CRYPT_OK if successful +*/ +int der_decode_short_integer(const unsigned char *in, unsigned long inlen, unsigned long *num) +{ + unsigned long len, x, y; + + LTC_ARGCHK(num != NULL); + LTC_ARGCHK(in != NULL); + + /* check length */ + if (inlen < 2) { + return CRYPT_INVALID_PACKET; + } + + /* check header */ + x = 0; + if ((in[x++] & 0x1F) != 0x02) { + return CRYPT_INVALID_PACKET; + } + + /* get the packet len */ + len = in[x++]; + + if (x + len > inlen) { + return CRYPT_INVALID_PACKET; + } + + /* read number */ + y = 0; + while (len--) { + y = (y<<8) | (unsigned long)in[x++]; + } + *num = y; + + return CRYPT_OK; + +} + +#endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/short_integer/der_decode_short_integer.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/05/23 01:04:13 $ */ diff --git a/src/pk/asn1/der/short_integer/der_encode_short_integer.c b/src/pk/asn1/der/short_integer/der_encode_short_integer.c new file mode 100644 index 00000000..eb94d38c --- /dev/null +++ b/src/pk/asn1/der/short_integer/der_encode_short_integer.c @@ -0,0 +1,97 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org + */ +#include "tomcrypt.h" + +/** + @file der_encode_short_integer.c + ASN.1 DER, encode an integer, Tom St Denis +*/ + + +#ifdef LTC_DER + +/* Exports a positive integer as DER format (upto 32-bits in size) */ +/** + Store a mp_int integer + @param num The integer to encode + @param out [out] The destination for the DER encoded integers + @param outlen [in/out] The max size and resulting size of the DER encoded integers + @return CRYPT_OK if successful +*/ +int der_encode_short_integer(unsigned long num, unsigned char *out, unsigned long *outlen) +{ + unsigned long len, x, y, z; + int err; + + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* force to 32 bits */ + num &= 0xFFFFFFFFUL; + + /* find out how big this will be */ + if ((err = der_length_short_integer(num, &len)) != CRYPT_OK) { + return err; + } + + if (*outlen < len) { + return CRYPT_BUFFER_OVERFLOW; + } + + /* get len of output */ + z = 0; + y = num; + while (y) { + ++z; + y >>= 8; + } + + /* handle zero */ + if (z == 0) { + z = 1; + } + + /* see if msb is set */ + z += (num&(1UL<<((z<<3) - 1))) ? 1 : 0; + + /* adjust the number so the msB is non-zero */ + for (x = 0; (z <= 4) && (x < (4 - z)); x++) { + num <<= 8; + } + + /* store header */ + x = 0; + out[x++] = 0x02; + out[x++] = z; + + /* if 31st bit is set output a leading zero and decrement count */ + if (z == 5) { + out[x++] = 0; + --z; + } + + /* store values */ + for (y = 0; y < z; y++) { + out[x++] = (num >> 24) & 0xFF; + num <<= 8; + } + + /* we good */ + *outlen = x; + + return CRYPT_OK; +} + +#endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/short_integer/der_encode_short_integer.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/23 01:27:03 $ */ diff --git a/src/pk/asn1/der/short_integer/der_length_short_integer.c b/src/pk/asn1/der/short_integer/der_length_short_integer.c new file mode 100644 index 00000000..7324b4a2 --- /dev/null +++ b/src/pk/asn1/der/short_integer/der_length_short_integer.c @@ -0,0 +1,69 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org + */ +#include "tomcrypt.h" + +/** + @file der_length_short_integer.c + ASN.1 DER, get length of encoding, Tom St Denis +*/ + + +#ifdef LTC_DER +/** + Gets length of DER encoding of num + @param num The integer to get the size of + @param outlen [out] The length of the DER encoding for the given integer + @return CRYPT_OK if successful +*/ +int der_length_short_integer(unsigned long num, unsigned long *outlen) +{ + unsigned long z, y, len; + + LTC_ARGCHK(outlen != NULL); + + /* force to 32 bits */ + num &= 0xFFFFFFFFUL; + + /* get the number of bytes */ + z = 0; + y = num; + while (y) { + ++z; + y >>= 8; + } + + /* handle zero */ + if (z == 0) { + z = 1; + } + + /* we need a 0x02 to indicate it's INTEGER */ + len = 1; + + /* length byte */ + ++len; + + /* bytes in value */ + len += z; + + /* see if msb is set */ + len += (num&(1UL<<((z<<3) - 1))) ? 1 : 0; + + /* return length */ + *outlen = len; + return CRYPT_OK; +} + +#endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/short_integer/der_length_short_integer.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/23 01:35:38 $ */ diff --git a/src/pk/asn1/der/utctime/der_decode_utctime.c b/src/pk/asn1/der/utctime/der_decode_utctime.c new file mode 100644 index 00000000..43ba033c --- /dev/null +++ b/src/pk/asn1/der/utctime/der_decode_utctime.c @@ -0,0 +1,120 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org + */ +#include "tomcrypt.h" + +/** + @file der_decode_utctime.c + ASN.1 DER, decode a UTCTIME, Tom St Denis +*/ + +#ifdef LTC_DER + +static int char_to_int(unsigned char x) +{ + switch (x) { + case '0': return 0; + case '1': return 1; + case '2': return 2; + case '3': return 3; + case '4': return 4; + case '5': return 5; + case '6': return 6; + case '7': return 7; + case '8': return 8; + case '9': return 9; + } + return 100; +} + +#define DECODE_V(y, max) \ + y = char_to_int(buf[x])*10 + char_to_int(buf[x+1]); \ + if (y >= max) return CRYPT_INVALID_PACKET; \ + x += 2; + +int der_decode_utctime(const unsigned char *in, unsigned long *inlen, + ltc_utctime *out) +{ + unsigned char buf[32]; + unsigned long x; + int y; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(inlen != NULL); + LTC_ARGCHK(out != NULL); + + /* check header */ + if (*inlen < 2UL || (in[1] >= sizeof(buf)) || ((in[1] + 2UL) > *inlen)) { + return CRYPT_INVALID_PACKET; + } + + /* decode the string */ + for (x = 0; x < in[1]; x++) { + y = der_ia5_value_decode(in[x+2]); + if (y == -1) { + return CRYPT_INVALID_PACKET; + } + buf[x] = y; + } + *inlen = 2 + x; + + + /* possible encodings are +YYMMDDhhmmZ +YYMMDDhhmm+hh'mm' +YYMMDDhhmm-hh'mm' +YYMMDDhhmmssZ +YYMMDDhhmmss+hh'mm' +YYMMDDhhmmss-hh'mm' + + So let's do a trivial decode upto [including] mm + */ + + x = 0; + DECODE_V(out->YY, 100); + DECODE_V(out->MM, 13); + DECODE_V(out->DD, 32); + DECODE_V(out->hh, 24); + DECODE_V(out->mm, 60); + + /* clear timezone and seconds info */ + out->off_dir = out->off_hh = out->off_mm = out->ss = 0; + + /* now is it Z, +, - or 0-9 */ + if (buf[x] == 'Z') { + return CRYPT_OK; + } else if (buf[x] == '+' || buf[x] == '-') { + out->off_dir = (buf[x++] == '+') ? 0 : 1; + DECODE_V(out->off_hh, 24); + DECODE_V(out->off_mm, 60); + return CRYPT_OK; + } + + /* decode seconds */ + DECODE_V(out->ss, 60); + + /* now is it Z, +, - */ + if (buf[x] == 'Z') { + return CRYPT_OK; + } else if (buf[x] == '+' || buf[x] == '-') { + out->off_dir = (buf[x++] == '+') ? 0 : 1; + DECODE_V(out->off_hh, 24); + DECODE_V(out->off_mm, 60); + return CRYPT_OK; + } else { + return CRYPT_INVALID_PACKET; + } +} + +#endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/utctime/der_decode_utctime.c,v $ */ +/* $Revision: 1.6 $ */ +/* $Date: 2005/06/19 12:07:00 $ */ diff --git a/src/pk/asn1/der/utctime/der_encode_utctime.c b/src/pk/asn1/der/utctime/der_encode_utctime.c new file mode 100644 index 00000000..dad8c848 --- /dev/null +++ b/src/pk/asn1/der/utctime/der_encode_utctime.c @@ -0,0 +1,80 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org + */ +#include "tomcrypt.h" + +/** + @file der_encode_utctime.c + ASN.1 DER, encode a UTCTIME, Tom St Denis +*/ + +#ifdef LTC_DER + +static const char *baseten = "0123456789"; + +#define STORE_V(y) \ + out[x++] = der_ia5_char_encode(baseten[(y/10) % 10]); \ + out[x++] = der_ia5_char_encode(baseten[y % 10]); + +/** + Gets length of DER encoding of UTCTIME + @param outlen [out] The length of the DER encoding + @return CRYPT_OK if successful +*/ +int der_encode_utctime(ltc_utctime *utctime, + unsigned char *out, unsigned long *outlen) +{ + unsigned long x, tmplen; + int err; + + LTC_ARGCHK(utctime != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + if ((err = der_length_utctime(utctime, &tmplen)) != CRYPT_OK) { + return err; + } + if (tmplen > *outlen) { + return CRYPT_BUFFER_OVERFLOW; + } + + /* store header */ + out[0] = 0x17; + + /* store values */ + x = 2; + STORE_V(utctime->YY); + STORE_V(utctime->MM); + STORE_V(utctime->DD); + STORE_V(utctime->hh); + STORE_V(utctime->mm); + STORE_V(utctime->ss); + + if (utctime->off_mm || utctime->off_hh) { + out[x++] = der_ia5_char_encode(utctime->off_dir ? '-' : '+'); + STORE_V(utctime->off_hh); + STORE_V(utctime->off_mm); + } else { + out[x++] = der_ia5_char_encode('Z'); + } + + /* store length */ + out[1] = x - 2; + + /* all good let's return */ + *outlen = x; + return CRYPT_OK; +} + +#endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/utctime/der_encode_utctime.c,v $ */ +/* $Revision: 1.5 $ */ +/* $Date: 2005/06/19 12:07:00 $ */ diff --git a/src/pk/asn1/der/utctime/der_length_utctime.c b/src/pk/asn1/der/utctime/der_length_utctime.c new file mode 100644 index 00000000..84e654ab --- /dev/null +++ b/src/pk/asn1/der/utctime/der_length_utctime.c @@ -0,0 +1,45 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org + */ +#include "tomcrypt.h" + +/** + @file der_length_utctime.c + ASN.1 DER, get length of UTCTIME, Tom St Denis +*/ + +#ifdef LTC_DER + +/** + Gets length of DER encoding of UTCTIME + @param outlen [out] The length of the DER encoding + @return CRYPT_OK if successful +*/ +int der_length_utctime(ltc_utctime *utctime, unsigned long *outlen) +{ + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(utctime != NULL); + + if (utctime->off_hh == 0 && utctime->off_mm == 0) { + /* we encode as YYMMDDhhmmssZ */ + *outlen = 2 + 13; + } else { + /* we encode as YYMMDDhhmmss{+|-}hh'mm' */ + *outlen = 2 + 17; + } + + return CRYPT_OK; +} + +#endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/asn1/der/utctime/der_length_utctime.c,v $ */ +/* $Revision: 1.2 $ */ +/* $Date: 2005/06/19 11:23:04 $ */ diff --git a/src/pk/dh/dh.c b/src/pk/dh/dh.c index c2085a6a..a54f29b2 100644 --- a/src/pk/dh/dh.c +++ b/src/pk/dh/dh.c @@ -518,3 +518,7 @@ done: #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/dh/dh.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/pk/dh/dh_sys.c b/src/pk/dh/dh_sys.c index 801f85ac..4f105565 100644 --- a/src/pk/dh/dh_sys.c +++ b/src/pk/dh/dh_sys.c @@ -493,3 +493,7 @@ done: return err; } + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/dh/dh_sys.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/pk/dsa/dsa_export.c b/src/pk/dsa/dsa_export.c index 773023ea..5a093d92 100644 --- a/src/pk/dsa/dsa_export.c +++ b/src/pk/dsa/dsa_export.c @@ -27,18 +27,13 @@ */ int dsa_export(unsigned char *out, unsigned long *outlen, int type, dsa_key *key) { - unsigned long y, z; - int err; + unsigned char flags[1]; LTC_ARGCHK(out != NULL); LTC_ARGCHK(outlen != NULL); LTC_ARGCHK(key != NULL); /* can we store the static header? */ - if (*outlen < (PACKET_SIZE + 1 + 2)) { - return CRYPT_BUFFER_OVERFLOW; - } - if (type == PK_PRIVATE && key->type != PK_PRIVATE) { return CRYPT_PK_TYPE_MISMATCH; } @@ -47,29 +42,31 @@ int dsa_export(unsigned char *out, unsigned long *outlen, int type, dsa_key *key return CRYPT_INVALID_ARG; } - /* store header */ - packet_store_header(out, PACKET_SECT_DSA, PACKET_SUB_KEY); - y = PACKET_SIZE; - - /* store g, p, q, qord */ - out[y++] = type; - out[y++] = (key->qord>>8)&255; - out[y++] = key->qord & 255; - - OUTPUT_BIGNUM(&key->g,out,y,z); - OUTPUT_BIGNUM(&key->p,out,y,z); - OUTPUT_BIGNUM(&key->q,out,y,z); + flags[0] = (type != PK_PUBLIC) ? 1 : 0; - /* public exponent */ - OUTPUT_BIGNUM(&key->y,out,y,z); - if (type == PK_PRIVATE) { - OUTPUT_BIGNUM(&key->x,out,y,z); + return der_encode_sequence_multi(out, outlen, + LTC_ASN1_BIT_STRING, 1UL, flags, + LTC_ASN1_INTEGER, 1UL, &key->g, + LTC_ASN1_INTEGER, 1UL, &key->p, + LTC_ASN1_INTEGER, 1UL, &key->q, + LTC_ASN1_INTEGER, 1UL, &key->y, + LTC_ASN1_INTEGER, 1UL, &key->x, + LTC_ASN1_EOL, 0UL, NULL); + } else { + return der_encode_sequence_multi(out, outlen, + LTC_ASN1_BIT_STRING, 1UL, flags, + LTC_ASN1_INTEGER, 1UL, &key->g, + LTC_ASN1_INTEGER, 1UL, &key->p, + LTC_ASN1_INTEGER, 1UL, &key->q, + LTC_ASN1_INTEGER, 1UL, &key->y, + LTC_ASN1_EOL, 0UL, NULL); } - - *outlen = y; - return CRYPT_OK; } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/dsa/dsa_export.c,v $ */ +/* $Revision: 1.6 $ */ +/* $Date: 2005/06/03 19:24:31 $ */ diff --git a/src/pk/dsa/dsa_free.c b/src/pk/dsa/dsa_free.c index 862a2dd5..9157acb9 100644 --- a/src/pk/dsa/dsa_free.c +++ b/src/pk/dsa/dsa_free.c @@ -28,3 +28,7 @@ void dsa_free(dsa_key *key) } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/dsa/dsa_free.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/pk/dsa/dsa_import.c b/src/pk/dsa/dsa_import.c index 6de56e3c..e81bac80 100644 --- a/src/pk/dsa/dsa_import.c +++ b/src/pk/dsa/dsa_import.c @@ -26,46 +26,64 @@ */ int dsa_import(const unsigned char *in, unsigned long inlen, dsa_key *key) { - unsigned long x, y; + unsigned char flags[1]; int err; LTC_ARGCHK(in != NULL); LTC_ARGCHK(key != NULL); - /* check length */ - if ((1+2+PACKET_SIZE) > inlen) { - return CRYPT_INVALID_PACKET; - } - - /* check type */ - if ((err = packet_valid_header((unsigned char *)in, PACKET_SECT_DSA, PACKET_SUB_KEY)) != CRYPT_OK) { - return err; - } - y = PACKET_SIZE; - /* init key */ if (mp_init_multi(&key->p, &key->g, &key->q, &key->x, &key->y, NULL) != MP_OKAY) { return CRYPT_MEM; } - /* read type/qord */ - key->type = in[y++]; - key->qord = ((unsigned)in[y]<<8)|((unsigned)in[y+1]); - y += 2; + /* get key type */ + if ((err = der_decode_sequence_multi(in, inlen, + LTC_ASN1_BIT_STRING, 1UL, flags, + LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { + goto error; + } + + if (flags[0] == 1) { + if ((err = der_decode_sequence_multi(in, inlen, + LTC_ASN1_BIT_STRING, 1UL, flags, + LTC_ASN1_INTEGER, 1UL, &key->g, + LTC_ASN1_INTEGER, 1UL, &key->p, + LTC_ASN1_INTEGER, 1UL, &key->q, + LTC_ASN1_INTEGER, 1UL, &key->y, + LTC_ASN1_INTEGER, 1UL, &key->x, + LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { + goto error; + } + key->type = PK_PRIVATE; + } else { + if ((err = der_decode_sequence_multi(in, inlen, + LTC_ASN1_BIT_STRING, 1UL, flags, + LTC_ASN1_INTEGER, 1UL, &key->g, + LTC_ASN1_INTEGER, 1UL, &key->p, + LTC_ASN1_INTEGER, 1UL, &key->q, + LTC_ASN1_INTEGER, 1UL, &key->y, + LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { + goto error; + } + key->type = PK_PUBLIC; + } + key->qord = mp_unsigned_bin_size(&key->q); - /* input publics */ - INPUT_BIGNUM(&key->g,in,x,y, inlen); - INPUT_BIGNUM(&key->p,in,x,y, inlen); - INPUT_BIGNUM(&key->q,in,x,y, inlen); - INPUT_BIGNUM(&key->y,in,x,y, inlen); - if (key->type == PK_PRIVATE) { - INPUT_BIGNUM(&key->x,in,x,y, inlen); + if (key->qord >= MDSA_MAX_GROUP || key->qord <= 15 || + key->qord >= mp_unsigned_bin_size(&key->p) || (mp_unsigned_bin_size(&key->p) - key->qord) >= MDSA_DELTA) { + err = CRYPT_INVALID_PACKET; + goto error; } - return CRYPT_OK; + return CRYPT_OK; error: mp_clear_multi(&key->p, &key->g, &key->q, &key->x, &key->y, NULL); return err; } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/dsa/dsa_import.c,v $ */ +/* $Revision: 1.7 $ */ +/* $Date: 2005/06/08 23:31:17 $ */ diff --git a/src/pk/dsa/dsa_make_key.c b/src/pk/dsa/dsa_make_key.c index 60683a0c..02f69e00 100644 --- a/src/pk/dsa/dsa_make_key.c +++ b/src/pk/dsa/dsa_make_key.c @@ -70,15 +70,15 @@ int dsa_make_key(prng_state *prng, int wprng, int group_size, int modulus_size, } /* force magnitude */ - buf[0] = 1; + buf[0] |= 0xC0; /* force even */ - buf[modulus_size - group_size] &= ~1; + buf[modulus_size - group_size - 1] &= ~1; - if ((err = mp_read_unsigned_bin(&tmp2, buf, modulus_size - group_size+1)) != MP_OKAY) { goto error; } + if ((err = mp_read_unsigned_bin(&tmp2, buf, modulus_size - group_size)) != MP_OKAY) { goto error; } if ((err = mp_mul(&key->q, &tmp2, &key->p)) != MP_OKAY) { goto error; } if ((err = mp_add_d(&key->p, 1, &key->p)) != MP_OKAY) { goto error; } - + /* now loop until p is prime */ for (;;) { if ((err = is_prime(&key->p, &res)) != CRYPT_OK) { goto LBL_ERR; } @@ -140,3 +140,7 @@ done: } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/dsa/dsa_make_key.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/06/11 05:45:35 $ */ diff --git a/src/pk/dsa/dsa_sign_hash.c b/src/pk/dsa/dsa_sign_hash.c index da92a825..48d29a2d 100644 --- a/src/pk/dsa/dsa_sign_hash.c +++ b/src/pk/dsa/dsa_sign_hash.c @@ -21,26 +21,25 @@ Sign a hash with DSA @param in The hash to sign @param inlen The length of the hash to sign - @param out [out] Where to store the signature - @param outlen [in/out] The max size and resulting size of the signature + @param r The "r" integer of the signature (caller must initialize with mp_init() first) + @param s The "s" integer of the signature (caller must initialize with mp_init() first) @param prng An active PRNG state @param wprng The index of the PRNG desired @param key A private DSA key @return CRYPT_OK if successful */ -int dsa_sign_hash(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - prng_state *prng, int wprng, dsa_key *key) +int dsa_sign_hash_raw(const unsigned char *in, unsigned long inlen, + mp_int *r, mp_int *s, + prng_state *prng, int wprng, dsa_key *key) { - mp_int k, kinv, tmp, r, s; + mp_int k, kinv, tmp; unsigned char *buf; int err; - unsigned long out1, out2; - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - LTC_ARGCHK(key != NULL); + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(r != NULL); + LTC_ARGCHK(s != NULL); + LTC_ARGCHK(key != NULL); if ((err = prng_is_valid(wprng)) != CRYPT_OK) { return err; @@ -60,7 +59,7 @@ int dsa_sign_hash(const unsigned char *in, unsigned long inlen, } /* Init our temps */ - if ((err = mp_init_multi(&k, &kinv, &r, &s, &tmp, NULL)) != MP_OKAY) { goto error; } + if ((err = mp_init_multi(&k, &kinv, &tmp, NULL)) != MP_OKAY) { goto error; } retry: @@ -85,37 +84,26 @@ retry: if ((err = mp_invmod(&k, &key->q, &kinv)) != MP_OKAY) { goto error; } /* now find r = g^k mod p mod q */ - if ((err = mp_exptmod(&key->g, &k, &key->p, &r)) != MP_OKAY) { goto error; } - if ((err = mp_mod(&r, &key->q, &r)) != MP_OKAY) { goto error; } + if ((err = mp_exptmod(&key->g, &k, &key->p, r)) != MP_OKAY) { goto error; } + if ((err = mp_mod(r, &key->q, r)) != MP_OKAY) { goto error; } - if (mp_iszero(&r) == MP_YES) { goto retry; } + if (mp_iszero(r) == MP_YES) { goto retry; } /* now find s = (in + xr)/k mod q */ if ((err = mp_read_unsigned_bin(&tmp, (unsigned char *)in, inlen)) != MP_OKAY) { goto error; } - if ((err = mp_mul(&key->x, &r, &s)) != MP_OKAY) { goto error; } - if ((err = mp_add(&s, &tmp, &s)) != MP_OKAY) { goto error; } - if ((err = mp_mulmod(&s, &kinv, &key->q, &s)) != MP_OKAY) { goto error; } - - if (mp_iszero(&s) == MP_YES) { goto retry; } - - /* now store em both */ - - /* first check that we have enough room */ - if ((err = der_length_integer(&s, &out1)) != CRYPT_OK) { goto LBL_ERR; } - if ((err = der_length_integer(&r, &out2)) != CRYPT_OK) { goto LBL_ERR; } - if (*outlen < (out1+out2)) { - err = CRYPT_BUFFER_OVERFLOW; - goto LBL_ERR; - } + if ((err = mp_mul(&key->x, r, s)) != MP_OKAY) { goto error; } + if ((err = mp_add(s, &tmp, s)) != MP_OKAY) { goto error; } + if ((err = mp_mulmod(s, &kinv, &key->q, s)) != MP_OKAY) { goto error; } - /* store ints */ - err = der_put_multi_integer(out, outlen, &r, &s, NULL); + if (mp_iszero(s) == MP_YES) { goto retry; } + + err = CRYPT_OK; goto LBL_ERR; error: err = mpi_to_ltc_error(err); LBL_ERR: - mp_clear_multi(&k, &kinv, &r, &s, &tmp, NULL); + mp_clear_multi(&k, &kinv, &tmp, NULL); #ifdef LTC_CLEAN_STACK zeromem(buf, MDSA_MAX_GROUP); #endif @@ -123,4 +111,49 @@ LBL_ERR: return err; } +/** + Sign a hash with DSA + @param in The hash to sign + @param inlen The length of the hash to sign + @param out [out] Where to store the signature + @param outlen [in/out] The max size and resulting size of the signature + @param prng An active PRNG state + @param wprng The index of the PRNG desired + @param key A private DSA key + @return CRYPT_OK if successful +*/ +int dsa_sign_hash(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, + prng_state *prng, int wprng, dsa_key *key) +{ + mp_int r, s; + int err; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(key != NULL); + + if (mp_init_multi(&r, &s, NULL) != MP_OKAY) { + return CRYPT_MEM; + } + + if ((err = dsa_sign_hash_raw(in, inlen, &r, &s, prng, wprng, key)) != CRYPT_OK) { + goto LBL_ERR; + } + + err = der_encode_sequence_multi(out, outlen, + LTC_ASN1_INTEGER, 1UL, &r, + LTC_ASN1_INTEGER, 1UL, &s, + LTC_ASN1_EOL, 0UL, NULL); + +LBL_ERR: + mp_clear_multi(&r, &s, NULL); + return err; +} + #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/dsa/dsa_sign_hash.c,v $ */ +/* $Revision: 1.6 $ */ +/* $Date: 2005/05/15 21:48:59 $ */ diff --git a/src/pk/dsa/dsa_verify_hash.c b/src/pk/dsa/dsa_verify_hash.c index 140f0e20..11e5c337 100644 --- a/src/pk/dsa/dsa_verify_hash.c +++ b/src/pk/dsa/dsa_verify_hash.c @@ -20,23 +20,23 @@ /** Verify a DSA signature - @param sig The signature - @param siglen The length of the signature (octets) + @param r DSA "r" parameter + @param s DSA "s" parameter @param hash The hash that was signed @param hashlen The length of the hash that was signed @param stat [out] The result of the signature verification, 1==valid, 0==invalid @param key The corresponding public DH key @return CRYPT_OK if successful (even if the signature is invalid) */ -int dsa_verify_hash(const unsigned char *sig, unsigned long siglen, +int dsa_verify_hash_raw( mp_int *r, mp_int *s, const unsigned char *hash, unsigned long hashlen, - int *stat, dsa_key *key) + int *stat, dsa_key *key) { - mp_int r, s, w, v, u1, u2; + mp_int w, v, u1, u2; int err; - LTC_ARGCHK(sig != NULL); - LTC_ARGCHK(hash != NULL); + LTC_ARGCHK(r != NULL); + LTC_ARGCHK(s != NULL); LTC_ARGCHK(stat != NULL); LTC_ARGCHK(key != NULL); @@ -44,28 +44,25 @@ int dsa_verify_hash(const unsigned char *sig, unsigned long siglen, *stat = 0; /* init our variables */ - if ((err = mp_init_multi(&r, &s, &w, &v, &u1, &u2, NULL)) != MP_OKAY) { + if ((err = mp_init_multi(&w, &v, &u1, &u2, NULL)) != MP_OKAY) { return mpi_to_ltc_error(err); } - /* read in r followed by s */ - if ((err = der_get_multi_integer(sig, &siglen, &r, &s, NULL)) != CRYPT_OK) { goto done; } - - /* neither r or s can be null */ - if (mp_iszero(&r) == MP_YES || mp_iszero(&s) == MP_YES) { + /* neither r or s can be null or >q*/ + if (mp_iszero(r) == MP_YES || mp_iszero(s) == MP_YES || mp_cmp(r, &key->q) != MP_LT || mp_cmp(s, &key->q) != MP_LT) { err = CRYPT_INVALID_PACKET; goto done; } /* w = 1/s mod q */ - if ((err = mp_invmod(&s, &key->q, &w)) != MP_OKAY) { goto error; } + if ((err = mp_invmod(s, &key->q, &w)) != MP_OKAY) { goto error; } /* u1 = m * w mod q */ if ((err = mp_read_unsigned_bin(&u1, (unsigned char *)hash, hashlen)) != MP_OKAY) { goto error; } if ((err = mp_mulmod(&u1, &w, &key->q, &u1)) != MP_OKAY) { goto error; } /* u2 = r*w mod q */ - if ((err = mp_mulmod(&r, &w, &key->q, &u2)) != MP_OKAY) { goto error; } + if ((err = mp_mulmod(r, &w, &key->q, &u2)) != MP_OKAY) { goto error; } /* v = g^u1 * y^u2 mod p mod q */ if ((err = mp_exptmod(&key->g, &u1, &key->p, &u1)) != MP_OKAY) { goto error; } @@ -74,7 +71,7 @@ int dsa_verify_hash(const unsigned char *sig, unsigned long siglen, if ((err = mp_mod(&v, &key->q, &v)) != MP_OKAY) { goto error; } /* if r = v then we're set */ - if (mp_cmp(&r, &v) == MP_EQ) { + if (mp_cmp(r, &v) == MP_EQ) { *stat = 1; } @@ -82,9 +79,50 @@ int dsa_verify_hash(const unsigned char *sig, unsigned long siglen, goto done; error : err = mpi_to_ltc_error(err); -done : mp_clear_multi(&r, &s, &w, &v, &u1, &u2, NULL); +done : mp_clear_multi(&w, &v, &u1, &u2, NULL); + return err; +} + +/** + Verify a DSA signature + @param sig The signature + @param siglen The length of the signature (octets) + @param hash The hash that was signed + @param hashlen The length of the hash that was signed + @param stat [out] The result of the signature verification, 1==valid, 0==invalid + @param key The corresponding public DH key + @return CRYPT_OK if successful (even if the signature is invalid) +*/ +int dsa_verify_hash(const unsigned char *sig, unsigned long siglen, + const unsigned char *hash, unsigned long hashlen, + int *stat, dsa_key *key) +{ + int err; + mp_int r, s; + + if ((err = mp_init_multi(&r, &s, NULL)) != CRYPT_OK) { + return CRYPT_MEM; + } + + /* decode the sequence */ + if ((err = der_decode_sequence_multi(sig, siglen, + LTC_ASN1_INTEGER, 1UL, &r, + LTC_ASN1_INTEGER, 1UL, &s, + LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* do the op */ + err = dsa_verify_hash_raw(&r, &s, hash, hashlen, stat, key); + +LBL_ERR: + mp_clear_multi(&r, &s, NULL); return err; } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/dsa/dsa_verify_hash.c,v $ */ +/* $Revision: 1.8 $ */ +/* $Date: 2005/05/15 21:48:59 $ */ diff --git a/src/pk/dsa/dsa_verify_key.c b/src/pk/dsa/dsa_verify_key.c index 3e842614..b7be103f 100644 --- a/src/pk/dsa/dsa_verify_key.c +++ b/src/pk/dsa/dsa_verify_key.c @@ -96,3 +96,7 @@ done : mp_clear_multi(&tmp, &tmp2, NULL); return err; } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/dsa/dsa_verify_key.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/pk/ecc/ecc.c b/src/pk/ecc/ecc.c index b5e088b0..469d56d0 100644 --- a/src/pk/ecc/ecc.c +++ b/src/pk/ecc/ecc.c @@ -24,7 +24,7 @@ #ifdef MECC /* size of our temp buffers for exported keys */ -#define ECC_BUF_SIZE 160 +#define ECC_BUF_SIZE 256 /* max private key size */ #define ECC_MAXSIZE 66 @@ -34,22 +34,6 @@ static const struct { int size; char *name, *prime, *B, *order, *Gx, *Gy; } sets[] = { -#ifdef ECC160 -{ - 20, - "ECC-160", - /* prime */ - "G00000000000000000000000007", - /* B */ - "1oUV2vOaSlWbxr6", - /* order */ - "G0000000000004sCQUtDxaqDUN5", - /* Gx */ - "jpqOf1BHus6Yd/pyhyVpP", - /* Gy */ - "D/wykuuIFfr+vPyx7kQEPu8MixO", -}, -#endif #ifdef ECC192 { 24, @@ -76,19 +60,20 @@ static const struct { "ECC-224", /* prime */ - "400000000000000000000000000000000000BV", + "3/////////////////////0000000000000001", /* B */ - "21HkWGL2CxJIp", + "2q1Gg530Ipg/L1CbPGHB2trx/OkYSBEKCZLV+q", /* order */ - "4000000000000000000Kxnixk9t8MLzMiV264/", + "3//////////////////nQYuBZmFXFTAKLSN2ez", /* Gx */ - "jpqOf1BHus6Yd/pyhyVpP", + "2t3WozQxI/Vp8JaBbA0y7JLi8H8ZGoWDOHN1qX", + /* Gy */ - "3FCtyo2yHA5SFjkCGbYxbOvNeChwS+j6wSIwck", + "2zDsE8jVSZ+qmYt+RDGtMWMWT7P4JLWPc507uq", }, #endif #ifdef ECC256 @@ -165,70 +150,6 @@ static const struct { } }; -#if 0 - -/* you plug in a prime and B value and it finds a pseudo-random base point */ -void ecc_find_base(void) -{ - static char *prime = "26959946667150639794667015087019630673637144422540572481103610249951"; - static char *order = "26959946667150639794667015087019637467111563745054605861463538557247"; - static char *b = "9538957348957353489587"; - mp_int pp, p, r, B, tmp1, tmp2, tx, ty, x, y; - char buf[4096]; - int i; - - mp_init_multi(&tx, &ty, &x, &y, &p, &pp, &r, &B, &tmp1, &tmp2, NULL); - mp_read_radix(&p, prime, 10); - mp_read_radix(&r, order, 10); - mp_read_radix(&B, b, 10); - - /* get (p+1)/4 */ - mp_add_d(&p, 1, &pp); - mp_div_2(&pp, &pp); - mp_div_2(&pp, &pp); - - buf[0] = 0; - do { - printf("."); fflush(stdout); - /* make a random value of x */ - for (i = 0; i < 16; i++) buf[i+1] = rand() & 255; - mp_read_raw(&x, buf, 17); - mp_copy(&x, &tx); - - /* now compute x^3 - 3x + b */ - mp_expt_d(&x, 3, &tmp1); - mp_mul_d(&x, 3, &tmp2); - mp_sub(&tmp1, &tmp2, &tmp1); - mp_add(&tmp1, &B, &tmp1); - mp_mod(&tmp1, &p, &tmp1); - - /* now compute sqrt via x^((p+1)/4) */ - mp_exptmod(&tmp1, &pp, &p, &tmp2); - mp_copy(&tmp2, &ty); - - /* now square it */ - mp_sqrmod(&tmp2, &p, &tmp2); - - /* tmp2 should equal tmp1 */ - } while (mp_cmp(&tmp1, &tmp2)); - - /* now output values in way that libtomcrypt wants */ - mp_todecimal(&p, buf); - printf("\n\np==%s\n", buf); - mp_tohex(&B, buf); - printf("b==%s\n", buf); - mp_todecimal(&r, buf); - printf("r==%s\n", buf); - mp_tohex(&tx, buf); - printf("Gx==%s\n", buf); - mp_tohex(&ty, buf); - printf("Gy==%s\n", buf); - - mp_clear_multi(&tx, &ty, &x, &y, &p, &pp, &r, &B, &tmp1, &tmp2, NULL); -} - -#endif - static int is_valid_idx(int n) { int x; @@ -263,7 +184,7 @@ static void del_point(ecc_point *p) } } -static int ecc_map(ecc_point *P, mp_int *modulus, mp_int *mu) +static int ecc_map(ecc_point *P, mp_int *modulus, mp_digit mp) { mp_int t1, t2; int err; @@ -272,20 +193,23 @@ static int ecc_map(ecc_point *P, mp_int *modulus, mp_int *mu) return CRYPT_MEM; } + /* first map z back to normal */ + if ((err = mp_montgomery_reduce(&P->z, modulus, mp)) != MP_OKAY) { goto error; } + /* get 1/z */ - if ((err = mp_invmod(&P->z, modulus, &t1)) != MP_OKAY) { goto error; } + if ((err = mp_invmod(&P->z, modulus, &t1)) != MP_OKAY) { goto error; } /* get 1/z^2 and 1/z^3 */ - if ((err = mp_sqr(&t1, &t2)) != MP_OKAY) { goto error; } - if ((err = mp_reduce(&t2, modulus, mu)) != MP_OKAY) { goto error; } - if ((err = mp_mul(&t1, &t2, &t1)) != MP_OKAY) { goto error; } - if ((err = mp_reduce(&t1, modulus, mu)) != MP_OKAY) { goto error; } + if ((err = mp_sqr(&t1, &t2)) != MP_OKAY) { goto error; } + if ((err = mp_mod(&t2, modulus, &t2)) != MP_OKAY) { goto error; } + if ((err = mp_mul(&t1, &t2, &t1)) != MP_OKAY) { goto error; } + if ((err = mp_mod(&t1, modulus, &t1)) != MP_OKAY) { goto error; } /* multiply against x/y */ - if ((err = mp_mul(&P->x, &t2, &P->x)) != MP_OKAY) { goto error; } - if ((err = mp_reduce(&P->x, modulus, mu)) != MP_OKAY) { goto error; } - if ((err = mp_mul(&P->y, &t1, &P->y)) != MP_OKAY) { goto error; } - if ((err = mp_reduce(&P->y, modulus, mu)) != MP_OKAY) { goto error; } + if ((err = mp_mul(&P->x, &t2, &P->x)) != MP_OKAY) { goto error; } + if ((err = mp_montgomery_reduce(&P->x, modulus, mp)) != MP_OKAY) { goto error; } + if ((err = mp_mul(&P->y, &t1, &P->y)) != MP_OKAY) { goto error; } + if ((err = mp_montgomery_reduce(&P->y, modulus, mp)) != MP_OKAY) { goto error; } mp_set(&P->z, 1); err = CRYPT_OK; @@ -298,9 +222,8 @@ done: } - /* double a point R = 2P, R can be P*/ -static int dbl_point(ecc_point *P, ecc_point *R, mp_int *modulus, mp_int *mu) +static int dbl_point(ecc_point *P, ecc_point *R, mp_int *modulus, mp_digit mp) { mp_int t1, t2; int err; @@ -315,10 +238,10 @@ static int dbl_point(ecc_point *P, ecc_point *R, mp_int *modulus, mp_int *mu) /* t1 = Z * Z */ if ((err = mp_sqr(&R->z, &t1)) != MP_OKAY) { goto error; } - if ((err = mp_reduce(&t1, modulus, mu)) != MP_OKAY) { goto error; } + if ((err = mp_montgomery_reduce(&t1, modulus, mp)) != MP_OKAY) { goto error; } /* Z = Y * Z */ if ((err = mp_mul(&R->z, &R->y, &R->z)) != MP_OKAY) { goto error; } - if ((err = mp_reduce(&R->z, modulus, mu)) != MP_OKAY) { goto error; } + if ((err = mp_montgomery_reduce(&R->z, modulus, mp)) != MP_OKAY) { goto error; } /* Z = 2Z */ if ((err = mp_mul_2(&R->z, &R->z)) != MP_OKAY) { goto error; } if (mp_cmp(&R->z, modulus) != MP_LT) { @@ -337,7 +260,7 @@ static int dbl_point(ecc_point *P, ecc_point *R, mp_int *modulus, mp_int *mu) } /* T2 = T1 * T2 */ if ((err = mp_mul(&t1, &t2, &t2)) != MP_OKAY) { goto error; } - if ((err = mp_reduce(&t2, modulus, mu)) != MP_OKAY) { goto error; } + if ((err = mp_montgomery_reduce(&t2, modulus, mp)) != MP_OKAY) { goto error; } /* T1 = 2T2 */ if ((err = mp_mul_2(&t2, &t1)) != MP_OKAY) { goto error; } if (mp_cmp(&t1, modulus) != MP_LT) { @@ -356,10 +279,10 @@ static int dbl_point(ecc_point *P, ecc_point *R, mp_int *modulus, mp_int *mu) } /* Y = Y * Y */ if ((err = mp_sqr(&R->y, &R->y)) != MP_OKAY) { goto error; } - if ((err = mp_reduce(&R->y, modulus, mu)) != MP_OKAY) { goto error; } + if ((err = mp_montgomery_reduce(&R->y, modulus, mp)) != MP_OKAY) { goto error; } /* T2 = Y * Y */ if ((err = mp_sqr(&R->y, &t2)) != MP_OKAY) { goto error; } - if ((err = mp_reduce(&t2, modulus, mu)) != MP_OKAY) { goto error; } + if ((err = mp_montgomery_reduce(&t2, modulus, mp)) != MP_OKAY) { goto error; } /* T2 = T2/2 */ if (mp_isodd(&t2)) { if ((err = mp_add(&t2, modulus, &t2)) != MP_OKAY) { goto error; } @@ -367,11 +290,11 @@ static int dbl_point(ecc_point *P, ecc_point *R, mp_int *modulus, mp_int *mu) if ((err = mp_div_2(&t2, &t2)) != MP_OKAY) { goto error; } /* Y = Y * X */ if ((err = mp_mul(&R->y, &R->x, &R->y)) != MP_OKAY) { goto error; } - if ((err = mp_reduce(&R->y, modulus, mu)) != MP_OKAY) { goto error; } + if ((err = mp_montgomery_reduce(&R->y, modulus, mp)) != MP_OKAY) { goto error; } /* X = T1 * T1 */ if ((err = mp_sqr(&t1, &R->x)) != MP_OKAY) { goto error; } - if ((err = mp_reduce(&R->x, modulus, mu)) != MP_OKAY) { goto error; } + if ((err = mp_montgomery_reduce(&R->x, modulus, mp)) != MP_OKAY) { goto error; } /* X = X - Y */ if ((err = mp_sub(&R->x, &R->y, &R->x)) != MP_OKAY) { goto error; } if (mp_cmp_d(&R->x, 0) == MP_LT) { @@ -390,7 +313,7 @@ static int dbl_point(ecc_point *P, ecc_point *R, mp_int *modulus, mp_int *mu) } /* Y = Y * T1 */ if ((err = mp_mul(&R->y, &t1, &R->y)) != MP_OKAY) { goto error; } - if ((err = mp_reduce(&R->y, modulus, mu)) != MP_OKAY) { goto error; } + if ((err = mp_montgomery_reduce(&R->y, modulus, mp)) != MP_OKAY) { goto error; } /* Y = Y - T2 */ if ((err = mp_sub(&R->y, &t2, &R->y)) != MP_OKAY) { goto error; } if (mp_cmp_d(&R->y, 0) == MP_LT) { @@ -407,7 +330,7 @@ done: } /* add two different points over Z/pZ, R = P + Q, note R can equal either P or Q */ -static int add_point(ecc_point *P, ecc_point *Q, ecc_point *R, mp_int *modulus, mp_int *mu) +static int add_point(ecc_point *P, ecc_point *Q, ecc_point *R, mp_int *modulus, mp_digit mp) { mp_int t1, t2, x, y, z; int err; @@ -420,34 +343,31 @@ static int add_point(ecc_point *P, ecc_point *Q, ecc_point *R, mp_int *modulus, if ((err = mp_copy(&P->y, &y)) != MP_OKAY) { goto error; } if ((err = mp_copy(&P->z, &z)) != MP_OKAY) { goto error; } - /* if Z' != 1 */ - if (mp_cmp_d(&Q->z, 1) != MP_EQ) { /* T1 = Z' * Z' */ if ((err = mp_sqr(&Q->z, &t1)) != MP_OKAY) { goto error; } - if ((err = mp_reduce(&t1, modulus, mu)) != MP_OKAY) { goto error; } + if ((err = mp_montgomery_reduce(&t1, modulus, mp)) != MP_OKAY) { goto error; } /* X = X * T1 */ if ((err = mp_mul(&t1, &x, &x)) != MP_OKAY) { goto error; } - if ((err = mp_reduce(&x, modulus, mu)) != MP_OKAY) { goto error; } + if ((err = mp_montgomery_reduce(&x, modulus, mp)) != MP_OKAY) { goto error; } /* T1 = Z' * T1 */ if ((err = mp_mul(&Q->z, &t1, &t1)) != MP_OKAY) { goto error; } - if ((err = mp_reduce(&t1, modulus, mu)) != MP_OKAY) { goto error; } + if ((err = mp_montgomery_reduce(&t1, modulus, mp)) != MP_OKAY) { goto error; } /* Y = Y * T1 */ if ((err = mp_mul(&t1, &y, &y)) != MP_OKAY) { goto error; } - if ((err = mp_reduce(&y, modulus, mu)) != MP_OKAY) { goto error; } - } + if ((err = mp_montgomery_reduce(&y, modulus, mp)) != MP_OKAY) { goto error; } /* T1 = Z*Z */ if ((err = mp_sqr(&z, &t1)) != MP_OKAY) { goto error; } - if ((err = mp_reduce(&t1, modulus, mu)) != MP_OKAY) { goto error; } + if ((err = mp_montgomery_reduce(&t1, modulus, mp)) != MP_OKAY) { goto error; } /* T2 = X' * T1 */ if ((err = mp_mul(&Q->x, &t1, &t2)) != MP_OKAY) { goto error; } - if ((err = mp_reduce(&t2, modulus, mu)) != MP_OKAY) { goto error; } + if ((err = mp_montgomery_reduce(&t2, modulus, mp)) != MP_OKAY) { goto error; } /* T1 = Z * T1 */ if ((err = mp_mul(&z, &t1, &t1)) != MP_OKAY) { goto error; } - if ((err = mp_reduce(&t1, modulus, mu)) != MP_OKAY) { goto error; } + if ((err = mp_montgomery_reduce(&t1, modulus, mp)) != MP_OKAY) { goto error; } /* T1 = Y' * T1 */ if ((err = mp_mul(&Q->y, &t1, &t1)) != MP_OKAY) { goto error; } - if ((err = mp_reduce(&t1, modulus, mu)) != MP_OKAY) { goto error; } + if ((err = mp_montgomery_reduce(&t1, modulus, mp)) != MP_OKAY) { goto error; } /* Y = Y - T1 */ if ((err = mp_sub(&y, &t1, &y)) != MP_OKAY) { goto error; } @@ -484,28 +404,28 @@ static int add_point(ecc_point *P, ecc_point *Q, ecc_point *R, mp_int *modulus, if (mp_cmp_d(&Q->z, 1) != MP_EQ) { /* Z = Z * Z' */ if ((err = mp_mul(&z, &Q->z, &z)) != MP_OKAY) { goto error; } - if ((err = mp_reduce(&z, modulus, mu)) != MP_OKAY) { goto error; } + if ((err = mp_montgomery_reduce(&z, modulus, mp)) != MP_OKAY) { goto error; } } /* Z = Z * X */ if ((err = mp_mul(&z, &x, &z)) != MP_OKAY) { goto error; } - if ((err = mp_reduce(&z, modulus, mu)) != MP_OKAY) { goto error; } + if ((err = mp_montgomery_reduce(&z, modulus, mp)) != MP_OKAY) { goto error; } /* T1 = T1 * X */ if ((err = mp_mul(&t1, &x, &t1)) != MP_OKAY) { goto error; } - if ((err = mp_reduce(&t1, modulus, mu)) != MP_OKAY) { goto error; } + if ((err = mp_montgomery_reduce(&t1, modulus, mp)) != MP_OKAY) { goto error; } /* X = X * X */ if ((err = mp_sqr(&x, &x)) != MP_OKAY) { goto error; } - if ((err = mp_reduce(&x, modulus, mu)) != MP_OKAY) { goto error; } + if ((err = mp_montgomery_reduce(&x, modulus, mp)) != MP_OKAY) { goto error; } /* T2 = T2 * x */ if ((err = mp_mul(&t2, &x, &t2)) != MP_OKAY) { goto error; } - if ((err = mp_reduce(&t2, modulus, mu)) != MP_OKAY) { goto error; } + if ((err = mp_montgomery_reduce(&t2, modulus, mp)) != MP_OKAY) { goto error; } /* T1 = T1 * X */ if ((err = mp_mul(&t1, &x, &t1)) != MP_OKAY) { goto error; } - if ((err = mp_reduce(&t1, modulus, mu)) != MP_OKAY) { goto error; } + if ((err = mp_montgomery_reduce(&t1, modulus, mp)) != MP_OKAY) { goto error; } /* X = Y*Y */ if ((err = mp_sqr(&y, &x)) != MP_OKAY) { goto error; } - if ((err = mp_reduce(&x, modulus, mu)) != MP_OKAY) { goto error; } + if ((err = mp_montgomery_reduce(&x, modulus, mp)) != MP_OKAY) { goto error; } /* X = X - T2 */ if ((err = mp_sub(&x, &t2, &x)) != MP_OKAY) { goto error; } if (mp_cmp_d(&x, 0) == MP_LT) { @@ -524,7 +444,7 @@ static int add_point(ecc_point *P, ecc_point *Q, ecc_point *R, mp_int *modulus, } /* T2 = T2 * Y */ if ((err = mp_mul(&t2, &y, &t2)) != MP_OKAY) { goto error; } - if ((err = mp_reduce(&t2, modulus, mu)) != MP_OKAY) { goto error; } + if ((err = mp_montgomery_reduce(&t2, modulus, mp)) != MP_OKAY) { goto error; } /* Y = T2 - T1 */ if ((err = mp_sub(&t2, &t1, &y)) != MP_OKAY) { goto error; } if (mp_cmp_d(&y, 0) == MP_LT) { @@ -553,22 +473,25 @@ done: #define WINSIZE 4 /* perform R = kG where k == integer and G == ecc_point */ -static int ecc_mulmod(mp_int *k, ecc_point *G, ecc_point *R, mp_int *modulus) +static int ecc_mulmod(mp_int *k, ecc_point *G, ecc_point *R, mp_int *modulus, int map) { ecc_point *tG, *M[8]; int i, j, err; mp_int mu; - mp_digit buf; + mp_digit buf, mp; int first, bitbuf, bitcpy, bitcnt, mode, digidx; - /* init barrett reduction */ - if ((err = mp_init(&mu)) != MP_OKAY) { - return mpi_to_ltc_error(err); - } - if ((err = mp_reduce_setup(&mu, modulus)) != MP_OKAY) { + /* init montgomery reduction */ + if ((err = mp_montgomery_setup(modulus, &mp)) != MP_OKAY) { + return CRYPT_INVALID_ARG; + } + if ((err = mp_init(&mu)) != MP_OKAY) { + return CRYPT_MEM; + } + if ((err = mp_montgomery_calc_normalization(&mu, modulus)) != MP_OKAY) { mp_clear(&mu); - return mpi_to_ltc_error(err); - } + return CRYPT_INVALID_ARG; + } /* alloc ram for window temps */ for (i = 0; i < 8; i++) { @@ -586,20 +509,21 @@ static int ecc_mulmod(mp_int *k, ecc_point *G, ecc_point *R, mp_int *modulus) tG = new_point(); if (tG == NULL) { err = CRYPT_MEM; goto done; } - /* tG = G */ - if ((err = mp_copy(&G->x, &tG->x)) != MP_OKAY) { goto error; } - if ((err = mp_copy(&G->y, &tG->y)) != MP_OKAY) { goto error; } - if ((err = mp_copy(&G->z, &tG->z)) != MP_OKAY) { goto error; } + /* tG = G and convert to montgomery */ + if ((err = mp_mulmod(&G->x, &mu, modulus, &tG->x)) != MP_OKAY) { goto error; } + if ((err = mp_mulmod(&G->y, &mu, modulus, &tG->y)) != MP_OKAY) { goto error; } + if ((err = mp_mulmod(&G->z, &mu, modulus, &tG->z)) != MP_OKAY) { goto error; } + mp_clear(&mu); /* calc the M tab, which holds kG for k==8..15 */ /* M[0] == 8G */ - if ((err = dbl_point(G, M[0], modulus, &mu)) != CRYPT_OK) { goto done; } - if ((err = dbl_point(M[0], M[0], modulus, &mu)) != CRYPT_OK) { goto done; } - if ((err = dbl_point(M[0], M[0], modulus, &mu)) != CRYPT_OK) { goto done; } + if ((err = dbl_point(tG, M[0], modulus, mp)) != CRYPT_OK) { goto done; } + if ((err = dbl_point(M[0], M[0], modulus, mp)) != CRYPT_OK) { goto done; } + if ((err = dbl_point(M[0], M[0], modulus, mp)) != CRYPT_OK) { goto done; } /* now find (8+k)G for k=1..7 */ for (j = 9; j < 16; j++) { - if ((err = add_point(M[j-9], G, M[j-8], modulus, &mu)) != CRYPT_OK) { goto done; } + if ((err = add_point(M[j-9], tG, M[j-8], modulus, mp)) != CRYPT_OK) { goto done; } } /* setup sliding window */ @@ -621,7 +545,7 @@ static int ecc_mulmod(mp_int *k, ecc_point *G, ecc_point *R, mp_int *modulus) bitcnt = (int) DIGIT_BIT; } - /* grab the next msb from the multiplicand */ + /* grab the next msb from the ltiplicand */ i = (buf >> (DIGIT_BIT - 1)) & 1; buf <<= 1; @@ -632,7 +556,7 @@ static int ecc_mulmod(mp_int *k, ecc_point *G, ecc_point *R, mp_int *modulus) /* if the bit is zero and mode == 1 then we double */ if (mode == 1 && i == 0) { - if ((err = dbl_point(R, R, modulus, &mu)) != CRYPT_OK) { goto done; } + if ((err = dbl_point(R, R, modulus, mp)) != CRYPT_OK) { goto done; } continue; } @@ -653,11 +577,11 @@ static int ecc_mulmod(mp_int *k, ecc_point *G, ecc_point *R, mp_int *modulus) /* ok window is filled so double as required and add */ /* double first */ for (j = 0; j < WINSIZE; j++) { - if ((err = dbl_point(R, R, modulus, &mu)) != CRYPT_OK) { goto done; } + if ((err = dbl_point(R, R, modulus, mp)) != CRYPT_OK) { goto done; } } /* then add, bitbuf will be 8..15 [8..2^WINSIZE] guaranteed */ - if ((err = add_point(R, M[bitbuf-8], R, modulus, &mu)) != CRYPT_OK) { goto done; } + if ((err = add_point(R, M[bitbuf-8], R, modulus, mp)) != CRYPT_OK) { goto done; } } /* empty window and reset */ bitcpy = bitbuf = 0; @@ -671,7 +595,7 @@ static int ecc_mulmod(mp_int *k, ecc_point *G, ecc_point *R, mp_int *modulus) for (j = 0; j < bitcpy; j++) { /* only double if we have had at least one add first */ if (first == 0) { - if ((err = dbl_point(R, R, modulus, &mu)) != CRYPT_OK) { goto done; } + if ((err = dbl_point(R, R, modulus, mp)) != CRYPT_OK) { goto done; } } bitbuf <<= 1; @@ -684,14 +608,19 @@ static int ecc_mulmod(mp_int *k, ecc_point *G, ecc_point *R, mp_int *modulus) first = 0; } else { /* then add */ - if ((err = add_point(R, tG, R, modulus, &mu)) != CRYPT_OK) { goto done; } + if ((err = add_point(R, tG, R, modulus, mp)) != CRYPT_OK) { goto done; } } } } } /* map R back from projective space */ - err = ecc_map(R, modulus, &mu); + if (map) { + err = ecc_map(R, modulus, mp); + } else { + err = CRYPT_OK; + } + goto done; error: err = mpi_to_ltc_error(err); @@ -700,7 +629,6 @@ done: for (i = 0; i < 8; i++) { del_point(M[i]); } - mp_clear(&mu); return err; } @@ -756,7 +684,7 @@ int ecc_test(void) /* then we should have G == (order + 1)G */ if ((err = mp_add_d(&order, 1, &order)) != MP_OKAY) { goto error; } - if ((err = ecc_mulmod(&order, G, GG, &modulus)) != CRYPT_OK) { goto done; } + if ((err = ecc_mulmod(&order, G, GG, &modulus, 1)) != CRYPT_OK) { goto done; } if (mp_cmp(&G->x, &GG->x) != 0 || mp_cmp(&G->y, &GG->y) != 0) { err = CRYPT_FAIL_TESTVECTOR; goto done; @@ -855,7 +783,7 @@ int ecc_make_key(prng_state *prng, int wprng, int keysize, ecc_key *key) if ((err = mp_read_unsigned_bin(&key->k, (unsigned char *)buf, keysize)) != MP_OKAY) { goto error; } /* make the public key */ - if ((err = ecc_mulmod(&key->k, base, &key->pubkey, &prime)) != CRYPT_OK) { goto LBL_ERR; } + if ((err = ecc_mulmod(&key->k, base, &key->pubkey, &prime, 1)) != CRYPT_OK) { goto LBL_ERR; } key->type = PK_PRIVATE; /* shrink key */ @@ -892,89 +820,6 @@ void ecc_free(ecc_key *key) mp_clear_multi(&key->pubkey.x, &key->pubkey.y, &key->pubkey.z, &key->k, NULL); } -static int compress_y_point(ecc_point *pt, int idx, int *result) -{ - mp_int tmp, tmp2, p; - int err; - - LTC_ARGCHK(pt != NULL); - LTC_ARGCHK(result != NULL); - - if ((err = mp_init_multi(&tmp, &tmp2, &p, NULL)) != MP_OKAY) { - return mpi_to_ltc_error(err); - } - - /* get x^3 - 3x + b */ - if ((err = mp_read_radix(&p, (char *)sets[idx].B, 64)) != MP_OKAY) { goto error; } /* p = B */ - if ((err = mp_expt_d(&pt->x, 3, &tmp)) != MP_OKAY) { goto error; } /* tmp = pX^3 */ - if ((err = mp_mul_d(&pt->x, 3, &tmp2)) != MP_OKAY) { goto error; } /* tmp2 = 3*pX^3 */ - if ((err = mp_sub(&tmp, &tmp2, &tmp)) != MP_OKAY) { goto error; } /* tmp = tmp - tmp2 */ - if ((err = mp_add(&tmp, &p, &tmp)) != MP_OKAY) { goto error; } /* tmp = tmp + p */ - if ((err = mp_read_radix(&p, (char *)sets[idx].prime, 64)) != MP_OKAY) { goto error; } /* p = prime */ - if ((err = mp_mod(&tmp, &p, &tmp)) != MP_OKAY) { goto error; } /* tmp = tmp mod p */ - - /* now find square root */ - if ((err = mp_add_d(&p, 1, &tmp2)) != MP_OKAY) { goto error; } /* tmp2 = p + 1 */ - if ((err = mp_div_2d(&tmp2, 2, &tmp2, NULL)) != MP_OKAY) { goto error; } /* tmp2 = (p+1)/4 */ - if ((err = mp_exptmod(&tmp, &tmp2, &p, &tmp)) != MP_OKAY) { goto error; } /* tmp = (x^3 - 3x + b)^((p+1)/4) mod p */ - - /* if tmp equals the y point give a 0, otherwise 1 */ - if (mp_cmp(&tmp, &pt->y) == 0) { - *result = 0; - } else { - *result = 1; - } - - err = CRYPT_OK; - goto done; -error: - err = mpi_to_ltc_error(err); -done: - mp_clear_multi(&p, &tmp, &tmp2, NULL); - return err; -} - -static int expand_y_point(ecc_point *pt, int idx, int result) -{ - mp_int tmp, tmp2, p; - int err; - - LTC_ARGCHK(pt != NULL); - - if ((err = mp_init_multi(&tmp, &tmp2, &p, NULL)) != MP_OKAY) { - return CRYPT_MEM; - } - - /* get x^3 - 3x + b */ - if ((err = mp_read_radix(&p, (char *)sets[idx].B, 64)) != MP_OKAY) { goto error; } /* p = B */ - if ((err = mp_expt_d(&pt->x, 3, &tmp)) != MP_OKAY) { goto error; } /* tmp = pX^3 */ - if ((err = mp_mul_d(&pt->x, 3, &tmp2)) != MP_OKAY) { goto error; } /* tmp2 = 3*pX^3 */ - if ((err = mp_sub(&tmp, &tmp2, &tmp)) != MP_OKAY) { goto error; } /* tmp = tmp - tmp2 */ - if ((err = mp_add(&tmp, &p, &tmp)) != MP_OKAY) { goto error; } /* tmp = tmp + p */ - if ((err = mp_read_radix(&p, (char *)sets[idx].prime, 64)) != MP_OKAY) { goto error; } /* p = prime */ - if ((err = mp_mod(&tmp, &p, &tmp)) != MP_OKAY) { goto error; } /* tmp = tmp mod p */ - - /* now find square root */ - if ((err = mp_add_d(&p, 1, &tmp2)) != MP_OKAY) { goto error; } /* tmp2 = p + 1 */ - if ((err = mp_div_2d(&tmp2, 2, &tmp2, NULL)) != MP_OKAY) { goto error; } /* tmp2 = (p+1)/4 */ - if ((err = mp_exptmod(&tmp, &tmp2, &p, &tmp)) != MP_OKAY) { goto error; } /* tmp = (x^3 - 3x + b)^((p+1)/4) mod p */ - - /* if result==0, then y==tmp, otherwise y==p-tmp */ - if (result == 0) { - if ((err = mp_copy(&tmp, &pt->y) != MP_OKAY)) { goto error; } - } else { - if ((err = mp_sub(&p, &tmp, &pt->y) != MP_OKAY)) { goto error; } - } - - err = CRYPT_OK; - goto done; -error: - err = mpi_to_ltc_error(err); -done: - mp_clear_multi(&p, &tmp, &tmp2, NULL); - return err; -} - /** Export an ECC key as a binary packet @param out [out] Destination for the key @@ -985,46 +830,46 @@ done: */ int ecc_export(unsigned char *out, unsigned long *outlen, int type, ecc_key *key) { - unsigned long y, z; - int cp, err; + int err; + unsigned char flags[1]; + unsigned long key_size; LTC_ARGCHK(out != NULL); LTC_ARGCHK(outlen != NULL); LTC_ARGCHK(key != NULL); - /* can we store the static header? */ - if (*outlen < (PACKET_SIZE + 3)) { - return CRYPT_BUFFER_OVERFLOW; - } - /* type valid? */ if (key->type != PK_PRIVATE && type == PK_PRIVATE) { return CRYPT_PK_TYPE_MISMATCH; } - /* output type and magic byte */ - y = PACKET_SIZE; - out[y++] = (unsigned char)type; - out[y++] = (unsigned char)sets[key->idx].size; - - /* output x coordinate */ - OUTPUT_BIGNUM(&(key->pubkey.x), out, y, z); - - /* compress y and output it */ - if ((err = compress_y_point(&key->pubkey, key->idx, &cp)) != CRYPT_OK) { - return err; + if (is_valid_idx(key->idx) == 0) { + return CRYPT_INVALID_ARG; } - out[y++] = (unsigned char)cp; + + /* we store the NIST byte size */ + key_size = sets[key->idx].size; if (type == PK_PRIVATE) { - OUTPUT_BIGNUM(&key->k, out, y, z); + flags[0] = 1; + err = der_encode_sequence_multi(out, outlen, + LTC_ASN1_BIT_STRING, 1UL, flags, + LTC_ASN1_SHORT_INTEGER, 1UL, &key_size, + LTC_ASN1_INTEGER, 1UL, &key->pubkey.x, + LTC_ASN1_INTEGER, 1UL, &key->pubkey.y, + LTC_ASN1_INTEGER, 1UL, &key->k, + LTC_ASN1_EOL, 0UL, NULL); + } else { + flags[0] = 0; + err = der_encode_sequence_multi(out, outlen, + LTC_ASN1_BIT_STRING, 1UL, flags, + LTC_ASN1_SHORT_INTEGER, 1UL, &key_size, + LTC_ASN1_INTEGER, 1UL, &key->pubkey.x, + LTC_ASN1_INTEGER, 1UL, &key->pubkey.y, + LTC_ASN1_EOL, 0UL, NULL); } - /* store header */ - packet_store_header(out, PACKET_SECT_ECC, PACKET_SUB_KEY); - *outlen = y; - - return CRYPT_OK; + return err; } /** @@ -1036,72 +881,63 @@ int ecc_export(unsigned char *out, unsigned long *outlen, int type, ecc_key *key */ int ecc_import(const unsigned char *in, unsigned long inlen, ecc_key *key) { - unsigned long x, y, s; - int err; + unsigned long key_size; + unsigned char flags[1]; + int err; LTC_ARGCHK(in != NULL); LTC_ARGCHK(key != NULL); - /* check length */ - if ((3+PACKET_SIZE) > inlen) { - return CRYPT_INVALID_PACKET; - } - - /* check type */ - if ((err = packet_valid_header((unsigned char *)in, PACKET_SECT_ECC, PACKET_SUB_KEY)) != CRYPT_OK) { - return err; - } - /* init key */ if (mp_init_multi(&key->pubkey.x, &key->pubkey.y, &key->pubkey.z, &key->k, NULL) != MP_OKAY) { return CRYPT_MEM; } - y = PACKET_SIZE; - key->type = (int)in[y++]; - s = (unsigned long)in[y++]; - - for (x = 0; (s > (unsigned long)sets[x].size) && (sets[x].size != 0); x++); - if (sets[x].size == 0) { - err = CRYPT_INVALID_KEYSIZE; + /* find out what type of key it is */ + if ((err = der_decode_sequence_multi(in, inlen, + LTC_ASN1_BIT_STRING, 1UL, &flags, + LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { goto error; } - key->idx = (int)x; - /* type check both values */ - if ((key->type != PK_PUBLIC) && (key->type != PK_PRIVATE)) { - err = CRYPT_INVALID_PACKET; - goto error; + + if (flags[0] == 1) { + /* private key */ + key->type = PK_PRIVATE; + if ((err = der_decode_sequence_multi(in, inlen, + LTC_ASN1_BIT_STRING, 1UL, flags, + LTC_ASN1_SHORT_INTEGER, 1UL, &key_size, + LTC_ASN1_INTEGER, 1UL, &key->pubkey.x, + LTC_ASN1_INTEGER, 1UL, &key->pubkey.y, + LTC_ASN1_INTEGER, 1UL, &key->k, + LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { + goto error; + } + } else { + /* public key */ + /* private key */ + key->type = PK_PUBLIC; + if ((err = der_decode_sequence_multi(in, inlen, + LTC_ASN1_BIT_STRING, 1UL, flags, + LTC_ASN1_SHORT_INTEGER, 1UL, &key_size, + LTC_ASN1_INTEGER, 1UL, &key->pubkey.x, + LTC_ASN1_INTEGER, 1UL, &key->pubkey.y, + LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { + goto error; + } } - /* is the key idx valid? */ - if (is_valid_idx(key->idx) != 1) { + /* find the idx */ + for (key->idx = 0; sets[key->idx].size && (unsigned long)sets[key->idx].size != key_size; ++key->idx); + if (sets[key->idx].size == 0) { err = CRYPT_INVALID_PACKET; goto error; } - /* load x coordinate */ - INPUT_BIGNUM(&key->pubkey.x, in, x, y, inlen); - - /* load y */ - x = (unsigned long)in[y++]; - if ((err = expand_y_point(&key->pubkey, key->idx, (int)x)) != CRYPT_OK) { - goto error; - } - - if (key->type == PK_PRIVATE) { - /* load private key */ - INPUT_BIGNUM(&key->k, in, x, y, inlen); - } - - /* eliminate private key if public */ - if (key->type == PK_PUBLIC) { - mp_clear(&key->k); - } - - /* z is always 1 */ + /* set z */ mp_set(&key->pubkey.z, 1); + /* we're good */ return CRYPT_OK; error: mp_clear_multi(&key->pubkey.x, &key->pubkey.y, &key->pubkey.z, &key->k, NULL); @@ -1112,14 +948,14 @@ error: Create an ECC shared secret between two keys @param private_key The private ECC key @param public_key The public key - @param out [out] Destination of the shared secret + @param out [out] Destination of the shared secret (Conforms to EC-DH from ANSI X9.63) @param outlen [in/out] The max size and resulting size of the shared secret @return CRYPT_OK if successful */ int ecc_shared_secret(ecc_key *private_key, ecc_key *public_key, unsigned char *out, unsigned long *outlen) { - unsigned long x, y; + unsigned long x; ecc_point *result; mp_int prime; int err; @@ -1134,6 +970,10 @@ int ecc_shared_secret(ecc_key *private_key, ecc_key *public_key, return CRYPT_PK_NOT_PRIVATE; } + if (is_valid_idx(private_key->idx) == 0) { + return CRYPT_INVALID_ARG; + } + if (private_key->idx != public_key->idx) { return CRYPT_PK_TYPE_MISMATCH; } @@ -1149,21 +989,19 @@ int ecc_shared_secret(ecc_key *private_key, ecc_key *public_key, return mpi_to_ltc_error(err); } - if ((err = mp_read_radix(&prime, (char *)sets[private_key->idx].prime, 64)) != MP_OKAY) { goto error; } - if ((err = ecc_mulmod(&private_key->k, &public_key->pubkey, result, &prime)) != CRYPT_OK) { goto done1; } + if ((err = mp_read_radix(&prime, (char *)sets[private_key->idx].prime, 64)) != MP_OKAY) { goto error; } + if ((err = ecc_mulmod(&private_key->k, &public_key->pubkey, result, &prime, 1)) != CRYPT_OK) { goto done1; } - x = (unsigned long)mp_unsigned_bin_size(&result->x); - y = (unsigned long)mp_unsigned_bin_size(&result->y); - - if (*outlen < (x+y)) { + x = (unsigned long)mp_unsigned_bin_size(&prime); + if (*outlen < x) { err = CRYPT_BUFFER_OVERFLOW; goto done1; } - *outlen = x+y; - if ((err = mp_to_unsigned_bin(&result->x, out)) != MP_OKAY) { goto error; } - if ((err = mp_to_unsigned_bin(&result->y, out+x)) != MP_OKAY) { goto error; } + zeromem(out, x); + if ((err = mp_to_unsigned_bin(&result->x, out + (x - mp_unsigned_bin_size(&result->x)))) != MP_OKAY) { goto error; } - err = CRYPT_OK; + err = CRYPT_OK; + *outlen = x; goto done1; error: err = mpi_to_ltc_error(err); @@ -1192,3 +1030,7 @@ int ecc_get_size(ecc_key *key) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/ecc/ecc.c,v $ */ +/* $Revision: 1.20 $ */ +/* $Date: 2005/06/14 20:42:28 $ */ diff --git a/src/pk/ecc/ecc_sys.c b/src/pk/ecc/ecc_sys.c index d5576f64..65ead319 100644 --- a/src/pk/ecc/ecc_sys.c +++ b/src/pk/ecc/ecc_sys.c @@ -33,7 +33,7 @@ int ecc_encrypt_key(const unsigned char *in, unsigned long inlen, { unsigned char *pub_expt, *ecc_shared, *skey; ecc_key pubkey; - unsigned long x, y, z, hashsize, pubkeysize; + unsigned long x, y, pubkeysize; int err; LTC_ARGCHK(in != NULL); @@ -82,53 +82,29 @@ int ecc_encrypt_key(const unsigned char *in, unsigned long inlen, goto LBL_ERR; } - /* now check if the out buffer is big enough */ - if (*outlen < (9 + PACKET_SIZE + pubkeysize + hash_descriptor[hash].hashsize)) { - ecc_free(&pubkey); - err = CRYPT_BUFFER_OVERFLOW; - goto LBL_ERR; - } - /* make random key */ - hashsize = hash_descriptor[hash].hashsize; - x = ECC_BUF_SIZE; + x = ECC_BUF_SIZE; if ((err = ecc_shared_secret(&pubkey, key, ecc_shared, &x)) != CRYPT_OK) { ecc_free(&pubkey); goto LBL_ERR; } ecc_free(&pubkey); - z = MAXBLOCKSIZE; - if ((err = hash_memory(hash, ecc_shared, x, skey, &z)) != CRYPT_OK) { + y = MAXBLOCKSIZE; + if ((err = hash_memory(hash, ecc_shared, x, skey, &y)) != CRYPT_OK) { goto LBL_ERR; } - /* store header */ - packet_store_header(out, PACKET_SECT_ECC, PACKET_SUB_ENC_KEY); - - /* output header */ - y = PACKET_SIZE; - - /* size of hash name and the name itself */ - out[y++] = hash_descriptor[hash].ID; - - /* length of ECC pubkey and the key itself */ - STORE32L(pubkeysize, out+y); - y += 4; - - for (x = 0; x < pubkeysize; x++, y++) { - out[y] = pub_expt[x]; + /* Encrypt key */ + for (x = 0; x < inlen; x++) { + skey[x] ^= in[x]; } - STORE32L(inlen, out+y); - y += 4; - - /* Encrypt/Store the encrypted key */ - for (x = 0; x < inlen; x++, y++) { - out[y] = skey[x] ^ in[x]; - } - *outlen = y; + err = der_encode_sequence_multi(out, outlen, + LTC_ASN1_OBJECT_IDENTIFIER, hash_descriptor[hash].OIDlen, hash_descriptor[hash].OID, + LTC_ASN1_OCTET_STRING, pubkeysize, pub_expt, + LTC_ASN1_OCTET_STRING, inlen, skey, + LTC_ASN1_EOL, 0UL, NULL); - err = CRYPT_OK; LBL_ERR: #ifdef LTC_CLEAN_STACK /* clean up */ @@ -157,10 +133,11 @@ int ecc_decrypt_key(const unsigned char *in, unsigned long inlen, unsigned char *out, unsigned long *outlen, ecc_key *key) { - unsigned char *shared_secret, *skey; - unsigned long x, y, z, hashsize, keysize; + unsigned char *ecc_shared, *skey, *pub_expt; + unsigned long x, y, hashOID[32]; int hash, err; ecc_key pubkey; + ltc_asn1_list decode[3]; LTC_ARGCHK(in != NULL); LTC_ARGCHK(out != NULL); @@ -172,98 +149,93 @@ int ecc_decrypt_key(const unsigned char *in, unsigned long inlen, return CRYPT_PK_NOT_PRIVATE; } - /* correct length ? */ - if (inlen < PACKET_SIZE+1+4+4) { - return CRYPT_INVALID_PACKET; - } else { - inlen -= PACKET_SIZE+1+4+4; - } - - /* is header correct? */ - if ((err = packet_valid_header((unsigned char *)in, PACKET_SECT_ECC, PACKET_SUB_ENC_KEY)) != CRYPT_OK) { + /* decode to find out hash */ + LTC_SET_ASN1(decode, 0, LTC_ASN1_OBJECT_IDENTIFIER, hashOID, sizeof(hashOID)/sizeof(hashOID[0])); + + if ((err = der_decode_sequence(in, inlen, decode, 1)) != CRYPT_OK) { return err; } + for (hash = 0; hash_descriptor[hash].name != NULL && + (hash_descriptor[hash].OIDlen != decode[0].size || + memcmp(hash_descriptor[hash].OID, hashOID, sizeof(unsigned long)*decode[0].size)); hash++); - /* now lets get the hash name */ - y = PACKET_SIZE; - hash = find_hash_id(in[y++]); - if (hash == -1) { - return CRYPT_INVALID_HASH; - } - - /* common values */ - hashsize = hash_descriptor[hash].hashsize; - - /* get public key */ - LOAD32L(x, in+y); - if (inlen < x) { + if (hash_descriptor[hash].name == NULL) { return CRYPT_INVALID_PACKET; - } else { - inlen -= x; - } - y += 4; - if ((err = ecc_import(in+y, x, &pubkey)) != CRYPT_OK) { - return err; } - y += x; + + /* we now have the hash! */ /* allocate memory */ - shared_secret = XMALLOC(ECC_BUF_SIZE); - skey = XMALLOC(MAXBLOCKSIZE); - if (shared_secret == NULL || skey == NULL) { - if (shared_secret != NULL) { - XFREE(shared_secret); + pub_expt = XMALLOC(ECC_BUF_SIZE); + ecc_shared = XMALLOC(ECC_BUF_SIZE); + skey = XMALLOC(MAXBLOCKSIZE); + if (pub_expt == NULL || ecc_shared == NULL || skey == NULL) { + if (pub_expt != NULL) { + XFREE(pub_expt); + } + if (ecc_shared != NULL) { + XFREE(ecc_shared); } if (skey != NULL) { XFREE(skey); } - ecc_free(&pubkey); return CRYPT_MEM; } + LTC_SET_ASN1(decode, 1, LTC_ASN1_OCTET_STRING, pub_expt, ECC_BUF_SIZE); + LTC_SET_ASN1(decode, 2, LTC_ASN1_OCTET_STRING, skey, MAXBLOCKSIZE); + + /* read the structure in now */ + if ((err = der_decode_sequence(in, inlen, decode, 3)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* import ECC key from packet */ + if ((err = ecc_import(decode[1].data, decode[1].size, &pubkey)) != CRYPT_OK) { + goto LBL_ERR; + } /* make shared key */ x = ECC_BUF_SIZE; - if ((err = ecc_shared_secret(key, &pubkey, shared_secret, &x)) != CRYPT_OK) { + if ((err = ecc_shared_secret(key, &pubkey, ecc_shared, &x)) != CRYPT_OK) { ecc_free(&pubkey); goto LBL_ERR; } ecc_free(&pubkey); - z = MAXBLOCKSIZE; - if ((err = hash_memory(hash, shared_secret, x, skey, &z)) != CRYPT_OK) { + y = MAXBLOCKSIZE; + if ((err = hash_memory(hash, ecc_shared, x, ecc_shared, &y)) != CRYPT_OK) { goto LBL_ERR; } - LOAD32L(keysize, in+y); - if (inlen < keysize) { + /* ensure the hash of the shared secret is at least as big as the encrypt itself */ + if (decode[2].size > y) { err = CRYPT_INVALID_PACKET; goto LBL_ERR; - } else { - inlen -= keysize; } - y += 4; - if (*outlen < keysize) { - err = CRYPT_BUFFER_OVERFLOW; - goto LBL_ERR; + /* avoid buffer overflow */ + if (*outlen < decode[2].size) { + err = CRYPT_BUFFER_OVERFLOW; + goto LBL_ERR; } /* Decrypt the key */ - for (x = 0; x < keysize; x++, y++) { - out[x] = skey[x] ^ in[y]; + for (x = 0; x < decode[2].size; x++) { + out[x] = skey[x] ^ ecc_shared[x]; } - - *outlen = keysize; + *outlen = x; err = CRYPT_OK; LBL_ERR: #ifdef LTC_CLEAN_STACK - zeromem(shared_secret, ECC_BUF_SIZE); - zeromem(skey, MAXBLOCKSIZE); + zeromem(pub_expt, ECC_BUF_SIZE); + zeromem(ecc_shared, ECC_BUF_SIZE); + zeromem(skey, MAXBLOCKSIZE); #endif + XFREE(pub_expt); + XFREE(ecc_shared); XFREE(skey); - XFREE(shared_secret); return err; } @@ -284,9 +256,7 @@ int ecc_sign_hash(const unsigned char *in, unsigned long inlen, prng_state *prng, int wprng, ecc_key *key) { ecc_key pubkey; - mp_int b, p; - unsigned char *epubkey, *er; - unsigned long x, y, pubkeysize, rsize; + mp_int r, s, e, p; int err; LTC_ARGCHK(in != NULL); @@ -308,116 +278,65 @@ int ecc_sign_hash(const unsigned char *in, unsigned long inlen, return err; } - /* make up a key and export the public copy */ - if ((err = ecc_make_key(prng, wprng, ecc_get_size(key), &pubkey)) != CRYPT_OK) { - return err; - } - - /* allocate ram */ - epubkey = XMALLOC(ECC_BUF_SIZE); - er = XMALLOC(ECC_BUF_SIZE); - if (epubkey == NULL || er == NULL) { - if (epubkey != NULL) { - XFREE(epubkey); - } - if (er != NULL) { - XFREE(er); - } - ecc_free(&pubkey); - return CRYPT_MEM; - } - - pubkeysize = ECC_BUF_SIZE; - if ((err = ecc_export(epubkey, &pubkeysize, PK_PUBLIC, &pubkey)) != CRYPT_OK) { - ecc_free(&pubkey); - goto LBL_ERR; - } - - /* get the hash and load it as a bignum into 'b' */ + /* get the hash and load it as a bignum into 'e' */ /* init the bignums */ - if ((err = mp_init_multi(&b, &p, NULL)) != MP_OKAY) { + if ((err = mp_init_multi(&r, &s, &p, &e, NULL)) != MP_OKAY) { ecc_free(&pubkey); err = mpi_to_ltc_error(err); goto LBL_ERR; } if ((err = mp_read_radix(&p, (char *)sets[key->idx].order, 64)) != MP_OKAY) { goto error; } - if ((err = mp_read_unsigned_bin(&b, (unsigned char *)in, (int)inlen)) != MP_OKAY) { goto error; } - - /* find b = (m - x)/k */ - if ((err = mp_invmod(&pubkey.k, &p, &pubkey.k)) != MP_OKAY) { goto error; } /* k = 1/k */ - if ((err = mp_submod(&b, &key->k, &p, &b)) != MP_OKAY) { goto error; } /* b = m - x */ - if ((err = mp_mulmod(&b, &pubkey.k, &p, &b)) != MP_OKAY) { goto error; } /* b = (m - x)/k */ - - /* export it */ - rsize = (unsigned long)mp_unsigned_bin_size(&b); - if (rsize > ECC_BUF_SIZE) { - err = CRYPT_BUFFER_OVERFLOW; - goto error; - } - if ((err = mp_to_unsigned_bin(&b, er)) != MP_OKAY) { goto error; } - - /* now lets check the outlen before we write */ - if (*outlen < (12 + rsize + pubkeysize)) { - err = CRYPT_BUFFER_OVERFLOW; - goto LBL_ERR; - } - - /* lets output */ - y = PACKET_SIZE; - - /* size of public key */ - STORE32L(pubkeysize, out+y); - y += 4; + if ((err = mp_read_unsigned_bin(&e, (unsigned char *)in, (int)inlen)) != MP_OKAY) { goto error; } - /* copy the public key */ - for (x = 0; x < pubkeysize; x++, y++) { - out[y] = epubkey[x]; - } - - /* size of 'r' */ - STORE32L(rsize, out+y); - y += 4; + /* make up a key and export the public copy */ + for (;;) { + if ((err = ecc_make_key(prng, wprng, ecc_get_size(key), &pubkey)) != CRYPT_OK) { + return err; + } - /* copy r */ - for (x = 0; x < rsize; x++, y++) { - out[y] = er[x]; + /* find r = x1 mod n */ + if ((err = mp_mod(&pubkey.pubkey.x, &p, &r)) != MP_OKAY) { goto error; } + + if (mp_iszero(&r)) { + ecc_free(&pubkey); + } else { + /* find s = (e + xr)/k */ + if ((err = mp_invmod(&pubkey.k, &p, &pubkey.k)) != MP_OKAY) { goto error; } /* k = 1/k */ + if ((err = mp_mulmod(&key->k, &r, &p, &s)) != MP_OKAY) { goto error; } /* s = xr */ + if ((err = mp_addmod(&e, &s, &p, &s)) != MP_OKAY) { goto error; } /* s = e + xr */ + if ((err = mp_mulmod(&s, &pubkey.k, &p, &s)) != MP_OKAY) { goto error; } /* s = (e + xr)/k */ + + if (mp_iszero(&s)) { + ecc_free(&pubkey); + } else { + break; + } + } } - /* store header */ - packet_store_header(out, PACKET_SECT_ECC, PACKET_SUB_SIGNED); - *outlen = y; - - /* all ok */ - err = CRYPT_OK; + /* store as SEQUENCE { r, s -- integer } */ + err = der_encode_sequence_multi(out, outlen, + LTC_ASN1_INTEGER, 1UL, &r, + LTC_ASN1_INTEGER, 1UL, &s, + LTC_ASN1_EOL, 0UL, NULL); goto LBL_ERR; error: err = mpi_to_ltc_error(err); LBL_ERR: - mp_clear_multi(&b, &p, NULL); + mp_clear_multi(&r, &s, &p, &e, NULL); ecc_free(&pubkey); -#ifdef LTC_CLEAN_STACK - zeromem(er, ECC_BUF_SIZE); - zeromem(epubkey, ECC_BUF_SIZE); -#endif - - XFREE(epubkey); - XFREE(er); return err; } -/* verify that mG = (bA + Y) - * - * The signatures work by making up a fresh key "a" with a public key "A". Now we want to sign so the - * public key Y = xG can verify it. - * - * b = (m - x)/k, A is the public key embedded and Y is the users public key [who signed it] - * A = kG therefore bA == ((m-x)/k)kG == (m-x)G +/* verify * - * Adding Y = xG to the bA gives us (m-x)G + xG == mG - * - * The user given only xG, kG and b cannot determine k or x which means they can't find the private key. - * + * w = s^-1 mod n + * u1 = xw + * u2 = rw + * X = u1*G + u2*Q + * v = X_x1 mod n + * accept if v == r */ /** @@ -434,10 +353,9 @@ int ecc_verify_hash(const unsigned char *sig, unsigned long siglen, const unsigned char *hash, unsigned long hashlen, int *stat, ecc_key *key) { - ecc_point *mG; - ecc_key pubkey; - mp_int b, p, m, mu; - unsigned long x, y; + ecc_point *mG, *mQ; + mp_int r, s, v, w, u1, u2, e, p, m; + mp_digit mp; int err; LTC_ARGCHK(sig != NULL); @@ -448,89 +366,81 @@ int ecc_verify_hash(const unsigned char *sig, unsigned long siglen, /* default to invalid signature */ *stat = 0; - if (siglen < PACKET_SIZE+4+4) { - return CRYPT_INVALID_PACKET; - } else { - siglen -= PACKET_SIZE+4+4; + /* is the IDX valid ? */ + if (is_valid_idx(key->idx) != 1) { + return CRYPT_PK_INVALID_TYPE; } - /* is the message format correct? */ - if ((err = packet_valid_header((unsigned char *)sig, PACKET_SECT_ECC, PACKET_SUB_SIGNED)) != CRYPT_OK) { - return err; - } - - /* get hash name */ - y = PACKET_SIZE; - - /* get size of public key */ - LOAD32L(x, sig+y); - if (siglen < x) { - return CRYPT_INVALID_PACKET; - } else { - siglen -= x; + /* allocate ints */ + if ((err = mp_init_multi(&r, &s, &v, &w, &u1, &u2, &p, &e, &m, NULL)) != MP_OKAY) { + return CRYPT_MEM; } - y += 4; - /* load the public key */ - if ((err = ecc_import((unsigned char*)sig+y, x, &pubkey)) != CRYPT_OK) { - return err; + /* allocate points */ + mG = new_point(); + mQ = new_point(); + if (mQ == NULL || mG == NULL) { + err = CRYPT_MEM; + goto done; } - y += x; - /* load size of 'b' */ - LOAD32L(x, sig+y); - if (siglen < x) { - return CRYPT_INVALID_PACKET; - } else { - siglen -= x; + /* parse header */ + if ((err = der_decode_sequence_multi(sig, siglen, + LTC_ASN1_INTEGER, 1UL, &r, + LTC_ASN1_INTEGER, 1UL, &s, + LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { + goto done; } - y += 4; - /* init values */ - if ((err = mp_init_multi(&b, &m, &p, &mu, NULL)) != MP_OKAY) { - ecc_free(&pubkey); - return mpi_to_ltc_error(err); - } + /* get the order */ + if ((err = mp_read_radix(&p, (char *)sets[key->idx].order, 64)) != MP_OKAY) { goto error; } - mG = new_point(); - if (mG == NULL) { - mp_clear_multi(&b, &m, &p, &mu, NULL); - ecc_free(&pubkey); - return CRYPT_MEM; - } + /* get the modulus */ + if ((err = mp_read_radix(&m, (char *)sets[key->idx].prime, 64)) != MP_OKAY) { goto error; } - /* load b */ - if ((err = mp_read_unsigned_bin(&b, (unsigned char *)sig+y, (int)x)) != MP_OKAY) { goto error; } - y += x; + /* check for zero */ + if (mp_iszero(&r) || mp_iszero(&s) || mp_cmp(&r, &p) != MP_LT || mp_cmp(&s, &p) != MP_LT) { + err = CRYPT_INVALID_PACKET; + goto done; + } - /* get m in binary a bignum */ - if ((err = mp_read_unsigned_bin(&m, (unsigned char *)hash, (int)hashlen)) != MP_OKAY) { goto error; } - - /* load prime */ - if ((err = mp_read_radix(&p, (char *)sets[key->idx].prime, 64)) != MP_OKAY) { goto error; } - - /* calculate barrett stuff */ - mp_set(&mu, 1); - mp_lshd(&mu, 2 * USED(&p)); - if ((err = mp_div(&mu, &p, &mu, NULL)) != MP_OKAY) { goto error; } + /* read hash */ + if ((err = mp_read_unsigned_bin(&e, (unsigned char *)hash, (int)hashlen)) != MP_OKAY) { goto error; } - /* get bA */ - if ((err = ecc_mulmod(&b, &pubkey.pubkey, &pubkey.pubkey, &p)) != CRYPT_OK) { goto done; } - - /* get bA + Y */ - if ((err = add_point(&pubkey.pubkey, &key->pubkey, &pubkey.pubkey, &p, &mu)) != CRYPT_OK) { goto done; } + /* w = s^-1 mod n */ + if ((err = mp_invmod(&s, &p, &w)) != MP_OKAY) { goto error; } - /* we have to transform it */ - if ((err = ecc_map(&pubkey.pubkey, &p, &mu)) != CRYPT_OK) { goto done; } + /* u1 = ew */ + if ((err = mp_mulmod(&e, &w, &p, &u1)) != MP_OKAY) { goto error; } - /* get mG */ + /* u2 = rw */ + if ((err = mp_mulmod(&r, &w, &p, &u2)) != MP_OKAY) { goto error; } + + /* find mG = u1*G */ if ((err = mp_read_radix(&mG->x, (char *)sets[key->idx].Gx, 64)) != MP_OKAY) { goto error; } if ((err = mp_read_radix(&mG->y, (char *)sets[key->idx].Gy, 64)) != MP_OKAY) { goto error; } - mp_set(&mG->z, 1); - if ((err = ecc_mulmod(&m, mG, mG, &p)) != CRYPT_OK) { goto done; } + mp_set(&mG->z, 1); + if ((err = ecc_mulmod(&u1, mG, mG, &m, 0)) != CRYPT_OK) { goto done; } + + /* find mQ = u2*Q */ + if ((err = mp_copy(&key->pubkey.x, &mQ->x)) != MP_OKAY) { goto error; } + if ((err = mp_copy(&key->pubkey.y, &mQ->y)) != MP_OKAY) { goto error; } + if ((err = mp_copy(&key->pubkey.z, &mQ->z)) != MP_OKAY) { goto error; } + if ((err = ecc_mulmod(&u2, mQ, mQ, &m, 0)) != CRYPT_OK) { goto done; } + + /* find the montgomery mp */ + if ((err = mp_montgomery_setup(&m, &mp)) != MP_OKAY) { goto error; } + /* add them */ + if ((err = add_point(mQ, mG, mG, &m, mp)) != CRYPT_OK) { goto done; } + + /* reduce */ + if ((err = ecc_map(mG, &m, mp)) != CRYPT_OK) { goto done; } - /* compare mG to bA + Y */ - if (mp_cmp(&mG->x, &pubkey.pubkey.x) == MP_EQ && mp_cmp(&mG->y, &pubkey.pubkey.y) == MP_EQ) { + /* v = X_x1 mod n */ + if ((err = mp_mod(&mG->x, &p, &v)) != CRYPT_OK) { goto done; } + + /* does v == r */ + if (mp_cmp(&v, &r) == MP_EQ) { *stat = 1; } @@ -541,8 +451,12 @@ error: err = mpi_to_ltc_error(err); done: del_point(mG); - ecc_free(&pubkey); - mp_clear_multi(&p, &m, &b, &mu, NULL); + del_point(mQ); + mp_clear_multi(&r, &s, &v, &w, &u1, &u2, &p, &e, &m, NULL); return err; } + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/ecc/ecc_sys.c,v $ */ +/* $Revision: 1.18 $ */ +/* $Date: 2005/06/14 20:47:55 $ */ diff --git a/src/pk/packet_store_header.c b/src/pk/packet_store_header.c index a2442cc8..855ca706 100644 --- a/src/pk/packet_store_header.c +++ b/src/pk/packet_store_header.c @@ -27,3 +27,7 @@ void packet_store_header(unsigned char *dst, int section, int subsection) } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/packet_store_header.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/pk/packet_valid_header.c b/src/pk/packet_valid_header.c index b2eb9c94..59db0f73 100644 --- a/src/pk/packet_valid_header.c +++ b/src/pk/packet_valid_header.c @@ -35,3 +35,7 @@ int packet_valid_header(unsigned char *src, int section, int subsection) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/packet_valid_header.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/pk/pkcs1/pkcs_1_i2osp.c b/src/pk/pkcs1/pkcs_1_i2osp.c index 7f13626c..3e68eb81 100644 --- a/src/pk/pkcs1/pkcs_1_i2osp.c +++ b/src/pk/pkcs1/pkcs_1_i2osp.c @@ -49,3 +49,7 @@ int pkcs_1_i2osp(mp_int *n, unsigned long modulus_len, unsigned char *out) #endif /* PKCS_1 */ + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/pkcs1/pkcs_1_i2osp.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/pk/pkcs1/pkcs_1_mgf1.c b/src/pk/pkcs1/pkcs_1_mgf1.c index 0fe177fd..aac74941 100644 --- a/src/pk/pkcs1/pkcs_1_mgf1.c +++ b/src/pk/pkcs1/pkcs_1_mgf1.c @@ -102,3 +102,7 @@ LBL_ERR: } #endif /* PKCS_1 */ + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/pkcs1/pkcs_1_mgf1.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/pk/pkcs1/pkcs_1_oaep_decode.c b/src/pk/pkcs1/pkcs_1_oaep_decode.c index 82862c1e..cd4931b0 100644 --- a/src/pk/pkcs1/pkcs_1_oaep_decode.c +++ b/src/pk/pkcs1/pkcs_1_oaep_decode.c @@ -63,7 +63,7 @@ int pkcs_1_oaep_decode(const unsigned char *msg, unsigned long msglen, /* allocate ram for DB/mask/salt of size modulus_len */ DB = XMALLOC(modulus_len); mask = XMALLOC(modulus_len); - seed = XMALLOC(modulus_len); + seed = XMALLOC(hLen); if (DB == NULL || mask == NULL || seed == NULL) { if (DB != NULL) { XFREE(DB); @@ -92,14 +92,13 @@ int pkcs_1_oaep_decode(const unsigned char *msg, unsigned long msglen, } /* now read the masked seed */ - for (x = 1, y = 0; y < hLen; y++) { - seed[y] = msg[x++]; - } + x = 1; + XMEMCPY(seed, msg + x, hLen); + x += hLen; /* now read the masked DB */ - for (y = 0; y < modulus_len - hLen - 1; y++) { - DB[y] = msg[x++]; - } + XMEMCPY(DB, msg + x, modulus_len - hLen - 1); + x += modulus_len - hLen - 1; /* compute MGF1 of maskedDB (hLen) */ if ((err = pkcs_1_mgf1(DB, modulus_len - hLen - 1, hash_idx, mask, hLen)) != CRYPT_OK) { @@ -161,9 +160,8 @@ int pkcs_1_oaep_decode(const unsigned char *msg, unsigned long msglen, /* copy message */ *outlen = (modulus_len - hLen - 1) - x; - for (y = 0; x != (modulus_len - hLen - 1); ) { - out[y++] = DB[x++]; - } + XMEMCPY(out, DB + x, modulus_len - hLen - 1 - x); + x += modulus_len - hLen - 1; /* valid packet */ *res = 1; @@ -172,7 +170,7 @@ int pkcs_1_oaep_decode(const unsigned char *msg, unsigned long msglen, LBL_ERR: #ifdef LTC_CLEAN_STACK zeromem(DB, modulus_len); - zeromem(seed, modulus_len); + zeromem(seed, hLen); zeromem(mask, modulus_len); #endif @@ -184,3 +182,7 @@ LBL_ERR: } #endif /* PKCS_1 */ + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/pkcs1/pkcs_1_oaep_decode.c,v $ */ +/* $Revision: 1.5 $ */ +/* $Date: 2005/06/18 02:37:06 $ */ diff --git a/src/pk/pkcs1/pkcs_1_oaep_encode.c b/src/pk/pkcs1/pkcs_1_oaep_encode.c index 7afea602..12670b58 100644 --- a/src/pk/pkcs1/pkcs_1_oaep_encode.c +++ b/src/pk/pkcs1/pkcs_1_oaep_encode.c @@ -66,7 +66,7 @@ int pkcs_1_oaep_encode(const unsigned char *msg, unsigned long msglen, /* allocate ram for DB/mask/salt of size modulus_len */ DB = XMALLOC(modulus_len); mask = XMALLOC(modulus_len); - seed = XMALLOC(modulus_len); + seed = XMALLOC(hLen); if (DB == NULL || mask == NULL || seed == NULL) { if (DB != NULL) { XFREE(DB); @@ -97,16 +97,15 @@ int pkcs_1_oaep_encode(const unsigned char *msg, unsigned long msglen, /* append PS then 0x01 (to lhash) */ x = hLen; y = modulus_len - msglen - 2*hLen - 2; - while (y--) { - DB[x++] = 0x00; - } + XMEMSET(DB+x, 0, y); + x += y; + + /* 0x01 byte */ DB[x++] = 0x01; - /* message */ - y = msglen; - while (y--) { - DB[x++] = *msg++; - } + /* message (length = msglen) */ + XMEMCPY(DB+x, msg, msglen); + x += msglen; /* now choose a random seed */ if (prng_descriptor[prng_idx].read(seed, hLen, prng) != hLen) { @@ -143,19 +142,18 @@ int pkcs_1_oaep_encode(const unsigned char *msg, unsigned long msglen, /* start output which is 0x00 || maskedSeed || maskedDB */ x = 0; out[x++] = 0x00; - for (y = 0; y < hLen; y++) { - out[x++] = seed[y]; - } - for (y = 0; y < modulus_len - hLen - 1; y++) { - out[x++] = DB[y]; - } + XMEMCPY(out+x, seed, hLen); + x += hLen; + XMEMCPY(out+x, DB, modulus_len - hLen - 1); + x += modulus_len - hLen - 1; + *outlen = x; err = CRYPT_OK; LBL_ERR: #ifdef LTC_CLEAN_STACK zeromem(DB, modulus_len); - zeromem(seed, modulus_len); + zeromem(seed, hLen); zeromem(mask, modulus_len); #endif @@ -168,3 +166,7 @@ LBL_ERR: #endif /* PKCS_1 */ + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/pkcs1/pkcs_1_oaep_encode.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/pk/pkcs1/pkcs_1_os2ip.c b/src/pk/pkcs1/pkcs_1_os2ip.c index db6b58c7..a9a18585 100644 --- a/src/pk/pkcs1/pkcs_1_os2ip.c +++ b/src/pk/pkcs1/pkcs_1_os2ip.c @@ -35,3 +35,7 @@ int pkcs_1_os2ip(mp_int *n, unsigned char *in, unsigned long inlen) #endif /* PKCS_1 */ + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/pkcs1/pkcs_1_os2ip.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/pk/pkcs1/pkcs_1_pss_decode.c b/src/pk/pkcs1/pkcs_1_pss_decode.c index a19e7d8c..e61c33f9 100644 --- a/src/pk/pkcs1/pkcs_1_pss_decode.c +++ b/src/pk/pkcs1/pkcs_1_pss_decode.c @@ -87,14 +87,13 @@ int pkcs_1_pss_decode(const unsigned char *msghash, unsigned long msghashlen, } /* copy out the DB */ - for (x = 0; x < modulus_len - hLen - 1; x++) { - DB[x] = sig[x]; - } + x = 0; + XMEMCPY(DB, sig + x, modulus_len - hLen - 1); + x += modulus_len - hLen - 1; /* copy out the hash */ - for (y = 0; y < hLen; y++) { - hash[y] = sig[x++]; - } + XMEMCPY(hash, sig + x, hLen); + x += hLen; /* check the MSB */ if ((sig[0] & ~(0xFF >> ((modulus_len<<3) - (modulus_bitlen-1)))) != 0) { @@ -172,3 +171,7 @@ LBL_ERR: } #endif /* PKCS_1 */ + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/pkcs1/pkcs_1_pss_decode.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/pk/pkcs1/pkcs_1_pss_encode.c b/src/pk/pkcs1/pkcs_1_pss_encode.c index 58a03d52..899605cc 100644 --- a/src/pk/pkcs1/pkcs_1_pss_encode.c +++ b/src/pk/pkcs1/pkcs_1_pss_encode.c @@ -110,13 +110,12 @@ int pkcs_1_pss_encode(const unsigned char *msghash, unsigned long msghashlen, } /* generate DB = PS || 0x01 || salt, PS == modulus_len - saltlen - hLen - 2 zero bytes */ - for (x = 0; x < (modulus_len - saltlen - hLen - 2); x++) { - DB[x] = 0x00; - } + x = 0; + XMEMSET(DB + x, 0, modulus_len - saltlen - hLen - 2); + x += modulus_len - saltlen - hLen - 2; DB[x++] = 0x01; - for (y = 0; y < saltlen; y++) { - DB[x++] = salt[y]; - } + XMEMCPY(DB + x, salt, saltlen); + x += saltlen; /* generate mask of length modulus_len - hLen - 1 from hash */ if ((err = pkcs_1_mgf1(hash, hLen, hash_idx, mask, modulus_len - hLen - 1)) != CRYPT_OK) { @@ -134,14 +133,15 @@ int pkcs_1_pss_encode(const unsigned char *msghash, unsigned long msghashlen, goto LBL_ERR; } - /* DB */ - for (y = x = 0; x < modulus_len - hLen - 1; x++) { - out[y++] = DB[x]; - } + /* DB len = modulus_len - hLen - 1 */ + y = 0; + XMEMCPY(out + y, DB, modulus_len - hLen - 1); + y += modulus_len - hLen - 1; + /* hash */ - for (x = 0; x < hLen; x++) { - out[y++] = hash[x]; - } + XMEMCPY(out + y, hash, hLen); + y += hLen; + /* 0xBC */ out[y] = 0xBC; @@ -168,3 +168,7 @@ LBL_ERR: } #endif /* PKCS_1 */ + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/pkcs1/pkcs_1_pss_encode.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/pk/pkcs1/pkcs_1_v15_es_decode.c b/src/pk/pkcs1/pkcs_1_v15_es_decode.c deleted file mode 100644 index fc548459..00000000 --- a/src/pk/pkcs1/pkcs_1_v15_es_decode.c +++ /dev/null @@ -1,74 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - * - * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org - */ -#include "tomcrypt.h" - -/** - @file pkcs_1_v15_es_decode.c - PKCS #1 v1.5 Encryption Padding, Tom St Denis -*/ - -#ifdef PKCS_1 - -/** - PKCS #1 v1.5 Encryption Decoding - @param msg The padded data - @param msglen The length of the padded data (octets) - @param modulus_bitlen The bit length of the RSA modulus - @param out [out] Where to store the decoded data - @param outlen The length of the decoded data - @param res [out] Result of the decoding, 1==valid, 0==invalid - @return CRYPT_OK if successful -*/ -int pkcs_1_v15_es_decode(const unsigned char *msg, unsigned long msglen, - unsigned long modulus_bitlen, - unsigned char *out, unsigned long outlen, - int *res) -{ - unsigned long x, modulus_bytelen; - - LTC_ARGCHK(msg != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(res != NULL); - - /* default to failed */ - *res = 0; - - modulus_bytelen = (modulus_bitlen>>3) + (modulus_bitlen & 7 ? 1 : 0); - - /* must be at least modulus_bytelen bytes long */ - if (msglen != modulus_bytelen) { - return CRYPT_INVALID_ARG; - } - - /* should start with 0x00 0x02 */ - if (msg[0] != 0x00 || msg[1] != 0x02) { - return CRYPT_OK; - } - - /* skip over PS */ - x = 2 + (modulus_bytelen - outlen - 3); - - /* should be 0x00 */ - if (msg[x++] != 0x00) { - return CRYPT_OK; - } - - /* the message is left */ - if (x + outlen > modulus_bytelen) { - return CRYPT_PK_INVALID_SIZE; - } - XMEMCPY(out, msg + x, outlen); - *res = 1; - return CRYPT_OK; -} - -#endif - diff --git a/src/pk/pkcs1/pkcs_1_v15_es_encode.c b/src/pk/pkcs1/pkcs_1_v15_es_encode.c deleted file mode 100644 index b6ac4298..00000000 --- a/src/pk/pkcs1/pkcs_1_v15_es_encode.c +++ /dev/null @@ -1,69 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - * - * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org - */ -#include "tomcrypt.h" - -/** - @file pkcs_1_v15_es_encode.c - v1.5 Encryption Padding for PKCS #1, Tom St Denis -*/ - -#ifdef PKCS_1 - -/** - PKCS #1 v1.5 Encryption Padding - @param msg The data to encode - @param msglen The length of the data (octets) - @param modulus_bitlen The bit length of the RSA modulus - @param prng An active PRNG - @param prng_idx The index of the PRNG desired - @param out [out] The destination of the padding - @param outlen [in/out] The max size and resulting size of the padding - @return CRYPT_OK if successful -*/ -int pkcs_1_v15_es_encode(const unsigned char *msg, unsigned long msglen, - unsigned long modulus_bitlen, - prng_state *prng, int prng_idx, - unsigned char *out, unsigned long *outlen) -{ - unsigned long modulus_bytelen, x, y; - - LTC_ARGCHK(msg != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - /* get modulus len */ - modulus_bytelen = (modulus_bitlen >> 3) + (modulus_bitlen & 7 ? 1 : 0); - if (modulus_bytelen < 12) { - return CRYPT_INVALID_ARG; - } - - /* verify length */ - if (msglen > (modulus_bytelen - 11) || *outlen < modulus_bytelen) { - return CRYPT_PK_INVALID_SIZE; - } - - /* 0x00 0x02 PS 0x00 M */ - x = 0; - out[x++] = 0x00; - out[x++] = 0x02; - y = modulus_bytelen - msglen - 3; - if (prng_descriptor[prng_idx].read(out+x, y, prng) != y) { - return CRYPT_ERROR_READPRNG; - } - x += y; - out[x++] = 0x00; - XMEMCPY(out+x, msg, msglen); - *outlen = modulus_bytelen; - - return CRYPT_OK; -} - -#endif /* PKCS_1 */ diff --git a/src/pk/pkcs1/pkcs_1_v15_sa_decode.c b/src/pk/pkcs1/pkcs_1_v15_sa_decode.c deleted file mode 100644 index 7cad021a..00000000 --- a/src/pk/pkcs1/pkcs_1_v15_sa_decode.c +++ /dev/null @@ -1,91 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - * - * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org - */ -#include "tomcrypt.h" - -/** - @file pkcs_1_v15_sa_decode.c - PKCS #1 v1.5 Signature Padding, Tom St Denis -*/ - -#ifdef PKCS_1 - -/** - Perform PKCS #1 v1.5 Signature Decoding - @param msghash The hash that was signed - @param msghashlen The length of the hash - @param sig The signature [padded data] - @param siglen The length of the signature - @param hash_idx The index of the hash used - @param modulus_bitlen The bit length of the RSA modulus - @param res [out] Result of comparison, 1==valid, 0==invalid - @return CRYPT_OK if successful -*/ -int pkcs_1_v15_sa_decode(const unsigned char *msghash, unsigned long msghashlen, - const unsigned char *sig, unsigned long siglen, - int hash_idx, unsigned long modulus_bitlen, - int *res) -{ - unsigned long x, y, modulus_bytelen, derlen; - int err; - - LTC_ARGCHK(msghash != NULL); - LTC_ARGCHK(sig != NULL); - LTC_ARGCHK(res != NULL); - - /* default to invalid */ - *res = 0; - - /* valid hash ? */ - if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { - return err; - } - - /* get derlen */ - derlen = hash_descriptor[hash_idx].DERlen; - - /* get modulus len */ - modulus_bytelen = (modulus_bitlen>>3) + (modulus_bitlen & 7 ? 1 : 0); - - /* valid sizes? */ - if ((msghashlen + 3 + derlen > modulus_bytelen) || (siglen != modulus_bytelen)) { - return CRYPT_PK_INVALID_SIZE; - } - - /* packet is 0x00 0x01 PS 0x00 T, where PS == 0xFF repeated modulus_bytelen - 3 - derlen - msghashlen times, T == DER || hash */ - x = 0; - if (sig[x++] != 0x00 || sig[x++] != 0x01) { - return CRYPT_OK; - } - - /* now follows (modulus_bytelen - 3 - derlen - msghashlen) 0xFF bytes */ - for (y = 0; y < (modulus_bytelen - 3 - derlen - msghashlen); y++) { - if (sig[x++] != 0xFF) { - return CRYPT_OK; - } - } - - if (sig[x++] != 0x00) { - return CRYPT_OK; - } - - for (y = 0; y < derlen; y++) { - if (sig[x++] != hash_descriptor[hash_idx].DER[y]) { - return CRYPT_OK; - } - } - - if (memcmp(msghash, sig+x, msghashlen) == 0) { - *res = 1; - } - return CRYPT_OK; -} - -#endif diff --git a/src/pk/pkcs1/pkcs_1_v15_sa_encode.c b/src/pk/pkcs1/pkcs_1_v15_sa_encode.c deleted file mode 100644 index 60c77ef0..00000000 --- a/src/pk/pkcs1/pkcs_1_v15_sa_encode.c +++ /dev/null @@ -1,84 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - * - * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org - */ -#include "tomcrypt.h" - -/** - @file pkcs_1_v15_sa_encode.c - PKCS #1 v1.5 Signature Padding, Tom St Denis -*/ - -#ifdef PKCS_1 - -/** - Perform PKCS #1 v1.5 Signature Padding - @param msghash The hash you wish to incorporate in the padding - @param msghashlen The length of the hash - @param hash_idx The index of the hash used - @param modulus_bitlen The length of the RSA modulus that will sign this (bits) - @param out [out] Where to store the padded data - @param outlen [in/out] Max size and resulting size of the padded data - @return CRYPT_OK if successful -*/ -int pkcs_1_v15_sa_encode(const unsigned char *msghash, unsigned long msghashlen, - int hash_idx, unsigned long modulus_bitlen, - unsigned char *out, unsigned long *outlen) -{ - unsigned long derlen, modulus_bytelen, x, y; - int err; - - LTC_ARGCHK(msghash != NULL) - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - - if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { - return err; - } - - /* hack, to detect any hash without a DER OID */ - if (hash_descriptor[hash_idx].DERlen == 0) { - return CRYPT_INVALID_ARG; - } - - /* get modulus len */ - modulus_bytelen = (modulus_bitlen>>3) + (modulus_bitlen & 7 ? 1 : 0); - - /* get der len ok? Forgive my lame German accent.... */ - derlen = hash_descriptor[hash_idx].DERlen; - - /* valid sizes? */ - if (msghashlen + 3 + derlen > modulus_bytelen) { - return CRYPT_PK_INVALID_SIZE; - } - - if (*outlen < modulus_bytelen) { - return CRYPT_BUFFER_OVERFLOW; - } - - /* packet is 0x00 0x01 PS 0x00 T, where PS == 0xFF repeated modulus_bytelen - 3 - derlen - msghashlen times, T == DER || hash */ - x = 0; - out[x++] = 0x00; - out[x++] = 0x01; - for (y = 0; y < (modulus_bytelen - 3 - derlen - msghashlen); y++) { - out[x++] = 0xFF; - } - out[x++] = 0x00; - for (y = 0; y < derlen; y++) { - out[x++] = hash_descriptor[hash_idx].DER[y]; - } - for (y = 0; y < msghashlen; y++) { - out[x++] = msghash[y]; - } - - *outlen = modulus_bytelen; - return CRYPT_OK; -} - -#endif /* PKCS_1 */ diff --git a/src/pk/rsa/rsa_decrypt_key.c b/src/pk/rsa/rsa_decrypt_key.c index 3117715b..7cea8074 100644 --- a/src/pk/rsa/rsa_decrypt_key.c +++ b/src/pk/rsa/rsa_decrypt_key.c @@ -87,3 +87,7 @@ int rsa_decrypt_key(const unsigned char *in, unsigned long inlen, + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/rsa/rsa_decrypt_key.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/pk/rsa/rsa_encrypt_key.c b/src/pk/rsa/rsa_encrypt_key.c index 891b43e0..d29aa831 100644 --- a/src/pk/rsa/rsa_encrypt_key.c +++ b/src/pk/rsa/rsa_encrypt_key.c @@ -74,3 +74,7 @@ int rsa_encrypt_key(const unsigned char *in, unsigned long inlen, } #endif /* MRSA */ + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/rsa/rsa_encrypt_key.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/pk/rsa/rsa_export.c b/src/pk/rsa/rsa_export.c index 951be702..f2e324db 100644 --- a/src/pk/rsa/rsa_export.c +++ b/src/pk/rsa/rsa_export.c @@ -27,7 +27,8 @@ */ int rsa_export(unsigned char *out, unsigned long *outlen, int type, rsa_key *key) { - int err, x; + int err; + unsigned long zero=0; LTC_ARGCHK(out != NULL); LTC_ARGCHK(outlen != NULL); @@ -37,62 +38,39 @@ int rsa_export(unsigned char *out, unsigned long *outlen, int type, rsa_key *key if (!(key->type == PK_PRIVATE) && (type == PK_PRIVATE)) { return CRYPT_PK_INVALID_TYPE; } - if (*outlen < 4) { - return CRYPT_BUFFER_OVERFLOW; - } - - /* Mental Note: push space for the header 0x30 0x82 LL LL (LL = length of packet EXcluding 4 bytes) - * we assume LL > 255 which is true since the smallest RSA key has a 128-byte modulus (1024-bit) - */ - *outlen -= 4; if (type == PK_PRIVATE) { /* private key */ - mp_int zero; - - /* first INTEGER == 0 to signify two-prime RSA */ - if ((err = mp_init(&zero)) != MP_OKAY) { - return mpi_to_ltc_error(err); - } - /* output is Version, n, e, d, p, q, d mod (p-1), d mod (q - 1), 1/q mod p */ - if ((err = der_put_multi_integer( - out+4, outlen, &zero, &key->N, &key->e, - &key->d, &key->p, &key->q, &key->dP, - &key->dQ, &key->qP, NULL)) != CRYPT_OK) { - mp_clear(&zero); + if ((err = der_encode_sequence_multi(out, outlen, + LTC_ASN1_SHORT_INTEGER, 1UL, &zero, + LTC_ASN1_INTEGER, 1UL, &key->N, + LTC_ASN1_INTEGER, 1UL, &key->e, + LTC_ASN1_INTEGER, 1UL, &key->d, + LTC_ASN1_INTEGER, 1UL, &key->p, + LTC_ASN1_INTEGER, 1UL, &key->q, + LTC_ASN1_INTEGER, 1UL, &key->dP, + LTC_ASN1_INTEGER, 1UL, &key->dQ, + LTC_ASN1_INTEGER, 1UL, &key->qP, + LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { return err; } /* clear zero and return */ - mp_clear(&zero); + return CRYPT_OK; } else { /* public key */ - if ((err = der_put_multi_integer(out+4, outlen, &key->N, &key->e, NULL)) != CRYPT_OK) { - return err; - } - } - - /* store the header */ - out[0] = 0x30; - if (*outlen < 256) { - /* shift the output up one byte if the header is only 3 bytes */ - for (x = 0; x < *outlen; x++) { - out[x+3] = out[x+4]; - } - out[1] = 0x81; - out[2] = (*outlen & 255); - *outlen += 3; - } else { - out[1] = 0x82; - out[2] = (*outlen >> 8) & 255; - out[3] = (*outlen & 255); - *outlen += 4; + return der_encode_sequence_multi(out, outlen, + LTC_ASN1_INTEGER, 1UL, &key->N, + LTC_ASN1_INTEGER, 1UL, &key->e, + LTC_ASN1_EOL, 0UL, NULL); } - return err; } #endif /* MRSA */ +/* $Source: /cvs/libtom/libtomcrypt/src/pk/rsa/rsa_export.c,v $ */ +/* $Revision: 1.11 $ */ +/* $Date: 2005/06/04 01:42:48 $ */ diff --git a/src/pk/rsa/rsa_exptmod.c b/src/pk/rsa/rsa_exptmod.c index fda6cbb5..379404c5 100644 --- a/src/pk/rsa/rsa_exptmod.c +++ b/src/pk/rsa/rsa_exptmod.c @@ -86,6 +86,12 @@ int rsa_exptmod(const unsigned char *in, unsigned long inlen, err = CRYPT_BUFFER_OVERFLOW; goto done; } + + /* this should never happen ... */ + if (mp_unsigned_bin_size(&tmp) > mp_unsigned_bin_size(&key->N)) { + err = CRYPT_ERROR; + goto done; + } *outlen = x; /* convert it */ @@ -103,3 +109,7 @@ done: } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/rsa/rsa_exptmod.c,v $ */ +/* $Revision: 1.4 $ */ +/* $Date: 2005/06/23 02:10:22 $ */ diff --git a/src/pk/rsa/rsa_free.c b/src/pk/rsa/rsa_free.c index 85ade97d..69eeaecf 100644 --- a/src/pk/rsa/rsa_free.c +++ b/src/pk/rsa/rsa_free.c @@ -29,3 +29,7 @@ void rsa_free(rsa_key *key) } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/rsa/rsa_free.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/pk/rsa/rsa_import.c b/src/pk/rsa/rsa_import.c index 5408df06..57061343 100644 --- a/src/pk/rsa/rsa_import.c +++ b/src/pk/rsa/rsa_import.c @@ -18,7 +18,7 @@ #ifdef MRSA /** - Import an RSAPublicKey or RSAPrivateKey [two-prime only, defined in PKCS #1 v2.1] + Import an RSAPublicKey or RSAPrivateKey [two-prime only, only support >= 1024-bit keys, defined in PKCS #1 v2.1] @param in The packet to import from @param inlen It's length (octets) @param key [out] Destination for newly imported key @@ -26,65 +26,39 @@ */ int rsa_import(const unsigned char *in, unsigned long inlen, rsa_key *key) { - unsigned long x, y; - int err; + int err; + mp_int zero; LTC_ARGCHK(in != NULL); LTC_ARGCHK(key != NULL); /* init key */ - if ((err = mp_init_multi(&key->e, &key->d, &key->N, &key->dQ, &key->dP, &key->qP, - &key->p, &key->q, NULL)) != MP_OKAY) { + if ((err = mp_init_multi(&zero, &key->e, &key->d, &key->N, &key->dQ, + &key->dP, &key->qP, &key->p, &key->q, NULL)) != MP_OKAY) { return mpi_to_ltc_error(err); } - /* check the header */ - if (inlen < 4) { - return CRYPT_INVALID_PACKET; - } - - /* should be 0x30 0x8{1|2} LL LL */ - if ((in[0] != 0x30) || ((in[1] != 0x81) && (in[1] != 0x82))) { - return CRYPT_INVALID_PACKET; - } - - /* ok all the ASN.1 params are fine so far, let's move up */ - x = ((unsigned long)in[2]); - y = 0; - if ((in[1] & ~0x80) == 2) { - x = (x << 8) + ((unsigned long)in[3]) + 1; - in += 1; - y = 1; - } - in += 3; /* advance input */ - x += 3; /* size of packet according to header */ - y += 3; /* used input */ - - if (x != inlen) { - return CRYPT_INVALID_PACKET; - } - - /* decrement inlen by the header size */ - inlen -= y; - - /* read first number, it's either N or 0 [0 == private key] */ - x = inlen; - if ((err = der_get_multi_integer(in, &x, &key->N, NULL)) != CRYPT_OK) { + if ((err = der_decode_sequence_multi(in, inlen, + LTC_ASN1_INTEGER, 1UL, &key->N, + LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { goto LBL_ERR; } - /* advance */ - inlen -= x; - in += x; - if (mp_cmp_d(&key->N, 0) == MP_EQ) { /* it's a private key */ - if ((err = der_get_multi_integer(in, &inlen, &key->N, &key->e, - &key->d, &key->p, &key->q, &key->dP, - &key->dQ, &key->qP, NULL)) != CRYPT_OK) { + if ((err = der_decode_sequence_multi(in, inlen, + LTC_ASN1_INTEGER, 1UL, &zero, + LTC_ASN1_INTEGER, 1UL, &key->N, + LTC_ASN1_INTEGER, 1UL, &key->e, + LTC_ASN1_INTEGER, 1UL, &key->d, + LTC_ASN1_INTEGER, 1UL, &key->p, + LTC_ASN1_INTEGER, 1UL, &key->q, + LTC_ASN1_INTEGER, 1UL, &key->dP, + LTC_ASN1_INTEGER, 1UL, &key->dQ, + LTC_ASN1_INTEGER, 1UL, &key->qP, + LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { goto LBL_ERR; } - key->type = PK_PRIVATE; } else if (mp_cmp_d(&key->N, 1) == MP_EQ) { /* we don't support multi-prime RSA */ @@ -92,21 +66,27 @@ int rsa_import(const unsigned char *in, unsigned long inlen, rsa_key *key) goto LBL_ERR; } else { /* it's a public key and we lack e */ - if ((err = der_get_multi_integer(in, &inlen, &key->e, NULL)) != CRYPT_OK) { + if ((err = der_decode_sequence_multi(in, inlen, + LTC_ASN1_INTEGER, 1UL, &key->N, + LTC_ASN1_INTEGER, 1UL, &key->e, + LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { goto LBL_ERR; } /* free up some ram */ mp_clear_multi(&key->p, &key->q, &key->qP, &key->dP, &key->dQ, NULL); - key->type = PK_PUBLIC; } return CRYPT_OK; LBL_ERR: - mp_clear_multi(&key->d, &key->e, &key->N, &key->dQ, &key->dP, + mp_clear_multi(&zero, &key->d, &key->e, &key->N, &key->dQ, &key->dP, &key->qP, &key->p, &key->q, NULL); return err; } #endif /* MRSA */ + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/rsa/rsa_import.c,v $ */ +/* $Revision: 1.10 $ */ +/* $Date: 2005/06/03 18:48:28 $ */ diff --git a/src/pk/rsa/rsa_make_key.c b/src/pk/rsa/rsa_make_key.c index 9d49e3ce..d8741063 100644 --- a/src/pk/rsa/rsa_make_key.c +++ b/src/pk/rsa/rsa_make_key.c @@ -119,3 +119,7 @@ done: } #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/rsa/rsa_make_key.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/pk/rsa/rsa_sign_hash.c b/src/pk/rsa/rsa_sign_hash.c index b86ad64f..d31bda32 100644 --- a/src/pk/rsa/rsa_sign_hash.c +++ b/src/pk/rsa/rsa_sign_hash.c @@ -73,3 +73,7 @@ int rsa_sign_hash(const unsigned char *in, unsigned long inlen, } #endif /* MRSA */ + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/rsa/rsa_sign_hash.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/pk/rsa/rsa_v15_decrypt_key.c b/src/pk/rsa/rsa_v15_decrypt_key.c deleted file mode 100644 index eb5fe7d9..00000000 --- a/src/pk/rsa/rsa_v15_decrypt_key.c +++ /dev/null @@ -1,73 +0,0 @@ - /* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - * - * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org - */ -#include "tomcrypt.h" - -/** - @file rsa_v15_decrypt_key.c - RSA PKCS v1.5 Decryption, Tom St Denis -*/ - -#ifdef MRSA - -/** - RSA decrypt then PKCS #1 v1.5 depad - @param in The ciphertext - @param inlen The length of the ciphertext (octets) - @param out [out] The plaintext - @param outlen The length of the plaintext (you have to tell this function as it's not part of PKCS #1 v1.0 padding!) - @param stat [out] Status of decryption, 1==valid, 0==invalid - @param key The corresponding private RSA key - @return CRYPT_OK if successful (even if invalid) -*/ -int rsa_v15_decrypt_key(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long outlen, - int *stat, rsa_key *key) -{ - unsigned long modulus_bitlen, modulus_bytelen, x; - int err; - unsigned char *tmp; - - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(key != NULL); - LTC_ARGCHK(stat != NULL); - - /* default to invalid */ - *stat = 0; - - /* get modulus len in bits */ - modulus_bitlen = mp_count_bits(&(key->N)); - - /* outlen must be at least the size of the modulus */ - modulus_bytelen = mp_unsigned_bin_size(&(key->N)); - if (modulus_bytelen != inlen) { - return CRYPT_INVALID_PACKET; - } - - /* allocate ram */ - tmp = XMALLOC(inlen); - if (tmp == NULL) { - return CRYPT_MEM; - } - - /* rsa decode the packet */ - x = inlen; - if ((err = rsa_exptmod(in, inlen, tmp, &x, PK_PRIVATE, key)) != CRYPT_OK) { - XFREE(tmp); - return err; - } - - /* PKCS #1 v1.5 depad */ - err = pkcs_1_v15_es_decode(tmp, x, modulus_bitlen, out, outlen, stat); - XFREE(tmp); - return err; -} - -#endif diff --git a/src/pk/rsa/rsa_v15_encrypt_key.c b/src/pk/rsa/rsa_v15_encrypt_key.c deleted file mode 100644 index d422f67b..00000000 --- a/src/pk/rsa/rsa_v15_encrypt_key.c +++ /dev/null @@ -1,68 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - * - * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org - */ -#include "tomcrypt.h" - -/** - @file rsa_v15_encrypt_key.c - RSA PKCS v1.5 Encryption, Tom St Denis -*/ - -#ifdef MRSA - -/** - PKCS #1 v1.5 pad then encrypt - @param in The plaintext - @param inlen The length of the plaintext (octets) - @param out [out] The ciphertext - @param outlen [in/out] The max size and resulting size of the ciphertext - @param prng An active PRNG - @param prng_idx The index of the desired PRNG - @param key The public RSA key - @return CRYPT_OK if successful -*/ -int rsa_v15_encrypt_key(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - prng_state *prng, int prng_idx, - rsa_key *key) -{ - unsigned long modulus_bitlen, modulus_bytelen, x; - int err; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(outlen != NULL); - LTC_ARGCHK(key != NULL); - - /* valid prng? */ - if ((err = prng_is_valid(prng_idx)) != CRYPT_OK) { - return err; - } - - /* get modulus len in bits */ - modulus_bitlen = mp_count_bits(&(key->N)); - - /* outlen must be at least the size of the modulus */ - modulus_bytelen = mp_unsigned_bin_size(&(key->N)); - if (modulus_bytelen > *outlen) { - return CRYPT_BUFFER_OVERFLOW; - } - - /* pad it */ - x = *outlen; - if ((err = pkcs_1_v15_es_encode(in, inlen, modulus_bitlen, prng, prng_idx, out, &x)) != CRYPT_OK) { - return err; - } - - /* encrypt it */ - return rsa_exptmod(out, x, out, outlen, PK_PUBLIC, key); -} - -#endif diff --git a/src/pk/rsa/rsa_v15_sign_hash.c b/src/pk/rsa/rsa_v15_sign_hash.c deleted file mode 100644 index 7e9b3505..00000000 --- a/src/pk/rsa/rsa_v15_sign_hash.c +++ /dev/null @@ -1,66 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - * - * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org - */ -#include "tomcrypt.h" - -/** - @file rsa_v15_sign_hash.c - RSA PKCS v1.5 Signature, Tom St Denis -*/ - -#ifdef MRSA - -/** - PKCS #1 v1.5 pad then sign - @param in The hash to sign - @param inlen The length of the message hash (octets) - @param out [out] The signature - @param siglen [in/out] The max size and resulting size of the signature - @param hash_idx The index of the hash desired - @param key The private RSA key to perform the signature with - @return CRYPT_OK if successful -*/ -int rsa_v15_sign_hash(const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *siglen, - int hash_idx, rsa_key *key) -{ - unsigned long modulus_bitlen, modulus_bytelen, x; - int err; - - LTC_ARGCHK(in != NULL); - LTC_ARGCHK(out != NULL); - LTC_ARGCHK(siglen != NULL); - LTC_ARGCHK(key != NULL); - - /* valid hash ? */ - if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { - return err; - } - - /* get modulus len in bits */ - modulus_bitlen = mp_count_bits(&(key->N)); - - /* outlen must be at least the size of the modulus */ - modulus_bytelen = mp_unsigned_bin_size(&(key->N)); - if (modulus_bytelen > *siglen) { - return CRYPT_BUFFER_OVERFLOW; - } - - /* PKCS #1 v1.5 pad the key */ - x = *siglen; - if ((err = pkcs_1_v15_sa_encode(in, inlen, hash_idx, modulus_bitlen, out, &x)) != CRYPT_OK) { - return err; - } - - /* RSA encode it */ - return rsa_exptmod(out, x, out, siglen, PK_PRIVATE, key); -} - -#endif diff --git a/src/pk/rsa/rsa_v15_verify_hash.c b/src/pk/rsa/rsa_v15_verify_hash.c deleted file mode 100644 index e742cba0..00000000 --- a/src/pk/rsa/rsa_v15_verify_hash.c +++ /dev/null @@ -1,81 +0,0 @@ -/* LibTomCrypt, modular cryptographic library -- Tom St Denis - * - * LibTomCrypt is a library that provides various cryptographic - * algorithms in a highly modular and flexible manner. - * - * The library is free for all purposes without any express - * guarantee it works. - * - * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.org - */ -#include "tomcrypt.h" - -/** - @file rsa_v15_verify_hash.c - RSA PKCS v1.5 Signature verification, Tom St Denis -*/ - -#ifdef MRSA - -/** - RSA de-sign then PKCS v1.5 signature depad - @param sig The signature data - @param siglen The length of the signature (octets) - @param hash The hash of the message that was signed - @param hashlen The length of the hash of the message that was signed (octets) - @param hash_idx The index of the desired hash - @param stat [out] The result of the signature comparison, 1==valid, 0==invalid - @param key The corresponding public RSA key that performed the signature - @return CRYPT_OK if successful (even if the signature is invalid) -*/ -int rsa_v15_verify_hash(const unsigned char *sig, unsigned long siglen, - const unsigned char *hash, unsigned long hashlen, - int hash_idx, int *stat, - rsa_key *key) -{ - unsigned long modulus_bitlen, modulus_bytelen, x; - int err; - unsigned char *tmpbuf; - - LTC_ARGCHK(hash != NULL); - LTC_ARGCHK(sig != NULL); - LTC_ARGCHK(stat != NULL); - LTC_ARGCHK(key != NULL); - - /* default to invalid */ - *stat = 0; - - /* valid hash ? */ - if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { - return err; - } - - /* get modulus len in bits */ - modulus_bitlen = mp_count_bits(&(key->N)); - - /* outlen must be at least the size of the modulus */ - modulus_bytelen = mp_unsigned_bin_size(&(key->N)); - if (modulus_bytelen != siglen) { - return CRYPT_INVALID_PACKET; - } - - /* allocate temp buffer for decoded sig */ - tmpbuf = XMALLOC(siglen); - if (tmpbuf == NULL) { - return CRYPT_MEM; - } - - /* RSA decode it */ - x = siglen; - if ((err = rsa_exptmod(sig, siglen, tmpbuf, &x, PK_PUBLIC, key)) != CRYPT_OK) { - XFREE(tmpbuf); - return err; - } - - /* PSS decode it */ - err = pkcs_1_v15_sa_decode(hash, hashlen, tmpbuf, x, hash_idx, modulus_bitlen, stat); - XFREE(tmpbuf); - return err; -} - -#endif diff --git a/src/pk/rsa/rsa_verify_hash.c b/src/pk/rsa/rsa_verify_hash.c index 7072083d..690364dd 100644 --- a/src/pk/rsa/rsa_verify_hash.c +++ b/src/pk/rsa/rsa_verify_hash.c @@ -80,3 +80,7 @@ int rsa_verify_hash(const unsigned char *sig, unsigned long siglen, } #endif /* MRSA */ + +/* $Source: /cvs/libtom/libtomcrypt/src/pk/rsa/rsa_verify_hash.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/prngs/fortuna.c b/src/prngs/fortuna.c index 4548a901..8a3b8ea9 100644 --- a/src/prngs/fortuna.c +++ b/src/prngs/fortuna.c @@ -384,3 +384,7 @@ int fortuna_test(void) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/prngs/fortuna.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/prngs/rc4.c b/src/prngs/rc4.c index 750c38b5..4d29d9ad 100644 --- a/src/prngs/rc4.c +++ b/src/prngs/rc4.c @@ -258,3 +258,7 @@ int rc4_test(void) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/prngs/rc4.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/prngs/rng_get_bytes.c b/src/prngs/rng_get_bytes.c index 8519e0af..a711dfa7 100644 --- a/src/prngs/rng_get_bytes.c +++ b/src/prngs/rng_get_bytes.c @@ -138,3 +138,7 @@ unsigned long rng_get_bytes(unsigned char *out, unsigned long outlen, #endif return 0; } + +/* $Source: /cvs/libtom/libtomcrypt/src/prngs/rng_get_bytes.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/prngs/rng_make_prng.c b/src/prngs/rng_make_prng.c index 94132e71..51b6e6c7 100644 --- a/src/prngs/rng_make_prng.c +++ b/src/prngs/rng_make_prng.c @@ -63,3 +63,7 @@ int rng_make_prng(int bits, int wprng, prng_state *prng, return CRYPT_OK; } + +/* $Source: /cvs/libtom/libtomcrypt/src/prngs/rng_make_prng.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/prngs/sober128.c b/src/prngs/sober128.c index 48667bd2..c89f01cd 100644 --- a/src/prngs/sober128.c +++ b/src/prngs/sober128.c @@ -489,3 +489,7 @@ int sober128_test(void) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/prngs/sober128.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/prngs/sober128tab.c b/src/prngs/sober128tab.c index dc6f3e22..b50c77b7 100644 --- a/src/prngs/sober128tab.c +++ b/src/prngs/sober128tab.c @@ -2,7 +2,7 @@ @file sober128tab.c SOBER-128 Tables */ -/* $Id: sober128tab.c,v 1.1.1.1 2005/03/18 23:19:17 root Exp $ */ +/* $Id: sober128tab.c,v 1.2 2005/05/05 14:35:59 tom Exp $ */ /* @(#)TuringMultab.h 1.3 (QUALCOMM) 02/09/03 */ /* Multiplication table for Turing using 0xD02B4367 */ static const ulong32 Multab[256] = { @@ -72,7 +72,7 @@ static const ulong32 Multab[256] = { 0xEF72A3F1, 0x3F59E096, 0x0224253F, 0xD20F6658, }; -/* $Id: sober128tab.c,v 1.1.1.1 2005/03/18 23:19:17 root Exp $ */ +/* $Id: sober128tab.c,v 1.2 2005/05/05 14:35:59 tom Exp $ */ /* Sbox for SOBER-128 */ /* * This is really the combination of two SBoxes; the least significant @@ -156,3 +156,7 @@ static const ulong32 Sbox[256] = { 0x45f0b24f, 0x51fda998, 0xc0d52d71, 0xfa0896a8, 0xf9e6053f, 0xa4b0d300, 0xd499cbcc, 0xb95e3d40, }; + +/* $Source: /cvs/libtom/libtomcrypt/src/prngs/sober128tab.c,v $ */ +/* $Revision: 1.2 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/prngs/sprng.c b/src/prngs/sprng.c index dce83478..4e657dab 100644 --- a/src/prngs/sprng.c +++ b/src/prngs/sprng.c @@ -130,3 +130,7 @@ int sprng_test(void) + +/* $Source: /cvs/libtom/libtomcrypt/src/prngs/sprng.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/src/prngs/yarrow.c b/src/prngs/yarrow.c index 1582856e..0e59c225 100644 --- a/src/prngs/yarrow.c +++ b/src/prngs/yarrow.c @@ -186,6 +186,7 @@ int yarrow_ready(prng_state *prng) prng->yarrow.pool, /* IV */ prng->yarrow.pool, ks, /* KEY and key size */ 0, /* number of rounds */ + CTR_COUNTER_LITTLE_ENDIAN, /* little endian counter */ &prng->yarrow.ctr)) != CRYPT_OK) { return err; } @@ -310,3 +311,7 @@ int yarrow_test(void) #endif + +/* $Source: /cvs/libtom/libtomcrypt/src/prngs/yarrow.c,v $ */ +/* $Revision: 1.5 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/testbuild.sh b/testbuild.sh new file mode 100644 index 00000000..a17c6775 --- /dev/null +++ b/testbuild.sh @@ -0,0 +1,11 @@ +#!/bin/bash +echo "$1 (Build Only, $2, $3)..." +make clean 1>/dev/null 2>/dev/null +echo -n "building..." +touch testok.txt +CFLAGS="$2" make -f $3 test tv_gen 1>gcc_1.txt 2>gcc_2.txt || (echo "build $1 failed see gcc_2.txt for more information" && cat gcc_2.txt && rm -f testok.txt && exit 1) +if find testok.txt -type f 1>/dev/null 2>/dev/null ; then + echo "successful" + exit 0 +fi +exit 1 diff --git a/testme.sh b/testme.sh new file mode 100644 index 00000000..da0f97b1 --- /dev/null +++ b/testme.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +# date +echo "date="`date` + +# output version +echo "Testing verion" `grep "^VERSION=" makefile | sed "s/.*=//"` +#grep "VERSION=" makefile | perl -e "@a = split('=', <>); print @a[1];"` + +# get uname +echo "uname="`uname -a` +echo + +# stock build +bash run.sh "STOCK" " " $1 || exit 1 + +# SMALL code +bash run.sh "SMALL" "-DLTC_SMALL_CODE" $1 || exit 1 + +# NOTABLES +bash run.sh "NOTABLES" "-DLTC_NO_TABLES" $1 || exit 1 + +# SMALL+NOTABLES +bash run.sh "SMALL+NOTABLES" "-DLTC_SMALL_CODE -DLTC_NO_TABLES" $1 || exit 1 + +# CLEANSTACK +bash run.sh "CLEANSTACK" "-DLTC_CLEAN_STACK" $1 || exit 1 + +# CLEANSTACK + SMALL +bash run.sh "CLEANSTACK+SMALL" "-DLTC_SMALL_CODE -DLTC_CLEAN_STACK" $1 || exit 1 + +# CLEANSTACK + NOTABLES +bash run.sh "CLEANSTACK+NOTABLES" "-DLTC_NO_TABLES -DLTC_CLEAN_STACK" $1 || exit 1 + +# CLEANSTACK + NOTABLES + SMALL +bash run.sh "CLEANSTACK+NOTABLES+SMALL" "-DLTC_NO_TABLES -DLTC_CLEAN_STACK -DLTC_SMALL_CODE" $1 || exit 1 + +# NO_FAST +bash run.sh "NO_FAST" "-DLTC_NO_FAST" $1 || exit 1 + +# NO_ASM +bash run.sh "NO_ASM" "-DLTC_NO_ASM" $1 || exit 1 + +# test build with no testing +bash testbuild.sh "NOTEST" "-DLTC_NO_TEST" $1 || exit 1 + +# test build with no file routines +bash testbuild.sh "NOFILE" "-DLTC_NO_FILE" $1 || exit 1 + +# $Source: /cvs/libtom/libtomcrypt/testme.sh,v $ +# $Revision: 1.16 $ +# $Date: 2005/05/11 18:59:53 $ diff --git a/testprof/base64_test.c b/testprof/base64_test.c index e93ebefa..af20a674 100644 --- a/testprof/base64_test.c +++ b/testprof/base64_test.c @@ -12,9 +12,13 @@ int base64_test(void) l2 = sizeof(tmp); DO(base64_decode(out, l1, tmp, &l2)); if (l2 != x || memcmp(tmp, in, x)) { - printf("base64 failed %lu %lu %lu", x, l1, l2); + fprintf(stderr, "base64 failed %lu %lu %lu", x, l1, l2); return 1; } } return 0; } + +/* $Source: /cvs/libtom/libtomcrypt/testprof/base64_test.c,v $ */ +/* $Revision: 1.5 $ */ +/* $Date: 2005/05/21 12:51:25 $ */ diff --git a/testprof/cipher_hash_test.c b/testprof/cipher_hash_test.c index d2f3bfca..27232e28 100644 --- a/testprof/cipher_hash_test.c +++ b/testprof/cipher_hash_test.c @@ -39,3 +39,7 @@ int cipher_hash_test(void) return 0; } + +/* $Source: /cvs/libtom/libtomcrypt/testprof/cipher_hash_test.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/testprof/der_tests.c b/testprof/der_tests.c index fe8eb000..81193515 100644 --- a/testprof/der_tests.c +++ b/testprof/der_tests.c @@ -4,91 +4,367 @@ int der_tests(void) { - printf("NOP"); + fprintf(stderr, "NOP"); return 0; } #else +static int der_choice_test(void) +{ + ltc_asn1_list types[7], host[1]; + unsigned char bitbuf[10], octetbuf[10], ia5buf[10], printbuf[10], outbuf[256]; + unsigned long integer, oidbuf[10], outlen, inlen, x, y; + mp_int mpinteger; + ltc_utctime utctime = { 91, 5, 6, 16, 45, 40, 1, 7, 0 }; + + /* setup variables */ + for (x = 0; x < sizeof(bitbuf); x++) { bitbuf[x] = x & 1; } + for (x = 0; x < sizeof(octetbuf); x++) { octetbuf[x] = x; } + for (x = 0; x < sizeof(ia5buf); x++) { ia5buf[x] = 'a'; } + for (x = 0; x < sizeof(printbuf); x++) { printbuf[x] = 'a'; } + integer = 1; + for (x = 0; x < sizeof(oidbuf)/sizeof(oidbuf[0]); x++) { oidbuf[x] = x + 1; } + DO(mpi_to_ltc_error(mp_init(&mpinteger))); + + for (x = 0; x < 14; x++) { + /* setup list */ + LTC_SET_ASN1(types, 0, LTC_ASN1_PRINTABLE_STRING, printbuf, sizeof(printbuf)); + LTC_SET_ASN1(types, 1, LTC_ASN1_BIT_STRING, bitbuf, sizeof(bitbuf)); + LTC_SET_ASN1(types, 2, LTC_ASN1_OCTET_STRING, octetbuf, sizeof(octetbuf)); + LTC_SET_ASN1(types, 3, LTC_ASN1_IA5_STRING, ia5buf, sizeof(ia5buf)); + if (x > 7) { + LTC_SET_ASN1(types, 4, LTC_ASN1_SHORT_INTEGER, &integer, 1); + } else { + LTC_SET_ASN1(types, 4, LTC_ASN1_INTEGER, &mpinteger, 1); + } + LTC_SET_ASN1(types, 5, LTC_ASN1_OBJECT_IDENTIFIER, oidbuf, sizeof(oidbuf)/sizeof(oidbuf[0])); + LTC_SET_ASN1(types, 6, LTC_ASN1_UTCTIME, &utctime, 1); + + LTC_SET_ASN1(host, 0, LTC_ASN1_CHOICE, types, 7); + + + /* encode */ + outlen = sizeof(outbuf); + DO(der_encode_sequence(&types[x>6?x-7:x], 1, outbuf, &outlen)); + + /* decode it */ + inlen = outlen; + DO(der_decode_sequence(outbuf, inlen, &host, 1)); + + for (y = 0; y < 7; y++) { + if (types[y].used && y != (x>6?x-7:x)) { + fprintf(stderr, "CHOICE, flag %lu in trial %lu was incorrectly set to one\n", y, x); + return 1; + } + if (!types[y].used && y == (x>6?x-7:x)) { + fprintf(stderr, "CHOICE, flag %lu in trial %lu was incorrectly set to zero\n", y, x); + return 1; + } + } + } + mp_clear(&mpinteger); + return 0; +} + + int der_tests(void) { - unsigned long x, y, z, zz; - unsigned char buf[2][4096]; + unsigned long x, y, z, zz, oid[2][32]; + unsigned char buf[3][2048]; mp_int a, b, c, d, e, f, g; + static const unsigned char rsa_oid_der[] = { 0x06, 0x06, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d }; + static const unsigned long rsa_oid[] = { 1, 2, 840, 113549 }; + + static const unsigned char rsa_ia5[] = "test1@rsa.com"; + static const unsigned char rsa_ia5_der[] = { 0x16, 0x0d, 0x74, 0x65, 0x73, 0x74, 0x31, + 0x40, 0x72, 0x73, 0x61, 0x2e, 0x63, 0x6f, 0x6d }; + + static const unsigned char rsa_printable[] = "Test User 1"; + static const unsigned char rsa_printable_der[] = { 0x13, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x20, 0x55, + 0x73, 0x65, 0x72, 0x20, 0x31 }; + + static const ltc_utctime rsa_time1 = { 91, 5, 6, 16, 45, 40, 1, 7, 0 }; + static const ltc_utctime rsa_time2 = { 91, 5, 6, 23, 45, 40, 0, 0, 0 }; + ltc_utctime tmp_time; + + static const unsigned char rsa_time1_der[] = { 0x17, 0x11, 0x39, 0x31, 0x30, 0x35, 0x30, 0x36, 0x31, 0x36, 0x34, 0x35, 0x34, 0x30, 0x2D, 0x30, 0x37, 0x30, 0x30 }; + static const unsigned char rsa_time2_der[] = { 0x17, 0x0d, 0x39, 0x31, 0x30, 0x35, 0x30, 0x36, 0x32, 0x33, 0x34, 0x35, 0x34, 0x30, 0x5a }; + DO(mpi_to_ltc_error(mp_init_multi(&a, &b, &c, &d, &e, &f, &g, NULL))); for (zz = 0; zz < 16; zz++) { for (z = 0; z < 1024; z++) { if (yarrow_read(buf[0], z, &yarrow_prng) != z) { - printf("Failed to read %lu bytes from yarrow\n", z); + fprintf(stderr, "Failed to read %lu bytes from yarrow\n", z); return 1; } DO(mpi_to_ltc_error(mp_read_unsigned_bin(&a, buf[0], z))); + if (mp_iszero(&a) == MP_NO) { a.sign = buf[0][0] & 1 ? MP_ZPOS : MP_NEG; } x = sizeof(buf[0]); DO(der_encode_integer(&a, buf[0], &x)); - y = x; + DO(der_length_integer(&a, &y)); + if (y != x) { fprintf(stderr, "DER INTEGER size mismatch\n"); return 1; } mp_zero(&b); - DO(der_decode_integer(buf[0], &y, &b)); + DO(der_decode_integer(buf[0], y, &b)); if (y != x || mp_cmp(&a, &b) != MP_EQ) { - printf("%lu: %lu vs %lu\n", z, x, y); + fprintf(stderr, "%lu: %lu vs %lu\n", z, x, y); #ifdef BN_MP_TORADIX_C mp_todecimal(&a, buf[0]); mp_todecimal(&b, buf[1]); - printf("a == %s\nb == %s\n", buf[0], buf[1]); + fprintf(stderr, "a == %s\nb == %s\n", buf[0], buf[1]); #endif mp_clear_multi(&a, &b, &c, &d, &e, &f, &g, NULL); return 1; } } } + +/* test short integer */ + for (zz = 0; zz < 256; zz++) { + for (z = 1; z < 4; z++) { + if (yarrow_read(buf[0], z, &yarrow_prng) != z) { + fprintf(stderr, "Failed to read %lu bytes from yarrow\n", z); + return 1; + } + /* encode with normal */ + DO(mpi_to_ltc_error(mp_read_unsigned_bin(&a, buf[0], z))); + + x = sizeof(buf[0]); + DO(der_encode_integer(&a, buf[0], &x)); + + /* encode with short */ + y = sizeof(buf[1]); + DO(der_encode_short_integer(mp_get_int(&a), buf[1], &y)); + if (x != y || memcmp(buf[0], buf[1], x)) { + fprintf(stderr, "DER INTEGER short encoding failed, %lu, %lu\n", x, y); + for (z = 0; z < x; z++) fprintf(stderr, "%02x ", buf[0][z]); fprintf(stderr, "\n"); + for (z = 0; z < y; z++) fprintf(stderr, "%02x ", buf[1][z]); fprintf(stderr, "\n"); + mp_clear_multi(&a, &b, &c, &d, &e, &f, &g, NULL); + return 1; + } + + /* decode it */ + x = 0; + DO(der_decode_short_integer(buf[1], y, &x)); + if (x != mp_get_int(&a)) { + fprintf(stderr, "DER INTEGER short decoding failed, %lu, %lu\n", x, mp_get_int(&a)); + mp_clear_multi(&a, &b, &c, &d, &e, &f, &g, NULL); + return 1; + } + } + } + mp_clear_multi(&a, &b, &c, &d, &e, &f, &g, NULL); + +/* Test bit string */ + for (zz = 1; zz < 1536; zz++) { + yarrow_read(buf[0], zz, &yarrow_prng); + for (z = 0; z < zz; z++) { + buf[0][z] &= 0x01; + } + x = sizeof(buf[1]); + DO(der_encode_bit_string(buf[0], zz, buf[1], &x)); + DO(der_length_bit_string(zz, &y)); + if (y != x) { + fprintf(stderr, "\nDER BIT STRING length of encoded not match expected : %lu, %lu, %lu\n", z, x, y); + return 1; + } -/* test the multi */ - mp_set(&a, 1); + y = sizeof(buf[2]); + DO(der_decode_bit_string(buf[1], x, buf[2], &y)); + if (y != zz || memcmp(buf[0], buf[2], zz)) { + fprintf(stderr, "%lu, %lu, %d\n", y, zz, memcmp(buf[0], buf[2], zz)); + return 1; + } + } + +/* Test octet string */ + for (zz = 1; zz < 1536; zz++) { + yarrow_read(buf[0], zz, &yarrow_prng); + x = sizeof(buf[1]); + DO(der_encode_octet_string(buf[0], zz, buf[1], &x)); + DO(der_length_octet_string(zz, &y)); + if (y != x) { + fprintf(stderr, "\nDER OCTET STRING length of encoded not match expected : %lu, %lu, %lu\n", z, x, y); + return 1; + } + y = sizeof(buf[2]); + DO(der_decode_octet_string(buf[1], x, buf[2], &y)); + if (y != zz || memcmp(buf[0], buf[2], zz)) { + fprintf(stderr, "%lu, %lu, %d\n", y, zz, memcmp(buf[0], buf[2], zz)); + return 1; + } + } + +/* test OID */ x = sizeof(buf[0]); - DO(der_put_multi_integer(buf[0], &x, &a, NULL)); - y = x; - mp_zero(&a); - DO(der_get_multi_integer(buf[0], &y, &a, NULL)); - if (x != y || mp_cmp_d(&a, 1)) { - printf("%lu, %lu, %d\n", x, y, mp_cmp_d(&a, 1)); - mp_clear_multi(&a, &b, &c, &d, &e, &f, &g, NULL); + DO(der_encode_object_identifier(rsa_oid, sizeof(rsa_oid)/sizeof(rsa_oid[0]), buf[0], &x)); + if (x != sizeof(rsa_oid_der) || memcmp(rsa_oid_der, buf[0], x)) { + fprintf(stderr, "rsa_oid_der encode failed to match, %lu, ", x); + for (y = 0; y < x; y++) fprintf(stderr, "%02x ", buf[0][y]); + fprintf(stderr, "\n"); return 1; - } + } - mp_set(&a, 1); - mp_set(&b, 2); + y = sizeof(oid[0])/sizeof(oid[0][0]); + DO(der_decode_object_identifier(buf[0], x, oid[0], &y)); + if (y != sizeof(rsa_oid)/sizeof(rsa_oid[0]) || memcmp(rsa_oid, oid[0], sizeof(rsa_oid))) { + fprintf(stderr, "rsa_oid_der decode failed to match, %lu, ", y); + for (z = 0; z < y; z++) fprintf(stderr, "%lu ", oid[0][z]); + fprintf(stderr, "\n"); + return 1; + } + + /* do random strings */ + for (zz = 0; zz < 5000; zz++) { + /* pick a random number of words */ + yarrow_read(buf[0], 4, &yarrow_prng); + LOAD32L(z, buf[0]); + z = 2 + (z % ((sizeof(oid[0])/sizeof(oid[0][0])) - 2)); + + /* fill them in */ + oid[0][0] = buf[0][0] % 3; + oid[0][1] = buf[0][1] % 40; + + for (y = 2; y < z; y++) { + yarrow_read(buf[0], 4, &yarrow_prng); + LOAD32L(oid[0][y], buf[0]); + } + + /* encode it */ + x = sizeof(buf[0]); + DO(der_encode_object_identifier(oid[0], z, buf[0], &x)); + DO(der_length_object_identifier(oid[0], z, &y)); + if (x != y) { + fprintf(stderr, "Random OID %lu test failed, length mismatch: %lu, %lu\n", z, x, y); + for (x = 0; x < z; x++) fprintf(stderr, "%lu\n", oid[0][x]); + return 1; + } + + /* decode it */ + y = sizeof(oid[0])/sizeof(oid[0][0]); + DO(der_decode_object_identifier(buf[0], x, oid[1], &y)); + if (y != z) { + fprintf(stderr, "Random OID %lu test failed, decode length mismatch: %lu, %lu\n", z, x, y); + return 1; + } + if (memcmp(oid[0], oid[1], sizeof(oid[0][0]) * z)) { + fprintf(stderr, "Random OID %lu test failed, decoded values wrong\n", z); + for (x = 0; x < z; x++) fprintf(stderr, "%lu\n", oid[0][x]); fprintf(stderr, "\n\n Got \n\n"); + for (x = 0; x < z; x++) fprintf(stderr, "%lu\n", oid[1][x]); + return 1; + } + } + +/* IA5 string */ x = sizeof(buf[0]); - DO(der_put_multi_integer(buf[0], &x, &a, &b, NULL)); - y = x; - mp_zero(&a); - mp_zero(&b); - DO(der_get_multi_integer(buf[0], &y, &a, &b, NULL)); - if (x != y || mp_cmp_d(&a, 1) || mp_cmp_d(&b, 2)) { - printf("%lu, %lu, %d, %d\n", x, y, mp_cmp_d(&a, 1), mp_cmp_d(&b, 2)); - mp_clear_multi(&a, &b, &c, &d, &e, &f, &g, NULL); + DO(der_encode_ia5_string(rsa_ia5, strlen(rsa_ia5), buf[0], &x)); + if (x != sizeof(rsa_ia5_der) || memcmp(buf[0], rsa_ia5_der, x)) { + fprintf(stderr, "IA5 encode failed: %lu, %lu\n", x, (unsigned long)sizeof(rsa_ia5_der)); return 1; - } + } + DO(der_length_ia5_string(rsa_ia5, strlen(rsa_ia5), &y)); + if (y != x) { + fprintf(stderr, "IA5 length failed to match: %lu, %lu\n", x, y); + return 1; + } + y = sizeof(buf[1]); + DO(der_decode_ia5_string(buf[0], x, buf[1], &y)); + if (y != strlen(rsa_ia5) || memcmp(buf[1], rsa_ia5, strlen(rsa_ia5))) { + fprintf(stderr, "DER IA5 failed test vector\n"); + return 1; + } - mp_set(&a, 1); - mp_set(&b, 2); - mp_set(&c, 3); +/* Printable string */ x = sizeof(buf[0]); - DO(der_put_multi_integer(buf[0], &x, &a, &b, &c, NULL)); - y = x; - mp_zero(&a); - mp_zero(&b); - mp_zero(&c); - DO(der_get_multi_integer(buf[0], &y, &a, &b, &c, NULL)); - if (x != y || mp_cmp_d(&a, 1) || mp_cmp_d(&b, 2) || mp_cmp_d(&c, 3)) { - printf("%lu, %lu, %d, %d, %d\n", x, y, mp_cmp_d(&a, 1), mp_cmp_d(&b, 2), mp_cmp_d(&c, 3)); - mp_clear_multi(&a, &b, &c, &d, &e, &f, &g, NULL); + DO(der_encode_printable_string(rsa_printable, strlen(rsa_printable), buf[0], &x)); + if (x != sizeof(rsa_printable_der) || memcmp(buf[0], rsa_printable_der, x)) { + fprintf(stderr, "PRINTABLE encode failed: %lu, %lu\n", x, (unsigned long)sizeof(rsa_printable_der)); + return 1; + } + DO(der_length_printable_string(rsa_printable, strlen(rsa_printable), &y)); + if (y != x) { + fprintf(stderr, "printable length failed to match: %lu, %lu\n", x, y); return 1; - } + } + y = sizeof(buf[1]); + DO(der_decode_printable_string(buf[0], x, buf[1], &y)); + if (y != strlen(rsa_printable) || memcmp(buf[1], rsa_printable, strlen(rsa_printable))) { + fprintf(stderr, "DER printable failed test vector\n"); + return 1; + } +/* Test UTC time */ + x = sizeof(buf[0]); + DO(der_encode_utctime(&rsa_time1, buf[0], &x)); + if (x != sizeof(rsa_time1_der) || memcmp(buf[0], rsa_time1_der, x)) { + fprintf(stderr, "UTCTIME encode of rsa_time1 failed: %lu, %lu\n", x, (unsigned long)sizeof(rsa_time1_der)); +fprintf(stderr, "\n\n"); +for (y = 0; y < x; y++) fprintf(stderr, "%02x ", buf[0][y]); printf("\n"); - mp_clear_multi(&a, &b, &c, &d, &e, &f, &g, NULL); - return 0; + return 1; + } + DO(der_length_utctime(&rsa_time1, &y)); + if (y != x) { + fprintf(stderr, "UTCTIME length failed to match for rsa_time1: %lu, %lu\n", x, y); + return 1; + } + DO(der_decode_utctime(buf[0], &y, &tmp_time)); + if (y != x || memcmp(&rsa_time1, &tmp_time, sizeof(ltc_utctime))) { + fprintf(stderr, "UTCTIME decode failed for rsa_time1: %lu %lu\n", x, y); +fprintf(stderr, "\n\n%u %u %u %u %u %u %u %u %u\n\n", +tmp_time.YY, +tmp_time.MM, +tmp_time.DD, +tmp_time.hh, +tmp_time.mm, +tmp_time.ss, +tmp_time.off_dir, +tmp_time.off_mm, +tmp_time.off_hh); + return 1; + } + + x = sizeof(buf[0]); + DO(der_encode_utctime(&rsa_time2, buf[0], &x)); + if (x != sizeof(rsa_time2_der) || memcmp(buf[0], rsa_time2_der, x)) { + fprintf(stderr, "UTCTIME encode of rsa_time2 failed: %lu, %lu\n", x, (unsigned long)sizeof(rsa_time1_der)); +fprintf(stderr, "\n\n"); +for (y = 0; y < x; y++) fprintf(stderr, "%02x ", buf[0][y]); printf("\n"); + + return 1; + } + DO(der_length_utctime(&rsa_time2, &y)); + if (y != x) { + fprintf(stderr, "UTCTIME length failed to match for rsa_time2: %lu, %lu\n", x, y); + return 1; + } + DO(der_decode_utctime(buf[0], &y, &tmp_time)); + if (y != x || memcmp(&rsa_time2, &tmp_time, sizeof(ltc_utctime))) { + fprintf(stderr, "UTCTIME decode failed for rsa_time2: %lu %lu\n", x, y); +fprintf(stderr, "\n\n%u %u %u %u %u %u %u %u %u\n\n", +tmp_time.YY, +tmp_time.MM, +tmp_time.DD, +tmp_time.hh, +tmp_time.mm, +tmp_time.ss, +tmp_time.off_dir, +tmp_time.off_mm, +tmp_time.off_hh); + + + return 1; + } + + + + return der_choice_test(); } #endif + +/* $Source: /cvs/libtom/libtomcrypt/testprof/der_tests.c,v $ */ +/* $Revision: 1.25 $ */ +/* $Date: 2005/06/20 20:37:45 $ */ diff --git a/testprof/dh_tests.c b/testprof/dh_tests.c index feb74acf..3852e474 100644 --- a/testprof/dh_tests.c +++ b/testprof/dh_tests.c @@ -22,11 +22,11 @@ int dh_tests (void) y = 4096; DO(dh_shared_secret (&userb, &usera, buf[1], &y)); if (y != x) { - printf ("DH Shared keys are not same size.\n"); + fprintf(stderr, "DH Shared keys are not same size.\n"); return 1; } if (memcmp (buf[0], buf[1], x)) { - printf ("DH Shared keys not same contents.\n"); + fprintf(stderr, "DH Shared keys not same contents.\n"); return 1; } @@ -41,11 +41,11 @@ int dh_tests (void) DO(dh_shared_secret (&usera, &userb, buf[2], &z)); if (z != x) { - printf ("failed. Size don't match?\n"); + fprintf(stderr, "failed. Size don't match?\n"); return 1; } if (memcmp (buf[0], buf[2], x)) { - printf ("Failed. Content didn't match.\n"); + fprintf(stderr, "Failed. Content didn't match.\n"); return 1; } dh_free (&usera); @@ -62,12 +62,12 @@ int dh_tests (void) x = sizeof (buf[0]); DO(dh_decrypt_key (buf[1], y, buf[0], &x, &usera)); if (x != 16) { - printf ("Failed (length)\n"); + fprintf(stderr, "Failed (length)\n"); return 1; } for (x = 0; x < 16; x++) if (buf[0][x] != x) { - printf ("Failed (contents)\n"); + fprintf(stderr, "Failed (contents)\n"); return 1; } @@ -81,7 +81,7 @@ int dh_tests (void) buf[0][0] ^= 1; DO(dh_verify_hash (buf[1], x, buf[0], 16, &stat2, &usera)); if (!(stat == 1 && stat2 == 0)) { - printf("dh_sign/verify_hash %d %d", stat, stat2); + fprintf(stderr, "dh_sign/verify_hash %d %d", stat, stat2); return 1; } dh_free (&usera); @@ -92,8 +92,12 @@ int dh_tests (void) int dh_tests(void) { - printf("NOP"); + fprintf(stderr, "NOP"); return 0; } #endif + +/* $Source: /cvs/libtom/libtomcrypt/testprof/dh_tests.c,v $ */ +/* $Revision: 1.5 $ */ +/* $Date: 2005/05/21 12:51:25 $ */ diff --git a/testprof/dsa_test.c b/testprof/dsa_test.c index cd2e89a3..aa4988c9 100644 --- a/testprof/dsa_test.c +++ b/testprof/dsa_test.c @@ -14,7 +14,7 @@ int dsa_test(void) /* verify it */ DO(dsa_verify_key(&key, &stat1)); - if (stat1 == 0) { printf("dsa_verify_key "); return 1; } + if (stat1 == 0) { fprintf(stderr, "dsa_verify_key "); return 1; } /* sign the message */ x = sizeof(out); @@ -27,7 +27,7 @@ int dsa_test(void) msg[0] ^= 1; DO(dsa_verify_hash(out, x, msg, sizeof(msg), &stat2, &key)); msg[0] ^= 1; - if (!(stat1 == 1 && stat2 == 0)) { printf("dsa_verify %d %d", stat1, stat2); return 1; } + if (!(stat1 == 1 && stat2 == 0)) { fprintf(stderr, "dsa_verify %d %d", stat1, stat2); return 1; } /* test exporting it */ x = sizeof(out2); @@ -36,16 +36,17 @@ int dsa_test(void) /* verify a signature with it */ DO(dsa_verify_hash(out, x, msg, sizeof(msg), &stat1, &key2)); - if (stat1 == 0) { printf("dsa_verify (import private) %d ", stat1); return 1; } + if (stat1 == 0) { fprintf(stderr, "dsa_verify (import private) %d ", stat1); return 1; } dsa_free(&key2); /* export as public now */ x = sizeof(out2); DO(dsa_export(out2, &x, PK_PUBLIC, &key)); + DO(dsa_import(out2, x, &key2)); /* verify a signature with it */ DO(dsa_verify_hash(out, x, msg, sizeof(msg), &stat1, &key2)); - if (stat1 == 0) { printf("dsa_verify (import public) %d ", stat1); return 1; } + if (stat1 == 0) { fprintf(stderr, "dsa_verify (import public) %d ", stat1); return 1; } dsa_free(&key2); dsa_free(&key); @@ -56,8 +57,12 @@ int dsa_test(void) int dsa_test(void) { - printf("NOP"); + fprintf(stderr, "NOP"); return 0; } #endif + +/* $Source: /cvs/libtom/libtomcrypt/testprof/dsa_test.c,v $ */ +/* $Revision: 1.8 $ */ +/* $Date: 2005/06/03 19:24:32 $ */ diff --git a/testprof/ecc_test.c b/testprof/ecc_test.c index 0b37ba2f..d5f88ab7 100644 --- a/testprof/ecc_test.c +++ b/testprof/ecc_test.c @@ -2,102 +2,123 @@ #ifdef MECC +static int sizes[] = { +#ifdef ECC192 +24, +#endif +#ifdef ECC224 +28, +#endif +#ifdef ECC256 +32, +#endif +#ifdef ECC384 +48, +#endif +#ifdef ECC512 +65 +#endif +}; + int ecc_tests (void) { unsigned char buf[4][4096]; - unsigned long x, y, z; + unsigned long x, y, z, s; int stat, stat2; ecc_key usera, userb, pubKey, privKey; DO(ecc_test ()); - /* make up two keys */ - DO(ecc_make_key (&yarrow_prng, find_prng ("yarrow"), 65, &usera)); - DO(ecc_make_key (&yarrow_prng, find_prng ("yarrow"), 65, &userb)); - - /* make the shared secret */ - x = 4096; - DO(ecc_shared_secret (&usera, &userb, buf[0], &x)); - - y = 4096; - DO(ecc_shared_secret (&userb, &usera, buf[1], &y)); - - if (y != x) { - printf ("ecc Shared keys are not same size."); - return 1; - } - - if (memcmp (buf[0], buf[1], x)) { - printf ("ecc Shared keys not same contents."); - return 1; + for (s = 0; s < (int)(sizeof(sizes)/sizeof(sizes[0])); s++) { + /* make up two keys */ + DO(ecc_make_key (&yarrow_prng, find_prng ("yarrow"), sizes[s], &usera)); + DO(ecc_make_key (&yarrow_prng, find_prng ("yarrow"), sizes[s], &userb)); + + /* make the shared secret */ + x = 4096; + DO(ecc_shared_secret (&usera, &userb, buf[0], &x)); + + y = 4096; + DO(ecc_shared_secret (&userb, &usera, buf[1], &y)); + + if (y != x) { + fprintf(stderr, "ecc Shared keys are not same size."); + return 1; + } + + if (memcmp (buf[0], buf[1], x)) { + fprintf(stderr, "ecc Shared keys not same contents."); + return 1; + } + + /* now export userb */ + y = 4096; + DO(ecc_export (buf[1], &y, PK_PUBLIC, &userb)); + ecc_free (&userb); + + /* import and make the shared secret again */ + DO(ecc_import (buf[1], y, &userb)); + + z = 4096; + DO(ecc_shared_secret (&usera, &userb, buf[2], &z)); + + if (z != x) { + fprintf(stderr, "failed. Size don't match?"); + return 1; + } + if (memcmp (buf[0], buf[2], x)) { + fprintf(stderr, "Failed. Contents didn't match."); + return 1; + } + ecc_free (&usera); + ecc_free (&userb); + + /* test encrypt_key */ + DO(ecc_make_key (&yarrow_prng, find_prng ("yarrow"), sizes[s], &usera)); + + /* export key */ + x = sizeof(buf[0]); + DO(ecc_export(buf[0], &x, PK_PUBLIC, &usera)); + DO(ecc_import(buf[0], x, &pubKey)); + x = sizeof(buf[0]); + DO(ecc_export(buf[0], &x, PK_PRIVATE, &usera)); + DO(ecc_import(buf[0], x, &privKey)); + + for (x = 0; x < 32; x++) { + buf[0][x] = x; + } + y = sizeof (buf[1]); + DO(ecc_encrypt_key (buf[0], 32, buf[1], &y, &yarrow_prng, find_prng ("yarrow"), find_hash ("sha256"), &pubKey)); + zeromem (buf[0], sizeof (buf[0])); + x = sizeof (buf[0]); + DO(ecc_decrypt_key (buf[1], y, buf[0], &x, &privKey)); + if (x != 32) { + fprintf(stderr, "Failed (length)"); + return 1; + } + for (x = 0; x < 32; x++) { + if (buf[0][x] != x) { + fprintf(stderr, "Failed (contents)"); + return 1; + } + } + /* test sign_hash */ + for (x = 0; x < 16; x++) { + buf[0][x] = x; + } + x = sizeof (buf[1]); + DO(ecc_sign_hash (buf[0], 16, buf[1], &x, &yarrow_prng, find_prng ("yarrow"), &privKey)); + DO(ecc_verify_hash (buf[1], x, buf[0], 16, &stat, &pubKey)); + buf[0][0] ^= 1; + DO(ecc_verify_hash (buf[1], x, buf[0], 16, &stat2, &privKey)); + if (!(stat == 1 && stat2 == 0)) { + fprintf(stderr, "ecc_verify_hash failed %d, %d, ", stat, stat2); + return 1; + } + ecc_free (&usera); + ecc_free (&pubKey); + ecc_free (&privKey); } - - /* now export userb */ - y = 4096; - DO(ecc_export (buf[1], &y, PK_PUBLIC, &userb)); - ecc_free (&userb); - - /* import and make the shared secret again */ - DO(ecc_import (buf[1], y, &userb)); - - z = 4096; - DO(ecc_shared_secret (&usera, &userb, buf[2], &z)); - - if (z != x) { - printf ("failed. Size don't match?"); - return 1; - } - if (memcmp (buf[0], buf[2], x)) { - printf ("Failed. Content didn't match."); - return 1; - } - ecc_free (&usera); - ecc_free (&userb); - -/* test encrypt_key */ - DO(ecc_make_key (&yarrow_prng, find_prng ("yarrow"), 65, &usera)); - -/* export key */ - x = sizeof(buf[0]); - DO(ecc_export(buf[0], &x, PK_PUBLIC, &usera)); - DO(ecc_import(buf[0], x, &pubKey)); - x = sizeof(buf[0]); - DO(ecc_export(buf[0], &x, PK_PRIVATE, &usera)); - DO(ecc_import(buf[0], x, &privKey)); - - for (x = 0; x < 32; x++) { - buf[0][x] = x; - } - y = sizeof (buf[1]); - DO(ecc_encrypt_key (buf[0], 32, buf[1], &y, &yarrow_prng, find_prng ("yarrow"), find_hash ("sha256"), &pubKey)); - zeromem (buf[0], sizeof (buf[0])); - x = sizeof (buf[0]); - DO(ecc_decrypt_key (buf[1], y, buf[0], &x, &privKey)); - if (x != 32) { - printf ("Failed (length)"); - return 1; - } - for (x = 0; x < 32; x++) - if (buf[0][x] != x) { - printf ("Failed (contents)"); - return 1; - } -/* test sign_hash */ - for (x = 0; x < 16; x++) { - buf[0][x] = x; - } - x = sizeof (buf[1]); - DO(ecc_sign_hash (buf[0], 16, buf[1], &x, &yarrow_prng, find_prng ("yarrow"), &privKey)); - DO(ecc_verify_hash (buf[1], x, buf[0], 16, &stat, &pubKey)); - buf[0][0] ^= 1; - DO(ecc_verify_hash (buf[1], x, buf[0], 16, &stat2, &privKey)); - if (!(stat == 1 && stat2 == 0)) { - printf("ecc_verify_hash failed %d, %d, ", stat, stat2); - return 1; - } - ecc_free (&usera); - ecc_free (&pubKey); - ecc_free (&privKey); return 0; } @@ -105,8 +126,12 @@ int ecc_tests (void) int ecc_tests(void) { - printf("NOP"); + fprintf(stderr, "NOP"); return 0; } #endif + +/* $Source: /cvs/libtom/libtomcrypt/testprof/ecc_test.c,v $ */ +/* $Revision: 1.9 $ */ +/* $Date: 2005/06/14 19:43:29 $ */ diff --git a/testprof/mac_test.c b/testprof/mac_test.c index b076d7b6..3c9e9021 100644 --- a/testprof/mac_test.c +++ b/testprof/mac_test.c @@ -29,3 +29,7 @@ int mac_test(void) #endif return 0; } + +/* $Source: /cvs/libtom/libtomcrypt/testprof/mac_test.c,v $ */ +/* $Revision: 1.3 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/testprof/makefile.icc b/testprof/makefile.icc index c9226fba..ff87660f 100644 --- a/testprof/makefile.icc +++ b/testprof/makefile.icc @@ -1,4 +1,4 @@ -CFLAGS += -I../src/headers -I./ -O3 -xP -ip +CFLAGS += -I../src/headers -I./ CC=icc OBJECTS = base64_test.o cipher_hash_test.o der_tests.o dh_tests.o \ diff --git a/testprof/modes_test.c b/testprof/modes_test.c index 46beb8ab..d394267b 100644 --- a/testprof/modes_test.c +++ b/testprof/modes_test.c @@ -19,7 +19,7 @@ int modes_test(void) /* get idx of AES handy */ cipher_idx = find_cipher("aes"); if (cipher_idx == -1) { - printf("test requires AES"); + fprintf(stderr, "test requires AES"); return 1; } @@ -30,7 +30,7 @@ int modes_test(void) l = sizeof(iv2); DO(cbc_getiv(iv2, &l, &cbc)); if (l != 16 || memcmp(iv2, iv, 16)) { - printf("cbc_getiv failed"); + fprintf(stderr, "cbc_getiv failed"); return 1; } DO(cbc_encrypt(pt, ct, 64, &cbc)); @@ -40,7 +40,7 @@ int modes_test(void) zeromem(tmp, sizeof(tmp)); DO(cbc_decrypt(ct, tmp, 64, &cbc)); if (memcmp(tmp, pt, 64) != 0) { - printf("CBC failed"); + fprintf(stderr, "CBC failed"); return 1; } #endif @@ -53,7 +53,7 @@ int modes_test(void) DO(cfb_getiv(iv2, &l, &cfb)); /* note we don't memcmp iv2/iv since cfb_start processes the IV for the first block */ if (l != 16) { - printf("cfb_getiv failed"); + fprintf(stderr, "cfb_getiv failed"); return 1; } DO(cfb_encrypt(pt, ct, 64, &cfb)); @@ -63,7 +63,7 @@ int modes_test(void) zeromem(tmp, sizeof(tmp)); DO(cfb_decrypt(ct, tmp, 64, &cfb)); if (memcmp(tmp, pt, 64) != 0) { - printf("CFB failed"); + fprintf(stderr, "CFB failed"); return 1; } #endif @@ -75,7 +75,7 @@ int modes_test(void) l = sizeof(iv2); DO(ofb_getiv(iv2, &l, &ofb)); if (l != 16 || memcmp(iv2, iv, 16)) { - printf("ofb_getiv failed"); + fprintf(stderr, "ofb_getiv failed"); return 1; } DO(ofb_encrypt(pt, ct, 64, &ofb)); @@ -85,7 +85,7 @@ int modes_test(void) zeromem(tmp, sizeof(tmp)); DO(ofb_decrypt(ct, tmp, 64, &ofb)); if (memcmp(tmp, pt, 64) != 0) { - printf("OFB failed"); + fprintf(stderr, "OFB failed"); return 1; } #endif @@ -93,11 +93,11 @@ int modes_test(void) #ifdef CTR /* test CTR mode */ /* encode the block */ - DO(ctr_start(cipher_idx, iv, key, 16, 0, &ctr)); + DO(ctr_start(cipher_idx, iv, key, 16, 0, CTR_COUNTER_LITTLE_ENDIAN, &ctr)); l = sizeof(iv2); DO(ctr_getiv(iv2, &l, &ctr)); if (l != 16 || memcmp(iv2, iv, 16)) { - printf("ctr_getiv failed"); + fprintf(stderr, "ctr_getiv failed"); return 1; } DO(ctr_encrypt(pt, ct, 57, &ctr)); @@ -107,10 +107,14 @@ int modes_test(void) zeromem(tmp, sizeof(tmp)); DO(ctr_decrypt(ct, tmp, 57, &ctr)); if (memcmp(tmp, pt, 57) != 0) { - printf("CTR failed"); + fprintf(stderr, "CTR failed"); return 1; } #endif return 0; } + +/* $Source: /cvs/libtom/libtomcrypt/testprof/modes_test.c,v $ */ +/* $Revision: 1.6 $ */ +/* $Date: 2005/05/21 12:51:25 $ */ diff --git a/testprof/pkcs_1_test.c b/testprof/pkcs_1_test.c index 40cf6306..1a47d85f 100644 --- a/testprof/pkcs_1_test.c +++ b/testprof/pkcs_1_test.c @@ -14,7 +14,7 @@ int pkcs_1_test(void) prng_idx = find_prng("yarrow"); if (hash_idx == -1 || prng_idx == -1) { - printf("pkcs_1 tests require sha1/yarrow"); + fprintf(stderr, "pkcs_1 tests require sha1/yarrow"); return 1; } @@ -29,30 +29,6 @@ int pkcs_1_test(void) /* random modulus len (v1.5 must be multiple of 8 though arbitrary sizes seem to work) */ modlen = 800 + 8 * (abs(rand()) % 28); - /* PKCS v1.5 testing (encryption) */ - l1 = sizeof(buf[1]); - DO(pkcs_1_v15_es_encode(buf[0], l3, modlen, &yarrow_prng, prng_idx, buf[1], &l1)); - DO(pkcs_1_v15_es_decode(buf[1], l1, modlen, buf[2], l3, &res1)); - if (res1 != 1 || memcmp(buf[0], buf[2], l3)) { - printf("pkcs v1.5 encrypt failed %d, %lu, %lu ", res1, l1, l3); - return 1; - } - - /* PKCS v1.5 testing (signatures) */ - l1 = sizeof(buf[1]); - DO(pkcs_1_v15_sa_encode(buf[0], l3, hash_idx, modlen, buf[1], &l1)); - DO(pkcs_1_v15_sa_decode(buf[0], l3, buf[1], l1, hash_idx, modlen, &res1)); - buf[0][i1 = abs(rand()) % l3] ^= 1; - DO(pkcs_1_v15_sa_decode(buf[0], l3, buf[1], l1, hash_idx, modlen, &res2)); - buf[0][i1] ^= 1; - buf[1][i2 = abs(rand()) % l1] ^= 1; - DO(pkcs_1_v15_sa_decode(buf[0], l3, buf[1], l1, hash_idx, modlen, &res3)); - - if (!(res1 == 1 && res2 == 0 && res3 == 0)) { - printf("pkcs v1.5 sign failed %d %d %d ", res1, res2, res3); - return 1; - } - /* pick a random lparam len [0..16] */ lparamlen = abs(rand()) % 17; @@ -71,16 +47,16 @@ int pkcs_1_test(void) DO(pkcs_1_oaep_decode(buf[1], l1, lparam, lparamlen, modlen, hash_idx, buf[2], &l2, &res1)); if (res1 != 1 || l2 != l3 || memcmp(buf[2], buf[0], l3) != 0) { - printf("Outsize == %lu, should have been %lu, res1 = %d, lparamlen = %lu, msg contents follow.\n", l2, l3, res1, lparamlen); - printf("ORIGINAL:\n"); + fprintf(stderr, "Outsize == %lu, should have been %lu, res1 = %d, lparamlen = %lu, msg contents follow.\n", l2, l3, res1, lparamlen); + fprintf(stderr, "ORIGINAL:\n"); for (x = 0; x < l3; x++) { - printf("%02x ", buf[0][x]); + fprintf(stderr, "%02x ", buf[0][x]); } - printf("\nRESULT:\n"); + fprintf(stderr, "\nRESULT:\n"); for (x = 0; x < l2; x++) { - printf("%02x ", buf[2][x]); + fprintf(stderr, "%02x ", buf[2][x]); } - printf("\n\n"); + fprintf(stderr, "\n\n"); return 1; } @@ -97,7 +73,7 @@ int pkcs_1_test(void) DO(pkcs_1_pss_decode(buf[0], l3, buf[1], l1, saltlen, hash_idx, modlen, &res3)); if (!(res1 == 1 && res2 == 0 && res3 == 0)) { - printf("PSS failed: %d, %d, %d, %lu, %lu\n", res1, res2, res3, l3, saltlen); + fprintf(stderr, "PSS failed: %d, %d, %d, %lu, %lu\n", res1, res2, res3, l3, saltlen); return 1; } } @@ -108,9 +84,13 @@ int pkcs_1_test(void) int pkcs_1_test(void) { - printf("NOP"); + fprintf(stderr, "NOP"); return 0; } #endif + +/* $Source: /cvs/libtom/libtomcrypt/testprof/pkcs_1_test.c,v $ */ +/* $Revision: 1.6 $ */ +/* $Date: 2005/05/21 12:51:25 $ */ diff --git a/testprof/rsa_test.c b/testprof/rsa_test.c index f114e499..4facdcde 100644 --- a/testprof/rsa_test.c +++ b/testprof/rsa_test.c @@ -4,18 +4,125 @@ #define RSA_MSGSIZE 78 +/* These are test keys [see file test.key] that I use to test my import/export against */ +static const unsigned char openssl_private_rsa[] = { + 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xcf, 0x9a, 0xde, 0x64, 0x8a, + 0xda, 0xc8, 0x33, 0x20, 0xa9, 0xd7, 0x83, 0x31, 0x19, 0x54, 0xb2, 0x9a, 0x85, 0xa7, 0xa1, 0xb7, + 0x75, 0x33, 0xb6, 0xa9, 0xac, 0x84, 0x24, 0xb3, 0xde, 0xdb, 0x7d, 0x85, 0x2d, 0x96, 0x65, 0xe5, + 0x3f, 0x72, 0x95, 0x24, 0x9f, 0x28, 0x68, 0xca, 0x4f, 0xdb, 0x44, 0x1c, 0x3e, 0x60, 0x12, 0x8a, + 0xdd, 0x26, 0xa5, 0xeb, 0xff, 0x0b, 0x5e, 0xd4, 0x88, 0x38, 0x49, 0x2a, 0x6e, 0x5b, 0xbf, 0x12, + 0x37, 0x47, 0xbd, 0x05, 0x6b, 0xbc, 0xdb, 0xf3, 0xee, 0xe4, 0x11, 0x8e, 0x41, 0x68, 0x7c, 0x61, + 0x13, 0xd7, 0x42, 0xc8, 0x80, 0xbe, 0x36, 0x8f, 0xdc, 0x08, 0x8b, 0x4f, 0xac, 0xa4, 0xe2, 0x76, + 0x0c, 0xc9, 0x63, 0x6c, 0x49, 0x58, 0x93, 0xed, 0xcc, 0xaa, 0xdc, 0x25, 0x3b, 0x0a, 0x60, 0x3f, + 0x8b, 0x54, 0x3a, 0xc3, 0x4d, 0x31, 0xe7, 0x94, 0xa4, 0x44, 0xfd, 0x02, 0x03, 0x01, 0x00, 0x01, + 0x02, 0x81, 0x81, 0x00, 0xc8, 0x62, 0xb9, 0xea, 0xde, 0x44, 0x53, 0x1d, 0x56, 0x97, 0xd9, 0x97, + 0x9e, 0x1a, 0xcf, 0x30, 0x1e, 0x0a, 0x88, 0x45, 0x86, 0x29, 0x30, 0xa3, 0x4d, 0x9f, 0x61, 0x65, + 0x73, 0xe0, 0xd6, 0x87, 0x8f, 0xb6, 0xf3, 0x06, 0xa3, 0x82, 0xdc, 0x7c, 0xac, 0xfe, 0x9b, 0x28, + 0x9a, 0xae, 0xfd, 0xfb, 0xfe, 0x2f, 0x0e, 0xd8, 0x97, 0x04, 0xe3, 0xbb, 0x1f, 0xd1, 0xec, 0x0d, + 0xba, 0xa3, 0x49, 0x7f, 0x47, 0xac, 0x8a, 0x44, 0x04, 0x7e, 0x86, 0xb7, 0x39, 0x42, 0x3f, 0xad, + 0x1e, 0xb7, 0x0e, 0xa5, 0x51, 0xf4, 0x40, 0x63, 0x1e, 0xfd, 0xbd, 0xea, 0x9f, 0x41, 0x9f, 0xa8, + 0x90, 0x1d, 0x6f, 0x0a, 0x5a, 0x95, 0x13, 0x11, 0x0d, 0x80, 0xaf, 0x5f, 0x64, 0x98, 0x8a, 0x2c, + 0x78, 0x68, 0x65, 0xb0, 0x2b, 0x8b, 0xa2, 0x53, 0x87, 0xca, 0xf1, 0x64, 0x04, 0xab, 0xf2, 0x7b, + 0xdb, 0x83, 0xc8, 0x81, 0x02, 0x41, 0x00, 0xf7, 0xbe, 0x5e, 0x23, 0xc3, 0x32, 0x3f, 0xbf, 0x8b, + 0x8e, 0x3a, 0xee, 0xfc, 0xfc, 0xcb, 0xe5, 0xf7, 0xf1, 0x0b, 0xbc, 0x42, 0x82, 0xae, 0xd5, 0x7a, + 0x3e, 0xca, 0xf7, 0xd5, 0x69, 0x3f, 0x64, 0x25, 0xa2, 0x1f, 0xb7, 0x75, 0x75, 0x05, 0x92, 0x42, + 0xeb, 0xb8, 0xf1, 0xf3, 0x0a, 0x05, 0xe3, 0x94, 0xd1, 0x55, 0x78, 0x35, 0xa0, 0x36, 0xa0, 0x9b, + 0x7c, 0x92, 0x84, 0x6c, 0xdd, 0xdc, 0x4d, 0x02, 0x41, 0x00, 0xd6, 0x86, 0x0e, 0x85, 0x42, 0x0b, + 0x04, 0x08, 0x84, 0x21, 0x60, 0xf0, 0x0e, 0x0d, 0x88, 0xfd, 0x1e, 0x36, 0x10, 0x65, 0x4f, 0x1e, + 0x53, 0xb4, 0x08, 0x72, 0x80, 0x5c, 0x3f, 0x59, 0x66, 0x17, 0xe6, 0x98, 0xf2, 0xe9, 0x6c, 0x7a, + 0x06, 0x4c, 0xac, 0x76, 0x3d, 0xed, 0x8c, 0xa1, 0xce, 0xad, 0x1b, 0xbd, 0xb4, 0x7d, 0x28, 0xbc, + 0xe3, 0x0e, 0x38, 0x8d, 0x99, 0xd8, 0x05, 0xb5, 0xa3, 0x71, 0x02, 0x40, 0x6d, 0xeb, 0xc3, 0x2d, + 0x2e, 0xf0, 0x5e, 0xa4, 0x88, 0x31, 0x05, 0x29, 0x00, 0x8a, 0xd1, 0x95, 0x29, 0x9b, 0x83, 0xcf, + 0x75, 0xdb, 0x31, 0xe3, 0x7a, 0x27, 0xde, 0x3a, 0x74, 0x30, 0x0c, 0x76, 0x4c, 0xd4, 0x50, 0x2a, + 0x40, 0x2d, 0x39, 0xd9, 0x99, 0x63, 0xa9, 0x5d, 0x80, 0xae, 0x53, 0xca, 0x94, 0x3f, 0x05, 0x23, + 0x1e, 0xf8, 0x05, 0x04, 0xe1, 0xb8, 0x35, 0xf2, 0x17, 0xb3, 0xa0, 0x89, 0x02, 0x41, 0x00, 0xab, + 0x90, 0x88, 0xfa, 0x60, 0x08, 0x29, 0x50, 0x9a, 0x43, 0x8b, 0xa0, 0x50, 0xcc, 0xd8, 0x5a, 0xfe, + 0x97, 0x64, 0x63, 0x71, 0x74, 0x22, 0xa3, 0x20, 0x02, 0x5a, 0xcf, 0xeb, 0xc6, 0x16, 0x95, 0x54, + 0xd1, 0xcb, 0xab, 0x8d, 0x1a, 0xc6, 0x00, 0xfa, 0x08, 0x92, 0x9c, 0x71, 0xd5, 0x52, 0x52, 0x35, + 0x96, 0x71, 0x4b, 0x8b, 0x92, 0x0c, 0xd0, 0xe9, 0xbf, 0xad, 0x63, 0x0b, 0xa5, 0xe9, 0xb1, 0x02, + 0x41, 0x00, 0xdc, 0xcc, 0x27, 0xc8, 0xe4, 0xdc, 0x62, 0x48, 0xd5, 0x9b, 0xaf, 0xf5, 0xab, 0x60, + 0xf6, 0x21, 0xfd, 0x53, 0xe2, 0xb7, 0x5d, 0x09, 0xc9, 0x1a, 0xa1, 0x04, 0xa9, 0xfc, 0x61, 0x2c, + 0x5d, 0x04, 0x58, 0x3a, 0x5a, 0x39, 0xf1, 0x4a, 0x21, 0x56, 0x67, 0xfd, 0xcc, 0x20, 0xa3, 0x8f, + 0x78, 0x18, 0x5a, 0x79, 0x3d, 0x2e, 0x8e, 0x7e, 0x86, 0x0a, 0xe6, 0xa8, 0x33, 0xc1, 0x04, 0x17, + 0x4a, 0x9f, }; + + +/*** NOTE: OpenSSL seems to have more to their public key format. I've stripped the extra headers... */ +static const unsigned char openssl_public_rsa[] = { + 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xcf, 0x9a, 0xde, + 0x64, 0x8a, 0xda, 0xc8, 0x33, 0x20, 0xa9, 0xd7, 0x83, 0x31, 0x19, 0x54, 0xb2, 0x9a, 0x85, 0xa7, + 0xa1, 0xb7, 0x75, 0x33, 0xb6, 0xa9, 0xac, 0x84, 0x24, 0xb3, 0xde, 0xdb, 0x7d, 0x85, 0x2d, 0x96, + 0x65, 0xe5, 0x3f, 0x72, 0x95, 0x24, 0x9f, 0x28, 0x68, 0xca, 0x4f, 0xdb, 0x44, 0x1c, 0x3e, 0x60, + 0x12, 0x8a, 0xdd, 0x26, 0xa5, 0xeb, 0xff, 0x0b, 0x5e, 0xd4, 0x88, 0x38, 0x49, 0x2a, 0x6e, 0x5b, + 0xbf, 0x12, 0x37, 0x47, 0xbd, 0x05, 0x6b, 0xbc, 0xdb, 0xf3, 0xee, 0xe4, 0x11, 0x8e, 0x41, 0x68, + 0x7c, 0x61, 0x13, 0xd7, 0x42, 0xc8, 0x80, 0xbe, 0x36, 0x8f, 0xdc, 0x08, 0x8b, 0x4f, 0xac, 0xa4, + 0xe2, 0x76, 0x0c, 0xc9, 0x63, 0x6c, 0x49, 0x58, 0x93, 0xed, 0xcc, 0xaa, 0xdc, 0x25, 0x3b, 0x0a, + 0x60, 0x3f, 0x8b, 0x54, 0x3a, 0xc3, 0x4d, 0x31, 0xe7, 0x94, 0xa4, 0x44, 0xfd, 0x02, 0x03, 0x01, + 0x00, 0x01, }; + +static int rsa_compat_test(void) +{ + rsa_key key; + unsigned char buf[1024]; + unsigned long len; + + /* try reading the key */ + DO(rsa_import(openssl_private_rsa, sizeof(openssl_private_rsa), &key)); + + /* now try to export private/public and compare */ + len = sizeof(buf); + DO(rsa_export(buf, &len, PK_PRIVATE, &key)); + if (len != sizeof(openssl_private_rsa) || memcmp(buf, openssl_private_rsa, len)) { + fprintf(stderr, "RSA private export failed to match OpenSSL output, %lu, %lu\n", len, sizeof(openssl_private_rsa)); + + +{ +int x; +printf("\n\n"); +for (x = 0; x < len; ) { if (buf[x] == openssl_private_rsa[x]) printf("-- "); else printf("%02x ", buf[x]^openssl_private_rsa[x]); if (!(++x & 15)) printf("\n"); } +} +printf("\n\n"); + + return 1; + } + + len = sizeof(buf); + DO(rsa_export(buf, &len, PK_PUBLIC, &key)); + if (len != sizeof(openssl_public_rsa) || memcmp(buf, openssl_public_rsa, len)) { + fprintf(stderr, "RSA(private) public export failed to match OpenSSL output\n"); + return 1; + } + rsa_free(&key); + + /* try reading the public key */ + DO(rsa_import(openssl_public_rsa, sizeof(openssl_public_rsa), &key)); + len = sizeof(buf); + DO(rsa_export(buf, &len, PK_PUBLIC, &key)); + if (len != sizeof(openssl_public_rsa) || memcmp(buf, openssl_public_rsa, len)) { + fprintf(stderr, "RSA(public) public export failed to match OpenSSL output\n"); + return 1; + } + rsa_free(&key); + + return 0; +} + int rsa_test(void) { unsigned char in[1024], out[1024], tmp[1024]; rsa_key key, privKey, pubKey; - int hash_idx, prng_idx, stat, stat2, cnt; - unsigned long rsa_msgsize, len, len2; + int hash_idx, prng_idx, stat, stat2; + unsigned long rsa_msgsize, len, len2, cnt; static unsigned char lparam[] = { 0x01, 0x02, 0x03, 0x04 }; + + if (rsa_compat_test() != 0) { + return 1; + } hash_idx = find_hash("sha1"); prng_idx = find_prng("yarrow"); if (hash_idx == -1 || prng_idx == -1) { - printf("rsa_test requires SHA1 and yarrow"); + fprintf(stderr, "rsa_test requires SHA1 and yarrow"); return 1; } @@ -23,32 +130,32 @@ int rsa_test(void) for (cnt = 0; cnt < 10; cnt++) { DO(rsa_make_key(&yarrow_prng, prng_idx, 1024/8, 65537, &key)); if (mp_count_bits(&key.N) != 1024) { - printf("rsa_1024 key modulus has %d bits\n", mp_count_bits(&key.N)); + fprintf(stderr, "rsa_1024 key modulus has %d bits\n", mp_count_bits(&key.N)); len = mp_unsigned_bin_size(&key.N); mp_to_unsigned_bin(&key.N, tmp); -printf("N == \n"); + fprintf(stderr, "N == \n"); for (cnt = 0; cnt < len; ) { - printf("%02x ", tmp[cnt]); - if (!(++cnt & 15)) printf("\n"); + fprintf(stderr, "%02x ", tmp[cnt]); + if (!(++cnt & 15)) fprintf(stderr, "\n"); } len = mp_unsigned_bin_size(&key.p); mp_to_unsigned_bin(&key.p, tmp); -printf("p == \n"); + fprintf(stderr, "p == \n"); for (cnt = 0; cnt < len; ) { - printf("%02x ", tmp[cnt]); - if (!(++cnt & 15)) printf("\n"); + fprintf(stderr, "%02x ", tmp[cnt]); + if (!(++cnt & 15)) fprintf(stderr, "\n"); } len = mp_unsigned_bin_size(&key.q); mp_to_unsigned_bin(&key.q, tmp); -printf("\nq == \n"); + fprintf(stderr, "\nq == \n"); for (cnt = 0; cnt < len; ) { - printf("%02x ", tmp[cnt]); - if (!(++cnt & 15)) printf("\n"); + fprintf(stderr, "%02x ", tmp[cnt]); + if (!(++cnt & 15)) fprintf(stderr, "\n"); } -printf("\n"); + fprintf(stderr, "\n"); return 1; @@ -57,38 +164,7 @@ printf("\n"); rsa_free(&key); } } - - /* test PKCS #1 v1.5 */ - for (cnt = 0; cnt < 4; cnt++) { - for (rsa_msgsize = 1; rsa_msgsize <= 117; rsa_msgsize++) { - /* make a random key/msg */ - yarrow_read(in, rsa_msgsize, &yarrow_prng); - - len = sizeof(out); - len2 = rsa_msgsize; - - /* encrypt */ - DO(rsa_v15_encrypt_key(in, rsa_msgsize, out, &len, &yarrow_prng, prng_idx, &key)); - DO(rsa_v15_decrypt_key(out, len, tmp, rsa_msgsize, &stat, &key)); - if (stat != 1 || memcmp(tmp, in, rsa_msgsize)) { - printf("PKCS #1 v1.5 encrypt/decrypt failure (rsa_msgsize: %lu, stat: %d)\n", rsa_msgsize, stat); - return 1; - } - } - } - - /* signature */ - len = sizeof(out); - DO(rsa_v15_sign_hash(in, 20, out, &len, hash_idx, &key)); - in[1] ^= 1; - DO(rsa_v15_verify_hash(out, len, in, 20, hash_idx, &stat, &key)); - in[1] ^= 1; - DO(rsa_v15_verify_hash(out, len, in, 20, hash_idx, &stat2, &key)); - if (!(stat == 0 && stat2 == 1)) { - printf("PKCS #1 v1.5 sign/verify failure (stat %d, stat2 %d)\n", stat, stat2); - return 1; - } - + /* encrypt the key (without lparam) */ for (cnt = 0; cnt < 4; cnt++) { for (rsa_msgsize = 1; rsa_msgsize <= 86; rsa_msgsize++) { @@ -105,35 +181,35 @@ printf("\n"); /* change a byte back */ out[8] ^= 1; if (len2 != rsa_msgsize) { - printf("\nrsa_decrypt_key mismatch len %lu (first decrypt)", len2); + fprintf(stderr, "\nrsa_decrypt_key mismatch len %lu (first decrypt)", len2); return 1; } len2 = rsa_msgsize; DO(rsa_decrypt_key(out, len, tmp, &len2, NULL, 0, hash_idx, &stat, &key)); if (!(stat == 1 && stat2 == 0)) { - printf("rsa_decrypt_key failed"); + fprintf(stderr, "rsa_decrypt_key failed"); return 1; } if (len2 != rsa_msgsize || memcmp(tmp, in, rsa_msgsize)) { unsigned long x; - printf("\nrsa_decrypt_key mismatch, len %lu (second decrypt)\n", len2); - printf("Original contents: \n"); + fprintf(stderr, "\nrsa_decrypt_key mismatch, len %lu (second decrypt)\n", len2); + fprintf(stderr, "Original contents: \n"); for (x = 0; x < rsa_msgsize; ) { - printf("%02x ", in[x]); + fprintf(stderr, "%02x ", in[x]); if (!(++x % 16)) { - printf("\n"); + fprintf(stderr, "\n"); } } - printf("\n"); - printf("Output contents: \n"); + fprintf(stderr, "\n"); + fprintf(stderr, "Output contents: \n"); for (x = 0; x < rsa_msgsize; ) { - printf("%02x ", out[x]); + fprintf(stderr, "%02x ", out[x]); if (!(++x % 16)) { - printf("\n"); + fprintf(stderr, "\n"); } } - printf("\n"); + fprintf(stderr, "\n"); return 1; } } @@ -148,7 +224,7 @@ printf("\n"); out[8] ^= 1; DO(rsa_decrypt_key(out, len, tmp, &len2, lparam, sizeof(lparam), hash_idx, &stat2, &key)); if (len2 != rsa_msgsize) { - printf("\nrsa_decrypt_key mismatch len %lu (first decrypt)", len2); + fprintf(stderr, "\nrsa_decrypt_key mismatch len %lu (first decrypt)", len2); return 1; } /* change a byte back */ @@ -157,11 +233,11 @@ printf("\n"); len2 = rsa_msgsize; DO(rsa_decrypt_key(out, len, tmp, &len2, lparam, sizeof(lparam), hash_idx, &stat, &key)); if (!(stat == 1 && stat2 == 0)) { - printf("rsa_decrypt_key failed"); + fprintf(stderr, "rsa_decrypt_key failed"); return 1; } if (len2 != rsa_msgsize || memcmp(tmp, in, rsa_msgsize)) { - printf("rsa_decrypt_key mismatch len %lu", len2); + fprintf(stderr, "rsa_decrypt_key mismatch len %lu", len2); return 1; } } @@ -185,7 +261,7 @@ printf("\n"); DO(rsa_verify_hash(out, len, in, 20, hash_idx, 0, &stat2, &key)); if (!(stat == 1 && stat2 == 0)) { - printf("rsa_verify_hash (unsalted, origKey) failed, %d, %d", stat, stat2); + fprintf(stderr, "rsa_verify_hash (unsalted, origKey) failed, %d, %d", stat, stat2); rsa_free(&key); rsa_free(&pubKey); rsa_free(&privKey); @@ -201,7 +277,7 @@ printf("\n"); DO(rsa_verify_hash(out, len, in, 20, hash_idx, 0, &stat2, &privKey)); if (!(stat == 1 && stat2 == 0)) { - printf("rsa_verify_hash (unsalted, privKey) failed, %d, %d", stat, stat2); + fprintf(stderr, "rsa_verify_hash (unsalted, privKey) failed, %d, %d", stat, stat2); rsa_free(&key); rsa_free(&pubKey); rsa_free(&privKey); @@ -217,7 +293,7 @@ printf("\n"); DO(rsa_verify_hash(out, len, in, 20, hash_idx, 0, &stat2, &pubKey)); if (!(stat == 1 && stat2 == 0)) { - printf("rsa_verify_hash (unsalted, pubkey) failed, %d, %d", stat, stat2); + fprintf(stderr, "rsa_verify_hash (unsalted, pubkey) failed, %d, %d", stat, stat2); rsa_free(&key); rsa_free(&pubKey); rsa_free(&privKey); @@ -233,7 +309,7 @@ printf("\n"); DO(rsa_verify_hash(out, len, in, 20, hash_idx, 8, &stat2, &pubKey)); if (!(stat == 1 && stat2 == 0)) { - printf("rsa_verify_hash (salted) failed, %d, %d", stat, stat2); + fprintf(stderr, "rsa_verify_hash (salted) failed, %d, %d", stat, stat2); rsa_free(&key); rsa_free(&pubKey); rsa_free(&privKey); @@ -251,8 +327,12 @@ printf("\n"); int rsa_test(void) { - printf("NOP"); + fprintf(stderr, "NOP"); return 0; } #endif + +/* $Source: /cvs/libtom/libtomcrypt/testprof/rsa_test.c,v $ */ +/* $Revision: 1.10 $ */ +/* $Date: 2005/06/03 19:18:33 $ */ diff --git a/testprof/store_test.c b/testprof/store_test.c index 41b2f927..5a38d650 100644 --- a/testprof/store_test.c +++ b/testprof/store_test.c @@ -3,13 +3,17 @@ /* Test store/load macros with offsets */ int store_test(void) { - unsigned char buf[24]; + unsigned char buf[256]; int y; ulong32 L, L1; ulong64 LL, LL1; +#ifdef LTC_FAST + int x, z; +#endif - L = 0x12345678UL; for (y = 0; y < 4; y++) { + L = 0x12345678UL; + L1 = 0; STORE32L(L, buf + y); LOAD32L(L1, buf + y); if (L1 != L) { @@ -24,8 +28,9 @@ int store_test(void) } } - LL = CONST64 (0x01020304050607); for (y = 0; y < 8; y++) { + LL = CONST64 (0x01020304050607); + LL1 = 0; STORE64L(LL, buf + y); LOAD64L(LL1, buf + y); if (LL1 != LL) { @@ -40,5 +45,34 @@ int store_test(void) } } +/* test LTC_FAST */ +#ifdef LTC_FAST + y = 16; + + for (z = 0; z < y; z++) { + /* fill y bytes with random */ + yarrow_read(buf+z, y, &yarrow_prng); + yarrow_read(buf+z+y, y, &yarrow_prng); + + /* now XOR it byte for byte */ + for (x = 0; x < y; x++) { + buf[2*y+z+x] = buf[z+x] ^ buf[z+y+x]; + } + + /* now XOR it word for word */ + for (x = 0; x < y; x += sizeof(LTC_FAST_TYPE)) { + *((LTC_FAST_TYPE*)(&buf[3*y+z+x])) = *((LTC_FAST_TYPE*)(&buf[z+x])) ^ *((LTC_FAST_TYPE*)(&buf[z+y+x])); + } + + if (memcmp(&buf[2*y+z], &buf[3*y+z], y)) { + fprintf(stderr, "\nLTC_FAST failed at offset %d\n", z); + return 1; + } + } +#endif return 0; } + +/* $Source: /cvs/libtom/libtomcrypt/testprof/store_test.c,v $ */ +/* $Revision: 1.6 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/testprof/test.c b/testprof/test.c index 9f6df715..5a384213 100644 --- a/testprof/test.c +++ b/testprof/test.c @@ -7,3 +7,7 @@ void run_cmd(int res, int line, char *file, char *cmd) exit(EXIT_FAILURE); } } + +/* $Source: /cvs/libtom/libtomcrypt/testprof/test.c,v $ */ +/* $Revision: 1.6 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/testprof/test.key b/testprof/test.key new file mode 100644 index 00000000..e4996c35 --- /dev/null +++ b/testprof/test.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXgIBAAKBgQDPmt5kitrIMyCp14MxGVSymoWnobd1M7aprIQks97bfYUtlmXl +P3KVJJ8oaMpP20QcPmASit0mpev/C17UiDhJKm5bvxI3R70Fa7zb8+7kEY5BaHxh +E9dCyIC+No/cCItPrKTidgzJY2xJWJPtzKrcJTsKYD+LVDrDTTHnlKRE/QIDAQAB +AoGBAMhiuereRFMdVpfZl54azzAeCohFhikwo02fYWVz4NaHj7bzBqOC3Hys/pso +mq79+/4vDtiXBOO7H9HsDbqjSX9HrIpEBH6GtzlCP60etw6lUfRAYx79veqfQZ+o +kB1vClqVExENgK9fZJiKLHhoZbAri6JTh8rxZASr8nvbg8iBAkEA975eI8MyP7+L +jjru/PzL5ffxC7xCgq7Vej7K99VpP2Qloh+3dXUFkkLruPHzCgXjlNFVeDWgNqCb +fJKEbN3cTQJBANaGDoVCCwQIhCFg8A4NiP0eNhBlTx5TtAhygFw/WWYX5pjy6Wx6 +Bkysdj3tjKHOrRu9tH0ovOMOOI2Z2AW1o3ECQG3rwy0u8F6kiDEFKQCK0ZUpm4PP +ddsx43on3jp0MAx2TNRQKkAtOdmZY6ldgK5TypQ/BSMe+AUE4bg18hezoIkCQQCr +kIj6YAgpUJpDi6BQzNha/pdkY3F0IqMgAlrP68YWlVTRy6uNGsYA+giSnHHVUlI1 +lnFLi5IM0Om/rWMLpemxAkEA3MwnyOTcYkjVm6/1q2D2If1T4rddCckaoQSp/GEs +XQRYOlo58UohVmf9zCCjj3gYWnk9Lo5+hgrmqDPBBBdKnw== +-----END RSA PRIVATE KEY----- diff --git a/testprof/tomcrypt_test.h b/testprof/tomcrypt_test.h index fc284304..2c66bad9 100644 --- a/testprof/tomcrypt_test.h +++ b/testprof/tomcrypt_test.h @@ -71,3 +71,7 @@ void time_encmacs(void); #endif + +/* $Source: /cvs/libtom/libtomcrypt/testprof/tomcrypt_test.h,v $ */ +/* $Revision: 1.8 $ */ +/* $Date: 2005/05/05 14:35:59 $ */ diff --git a/testprof/x86_prof.c b/testprof/x86_prof.c index bcc25f47..997180c8 100644 --- a/testprof/x86_prof.c +++ b/testprof/x86_prof.c @@ -21,10 +21,10 @@ void tally_results(int type) // qsort the results qsort(results, no_results, sizeof(struct list), &sorter); - printf("\n"); + fprintf(stderr, "\n"); if (type == 0) { for (x = 0; x < no_results; x++) { - printf("%-20s: Schedule at %6lu\n", cipher_descriptor[results[x].id].name, (unsigned long)results[x].spd1); + fprintf(stderr, "%-20s: Schedule at %6lu\n", cipher_descriptor[results[x].id].name, (unsigned long)results[x].spd1); } } else if (type == 1) { for (x = 0; x < no_results; x++) { @@ -42,7 +42,7 @@ void tally_results(int type) /* RDTSC from Scott Duplichan */ ulong64 rdtsc (void) { - #if defined __GNUC__ + #if defined __GNUC__ && !defined(LTC_NO_ASM) #ifdef INTEL_CC ulong64 a; asm ( " rdtsc ":"=A"(a)); @@ -62,11 +62,11 @@ ulong64 rdtsc (void) #endif // Microsoft and Intel Windows compilers - #elif defined _M_IX86 + #elif defined _M_IX86 && !defined(LTC_NO_ASM) __asm rdtsc - #elif defined _M_AMD64 + #elif defined _M_AMD64 && !defined(LTC_NO_ASM) return __rdtsc (); - #elif defined _M_IA64 + #elif defined _M_IA64 && !defined(LTC_NO_ASM) #if defined __INTEL_COMPILER #include <ia64intrin.h> #endif @@ -104,7 +104,7 @@ void init_timer(void) c2 = (t2 > c2) ? t2 : c2; } skew = c2 - c1; - printf("Clock Skew: %lu\n", (unsigned long)skew); + fprintf(stderr, "Clock Skew: %lu\n", (unsigned long)skew); } void reg_algs(void) @@ -199,7 +199,7 @@ void reg_algs(void) #ifdef CHC_HASH register_hash(&chc_desc); if ((err = chc_register(register_cipher(&aes_desc))) != CRYPT_OK) { - printf("chc_register error: %s\n", error_to_string(err)); + fprintf(stderr, "chc_register error: %s\n", error_to_string(err)); exit(EXIT_FAILURE); } #endif @@ -231,7 +231,7 @@ int time_keysched(void) int (*func) (const unsigned char *, int , int , symmetric_key *); unsigned char key[MAXBLOCKSIZE]; - printf ("\n\nKey Schedule Time Trials for the Symmetric Ciphers:\n(Times are cycles per key)\n"); + fprintf(stderr, "\n\nKey Schedule Time Trials for the Symmetric Ciphers:\n(Times are cycles per key)\n"); no_results = 0; for (x = 0; cipher_descriptor[x].name != NULL; x++) { #define DO1(k) func(k, kl, 0, &skey); @@ -249,7 +249,7 @@ int time_keysched(void) t1 = c1 - skew; results[no_results].spd1 = results[no_results].avg = t1; results[no_results++].id = x; - printf("."); fflush(stdout); + fprintf(stderr, "."); fflush(stdout); #undef DO1 } @@ -266,7 +266,7 @@ int time_cipher(void) unsigned char key[MAXBLOCKSIZE], pt[4096]; int err; - printf ("\n\nECB Time Trials for the Symmetric Ciphers:\n"); + fprintf(stderr, "\n\nECB Time Trials for the Symmetric Ciphers:\n"); no_results = 0; for (x = 0; cipher_descriptor[x].name != NULL; x++) { ecb_start(x, key, cipher_descriptor[x].min_key_length, 0, &ecb); @@ -318,7 +318,7 @@ int time_cipher(void) results[no_results].spd2 = a2/(sizeof(pt)/cipher_descriptor[x].block_length); results[no_results].avg = (results[no_results].spd1 + results[no_results].spd2+1)/2; ++no_results; - printf("."); fflush(stdout); + fprintf(stderr, "."); fflush(stdout); #undef DO2 #undef DO1 @@ -337,7 +337,7 @@ int time_cipher2(void) unsigned char key[MAXBLOCKSIZE], pt[4096]; int err; - printf ("\n\nCBC Time Trials for the Symmetric Ciphers:\n"); + fprintf(stderr, "\n\nCBC Time Trials for the Symmetric Ciphers:\n"); no_results = 0; for (x = 0; cipher_descriptor[x].name != NULL; x++) { cbc_start(x, pt, key, cipher_descriptor[x].min_key_length, 0, &cbc); @@ -389,7 +389,7 @@ int time_cipher2(void) results[no_results].spd2 = a2/(sizeof(pt)/cipher_descriptor[x].block_length); results[no_results].avg = (results[no_results].spd1 + results[no_results].spd2+1)/2; ++no_results; - printf("."); fflush(stdout); + fprintf(stderr, "."); fflush(stdout); #undef DO2 #undef DO1 @@ -399,7 +399,7 @@ int time_cipher2(void) return 0; } #else -int time_cipher2(void) { printf("NO CBC\n"); return 0; } +int time_cipher2(void) { fprintf(stderr, "NO CBC\n"); return 0; } #endif #ifdef CTR @@ -411,10 +411,10 @@ int time_cipher3(void) unsigned char key[MAXBLOCKSIZE], pt[4096]; int err; - printf ("\n\nCTR Time Trials for the Symmetric Ciphers:\n"); + fprintf(stderr, "\n\nCTR Time Trials for the Symmetric Ciphers:\n"); no_results = 0; for (x = 0; cipher_descriptor[x].name != NULL; x++) { - ctr_start(x, pt, key, cipher_descriptor[x].min_key_length, 0, &ctr); + ctr_start(x, pt, key, cipher_descriptor[x].min_key_length, 0, CTR_COUNTER_LITTLE_ENDIAN, &ctr); /* sanity check on cipher */ if ((err = cipher_descriptor[x].test()) != CRYPT_OK) { @@ -463,7 +463,7 @@ int time_cipher3(void) results[no_results].spd2 = a2/(sizeof(pt)/cipher_descriptor[x].block_length); results[no_results].avg = (results[no_results].spd1 + results[no_results].spd2+1)/2; ++no_results; - printf("."); fflush(stdout); + fprintf(stderr, "."); fflush(stdout); #undef DO2 #undef DO1 @@ -473,7 +473,7 @@ int time_cipher3(void) return 0; } #else -int time_cipher3(void) { printf("NO CTR\n"); return 0; } +int time_cipher3(void) { fprintf(stderr, "NO CTR\n"); return 0; } #endif int time_hash(void) @@ -485,7 +485,7 @@ int time_hash(void) unsigned char pt[MAXBLOCKSIZE]; - printf ("\n\nHASH Time Trials for:\n"); + fprintf(stderr, "\n\nHASH Time Trials for:\n"); no_results = 0; for (x = 0; hash_descriptor[x].name != NULL; x++) { @@ -518,7 +518,7 @@ int time_hash(void) results[no_results].id = x; results[no_results].spd1 = results[no_results].avg = t1; ++no_results; - printf("."); fflush(stdout); + fprintf(stderr, "."); fflush(stdout); #undef DO2 #undef DO1 } @@ -534,7 +534,7 @@ void time_mult(void) unsigned long x, y; mp_int a, b, c; - printf("Timing Multiplying:\n"); + fprintf(stderr, "Timing Multiplying:\n"); mp_init_multi(&a,&b,&c,NULL); for (x = 128/DIGIT_BIT; x <= 1536/DIGIT_BIT; x += 128/DIGIT_BIT) { mp_rand(&a, x); @@ -551,7 +551,7 @@ void time_mult(void) t1 = (t_read() - t1)>>1; if (t1 < t2) t2 = t1; } - printf("%4lu bits: %9llu cycles\n", x*DIGIT_BIT, t2); + fprintf(stderr, "%4lu bits: %9llu cycles\n", x*DIGIT_BIT, t2); } mp_clear_multi(&a,&b,&c,NULL); @@ -565,7 +565,7 @@ void time_sqr(void) unsigned long x, y; mp_int a, b; - printf("Timing Squaring:\n"); + fprintf(stderr, "Timing Squaring:\n"); mp_init_multi(&a,&b,NULL); for (x = 128/DIGIT_BIT; x <= 1536/DIGIT_BIT; x += 128/DIGIT_BIT) { mp_rand(&a, x); @@ -581,7 +581,7 @@ void time_sqr(void) t1 = (t_read() - t1)>>1; if (t1 < t2) t2 = t1; } - printf("%4lu bits: %9llu cycles\n", x*DIGIT_BIT, t2); + fprintf(stderr, "%4lu bits: %9llu cycles\n", x*DIGIT_BIT, t2); } mp_clear_multi(&a,&b,NULL); @@ -589,8 +589,8 @@ void time_sqr(void) #undef DO2 } #else -void time_mult(void) { printf("NO MULT\n"); } -void time_sqr(void) { printf("NO SQR\n"); } +void time_mult(void) { fprintf(stderr, "NO MULT\n"); } +void time_sqr(void) { fprintf(stderr, "NO SQR\n"); } #endif void time_prng(void) @@ -601,7 +601,7 @@ void time_prng(void) unsigned long x, y; int err; - printf("Timing PRNGs (cycles/byte output, cycles add_entropy (32 bytes) :\n"); + fprintf(stderr, "Timing PRNGs (cycles/byte output, cycles add_entropy (32 bytes) :\n"); for (x = 0; prng_descriptor[x].name != NULL; x++) { /* sanity check on prng */ @@ -616,7 +616,7 @@ void time_prng(void) prng_descriptor[x].ready(&tprng); t2 = -1; -#define DO1 if (prng_descriptor[x].read(buf, 4096, &tprng) != 4096) { printf("\n\nERROR READ != 4096\n\n"); exit(EXIT_FAILURE); } +#define DO1 if (prng_descriptor[x].read(buf, 4096, &tprng) != 4096) { fprintf(stderr, "\n\nERROR READ != 4096\n\n"); exit(EXIT_FAILURE); } #define DO2 DO1 DO1 for (y = 0; y < 10000; y++) { t_start(); @@ -625,7 +625,7 @@ void time_prng(void) t1 = (t_read() - t1)>>1; if (t1 < t2) t2 = t1; } - printf("%20s: %5llu ", prng_descriptor[x].name, t2>>12); + fprintf(stderr, "%20s: %5llu ", prng_descriptor[x].name, t2>>12); #undef DO2 #undef DO1 @@ -638,7 +638,7 @@ void time_prng(void) t1 = (t_read() - t1)>>1; if (t1 < t2) t2 = t1; } - printf("%5llu\n", t2); + fprintf(stderr, "%5llu\n", t2); #undef DO2 #undef DO1 @@ -672,7 +672,7 @@ void time_rsa(void) } } t2 >>= 4; - printf("RSA-%lu make_key took %15llu cycles\n", x, t2); + fprintf(stderr, "RSA-%lu make_key took %15llu cycles\n", x, t2); t2 = 0; for (y = 0; y < 16; y++) { @@ -689,7 +689,7 @@ void time_rsa(void) t2 += t1; } t2 >>= 4; - printf("RSA-%lu encrypt_key took %15llu cycles\n", x, t2); + fprintf(stderr, "RSA-%lu encrypt_key took %15llu cycles\n", x, t2); t2 = 0; for (y = 0; y < 16; y++) { @@ -705,14 +705,14 @@ void time_rsa(void) t2 += t1; } t2 >>= 4; - printf("RSA-%lu decrypt_key took %15llu cycles\n", x, t2); + fprintf(stderr, "RSA-%lu decrypt_key took %15llu cycles\n", x, t2); rsa_free(&key); } } #else -void time_rsa(void) { printf("NO RSA\n"); } +void time_rsa(void) { fprintf(stderr, "NO RSA\n"); } #endif #ifdef MECC @@ -724,7 +724,7 @@ void time_ecc(void) unsigned char buf[2][4096]; unsigned long i, x, y, z; int err; - static unsigned long sizes[] = {160/8, 256/8, 521/8, 100000}; + static unsigned long sizes[] = {192/8, 256/8, 384/8, 521/8, 100000}; for (x = sizes[i=0]; x < 100000; x = sizes[++i]) { t2 = 0; @@ -743,7 +743,7 @@ void time_ecc(void) } } t2 >>= 4; - printf("ECC-%lu make_key took %15llu cycles\n", x*8, t2); + fprintf(stderr, "ECC-%lu make_key took %15llu cycles\n", x*8, t2); t2 = 0; for (y = 0; y < 16; y++) { @@ -759,12 +759,12 @@ void time_ecc(void) t2 += t1; } t2 >>= 4; - printf("ECC-%lu encrypt_key took %15llu cycles\n", x*8, t2); + fprintf(stderr, "ECC-%lu encrypt_key took %15llu cycles\n", x*8, t2); ecc_free(&key); } } #else -void time_ecc(void) { printf("NO ECC\n"); } +void time_ecc(void) { fprintf(stderr, "NO ECC\n"); } #endif #ifdef MDH @@ -795,7 +795,7 @@ void time_dh(void) } } t2 >>= 4; - printf("DH-%4lu make_key took %15llu cycles\n", x*8, t2); + fprintf(stderr, "DH-%4lu make_key took %15llu cycles\n", x*8, t2); t2 = 0; for (y = 0; y < 16; y++) { @@ -811,12 +811,12 @@ void time_dh(void) t2 += t1; } t2 >>= 4; - printf("DH-%4lu encrypt_key took %15llu cycles\n", x*8, t2); + fprintf(stderr, "DH-%4lu encrypt_key took %15llu cycles\n", x*8, t2); dh_free(&key); } } #else -void time_dh(void) { printf("NO DH\n"); } +void time_dh(void) { fprintf(stderr, "NO DH\n"); } #endif void time_macs_(unsigned long MAC_SIZE) @@ -826,7 +826,7 @@ void time_macs_(unsigned long MAC_SIZE) unsigned long x, z; int err, cipher_idx, hash_idx; - printf("\nMAC Timings (cycles/byte on %dKB blocks):\n", MAC_SIZE); + fprintf(stderr, "\nMAC Timings (cycles/byte on %luKB blocks):\n", MAC_SIZE); buf = XMALLOC(MAC_SIZE*1024); if (buf == NULL) { @@ -853,7 +853,7 @@ void time_macs_(unsigned long MAC_SIZE) t1 = t_read() - t1; if (t1 < t2) t2 = t1; } - printf("OMAC-AES\t\t%9llu\n", t2/(MAC_SIZE*1024)); + fprintf(stderr, "OMAC-AES\t\t%9llu\n", t2/(ulong64)(MAC_SIZE*1024)); #endif #ifdef PMAC @@ -869,7 +869,7 @@ void time_macs_(unsigned long MAC_SIZE) t1 = t_read() - t1; if (t1 < t2) t2 = t1; } - printf("PMAC-AES\t\t%9llu\n", t2/(MAC_SIZE*1024)); + fprintf(stderr, "PMAC-AES\t\t%9llu\n", t2/(ulong64)(MAC_SIZE*1024)); #endif #ifdef PELICAN @@ -885,7 +885,7 @@ void time_macs_(unsigned long MAC_SIZE) t1 = t_read() - t1; if (t1 < t2) t2 = t1; } - printf("PELICAN \t\t%9llu\n", t2/(MAC_SIZE*1024)); + fprintf(stderr, "PELICAN \t\t%9llu\n", t2/(ulong64)(MAC_SIZE*1024)); #endif #ifdef HMAC @@ -901,7 +901,7 @@ void time_macs_(unsigned long MAC_SIZE) t1 = t_read() - t1; if (t1 < t2) t2 = t1; } - printf("HMAC-MD5\t\t%9llu\n", t2/(MAC_SIZE*1024)); + fprintf(stderr, "HMAC-MD5\t\t%9llu\n", t2/(ulong64)(MAC_SIZE*1024)); #endif XFREE(buf); @@ -921,7 +921,7 @@ void time_encmacs_(unsigned long MAC_SIZE) unsigned long x, z; int err, cipher_idx; - printf("\nENC+MAC Timings (zero byte AAD, 16 byte IV, cycles/byte on %dKB blocks):\n", MAC_SIZE); + fprintf(stderr, "\nENC+MAC Timings (zero byte AAD, 16 byte IV, cycles/byte on %luKB blocks):\n", MAC_SIZE); buf = XMALLOC(MAC_SIZE*1024); if (buf == NULL) { @@ -948,7 +948,7 @@ void time_encmacs_(unsigned long MAC_SIZE) t1 = t_read() - t1; if (t1 < t2) t2 = t1; } - printf("EAX \t\t%9llu\n", t2/(MAC_SIZE*1024)); + fprintf(stderr, "EAX \t\t%9llu\n", t2/(ulong64)(MAC_SIZE*1024)); #endif #ifdef OCB_MODE @@ -964,7 +964,7 @@ void time_encmacs_(unsigned long MAC_SIZE) t1 = t_read() - t1; if (t1 < t2) t2 = t1; } - printf("OCB \t\t%9llu\n", t2/(MAC_SIZE*1024)); + fprintf(stderr, "OCB \t\t%9llu\n", t2/(ulong64)(MAC_SIZE*1024)); #endif #ifdef CCM_MODE @@ -980,7 +980,7 @@ void time_encmacs_(unsigned long MAC_SIZE) t1 = t_read() - t1; if (t1 < t2) t2 = t1; } - printf("CCM \t\t%9llu\n", t2/(MAC_SIZE*1024)); + fprintf(stderr, "CCM \t\t%9llu\n", t2/(ulong64)(MAC_SIZE*1024)); #endif #ifdef GCM_MODE @@ -996,12 +996,12 @@ void time_encmacs_(unsigned long MAC_SIZE) t1 = t_read() - t1; if (t1 < t2) t2 = t1; } - printf("GCM (no-precomp)\t%9llu\n", t2/(MAC_SIZE*1024)); + fprintf(stderr, "GCM (no-precomp)\t%9llu\n", t2/(ulong64)(MAC_SIZE*1024)); { gcm_state gcm; - if ((err = gcm_init(&gcm, cipher_idx, key, 16)) != CRYPT_OK) { printf("gcm_init: %s\n", error_to_string(err)); exit(EXIT_FAILURE); } + if ((err = gcm_init(&gcm, cipher_idx, key, 16)) != CRYPT_OK) { fprintf(stderr, "gcm_init: %s\n", error_to_string(err)); exit(EXIT_FAILURE); } t2 = -1; for (x = 0; x < 10000; x++) { t_start(); @@ -1031,7 +1031,7 @@ void time_encmacs_(unsigned long MAC_SIZE) t1 = t_read() - t1; if (t1 < t2) t2 = t1; } - printf("GCM (precomp)\t%9llu\n", t2/(MAC_SIZE*1024)); + fprintf(stderr, "GCM (precomp)\t%9llu\n", t2/(ulong64)(MAC_SIZE*1024)); } #endif @@ -1044,3 +1044,7 @@ void time_encmacs(void) time_encmacs_(4); time_encmacs_(32); } + +/* $Source: /cvs/libtom/libtomcrypt/testprof/x86_prof.c,v $ */ +/* $Revision: 1.16 $ */ +/* $Date: 2005/06/14 20:44:23 $ */ -- GitLab