Codebase list libcryptx-perl / 3c8581c
ltc sync Karel Miko 6 years ago
19 changed file(s) with 982 addition(s) and 81 deletion(s). Raw diff Collapse all Expand all
4343 ltc/misc/error_to_string.o ltc/misc/mem_neq.o ltc/misc/pk_get_oid.o ltc/misc/zeromem.o \
4444 ltc/misc/base64/base64_decode.o ltc/misc/base64/base64_encode.o ltc/misc/crypt/crypt.o \
4545 ltc/misc/crypt/crypt_argchk.o ltc/misc/crypt/crypt_cipher_descriptor.o ltc/misc/crypt/crypt_cipher_is_valid.o \
46 ltc/misc/crypt/crypt_find_cipher.o ltc/misc/crypt/crypt_find_cipher_any.o ltc/misc/crypt/crypt_find_cipher_id.o \
47 ltc/misc/crypt/crypt_find_hash.o ltc/misc/crypt/crypt_find_hash_any.o ltc/misc/crypt/crypt_find_hash_id.o \
48 ltc/misc/crypt/crypt_find_hash_oid.o ltc/misc/crypt/crypt_find_prng.o ltc/misc/crypt/crypt_fsa.o \
49 ltc/misc/crypt/crypt_hash_descriptor.o ltc/misc/crypt/crypt_hash_is_valid.o ltc/misc/crypt/crypt_inits.o \
50 ltc/misc/crypt/crypt_ltc_mp_descriptor.o ltc/misc/crypt/crypt_prng_descriptor.o ltc/misc/crypt/crypt_prng_is_valid.o \
46 ltc/misc/crypt/crypt_constants.o ltc/misc/crypt/crypt_find_cipher.o ltc/misc/crypt/crypt_find_cipher_any.o \
47 ltc/misc/crypt/crypt_find_cipher_id.o ltc/misc/crypt/crypt_find_hash.o ltc/misc/crypt/crypt_find_hash_any.o \
48 ltc/misc/crypt/crypt_find_hash_id.o ltc/misc/crypt/crypt_find_hash_oid.o ltc/misc/crypt/crypt_find_prng.o \
49 ltc/misc/crypt/crypt_fsa.o ltc/misc/crypt/crypt_hash_descriptor.o ltc/misc/crypt/crypt_hash_is_valid.o \
50 ltc/misc/crypt/crypt_inits.o ltc/misc/crypt/crypt_ltc_mp_descriptor.o ltc/misc/crypt/crypt_prng_descriptor.o \
51 ltc/misc/crypt/crypt_prng_is_valid.o ltc/misc/crypt/crypt_prng_rng_descriptor.o ltc/misc/crypt/crypt_register_all_ciphers.o \
52 ltc/misc/crypt/crypt_register_all_hashes.o ltc/misc/crypt/crypt_register_all_prngs.o \
5153 ltc/misc/crypt/crypt_register_cipher.o ltc/misc/crypt/crypt_register_hash.o ltc/misc/crypt/crypt_register_prng.o \
52 ltc/misc/crypt/crypt_unregister_cipher.o ltc/misc/crypt/crypt_unregister_hash.o ltc/misc/crypt/crypt_unregister_prng.o \
53 ltc/misc/hkdf/hkdf.o ltc/misc/pkcs5/pkcs_5_1.o ltc/misc/pkcs5/pkcs_5_2.o ltc/modes/cbc/cbc_decrypt.o \
54 ltc/modes/cbc/cbc_done.o ltc/modes/cbc/cbc_encrypt.o ltc/modes/cbc/cbc_getiv.o ltc/modes/cbc/cbc_setiv.o \
55 ltc/modes/cbc/cbc_start.o ltc/modes/cfb/cfb_decrypt.o ltc/modes/cfb/cfb_done.o ltc/modes/cfb/cfb_encrypt.o \
56 ltc/modes/cfb/cfb_getiv.o ltc/modes/cfb/cfb_setiv.o ltc/modes/cfb/cfb_start.o ltc/modes/ctr/ctr_decrypt.o \
57 ltc/modes/ctr/ctr_done.o ltc/modes/ctr/ctr_encrypt.o ltc/modes/ctr/ctr_getiv.o ltc/modes/ctr/ctr_setiv.o \
58 ltc/modes/ctr/ctr_start.o ltc/modes/ecb/ecb_decrypt.o ltc/modes/ecb/ecb_done.o ltc/modes/ecb/ecb_encrypt.o \
59 ltc/modes/ecb/ecb_start.o ltc/modes/ofb/ofb_decrypt.o ltc/modes/ofb/ofb_done.o ltc/modes/ofb/ofb_encrypt.o \
60 ltc/modes/ofb/ofb_getiv.o ltc/modes/ofb/ofb_setiv.o ltc/modes/ofb/ofb_start.o ltc/pk/asn1/der/bit/der_decode_bit_string.o \
61 ltc/pk/asn1/der/bit/der_decode_raw_bit_string.o ltc/pk/asn1/der/bit/der_encode_bit_string.o \
62 ltc/pk/asn1/der/bit/der_encode_raw_bit_string.o ltc/pk/asn1/der/bit/der_length_bit_string.o \
63 ltc/pk/asn1/der/boolean/der_decode_boolean.o ltc/pk/asn1/der/boolean/der_encode_boolean.o \
64 ltc/pk/asn1/der/boolean/der_length_boolean.o ltc/pk/asn1/der/choice/der_decode_choice.o \
65 ltc/pk/asn1/der/generalizedtime/der_decode_generalizedtime.o ltc/pk/asn1/der/generalizedtime/der_encode_generalizedtime.o \
66 ltc/pk/asn1/der/generalizedtime/der_length_generalizedtime.o ltc/pk/asn1/der/ia5/der_decode_ia5_string.o \
67 ltc/pk/asn1/der/ia5/der_encode_ia5_string.o ltc/pk/asn1/der/ia5/der_length_ia5_string.o \
68 ltc/pk/asn1/der/integer/der_decode_integer.o ltc/pk/asn1/der/integer/der_encode_integer.o \
69 ltc/pk/asn1/der/integer/der_length_integer.o ltc/pk/asn1/der/object_identifier/der_decode_object_identifier.o \
70 ltc/pk/asn1/der/object_identifier/der_encode_object_identifier.o ltc/pk/asn1/der/object_identifier/der_length_object_identifier.o \
71 ltc/pk/asn1/der/octet/der_decode_octet_string.o ltc/pk/asn1/der/octet/der_encode_octet_string.o \
72 ltc/pk/asn1/der/octet/der_length_octet_string.o ltc/pk/asn1/der/printable_string/der_decode_printable_string.o \
73 ltc/pk/asn1/der/printable_string/der_encode_printable_string.o ltc/pk/asn1/der/printable_string/der_length_printable_string.o \
74 ltc/pk/asn1/der/sequence/der_decode_sequence_ex.o ltc/pk/asn1/der/sequence/der_decode_sequence_flexi.o \
75 ltc/pk/asn1/der/sequence/der_decode_sequence_multi.o ltc/pk/asn1/der/sequence/der_decode_subject_public_key_info.o \
76 ltc/pk/asn1/der/sequence/der_encode_sequence_ex.o ltc/pk/asn1/der/sequence/der_encode_sequence_multi.o \
77 ltc/pk/asn1/der/sequence/der_encode_subject_public_key_info.o ltc/pk/asn1/der/sequence/der_length_sequence.o \
78 ltc/pk/asn1/der/sequence/der_sequence_free.o ltc/pk/asn1/der/set/der_encode_set.o \
54 ltc/misc/crypt/crypt_sizes.o ltc/misc/crypt/crypt_unregister_cipher.o ltc/misc/crypt/crypt_unregister_hash.o \
55 ltc/misc/crypt/crypt_unregister_prng.o ltc/misc/hkdf/hkdf.o ltc/misc/pkcs5/pkcs_5_1.o \
56 ltc/misc/pkcs5/pkcs_5_2.o ltc/modes/cbc/cbc_decrypt.o ltc/modes/cbc/cbc_done.o ltc/modes/cbc/cbc_encrypt.o \
57 ltc/modes/cbc/cbc_getiv.o ltc/modes/cbc/cbc_setiv.o ltc/modes/cbc/cbc_start.o ltc/modes/cfb/cfb_decrypt.o \
58 ltc/modes/cfb/cfb_done.o ltc/modes/cfb/cfb_encrypt.o ltc/modes/cfb/cfb_getiv.o ltc/modes/cfb/cfb_setiv.o \
59 ltc/modes/cfb/cfb_start.o ltc/modes/ctr/ctr_decrypt.o ltc/modes/ctr/ctr_done.o ltc/modes/ctr/ctr_encrypt.o \
60 ltc/modes/ctr/ctr_getiv.o ltc/modes/ctr/ctr_setiv.o ltc/modes/ctr/ctr_start.o ltc/modes/ecb/ecb_decrypt.o \
61 ltc/modes/ecb/ecb_done.o ltc/modes/ecb/ecb_encrypt.o ltc/modes/ecb/ecb_start.o ltc/modes/ofb/ofb_decrypt.o \
62 ltc/modes/ofb/ofb_done.o ltc/modes/ofb/ofb_encrypt.o ltc/modes/ofb/ofb_getiv.o ltc/modes/ofb/ofb_setiv.o \
63 ltc/modes/ofb/ofb_start.o ltc/pk/asn1/der/bit/der_decode_bit_string.o ltc/pk/asn1/der/bit/der_decode_raw_bit_string.o \
64 ltc/pk/asn1/der/bit/der_encode_bit_string.o ltc/pk/asn1/der/bit/der_encode_raw_bit_string.o \
65 ltc/pk/asn1/der/bit/der_length_bit_string.o ltc/pk/asn1/der/boolean/der_decode_boolean.o \
66 ltc/pk/asn1/der/boolean/der_encode_boolean.o ltc/pk/asn1/der/boolean/der_length_boolean.o \
67 ltc/pk/asn1/der/choice/der_decode_choice.o ltc/pk/asn1/der/generalizedtime/der_decode_generalizedtime.o \
68 ltc/pk/asn1/der/generalizedtime/der_encode_generalizedtime.o ltc/pk/asn1/der/generalizedtime/der_length_generalizedtime.o \
69 ltc/pk/asn1/der/ia5/der_decode_ia5_string.o ltc/pk/asn1/der/ia5/der_encode_ia5_string.o \
70 ltc/pk/asn1/der/ia5/der_length_ia5_string.o ltc/pk/asn1/der/integer/der_decode_integer.o \
71 ltc/pk/asn1/der/integer/der_encode_integer.o ltc/pk/asn1/der/integer/der_length_integer.o \
72 ltc/pk/asn1/der/object_identifier/der_decode_object_identifier.o ltc/pk/asn1/der/object_identifier/der_encode_object_identifier.o \
73 ltc/pk/asn1/der/object_identifier/der_length_object_identifier.o ltc/pk/asn1/der/octet/der_decode_octet_string.o \
74 ltc/pk/asn1/der/octet/der_encode_octet_string.o ltc/pk/asn1/der/octet/der_length_octet_string.o \
75 ltc/pk/asn1/der/printable_string/der_decode_printable_string.o ltc/pk/asn1/der/printable_string/der_encode_printable_string.o \
76 ltc/pk/asn1/der/printable_string/der_length_printable_string.o ltc/pk/asn1/der/sequence/der_decode_sequence_ex.o \
77 ltc/pk/asn1/der/sequence/der_decode_sequence_flexi.o ltc/pk/asn1/der/sequence/der_decode_sequence_multi.o \
78 ltc/pk/asn1/der/sequence/der_decode_subject_public_key_info.o ltc/pk/asn1/der/sequence/der_encode_sequence_ex.o \
79 ltc/pk/asn1/der/sequence/der_encode_sequence_multi.o ltc/pk/asn1/der/sequence/der_encode_subject_public_key_info.o \
80 ltc/pk/asn1/der/sequence/der_length_sequence.o ltc/pk/asn1/der/sequence/der_sequence_free.o \
81 ltc/pk/asn1/der/sequence/der_sequence_shrink.o ltc/pk/asn1/der/set/der_encode_set.o \
7982 ltc/pk/asn1/der/set/der_encode_setof.o ltc/pk/asn1/der/short_integer/der_decode_short_integer.o \
8083 ltc/pk/asn1/der/short_integer/der_encode_short_integer.o ltc/pk/asn1/der/short_integer/der_length_short_integer.o \
8184 ltc/pk/asn1/der/teletex_string/der_decode_teletex_string.o ltc/pk/asn1/der/teletex_string/der_length_teletex_string.o \
4646 ltc/misc/error_to_string.obj ltc/misc/mem_neq.obj ltc/misc/pk_get_oid.obj ltc/misc/zeromem.obj \
4747 ltc/misc/base64/base64_decode.obj ltc/misc/base64/base64_encode.obj ltc/misc/crypt/crypt.obj \
4848 ltc/misc/crypt/crypt_argchk.obj ltc/misc/crypt/crypt_cipher_descriptor.obj ltc/misc/crypt/crypt_cipher_is_valid.obj \
49 ltc/misc/crypt/crypt_find_cipher.obj ltc/misc/crypt/crypt_find_cipher_any.obj ltc/misc/crypt/crypt_find_cipher_id.obj \
50 ltc/misc/crypt/crypt_find_hash.obj ltc/misc/crypt/crypt_find_hash_any.obj ltc/misc/crypt/crypt_find_hash_id.obj \
51 ltc/misc/crypt/crypt_find_hash_oid.obj ltc/misc/crypt/crypt_find_prng.obj ltc/misc/crypt/crypt_fsa.obj \
52 ltc/misc/crypt/crypt_hash_descriptor.obj ltc/misc/crypt/crypt_hash_is_valid.obj ltc/misc/crypt/crypt_inits.obj \
53 ltc/misc/crypt/crypt_ltc_mp_descriptor.obj ltc/misc/crypt/crypt_prng_descriptor.obj \
54 ltc/misc/crypt/crypt_prng_is_valid.obj ltc/misc/crypt/crypt_register_cipher.obj ltc/misc/crypt/crypt_register_hash.obj \
55 ltc/misc/crypt/crypt_register_prng.obj ltc/misc/crypt/crypt_unregister_cipher.obj \
56 ltc/misc/crypt/crypt_unregister_hash.obj ltc/misc/crypt/crypt_unregister_prng.obj \
57 ltc/misc/hkdf/hkdf.obj ltc/misc/pkcs5/pkcs_5_1.obj ltc/misc/pkcs5/pkcs_5_2.obj ltc/modes/cbc/cbc_decrypt.obj \
58 ltc/modes/cbc/cbc_done.obj ltc/modes/cbc/cbc_encrypt.obj ltc/modes/cbc/cbc_getiv.obj \
59 ltc/modes/cbc/cbc_setiv.obj ltc/modes/cbc/cbc_start.obj ltc/modes/cfb/cfb_decrypt.obj \
60 ltc/modes/cfb/cfb_done.obj ltc/modes/cfb/cfb_encrypt.obj ltc/modes/cfb/cfb_getiv.obj \
61 ltc/modes/cfb/cfb_setiv.obj ltc/modes/cfb/cfb_start.obj ltc/modes/ctr/ctr_decrypt.obj \
62 ltc/modes/ctr/ctr_done.obj ltc/modes/ctr/ctr_encrypt.obj ltc/modes/ctr/ctr_getiv.obj \
63 ltc/modes/ctr/ctr_setiv.obj ltc/modes/ctr/ctr_start.obj ltc/modes/ecb/ecb_decrypt.obj \
64 ltc/modes/ecb/ecb_done.obj ltc/modes/ecb/ecb_encrypt.obj ltc/modes/ecb/ecb_start.obj \
65 ltc/modes/ofb/ofb_decrypt.obj ltc/modes/ofb/ofb_done.obj ltc/modes/ofb/ofb_encrypt.obj \
66 ltc/modes/ofb/ofb_getiv.obj ltc/modes/ofb/ofb_setiv.obj ltc/modes/ofb/ofb_start.obj \
67 ltc/pk/asn1/der/bit/der_decode_bit_string.obj ltc/pk/asn1/der/bit/der_decode_raw_bit_string.obj \
68 ltc/pk/asn1/der/bit/der_encode_bit_string.obj ltc/pk/asn1/der/bit/der_encode_raw_bit_string.obj \
69 ltc/pk/asn1/der/bit/der_length_bit_string.obj ltc/pk/asn1/der/boolean/der_decode_boolean.obj \
70 ltc/pk/asn1/der/boolean/der_encode_boolean.obj ltc/pk/asn1/der/boolean/der_length_boolean.obj \
71 ltc/pk/asn1/der/choice/der_decode_choice.obj ltc/pk/asn1/der/generalizedtime/der_decode_generalizedtime.obj \
72 ltc/pk/asn1/der/generalizedtime/der_encode_generalizedtime.obj ltc/pk/asn1/der/generalizedtime/der_length_generalizedtime.obj \
73 ltc/pk/asn1/der/ia5/der_decode_ia5_string.obj ltc/pk/asn1/der/ia5/der_encode_ia5_string.obj \
74 ltc/pk/asn1/der/ia5/der_length_ia5_string.obj ltc/pk/asn1/der/integer/der_decode_integer.obj \
75 ltc/pk/asn1/der/integer/der_encode_integer.obj ltc/pk/asn1/der/integer/der_length_integer.obj \
76 ltc/pk/asn1/der/object_identifier/der_decode_object_identifier.obj ltc/pk/asn1/der/object_identifier/der_encode_object_identifier.obj \
77 ltc/pk/asn1/der/object_identifier/der_length_object_identifier.obj ltc/pk/asn1/der/octet/der_decode_octet_string.obj \
78 ltc/pk/asn1/der/octet/der_encode_octet_string.obj ltc/pk/asn1/der/octet/der_length_octet_string.obj \
79 ltc/pk/asn1/der/printable_string/der_decode_printable_string.obj ltc/pk/asn1/der/printable_string/der_encode_printable_string.obj \
80 ltc/pk/asn1/der/printable_string/der_length_printable_string.obj ltc/pk/asn1/der/sequence/der_decode_sequence_ex.obj \
81 ltc/pk/asn1/der/sequence/der_decode_sequence_flexi.obj ltc/pk/asn1/der/sequence/der_decode_sequence_multi.obj \
82 ltc/pk/asn1/der/sequence/der_decode_subject_public_key_info.obj ltc/pk/asn1/der/sequence/der_encode_sequence_ex.obj \
83 ltc/pk/asn1/der/sequence/der_encode_sequence_multi.obj ltc/pk/asn1/der/sequence/der_encode_subject_public_key_info.obj \
84 ltc/pk/asn1/der/sequence/der_length_sequence.obj ltc/pk/asn1/der/sequence/der_sequence_free.obj \
49 ltc/misc/crypt/crypt_constants.obj ltc/misc/crypt/crypt_find_cipher.obj ltc/misc/crypt/crypt_find_cipher_any.obj \
50 ltc/misc/crypt/crypt_find_cipher_id.obj ltc/misc/crypt/crypt_find_hash.obj ltc/misc/crypt/crypt_find_hash_any.obj \
51 ltc/misc/crypt/crypt_find_hash_id.obj ltc/misc/crypt/crypt_find_hash_oid.obj ltc/misc/crypt/crypt_find_prng.obj \
52 ltc/misc/crypt/crypt_fsa.obj ltc/misc/crypt/crypt_hash_descriptor.obj ltc/misc/crypt/crypt_hash_is_valid.obj \
53 ltc/misc/crypt/crypt_inits.obj ltc/misc/crypt/crypt_ltc_mp_descriptor.obj ltc/misc/crypt/crypt_prng_descriptor.obj \
54 ltc/misc/crypt/crypt_prng_is_valid.obj ltc/misc/crypt/crypt_prng_rng_descriptor.obj \
55 ltc/misc/crypt/crypt_register_all_ciphers.obj ltc/misc/crypt/crypt_register_all_hashes.obj \
56 ltc/misc/crypt/crypt_register_all_prngs.obj ltc/misc/crypt/crypt_register_cipher.obj \
57 ltc/misc/crypt/crypt_register_hash.obj ltc/misc/crypt/crypt_register_prng.obj ltc/misc/crypt/crypt_sizes.obj \
58 ltc/misc/crypt/crypt_unregister_cipher.obj ltc/misc/crypt/crypt_unregister_hash.obj \
59 ltc/misc/crypt/crypt_unregister_prng.obj ltc/misc/hkdf/hkdf.obj ltc/misc/pkcs5/pkcs_5_1.obj \
60 ltc/misc/pkcs5/pkcs_5_2.obj ltc/modes/cbc/cbc_decrypt.obj ltc/modes/cbc/cbc_done.obj \
61 ltc/modes/cbc/cbc_encrypt.obj ltc/modes/cbc/cbc_getiv.obj ltc/modes/cbc/cbc_setiv.obj \
62 ltc/modes/cbc/cbc_start.obj ltc/modes/cfb/cfb_decrypt.obj ltc/modes/cfb/cfb_done.obj \
63 ltc/modes/cfb/cfb_encrypt.obj ltc/modes/cfb/cfb_getiv.obj ltc/modes/cfb/cfb_setiv.obj \
64 ltc/modes/cfb/cfb_start.obj ltc/modes/ctr/ctr_decrypt.obj ltc/modes/ctr/ctr_done.obj \
65 ltc/modes/ctr/ctr_encrypt.obj ltc/modes/ctr/ctr_getiv.obj ltc/modes/ctr/ctr_setiv.obj \
66 ltc/modes/ctr/ctr_start.obj ltc/modes/ecb/ecb_decrypt.obj ltc/modes/ecb/ecb_done.obj \
67 ltc/modes/ecb/ecb_encrypt.obj ltc/modes/ecb/ecb_start.obj ltc/modes/ofb/ofb_decrypt.obj \
68 ltc/modes/ofb/ofb_done.obj ltc/modes/ofb/ofb_encrypt.obj ltc/modes/ofb/ofb_getiv.obj \
69 ltc/modes/ofb/ofb_setiv.obj ltc/modes/ofb/ofb_start.obj ltc/pk/asn1/der/bit/der_decode_bit_string.obj \
70 ltc/pk/asn1/der/bit/der_decode_raw_bit_string.obj ltc/pk/asn1/der/bit/der_encode_bit_string.obj \
71 ltc/pk/asn1/der/bit/der_encode_raw_bit_string.obj ltc/pk/asn1/der/bit/der_length_bit_string.obj \
72 ltc/pk/asn1/der/boolean/der_decode_boolean.obj ltc/pk/asn1/der/boolean/der_encode_boolean.obj \
73 ltc/pk/asn1/der/boolean/der_length_boolean.obj ltc/pk/asn1/der/choice/der_decode_choice.obj \
74 ltc/pk/asn1/der/generalizedtime/der_decode_generalizedtime.obj ltc/pk/asn1/der/generalizedtime/der_encode_generalizedtime.obj \
75 ltc/pk/asn1/der/generalizedtime/der_length_generalizedtime.obj ltc/pk/asn1/der/ia5/der_decode_ia5_string.obj \
76 ltc/pk/asn1/der/ia5/der_encode_ia5_string.obj ltc/pk/asn1/der/ia5/der_length_ia5_string.obj \
77 ltc/pk/asn1/der/integer/der_decode_integer.obj ltc/pk/asn1/der/integer/der_encode_integer.obj \
78 ltc/pk/asn1/der/integer/der_length_integer.obj ltc/pk/asn1/der/object_identifier/der_decode_object_identifier.obj \
79 ltc/pk/asn1/der/object_identifier/der_encode_object_identifier.obj ltc/pk/asn1/der/object_identifier/der_length_object_identifier.obj \
80 ltc/pk/asn1/der/octet/der_decode_octet_string.obj ltc/pk/asn1/der/octet/der_encode_octet_string.obj \
81 ltc/pk/asn1/der/octet/der_length_octet_string.obj ltc/pk/asn1/der/printable_string/der_decode_printable_string.obj \
82 ltc/pk/asn1/der/printable_string/der_encode_printable_string.obj ltc/pk/asn1/der/printable_string/der_length_printable_string.obj \
83 ltc/pk/asn1/der/sequence/der_decode_sequence_ex.obj ltc/pk/asn1/der/sequence/der_decode_sequence_flexi.obj \
84 ltc/pk/asn1/der/sequence/der_decode_sequence_multi.obj ltc/pk/asn1/der/sequence/der_decode_subject_public_key_info.obj \
85 ltc/pk/asn1/der/sequence/der_encode_sequence_ex.obj ltc/pk/asn1/der/sequence/der_encode_sequence_multi.obj \
86 ltc/pk/asn1/der/sequence/der_encode_subject_public_key_info.obj ltc/pk/asn1/der/sequence/der_length_sequence.obj \
87 ltc/pk/asn1/der/sequence/der_sequence_free.obj ltc/pk/asn1/der/sequence/der_sequence_shrink.obj \
8588 ltc/pk/asn1/der/set/der_encode_set.obj ltc/pk/asn1/der/set/der_encode_setof.obj ltc/pk/asn1/der/short_integer/der_decode_short_integer.obj \
8689 ltc/pk/asn1/der/short_integer/der_encode_short_integer.obj ltc/pk/asn1/der/short_integer/der_length_short_integer.obj \
8790 ltc/pk/asn1/der/teletex_string/der_decode_teletex_string.obj ltc/pk/asn1/der/teletex_string/der_length_teletex_string.obj \
5454 /* default to zero */
5555 *stat = 0;
5656
57 /* limit taglen */
58 taglen = MIN(taglen, MAXBLOCKSIZE);
59
5760 /* allocate ram */
5861 buf = XMALLOC(taglen);
5962 eax = XMALLOC(sizeof(*eax));
167167
168168 /* endianness fallback */
169169 #if !defined(ENDIAN_BIG) && !defined(ENDIAN_LITTLE)
170 #if defined(__BYTE_ORDER) && __BYTE_ORDER == __BIG_ENDIAN || \
170 #if defined(_BYTE_ORDER) && _BYTE_ORDER == _BIG_ENDIAN || \
171 defined(__BYTE_ORDER) && __BYTE_ORDER == __BIG_ENDIAN || \
171172 defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ || \
172 defined(__BIG_ENDIAN__) || defined(_BIG_ENDIAN) || \
173 defined(__BIG_ENDIAN__) || \
173174 defined(__ARMEB__) || defined(__THUMBEB__) || defined(__AARCH64EB__) || \
174175 defined(_MIPSEB) || defined(__MIPSEB) || defined(__MIPSEB__)
175176 #define ENDIAN_BIG
176 #elif defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN || \
177 #elif defined(_BYTE_ORDER) && _BYTE_ORDER == _LITTLE_ENDIAN || \
178 defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN || \
177179 defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ || \
178 defined(__LITTLE_ENDIAN__) || defined(_LITTLE_ENDIAN) || \
180 defined(__LITTLE_ENDIAN__) || \
179181 defined(__ARMEL__) || defined(__THUMBEL__) || defined(__AARCH64EL__) || \
180182 defined(_MIPSEL) || defined(__MIPSEL) || defined(__MIPSEL__)
181183 #define ENDIAN_LITTLE
7070 #define LTC_NO_PK
7171 #define LTC_NO_PKCS
7272 #define LTC_NO_MISC
73 #define LTC_NO_FILE
7473 #endif /* LTC_NOTHING */
7574
7675 /* Easy button? */
578577 #error LTC_BLAKE2BMAC requires LTC_BLAKE2B
579578 #endif
580579
580 #if defined(LTC_SPRNG) && !defined(LTC_RNG_GET_BYTES)
581 #error LTC_SPRNG requires LTC_RNG_GET_BYTES
582 #endif
583
581584 #if defined(LTC_NO_MATH) && (defined(LTM_DESC) || defined(TFM_DESC) || defined(GMP_DESC))
582585 #error LTC_NO_MATH defined, but also a math descriptor
583586 #endif
596596 /* internal helper functions */
597597 int der_length_sequence_ex(ltc_asn1_list *list, unsigned long inlen,
598598 unsigned long *outlen, unsigned long *payloadlen);
599
600599 /* SUBJECT PUBLIC KEY INFO */
601600 int der_encode_subject_public_key_info(unsigned char *out, unsigned long *outlen,
602601 unsigned int algorithm, void* public_key, unsigned long public_key_len,
3232 */
3333 int radix_to_bin(const void *in, int radix, void *out, unsigned long *len)
3434 {
35 size_t l;
35 unsigned long l;
3636 void* mpi;
3737 int err;
3838
377377 #endif
378378
379379 "\nVarious others: "
380 #if defined(ARGTYPE)
381 " " NAME_VALUE(ARGTYPE) " "
382 #endif
380383 #if defined(LTC_ADLER32)
381384 " ADLER32 "
382385 #endif
427430 #endif
428431 #if defined(LTC_TEST)
429432 " LTC_TEST "
433 #endif
434 #if defined(LTC_TEST_DBG)
435 " " NAME_VALUE(LTC_TEST_DBG) " "
430436 #endif
431437 #if defined(LTC_TEST_EXT)
432438 " LTC_TEST_EXT "
0 /* LibTomCrypt, modular cryptographic library -- Tom St Denis
1 *
2 * LibTomCrypt is a library that provides various cryptographic
3 * algorithms in a highly modular and flexible manner.
4 *
5 * The library is free for all purposes without any express
6 * guarantee it works.
7 */
8 #include "tomcrypt.h"
9
10 /**
11 @file crypt_constants.c
12
13 Make various constants available to dynamic languages
14 like Python - Larry Bugbee, February 2013
15
16 LB - Dec 2013 - revised to include compiler define options
17 LB - Mar 2014 - added endianness and word size
18 */
19
20 typedef struct {
21 const char *name;
22 const int value;
23 } crypt_constant;
24
25 #define _C_STRINGIFY(s) { #s, s }
26
27 static const crypt_constant _crypt_constants[] = {
28 _C_STRINGIFY(PK_PUBLIC),
29 _C_STRINGIFY(PK_PRIVATE),
30
31 _C_STRINGIFY(PKA_RSA),
32 _C_STRINGIFY(PKA_DSA),
33
34 #ifdef LTC_PKCS_1
35 {"LTC_PKCS_1", 1},
36 /* Block types */
37 _C_STRINGIFY(LTC_PKCS_1_EMSA),
38 _C_STRINGIFY(LTC_PKCS_1_EME),
39
40 /* Padding types */
41 _C_STRINGIFY(LTC_PKCS_1_V1_5),
42 _C_STRINGIFY(LTC_PKCS_1_OAEP),
43 _C_STRINGIFY(LTC_PKCS_1_PSS),
44 #else
45 {"LTC_PKCS_1", 0},
46 #endif
47
48 #ifdef LTC_MRSA
49 {"LTC_MRSA", 1},
50 _C_STRINGIFY(MIN_RSA_SIZE),
51 _C_STRINGIFY(MAX_RSA_SIZE),
52 #else
53 {"LTC_MRSA", 0},
54 #endif
55
56 #ifdef LTC_MKAT
57 {"LTC_MKAT", 1},
58 _C_STRINGIFY(MIN_KAT_SIZE),
59 _C_STRINGIFY(MAX_KAT_SIZE),
60 #else
61 {"LTC_MKAT", 0},
62 #endif
63
64 #ifdef LTC_MECC
65 {"LTC_MECC", 1},
66 _C_STRINGIFY(ECC_BUF_SIZE),
67 _C_STRINGIFY(ECC_MAXSIZE),
68 #else
69 {"LTC_MECC", 0},
70 #endif
71
72 #ifdef LTC_MDSA
73 {"LTC_MDSA", 1},
74 _C_STRINGIFY(LTC_MDSA_DELTA),
75 _C_STRINGIFY(LTC_MDSA_MAX_GROUP),
76 #else
77 {"LTC_MDSA", 0},
78 #endif
79
80 #ifdef LTC_DER_MAX_PUBKEY_SIZE
81 _C_STRINGIFY(LTC_DER_MAX_PUBKEY_SIZE),
82 #endif
83 #ifdef LTC_MILLER_RABIN_REPS
84 _C_STRINGIFY(LTC_MILLER_RABIN_REPS),
85 #endif
86
87 #ifdef LTC_CTR_MODE
88 {"LTC_CTR_MODE", 1},
89 _C_STRINGIFY(CTR_COUNTER_LITTLE_ENDIAN),
90 _C_STRINGIFY(CTR_COUNTER_BIG_ENDIAN),
91 _C_STRINGIFY(LTC_CTR_RFC3686),
92 #else
93 {"LTC_CTR_MODE", 0},
94 #endif
95
96 _C_STRINGIFY(MAXBLOCKSIZE),
97 _C_STRINGIFY(TAB_SIZE),
98 _C_STRINGIFY(ARGTYPE),
99
100 #ifdef LTM_DESC
101 {"LTM_DESC", 1},
102 #else
103 {"LTM_DESC", 0},
104 #endif
105 #ifdef TFM_DESC
106 {"TFM_DESC", 1},
107 #else
108 {"TFM_DESC", 0},
109 #endif
110 #ifdef GMP_DESC
111 {"GMP_DESC", 1},
112 #else
113 {"GMP_DESC", 0},
114 #endif
115
116 #ifdef LTC_FAST
117 {"LTC_FAST", 1},
118 #else
119 {"LTC_FAST", 0},
120 #endif
121
122 #ifdef LTC_NO_FILE
123 {"LTC_NO_FILE", 1},
124 #else
125 {"LTC_NO_FILE", 0},
126 #endif
127
128 #ifdef ENDIAN_LITTLE
129 {"ENDIAN_LITTLE", 1},
130 #else
131 {"ENDIAN_LITTLE", 0},
132 #endif
133
134 #ifdef ENDIAN_BIG
135 {"ENDIAN_BIG", 1},
136 #else
137 {"ENDIAN_BIG", 0},
138 #endif
139
140 #ifdef ENDIAN_32BITWORD
141 {"ENDIAN_32BITWORD", 1},
142 #else
143 {"ENDIAN_32BITWORD", 0},
144 #endif
145
146 #ifdef ENDIAN_64BITWORD
147 {"ENDIAN_64BITWORD", 1},
148 #else
149 {"ENDIAN_64BITWORD", 0},
150 #endif
151
152 #ifdef ENDIAN_NEUTRAL
153 {"ENDIAN_NEUTRAL", 1},
154 #else
155 {"ENDIAN_NEUTRAL", 0},
156 #endif
157 };
158
159
160 /* crypt_get_constant()
161 * valueout will be the value of the named constant
162 * return -1 if named item not found
163 */
164 int crypt_get_constant(const char* namein, int *valueout) {
165 int i;
166 int _crypt_constants_len = sizeof(_crypt_constants) / sizeof(_crypt_constants[0]);
167 for (i=0; i<_crypt_constants_len; i++) {
168 if (XSTRCMP(_crypt_constants[i].name, namein) == 0) {
169 *valueout = _crypt_constants[i].value;
170 return 0;
171 }
172 }
173 return 1;
174 }
175
176 /* crypt_list_all_constants()
177 * if names_list is NULL, names_list_size will be the minimum
178 * number of bytes needed to receive the complete names_list
179 * if names_list is NOT NULL, names_list must be the addr of
180 * sufficient memory allocated into which the names_list
181 * is to be written. Also, the value in names_list_size
182 * sets the upper bound of the number of characters to be
183 * written.
184 * a -1 return value signifies insufficient space made available
185 */
186 int crypt_list_all_constants(char *names_list, unsigned int *names_list_size) {
187 int i;
188 unsigned int total_len = 0;
189 char number[32], *ptr;
190 int number_len;
191 int count = sizeof(_crypt_constants) / sizeof(_crypt_constants[0]);
192
193 /* calculate amount of memory required for the list */
194 for (i=0; i<count; i++) {
195 total_len += (unsigned int)strlen(_crypt_constants[i].name) + 1;
196 /* the above +1 is for the commas */
197 number_len = snprintf(number, sizeof(number), "%d", _crypt_constants[i].value);
198 if ((number_len < 0) ||
199 ((unsigned int)number_len >= sizeof(number)))
200 return -1;
201 total_len += number_len + 1;
202 /* this last +1 is for newlines (and ending NULL) */
203 }
204
205 if (names_list == NULL) {
206 *names_list_size = total_len;
207 } else {
208 if (total_len > *names_list_size) {
209 return -1;
210 }
211 /* build the names list */
212 ptr = names_list;
213 for (i=0; i<count; i++) {
214 strcpy(ptr, _crypt_constants[i].name);
215 ptr += strlen(_crypt_constants[i].name);
216 strcpy(ptr, ",");
217 ptr += 1;
218
219 number_len = snprintf(number, sizeof(number), "%d", _crypt_constants[i].value);
220 strcpy(ptr, number);
221 ptr += number_len;
222 strcpy(ptr, "\n");
223 ptr += 1;
224 }
225 /* to remove the trailing new-line */
226 ptr -= 1;
227 *ptr = 0;
228 }
229 return 0;
230 }
231
232
233 /* ref: $Format:%D$ */
234 /* git commit: $Format:%H$ */
235 /* commit time: $Format:%ai$ */
0 /* LibTomCrypt, modular cryptographic library -- Tom St Denis
1 *
2 * LibTomCrypt is a library that provides various cryptographic
3 * algorithms in a highly modular and flexible manner.
4 *
5 * The library is free for all purposes without any express
6 * guarantee it works.
7 */
8 #include "tomcrypt.h"
9
10 #ifdef LTC_PRNG_ENABLE_LTC_RNG
11 unsigned long (*ltc_rng)(unsigned char *out, unsigned long outlen, void (*callback)(void));
12 #endif
13
14 /* ref: $Format:%D$ */
15 /* git commit: $Format:%H$ */
16 /* commit time: $Format:%ai$ */
0 /* LibTomCrypt, modular cryptographic library -- Tom St Denis
1 *
2 * LibTomCrypt is a library that provides various cryptographic
3 * algorithms in a highly modular and flexible manner.
4 *
5 * The library is free for all purposes without any express
6 * guarantee it works.
7 */
8
9 #include "tomcrypt.h"
10
11 /**
12 @file crypt_register_all_ciphers.c
13
14 Steffen Jaeckel
15 */
16
17 #define REGISTER_CIPHER(h) do {\
18 LTC_ARGCHK((err = register_cipher(h)) != -1); \
19 } while(0)
20
21 int register_all_ciphers(void)
22 {
23 int err = CRYPT_NOP;
24
25 #ifdef LTC_RIJNDAEL
26 #ifdef ENCRYPT_ONLY
27 /* alternative would be
28 * register_cipher(&rijndael_enc_desc);
29 */
30 REGISTER_CIPHER(&aes_enc_desc);
31 #else
32 /* alternative would be
33 * register_cipher(&rijndael_desc);
34 */
35 REGISTER_CIPHER(&aes_desc);
36 #endif
37 #endif
38 #ifdef LTC_BLOWFISH
39 REGISTER_CIPHER(&blowfish_desc);
40 #endif
41 #ifdef LTC_XTEA
42 REGISTER_CIPHER(&xtea_desc);
43 #endif
44 #ifdef LTC_RC5
45 REGISTER_CIPHER(&rc5_desc);
46 #endif
47 #ifdef LTC_RC6
48 REGISTER_CIPHER(&rc6_desc);
49 #endif
50 #ifdef LTC_SAFERP
51 REGISTER_CIPHER(&saferp_desc);
52 #endif
53 #ifdef LTC_TWOFISH
54 REGISTER_CIPHER(&twofish_desc);
55 #endif
56 #ifdef LTC_SAFER
57 REGISTER_CIPHER(&safer_k64_desc);
58 REGISTER_CIPHER(&safer_sk64_desc);
59 REGISTER_CIPHER(&safer_k128_desc);
60 REGISTER_CIPHER(&safer_sk128_desc);
61 #endif
62 #ifdef LTC_RC2
63 REGISTER_CIPHER(&rc2_desc);
64 #endif
65 #ifdef LTC_DES
66 REGISTER_CIPHER(&des_desc);
67 REGISTER_CIPHER(&des3_desc);
68 #endif
69 #ifdef LTC_CAST5
70 REGISTER_CIPHER(&cast5_desc);
71 #endif
72 #ifdef LTC_NOEKEON
73 REGISTER_CIPHER(&noekeon_desc);
74 #endif
75 #ifdef LTC_SKIPJACK
76 REGISTER_CIPHER(&skipjack_desc);
77 #endif
78 #ifdef LTC_ANUBIS
79 REGISTER_CIPHER(&anubis_desc);
80 #endif
81 #ifdef LTC_KHAZAD
82 REGISTER_CIPHER(&khazad_desc);
83 #endif
84 #ifdef LTC_KSEED
85 REGISTER_CIPHER(&kseed_desc);
86 #endif
87 #ifdef LTC_KASUMI
88 REGISTER_CIPHER(&kasumi_desc);
89 #endif
90 #ifdef LTC_MULTI2
91 REGISTER_CIPHER(&multi2_desc);
92 #endif
93 #ifdef LTC_CAMELLIA
94 REGISTER_CIPHER(&camellia_desc);
95 #endif
96 return err;
97 }
98
99 /* ref: $Format:%D$ */
100 /* git commit: $Format:%H$ */
101 /* commit time: $Format:%ai$ */
0 /* LibTomCrypt, modular cryptographic library -- Tom St Denis
1 *
2 * LibTomCrypt is a library that provides various cryptographic
3 * algorithms in a highly modular and flexible manner.
4 *
5 * The library is free for all purposes without any express
6 * guarantee it works.
7 */
8
9 #include "tomcrypt.h"
10
11 /**
12 @file crypt_register_all_hashes.c
13
14 Steffen Jaeckel
15 */
16
17 #define REGISTER_HASH(h) do {\
18 LTC_ARGCHK((err = register_hash(h)) != -1); \
19 } while(0)
20
21 int register_all_hashes(void)
22 {
23 int err = CRYPT_NOP;
24 #ifdef LTC_TIGER
25 REGISTER_HASH(&tiger_desc);
26 #endif
27 #ifdef LTC_MD2
28 REGISTER_HASH(&md2_desc);
29 #endif
30 #ifdef LTC_MD4
31 REGISTER_HASH(&md4_desc);
32 #endif
33 #ifdef LTC_MD5
34 REGISTER_HASH(&md5_desc);
35 #endif
36 #ifdef LTC_SHA1
37 REGISTER_HASH(&sha1_desc);
38 #endif
39 #ifdef LTC_SHA224
40 REGISTER_HASH(&sha224_desc);
41 #endif
42 #ifdef LTC_SHA256
43 REGISTER_HASH(&sha256_desc);
44 #endif
45 #ifdef LTC_SHA384
46 REGISTER_HASH(&sha384_desc);
47 #endif
48 #ifdef LTC_SHA512
49 REGISTER_HASH(&sha512_desc);
50 #endif
51 #ifdef LTC_SHA512_224
52 REGISTER_HASH(&sha512_224_desc);
53 #endif
54 #ifdef LTC_SHA512_256
55 REGISTER_HASH(&sha512_256_desc);
56 #endif
57 #ifdef LTC_SHA3
58 REGISTER_HASH(&sha3_224_desc);
59 REGISTER_HASH(&sha3_256_desc);
60 REGISTER_HASH(&sha3_384_desc);
61 REGISTER_HASH(&sha3_512_desc);
62 #endif
63 #ifdef LTC_RIPEMD128
64 REGISTER_HASH(&rmd128_desc);
65 #endif
66 #ifdef LTC_RIPEMD160
67 REGISTER_HASH(&rmd160_desc);
68 #endif
69 #ifdef LTC_RIPEMD256
70 REGISTER_HASH(&rmd256_desc);
71 #endif
72 #ifdef LTC_RIPEMD320
73 REGISTER_HASH(&rmd320_desc);
74 #endif
75 #ifdef LTC_WHIRLPOOL
76 REGISTER_HASH(&whirlpool_desc);
77 #endif
78 #ifdef LTC_BLAKE2S
79 REGISTER_HASH(&blake2s_128_desc);
80 REGISTER_HASH(&blake2s_160_desc);
81 REGISTER_HASH(&blake2s_224_desc);
82 REGISTER_HASH(&blake2s_256_desc);
83 #endif
84 #ifdef LTC_BLAKE2S
85 REGISTER_HASH(&blake2b_160_desc);
86 REGISTER_HASH(&blake2b_256_desc);
87 REGISTER_HASH(&blake2b_384_desc);
88 REGISTER_HASH(&blake2b_512_desc);
89 #endif
90 #ifdef LTC_CHC_HASH
91 REGISTER_HASH(&chc_desc);
92 LTC_ARGCHK((err = chc_register(find_cipher_any("aes", 8, 16))) == CRYPT_OK);
93 #endif
94 return err;
95 }
96
97 /* ref: $Format:%D$ */
98 /* git commit: $Format:%H$ */
99 /* commit time: $Format:%ai$ */
0 /* LibTomCrypt, modular cryptographic library -- Tom St Denis
1 *
2 * LibTomCrypt is a library that provides various cryptographic
3 * algorithms in a highly modular and flexible manner.
4 *
5 * The library is free for all purposes without any express
6 * guarantee it works.
7 */
8
9 #include "tomcrypt.h"
10
11 /**
12 @file crypt_register_all_prngs.c
13
14 Steffen Jaeckel
15 */
16
17 #define REGISTER_PRNG(h) do {\
18 LTC_ARGCHK((err = register_prng(h)) != -1); \
19 } while(0)
20
21 int register_all_prngs(void)
22 {
23 int err = CRYPT_NOP;
24 #ifdef LTC_YARROW
25 REGISTER_PRNG(&yarrow_desc);
26 #endif
27 #ifdef LTC_FORTUNA
28 REGISTER_PRNG(&fortuna_desc);
29 #endif
30 #ifdef LTC_RC4
31 REGISTER_PRNG(&rc4_desc);
32 #endif
33 #ifdef LTC_CHACHA20_PRNG
34 REGISTER_PRNG(&chacha20_prng_desc);
35 #endif
36 #ifdef LTC_SOBER128
37 REGISTER_PRNG(&sober128_desc);
38 #endif
39 #ifdef LTC_SPRNG
40 REGISTER_PRNG(&sprng_desc);
41 #endif
42
43 return err;
44 }
45
46 /* ref: $Format:%D$ */
47 /* git commit: $Format:%H$ */
48 /* commit time: $Format:%ai$ */
0 /* LibTomCrypt, modular cryptographic library -- Tom St Denis
1 *
2 * LibTomCrypt is a library that provides various cryptographic
3 * algorithms in a highly modular and flexible manner.
4 *
5 * The library is free for all purposes without any express
6 * guarantee it works.
7 */
8 #include "tomcrypt.h"
9
10 /**
11 @file crypt_sizes.c
12
13 Make various struct sizes available to dynamic languages
14 like Python - Larry Bugbee, February 2013
15
16 LB - Dec 2013 - revised to include compiler define options
17 */
18
19
20 typedef struct {
21 const char *name;
22 const unsigned int size;
23 } crypt_size;
24
25 #define _SZ_STRINGIFY_S(s) { #s, sizeof(struct s) }
26 #define _SZ_STRINGIFY_T(s) { #s, sizeof(s) }
27
28 static const crypt_size _crypt_sizes[] = {
29 /* hash state sizes */
30 _SZ_STRINGIFY_S(ltc_hash_descriptor),
31 _SZ_STRINGIFY_T(hash_state),
32 #ifdef LTC_SHA256
33 _SZ_STRINGIFY_S(sha256_state),
34 #endif
35 #ifdef LTC_SHA3
36 _SZ_STRINGIFY_S(sha3_state),
37 #endif
38 #ifdef LTC_SHA512
39 _SZ_STRINGIFY_S(sha512_state),
40 #endif
41 #ifdef LTC_WHIRLPOOL
42 _SZ_STRINGIFY_S(whirlpool_state),
43 #endif
44 #ifdef LTC_MD2
45 _SZ_STRINGIFY_S(md2_state),
46 #endif
47 #ifdef LTC_MD4
48 _SZ_STRINGIFY_S(md4_state),
49 #endif
50 #ifdef LTC_MD5
51 _SZ_STRINGIFY_S(md5_state),
52 #endif
53 #ifdef LTC_RIPEMD128
54 _SZ_STRINGIFY_S(rmd128_state),
55 #endif
56 #ifdef LTC_RIPEMD160
57 _SZ_STRINGIFY_S(rmd160_state),
58 #endif
59 #ifdef LTC_RIPEMD256
60 _SZ_STRINGIFY_S(rmd256_state),
61 #endif
62 #ifdef LTC_RIPEMD320
63 _SZ_STRINGIFY_S(rmd320_state),
64 #endif
65 #ifdef LTC_SHA1
66 _SZ_STRINGIFY_S(sha1_state),
67 #endif
68 #ifdef LTC_TIGER
69 _SZ_STRINGIFY_S(tiger_state),
70 #endif
71 #ifdef LTC_BLAKE2S
72 _SZ_STRINGIFY_S(blake2s_state),
73 #endif
74 #ifdef LTC_BLAKE2B
75 _SZ_STRINGIFY_S(blake2b_state),
76 #endif
77 #ifdef LTC_CHC_HASH
78 _SZ_STRINGIFY_S(chc_state),
79 #endif
80
81 /* block cipher key sizes */
82 _SZ_STRINGIFY_S(ltc_cipher_descriptor),
83 _SZ_STRINGIFY_T(symmetric_key),
84 #ifdef LTC_ANUBIS
85 _SZ_STRINGIFY_S(anubis_key),
86 #endif
87 #ifdef LTC_CAMELLIA
88 _SZ_STRINGIFY_S(camellia_key),
89 #endif
90 #ifdef LTC_BLOWFISH
91 _SZ_STRINGIFY_S(blowfish_key),
92 #endif
93 #ifdef LTC_CAST5
94 _SZ_STRINGIFY_S(cast5_key),
95 #endif
96 #ifdef LTC_DES
97 _SZ_STRINGIFY_S(des_key),
98 _SZ_STRINGIFY_S(des3_key),
99 #endif
100 #ifdef LTC_KASUMI
101 _SZ_STRINGIFY_S(kasumi_key),
102 #endif
103 #ifdef LTC_KHAZAD
104 _SZ_STRINGIFY_S(khazad_key),
105 #endif
106 #ifdef LTC_KSEED
107 _SZ_STRINGIFY_S(kseed_key),
108 #endif
109 #ifdef LTC_MULTI2
110 _SZ_STRINGIFY_S(multi2_key),
111 #endif
112 #ifdef LTC_NOEKEON
113 _SZ_STRINGIFY_S(noekeon_key),
114 #endif
115 #ifdef LTC_RC2
116 _SZ_STRINGIFY_S(rc2_key),
117 #endif
118 #ifdef LTC_RC5
119 _SZ_STRINGIFY_S(rc5_key),
120 #endif
121 #ifdef LTC_RC6
122 _SZ_STRINGIFY_S(rc6_key),
123 #endif
124 #ifdef LTC_SKIPJACK
125 _SZ_STRINGIFY_S(skipjack_key),
126 #endif
127 #ifdef LTC_XTEA
128 _SZ_STRINGIFY_S(xtea_key),
129 #endif
130 #ifdef LTC_RIJNDAEL
131 _SZ_STRINGIFY_S(rijndael_key),
132 #endif
133 #ifdef LTC_SAFER
134 _SZ_STRINGIFY_S(safer_key),
135 #endif
136 #ifdef LTC_SAFERP
137 _SZ_STRINGIFY_S(saferp_key),
138 #endif
139 #ifdef LTC_TWOFISH
140 _SZ_STRINGIFY_S(twofish_key),
141 #endif
142
143 /* mode sizes */
144 #ifdef LTC_CBC_MODE
145 _SZ_STRINGIFY_T(symmetric_CBC),
146 #endif
147 #ifdef LTC_CFB_MODE
148 _SZ_STRINGIFY_T(symmetric_CFB),
149 #endif
150 #ifdef LTC_CTR_MODE
151 _SZ_STRINGIFY_T(symmetric_CTR),
152 #endif
153 #ifdef LTC_ECB_MODE
154 _SZ_STRINGIFY_T(symmetric_ECB),
155 #endif
156 #ifdef LTC_F8_MODE
157 _SZ_STRINGIFY_T(symmetric_F8),
158 #endif
159 #ifdef LTC_LRW_MODE
160 _SZ_STRINGIFY_T(symmetric_LRW),
161 #endif
162 #ifdef LTC_OFB_MODE
163 _SZ_STRINGIFY_T(symmetric_OFB),
164 #endif
165
166 /* MAC sizes -- no states for ccm, lrw */
167 #ifdef LTC_F9_MODE
168 _SZ_STRINGIFY_T(f9_state),
169 #endif
170 #ifdef LTC_HMAC
171 _SZ_STRINGIFY_T(hmac_state),
172 #endif
173 #ifdef LTC_OMAC
174 _SZ_STRINGIFY_T(omac_state),
175 #endif
176 #ifdef LTC_PELICAN
177 _SZ_STRINGIFY_T(pelican_state),
178 #endif
179 #ifdef LTC_PMAC
180 _SZ_STRINGIFY_T(pmac_state),
181 #endif
182 #ifdef LTC_XCBC
183 _SZ_STRINGIFY_T(xcbc_state),
184 #endif
185 #ifdef LTC_OCB_MODE
186 _SZ_STRINGIFY_T(ocb_state),
187 #endif
188 #ifdef LTC_OCB3_MODE
189 _SZ_STRINGIFY_T(ocb3_state),
190 #endif
191 #ifdef LTC_GCM_MODE
192 _SZ_STRINGIFY_T(gcm_state),
193 #endif
194 #ifdef LTC_EAX_MODE
195 _SZ_STRINGIFY_T(eax_state),
196 #endif
197 #ifdef LTC_CCM_MODE
198 /* not defined */
199 #endif
200 #ifdef LRW_MODE
201 /* not defined */
202 #endif
203
204 /* asymmetric keys */
205 #ifdef LTC_MRSA
206 _SZ_STRINGIFY_T(rsa_key),
207 #endif
208 #ifdef LTC_MDSA
209 _SZ_STRINGIFY_T(dsa_key),
210 #endif
211 #ifdef LTC_MDH
212 _SZ_STRINGIFY_T(dh_key),
213 #endif
214 #ifdef LTC_MECC
215 _SZ_STRINGIFY_T(ltc_ecc_set_type),
216 _SZ_STRINGIFY_T(ecc_key),
217 _SZ_STRINGIFY_T(ecc_point),
218 #endif
219 #ifdef LTC_MKAT
220 _SZ_STRINGIFY_T(katja_key),
221 #endif
222
223 /* prng state sizes */
224 _SZ_STRINGIFY_S(ltc_prng_descriptor),
225 _SZ_STRINGIFY_T(prng_state),
226 #ifdef LTC_FORTUNA
227 _SZ_STRINGIFY_S(fortuna_prng),
228 #endif
229 #ifdef LTC_CHACHA20_PRNG
230 _SZ_STRINGIFY_S(chacha20_prng),
231 #endif
232 #ifdef LTC_RC4
233 _SZ_STRINGIFY_S(rc4_prng),
234 #endif
235 #ifdef LTC_SOBER128
236 _SZ_STRINGIFY_S(sober128_prng),
237 #endif
238 #ifdef LTC_YARROW
239 _SZ_STRINGIFY_S(yarrow_prng),
240 #endif
241 /* sprng has no state as it uses other potentially available sources */
242 /* like /dev/random. See Developers Guide for more info. */
243
244 #ifdef LTC_ADLER32
245 _SZ_STRINGIFY_T(adler32_state),
246 #endif
247 #ifdef LTC_CRC32
248 _SZ_STRINGIFY_T(crc32_state),
249 #endif
250 };
251
252 /* crypt_get_size()
253 * sizeout will be the size (bytes) of the named struct or union
254 * return -1 if named item not found
255 */
256 int crypt_get_size(const char* namein, unsigned int *sizeout) {
257 int i;
258 int count = sizeof(_crypt_sizes) / sizeof(_crypt_sizes[0]);
259 for (i=0; i<count; i++) {
260 if (XSTRCMP(_crypt_sizes[i].name, namein) == 0) {
261 *sizeout = _crypt_sizes[i].size;
262 return 0;
263 }
264 }
265 return -1;
266 }
267
268 /* crypt_list_all_sizes()
269 * if names_list is NULL, names_list_size will be the minimum
270 * size needed to receive the complete names_list
271 * if names_list is NOT NULL, names_list must be the addr with
272 * sufficient memory allocated into which the names_list
273 * is to be written. Also, the value in names_list_size
274 * sets the upper bound of the number of characters to be
275 * written.
276 * a -1 return value signifies insufficient space made available
277 */
278 int crypt_list_all_sizes(char *names_list, unsigned int *names_list_size) {
279 int i;
280 unsigned int total_len = 0;
281 char number[32], *ptr;
282 int number_len;
283 int count = sizeof(_crypt_sizes) / sizeof(_crypt_sizes[0]);
284
285 /* calculate amount of memory required for the list */
286 for (i=0; i<count; i++) {
287 total_len += (unsigned int)strlen(_crypt_sizes[i].name) + 1;
288 /* the above +1 is for the commas */
289 number_len = snprintf(number, sizeof(number), "%u", _crypt_sizes[i].size);
290 if ((number_len < 0) ||
291 ((unsigned int)number_len >= sizeof(number)))
292 return -1;
293 total_len += (unsigned int)strlen(number) + 1;
294 /* this last +1 is for newlines (and ending NULL) */
295 }
296
297 if (names_list == NULL) {
298 *names_list_size = total_len;
299 } else {
300 if (total_len > *names_list_size) {
301 return -1;
302 }
303 /* build the names list */
304 ptr = names_list;
305 for (i=0; i<count; i++) {
306 strcpy(ptr, _crypt_sizes[i].name);
307 ptr += strlen(_crypt_sizes[i].name);
308 strcpy(ptr, ",");
309 ptr += 1;
310
311 number_len = snprintf(number, sizeof(number), "%u", _crypt_sizes[i].size);
312 strcpy(ptr, number);
313 ptr += number_len;
314 strcpy(ptr, "\n");
315 ptr += 1;
316 }
317 /* to remove the trailing new-line */
318 ptr -= 1;
319 *ptr = 0;
320 }
321 return 0;
322 }
323
324
325 /* ref: $Format:%D$ */
326 /* git commit: $Format:%H$ */
327 /* commit time: $Format:%ai$ */
0 /* LibTomCrypt, modular cryptographic library -- Tom St Denis
1 *
2 * LibTomCrypt is a library that provides various cryptographic
3 * algorithms in a highly modular and flexible manner.
4 *
5 * The library is free for all purposes without any express
6 * guarantee it works.
7 */
8 #include "tomcrypt.h"
9
10 /**
11 @file der_sequence_shrink.c
12 Free memory allocated for CONSTRUCTED, SET or SEQUENCE elements by der_decode_sequence_flexi(), Steffen Jaeckel
13 */
14
15 #ifdef LTC_DER
16
17 /**
18 Free memory allocated for CONSTRUCTED,
19 SET or SEQUENCE elements by der_decode_sequence_flexi()
20 @param in The list to shrink
21 */
22 void der_sequence_shrink(ltc_asn1_list *in)
23 {
24 if (!in) return;
25
26 /* now walk the list and free stuff */
27 while (in != NULL) {
28 /* is there a child? */
29 if (in->child) {
30 der_sequence_shrink(in->child);
31 }
32
33 switch (in->type) {
34 case LTC_ASN1_CONSTRUCTED:
35 case LTC_ASN1_SET:
36 case LTC_ASN1_SEQUENCE : if (in->data != NULL) { XFREE(in->data); in->data = NULL; } break;
37 default: break;
38 }
39
40 /* move to next and free current */
41 in = in->next;
42 }
43 }
44
45 #endif
46
47 /* ref: $Format:%D$ */
48 /* git commit: $Format:%H$ */
49 /* commit time: $Format:%ai$ */
1717 void dh_free(dh_key *key)
1818 {
1919 LTC_ARGCHKVD(key != NULL);
20 mp_cleanup_multi(&key->base, &key->prime, &key->x, &key->y, NULL);
20 mp_cleanup_multi(&key->prime, &key->base, &key->y, &key->x, NULL);
2121 }
2222
2323 #endif /* LTC_MDH */
9090 zeromem(buf, keysize);
9191 XFREE(buf);
9292 freemp:
93 if (err != CRYPT_OK) mp_clear_multi(key->x, key->y, key->base, key->prime, NULL);
93 if (err != CRYPT_OK) dh_free(key);
9494 return err;
9595 }
9696
2727 LTC_ARGCHK(key != NULL);
2828
2929 /* init */
30 if ((err = mp_init_multi(&key->prime, &key->base, &key->x, &key->y, NULL)) != CRYPT_OK) {
30 if ((err = mp_init_multi(&key->x, &key->y, &key->base, &key->prime, NULL)) != CRYPT_OK) {
3131 return err;
3232 }
3333
8585 return CRYPT_OK;
8686
8787 error:
88 mp_clear_multi(key->prime, key->base, key->y, key->x, NULL);
88 dh_free(key);
8989 return err;
9090 }
9191
130130 LTC_ASN1_INTEGER, 1UL, key->qP,
131131 LTC_ASN1_EOL, 0UL, NULL);
132132 if (err != CRYPT_OK) { goto LBL_ERR; }
133 mp_clear_multi(zero, iter, NULL);
134133 key->type = PK_PRIVATE;
135134 err = CRYPT_OK;
136135 goto LBL_FREE2;
137136
138137 LBL_ERR:
139 mp_clear_multi(key->d, key->e, key->N, key->dQ, key->dP, key->qP, key->p, key->q, zero, iter, NULL);
138 rsa_free(key);
140139 LBL_FREE2:
140 mp_clear_multi(iter, zero, NULL);
141141 XFREE(buf2);
142142 LBL_FREE1:
143143 XFREE(buf1);