├── .appveyor.cmd ├── .appveyor.yml ├── .github └── workflows │ ├── 01-main-tests.yml │ ├── 02-bsd-tests.yml.OBSOLETE │ ├── 02-linux-x64-tests.yml │ ├── 03-linux-i386-tests.yml │ └── 04-cygwin-tests.yml ├── .gitignore ├── Changes ├── CryptX.xs ├── LICENSE ├── MANIFEST.SKIP ├── Makefile.PL ├── README.md ├── SECURITY.md ├── _generators ├── Cipher.pm.tt ├── Cipher.t.tt ├── Digest.pm.tt ├── Digest.t.tt ├── Mac.pm.tt ├── Mac.t.tt ├── Mac.xs.inc.tt ├── Mode.pm.tt ├── Mode.xs.inc.tt ├── Mode_p.xs.inc.tt ├── gen.pl ├── tt_cipher.pl ├── tt_digest.pl ├── tt_mac.pl ├── tt_mode.pl └── version_patch.pl ├── inc ├── CryptX_AuthEnc_CCM.xs.inc ├── CryptX_AuthEnc_ChaCha20Poly1305.xs.inc ├── CryptX_AuthEnc_EAX.xs.inc ├── CryptX_AuthEnc_GCM.xs.inc ├── CryptX_AuthEnc_OCB.xs.inc ├── CryptX_BigInt_LTM.xs.inc ├── CryptX_Checksum_Adler32.xs.inc ├── CryptX_Checksum_CRC32.xs.inc ├── CryptX_Cipher.xs.inc ├── CryptX_Digest.xs.inc ├── CryptX_Digest_SHAKE.xs.inc ├── CryptX_KeyDerivation.xs.inc ├── CryptX_Mac_BLAKE2b.xs.inc ├── CryptX_Mac_BLAKE2s.xs.inc ├── CryptX_Mac_F9.xs.inc ├── CryptX_Mac_HMAC.xs.inc ├── CryptX_Mac_OMAC.xs.inc ├── CryptX_Mac_PMAC.xs.inc ├── CryptX_Mac_Pelican.xs.inc ├── CryptX_Mac_Poly1305.xs.inc ├── CryptX_Mac_XCBC.xs.inc ├── CryptX_Mode_CBC.xs.inc ├── CryptX_Mode_CFB.xs.inc ├── CryptX_Mode_CTR.xs.inc ├── CryptX_Mode_ECB.xs.inc ├── CryptX_Mode_OFB.xs.inc ├── CryptX_PK_DH.xs.inc ├── CryptX_PK_DSA.xs.inc ├── CryptX_PK_ECC.xs.inc ├── CryptX_PK_Ed25519.xs.inc ├── CryptX_PK_RSA.xs.inc ├── CryptX_PK_X25519.xs.inc ├── CryptX_PRNG.xs.inc ├── CryptX_Stream_ChaCha.xs.inc ├── CryptX_Stream_RC4.xs.inc ├── CryptX_Stream_Rabbit.xs.inc ├── CryptX_Stream_Salsa20.xs.inc ├── CryptX_Stream_Sober128.xs.inc └── CryptX_Stream_Sosemanuk.xs.inc ├── lib ├── Crypt │ ├── AuthEnc.pm │ ├── AuthEnc │ │ ├── CCM.pm │ │ ├── ChaCha20Poly1305.pm │ │ ├── EAX.pm │ │ ├── GCM.pm │ │ └── OCB.pm │ ├── Checksum.pm │ ├── Checksum │ │ ├── Adler32.pm │ │ └── CRC32.pm │ ├── Cipher.pm │ ├── Cipher │ │ ├── AES.pm │ │ ├── Anubis.pm │ │ ├── Blowfish.pm │ │ ├── CAST5.pm │ │ ├── Camellia.pm │ │ ├── DES.pm │ │ ├── DES_EDE.pm │ │ ├── IDEA.pm │ │ ├── KASUMI.pm │ │ ├── Khazad.pm │ │ ├── MULTI2.pm │ │ ├── Noekeon.pm │ │ ├── RC2.pm │ │ ├── RC5.pm │ │ ├── RC6.pm │ │ ├── SAFERP.pm │ │ ├── SAFER_K128.pm │ │ ├── SAFER_K64.pm │ │ ├── SAFER_SK128.pm │ │ ├── SAFER_SK64.pm │ │ ├── SEED.pm │ │ ├── Serpent.pm │ │ ├── Skipjack.pm │ │ ├── Twofish.pm │ │ └── XTEA.pm │ ├── Digest.pm │ ├── Digest │ │ ├── BLAKE2b_160.pm │ │ ├── BLAKE2b_256.pm │ │ ├── BLAKE2b_384.pm │ │ ├── BLAKE2b_512.pm │ │ ├── BLAKE2s_128.pm │ │ ├── BLAKE2s_160.pm │ │ ├── BLAKE2s_224.pm │ │ ├── BLAKE2s_256.pm │ │ ├── CHAES.pm │ │ ├── Keccak224.pm │ │ ├── Keccak256.pm │ │ ├── Keccak384.pm │ │ ├── Keccak512.pm │ │ ├── MD2.pm │ │ ├── MD4.pm │ │ ├── MD5.pm │ │ ├── RIPEMD128.pm │ │ ├── RIPEMD160.pm │ │ ├── RIPEMD256.pm │ │ ├── RIPEMD320.pm │ │ ├── SHA1.pm │ │ ├── SHA224.pm │ │ ├── SHA256.pm │ │ ├── SHA384.pm │ │ ├── SHA3_224.pm │ │ ├── SHA3_256.pm │ │ ├── SHA3_384.pm │ │ ├── SHA3_512.pm │ │ ├── SHA512.pm │ │ ├── SHA512_224.pm │ │ ├── SHA512_256.pm │ │ ├── SHAKE.pm │ │ ├── Tiger192.pm │ │ └── Whirlpool.pm │ ├── KeyDerivation.pm │ ├── Mac.pm │ ├── Mac │ │ ├── BLAKE2b.pm │ │ ├── BLAKE2s.pm │ │ ├── F9.pm │ │ ├── HMAC.pm │ │ ├── OMAC.pm │ │ ├── PMAC.pm │ │ ├── Pelican.pm │ │ ├── Poly1305.pm │ │ └── XCBC.pm │ ├── Misc.pm │ ├── Mode.pm │ ├── Mode │ │ ├── CBC.pm │ │ ├── CFB.pm │ │ ├── CTR.pm │ │ ├── ECB.pm │ │ └── OFB.pm │ ├── PK.pm │ ├── PK │ │ ├── DH.pm │ │ ├── DSA.pm │ │ ├── ECC.pm │ │ ├── Ed25519.pm │ │ ├── RSA.pm │ │ └── X25519.pm │ ├── PRNG.pm │ ├── PRNG │ │ ├── ChaCha20.pm │ │ ├── Fortuna.pm │ │ ├── RC4.pm │ │ ├── Sober128.pm │ │ └── Yarrow.pm │ └── Stream │ │ ├── ChaCha.pm │ │ ├── RC4.pm │ │ ├── Rabbit.pm │ │ ├── Salsa20.pm │ │ ├── Sober128.pm │ │ └── Sosemanuk.pm ├── CryptX.pm └── Math │ └── BigInt │ └── LTM.pm ├── ppport.h ├── src ├── Makefile ├── Makefile.nmake ├── README.txt ├── ltc │ ├── LICENSE │ ├── ciphers │ │ ├── aes │ │ │ ├── aes.c │ │ │ ├── aes_desc.c │ │ │ ├── aes_tab.c │ │ │ └── aesni.c │ │ ├── anubis.c │ │ ├── blowfish.c │ │ ├── camellia.c │ │ ├── cast5.c │ │ ├── des.c │ │ ├── idea.c │ │ ├── kasumi.c │ │ ├── khazad.c │ │ ├── kseed.c │ │ ├── multi2.c │ │ ├── noekeon.c │ │ ├── rc2.c │ │ ├── rc5.c │ │ ├── rc6.c │ │ ├── safer │ │ │ ├── safer.c │ │ │ ├── safer_tab.c │ │ │ └── saferp.c │ │ ├── serpent.c │ │ ├── skipjack.c │ │ ├── sm4.c │ │ ├── tea.c │ │ ├── twofish │ │ │ ├── twofish.c │ │ │ └── twofish_tab.c │ │ └── xtea.c │ ├── encauth │ │ ├── ccm │ │ │ ├── ccm_add_aad.c │ │ │ ├── ccm_add_nonce.c │ │ │ ├── ccm_done.c │ │ │ ├── ccm_init.c │ │ │ ├── ccm_memory.c │ │ │ ├── ccm_process.c │ │ │ └── ccm_reset.c │ │ ├── chachapoly │ │ │ ├── chacha20poly1305_add_aad.c │ │ │ ├── chacha20poly1305_decrypt.c │ │ │ ├── chacha20poly1305_done.c │ │ │ ├── chacha20poly1305_encrypt.c │ │ │ ├── chacha20poly1305_init.c │ │ │ ├── chacha20poly1305_memory.c │ │ │ ├── chacha20poly1305_setiv.c │ │ │ └── chacha20poly1305_setiv_rfc7905.c │ │ ├── eax │ │ │ ├── eax_addheader.c │ │ │ ├── eax_decrypt.c │ │ │ ├── eax_decrypt_verify_memory.c │ │ │ ├── eax_done.c │ │ │ ├── eax_encrypt.c │ │ │ ├── eax_encrypt_authenticate_memory.c │ │ │ └── eax_init.c │ │ ├── gcm │ │ │ ├── gcm_add_aad.c │ │ │ ├── gcm_add_iv.c │ │ │ ├── gcm_done.c │ │ │ ├── gcm_gf_mult.c │ │ │ ├── gcm_init.c │ │ │ ├── gcm_memory.c │ │ │ ├── gcm_mult_h.c │ │ │ ├── gcm_process.c │ │ │ └── gcm_reset.c │ │ ├── ocb3 │ │ │ ├── ocb3_add_aad.c │ │ │ ├── ocb3_decrypt.c │ │ │ ├── ocb3_decrypt_last.c │ │ │ ├── ocb3_decrypt_verify_memory.c │ │ │ ├── ocb3_done.c │ │ │ ├── ocb3_encrypt.c │ │ │ ├── ocb3_encrypt_authenticate_memory.c │ │ │ ├── ocb3_encrypt_last.c │ │ │ ├── ocb3_init.c │ │ │ ├── ocb3_int_ntz.c │ │ │ └── ocb3_int_xor_blocks.c │ │ └── siv │ │ │ └── siv.c │ ├── hashes │ │ ├── blake2b.c │ │ ├── blake2s.c │ │ ├── chc │ │ │ └── chc.c │ │ ├── helper │ │ │ ├── hash_file.c │ │ │ ├── hash_filehandle.c │ │ │ ├── hash_memory.c │ │ │ └── hash_memory_multi.c │ │ ├── md2.c │ │ ├── md4.c │ │ ├── md5.c │ │ ├── rmd128.c │ │ ├── rmd160.c │ │ ├── rmd256.c │ │ ├── rmd320.c │ │ ├── sha1.c │ │ ├── sha2 │ │ │ ├── sha224.c │ │ │ ├── sha256.c │ │ │ ├── sha384.c │ │ │ ├── sha512.c │ │ │ ├── sha512_224.c │ │ │ └── sha512_256.c │ │ ├── sha3.c │ │ ├── sha3_test.c │ │ ├── tiger.c │ │ └── whirl │ │ │ ├── whirl.c │ │ │ └── whirltab.c │ ├── headers │ │ ├── tomcrypt.h │ │ ├── tomcrypt_argchk.h │ │ ├── tomcrypt_cfg.h │ │ ├── tomcrypt_cipher.h │ │ ├── tomcrypt_custom.h │ │ ├── tomcrypt_hash.h │ │ ├── tomcrypt_mac.h │ │ ├── tomcrypt_macros.h │ │ ├── tomcrypt_math.h │ │ ├── tomcrypt_misc.h │ │ ├── tomcrypt_pk.h │ │ ├── tomcrypt_pkcs.h │ │ ├── tomcrypt_private.h │ │ └── tomcrypt_prng.h │ ├── mac │ │ ├── blake2 │ │ │ ├── blake2bmac.c │ │ │ ├── blake2bmac_file.c │ │ │ ├── blake2bmac_memory.c │ │ │ ├── blake2bmac_memory_multi.c │ │ │ ├── blake2smac.c │ │ │ ├── blake2smac_file.c │ │ │ ├── blake2smac_memory.c │ │ │ └── blake2smac_memory_multi.c │ │ ├── f9 │ │ │ ├── f9_done.c │ │ │ ├── f9_file.c │ │ │ ├── f9_init.c │ │ │ ├── f9_memory.c │ │ │ ├── f9_memory_multi.c │ │ │ └── f9_process.c │ │ ├── hmac │ │ │ ├── hmac_done.c │ │ │ ├── hmac_file.c │ │ │ ├── hmac_init.c │ │ │ ├── hmac_memory.c │ │ │ ├── hmac_memory_multi.c │ │ │ └── hmac_process.c │ │ ├── omac │ │ │ ├── omac_done.c │ │ │ ├── omac_file.c │ │ │ ├── omac_init.c │ │ │ ├── omac_memory.c │ │ │ ├── omac_memory_multi.c │ │ │ └── omac_process.c │ │ ├── pelican │ │ │ ├── pelican.c │ │ │ └── pelican_memory.c │ │ ├── pmac │ │ │ ├── pmac_done.c │ │ │ ├── pmac_file.c │ │ │ ├── pmac_init.c │ │ │ ├── pmac_memory.c │ │ │ ├── pmac_memory_multi.c │ │ │ ├── pmac_ntz.c │ │ │ ├── pmac_process.c │ │ │ └── pmac_shift_xor.c │ │ ├── poly1305 │ │ │ ├── poly1305.c │ │ │ ├── poly1305_file.c │ │ │ ├── poly1305_memory.c │ │ │ └── poly1305_memory_multi.c │ │ └── xcbc │ │ │ ├── xcbc_done.c │ │ │ ├── xcbc_file.c │ │ │ ├── xcbc_init.c │ │ │ ├── xcbc_memory.c │ │ │ ├── xcbc_memory_multi.c │ │ │ └── xcbc_process.c │ ├── math │ │ ├── fp │ │ │ └── ltc_ecc_fp_mulmod.c │ │ ├── ltm_desc.c │ │ ├── multi.c │ │ ├── radix_to_bin.c │ │ ├── rand_bn.c │ │ ├── rand_prime.c │ │ └── tfm_desc.c │ ├── misc │ │ ├── adler32.c │ │ ├── base16 │ │ │ ├── base16_decode.c │ │ │ └── base16_encode.c │ │ ├── base32 │ │ │ ├── base32_decode.c │ │ │ └── base32_encode.c │ │ ├── base64 │ │ │ ├── base64_decode.c │ │ │ └── base64_encode.c │ │ ├── bcrypt │ │ │ └── bcrypt.c │ │ ├── burn_stack.c │ │ ├── compare_testvector.c │ │ ├── copy_or_zeromem.c │ │ ├── crc32.c │ │ ├── crypt │ │ │ ├── crypt.c │ │ │ ├── crypt_argchk.c │ │ │ ├── crypt_cipher_descriptor.c │ │ │ ├── crypt_cipher_is_valid.c │ │ │ ├── crypt_constants.c │ │ │ ├── crypt_find_cipher.c │ │ │ ├── crypt_find_cipher_any.c │ │ │ ├── crypt_find_cipher_id.c │ │ │ ├── crypt_find_hash.c │ │ │ ├── crypt_find_hash_any.c │ │ │ ├── crypt_find_hash_id.c │ │ │ ├── crypt_find_hash_oid.c │ │ │ ├── crypt_find_prng.c │ │ │ ├── crypt_fsa.c │ │ │ ├── crypt_hash_descriptor.c │ │ │ ├── crypt_hash_is_valid.c │ │ │ ├── crypt_inits.c │ │ │ ├── crypt_ltc_mp_descriptor.c │ │ │ ├── crypt_prng_descriptor.c │ │ │ ├── crypt_prng_is_valid.c │ │ │ ├── crypt_prng_rng_descriptor.c │ │ │ ├── crypt_register_all_ciphers.c │ │ │ ├── crypt_register_all_hashes.c │ │ │ ├── crypt_register_all_prngs.c │ │ │ ├── crypt_register_cipher.c │ │ │ ├── crypt_register_hash.c │ │ │ ├── crypt_register_prng.c │ │ │ ├── crypt_sizes.c │ │ │ ├── crypt_unregister_cipher.c │ │ │ ├── crypt_unregister_hash.c │ │ │ └── crypt_unregister_prng.c │ │ ├── error_to_string.c │ │ ├── hkdf │ │ │ └── hkdf.c │ │ ├── mem_neq.c │ │ ├── padding │ │ │ ├── padding_depad.c │ │ │ └── padding_pad.c │ │ ├── password_free.c │ │ ├── pbes │ │ │ ├── pbes.c │ │ │ ├── pbes1.c │ │ │ └── pbes2.c │ │ ├── pem │ │ │ ├── pem.c │ │ │ ├── pem_pkcs.c │ │ │ ├── pem_read.c │ │ │ └── pem_ssh.c │ │ ├── pkcs12 │ │ │ ├── pkcs12_kdf.c │ │ │ └── pkcs12_utf8_to_utf16.c │ │ ├── pkcs5 │ │ │ ├── pkcs_5_1.c │ │ │ └── pkcs_5_2.c │ │ ├── ssh │ │ │ ├── ssh_decode_sequence_multi.c │ │ │ └── ssh_encode_sequence_multi.c │ │ └── zeromem.c │ ├── modes │ │ ├── cbc │ │ │ ├── cbc_decrypt.c │ │ │ ├── cbc_done.c │ │ │ ├── cbc_encrypt.c │ │ │ ├── cbc_getiv.c │ │ │ ├── cbc_setiv.c │ │ │ └── cbc_start.c │ │ ├── cfb │ │ │ ├── cfb_decrypt.c │ │ │ ├── cfb_done.c │ │ │ ├── cfb_encrypt.c │ │ │ ├── cfb_getiv.c │ │ │ ├── cfb_setiv.c │ │ │ └── cfb_start.c │ │ ├── ctr │ │ │ ├── ctr_decrypt.c │ │ │ ├── ctr_done.c │ │ │ ├── ctr_encrypt.c │ │ │ ├── ctr_getiv.c │ │ │ ├── ctr_setiv.c │ │ │ └── ctr_start.c │ │ ├── ecb │ │ │ ├── ecb_decrypt.c │ │ │ ├── ecb_done.c │ │ │ ├── ecb_encrypt.c │ │ │ └── ecb_start.c │ │ └── ofb │ │ │ ├── ofb_decrypt.c │ │ │ ├── ofb_done.c │ │ │ ├── ofb_encrypt.c │ │ │ ├── ofb_getiv.c │ │ │ ├── ofb_setiv.c │ │ │ └── ofb_start.c │ ├── pk │ │ ├── asn1 │ │ │ ├── der │ │ │ │ ├── bit │ │ │ │ │ ├── der_decode_bit_string.c │ │ │ │ │ ├── der_decode_raw_bit_string.c │ │ │ │ │ ├── der_encode_bit_string.c │ │ │ │ │ ├── der_encode_raw_bit_string.c │ │ │ │ │ └── der_length_bit_string.c │ │ │ │ ├── boolean │ │ │ │ │ ├── der_decode_boolean.c │ │ │ │ │ ├── der_encode_boolean.c │ │ │ │ │ └── der_length_boolean.c │ │ │ │ ├── choice │ │ │ │ │ └── der_decode_choice.c │ │ │ │ ├── custom_type │ │ │ │ │ ├── der_decode_custom_type.c │ │ │ │ │ ├── der_encode_custom_type.c │ │ │ │ │ └── der_length_custom_type.c │ │ │ │ ├── general │ │ │ │ │ ├── der_asn1_maps.c │ │ │ │ │ ├── der_decode_asn1_identifier.c │ │ │ │ │ ├── der_decode_asn1_length.c │ │ │ │ │ ├── der_encode_asn1_identifier.c │ │ │ │ │ ├── der_encode_asn1_length.c │ │ │ │ │ ├── der_length_asn1_identifier.c │ │ │ │ │ └── der_length_asn1_length.c │ │ │ │ ├── generalizedtime │ │ │ │ │ ├── der_decode_generalizedtime.c │ │ │ │ │ ├── der_encode_generalizedtime.c │ │ │ │ │ └── der_length_generalizedtime.c │ │ │ │ ├── ia5 │ │ │ │ │ ├── der_decode_ia5_string.c │ │ │ │ │ ├── der_encode_ia5_string.c │ │ │ │ │ └── der_length_ia5_string.c │ │ │ │ ├── integer │ │ │ │ │ ├── der_decode_integer.c │ │ │ │ │ ├── der_encode_integer.c │ │ │ │ │ └── der_length_integer.c │ │ │ │ ├── object_identifier │ │ │ │ │ ├── der_decode_object_identifier.c │ │ │ │ │ ├── der_encode_object_identifier.c │ │ │ │ │ └── der_length_object_identifier.c │ │ │ │ ├── octet │ │ │ │ │ ├── der_decode_octet_string.c │ │ │ │ │ ├── der_encode_octet_string.c │ │ │ │ │ └── der_length_octet_string.c │ │ │ │ ├── printable_string │ │ │ │ │ ├── der_decode_printable_string.c │ │ │ │ │ ├── der_encode_printable_string.c │ │ │ │ │ └── der_length_printable_string.c │ │ │ │ ├── sequence │ │ │ │ │ ├── der_decode_sequence_ex.c │ │ │ │ │ ├── der_decode_sequence_flexi.c │ │ │ │ │ ├── der_decode_sequence_multi.c │ │ │ │ │ ├── der_encode_sequence_ex.c │ │ │ │ │ ├── der_encode_sequence_multi.c │ │ │ │ │ ├── der_flexi_sequence_cmp.c │ │ │ │ │ ├── der_length_sequence.c │ │ │ │ │ ├── der_sequence_free.c │ │ │ │ │ └── der_sequence_shrink.c │ │ │ │ ├── set │ │ │ │ │ ├── der_encode_set.c │ │ │ │ │ └── der_encode_setof.c │ │ │ │ ├── short_integer │ │ │ │ │ ├── der_decode_short_integer.c │ │ │ │ │ ├── der_encode_short_integer.c │ │ │ │ │ └── der_length_short_integer.c │ │ │ │ ├── teletex_string │ │ │ │ │ ├── der_decode_teletex_string.c │ │ │ │ │ └── der_length_teletex_string.c │ │ │ │ ├── utctime │ │ │ │ │ ├── der_decode_utctime.c │ │ │ │ │ ├── der_encode_utctime.c │ │ │ │ │ └── der_length_utctime.c │ │ │ │ └── utf8 │ │ │ │ │ ├── der_decode_utf8_string.c │ │ │ │ │ ├── der_encode_utf8_string.c │ │ │ │ │ └── der_length_utf8_string.c │ │ │ ├── oid │ │ │ │ ├── pk_get.c │ │ │ │ ├── pk_oid_cmp.c │ │ │ │ └── pk_oid_str.c │ │ │ ├── pkcs8 │ │ │ │ ├── pkcs8_decode_flexi.c │ │ │ │ └── pkcs8_get.c │ │ │ └── x509 │ │ │ │ ├── x509_decode_public_key_from_certificate.c │ │ │ │ ├── x509_decode_spki.c │ │ │ │ ├── x509_decode_subject_public_key_info.c │ │ │ │ └── x509_encode_subject_public_key_info.c │ │ ├── dh │ │ │ ├── dh.c │ │ │ ├── dh_check_pubkey.c │ │ │ ├── dh_export.c │ │ │ ├── dh_export_key.c │ │ │ ├── dh_free.c │ │ │ ├── dh_generate_key.c │ │ │ ├── dh_import.c │ │ │ ├── dh_import_pkcs8.c │ │ │ ├── dh_set.c │ │ │ ├── dh_set_pg_dhparam.c │ │ │ └── dh_shared_secret.c │ │ ├── dsa │ │ │ ├── dsa_decrypt_key.c │ │ │ ├── dsa_encrypt_key.c │ │ │ ├── dsa_export.c │ │ │ ├── dsa_free.c │ │ │ ├── dsa_generate_key.c │ │ │ ├── dsa_generate_pqg.c │ │ │ ├── dsa_import.c │ │ │ ├── dsa_import_pkcs8.c │ │ │ ├── dsa_init.c │ │ │ ├── dsa_make_key.c │ │ │ ├── dsa_set.c │ │ │ ├── dsa_set_pqg_dsaparam.c │ │ │ ├── dsa_shared_secret.c │ │ │ ├── dsa_sign_hash.c │ │ │ ├── dsa_verify_hash.c │ │ │ └── dsa_verify_key.c │ │ ├── ec25519 │ │ │ ├── ec25519_crypto_ctx.c │ │ │ ├── ec25519_export.c │ │ │ ├── ec25519_import_pkcs8.c │ │ │ └── tweetnacl.c │ │ ├── ecc │ │ │ ├── ecc.c │ │ │ ├── ecc_ansi_x963_export.c │ │ │ ├── ecc_ansi_x963_import.c │ │ │ ├── ecc_decrypt_key.c │ │ │ ├── ecc_encrypt_key.c │ │ │ ├── ecc_export.c │ │ │ ├── ecc_export_openssl.c │ │ │ ├── ecc_find_curve.c │ │ │ ├── ecc_free.c │ │ │ ├── ecc_get_key.c │ │ │ ├── ecc_get_oid_str.c │ │ │ ├── ecc_get_size.c │ │ │ ├── ecc_import.c │ │ │ ├── ecc_import_openssl.c │ │ │ ├── ecc_import_pkcs8.c │ │ │ ├── ecc_import_x509.c │ │ │ ├── ecc_make_key.c │ │ │ ├── ecc_recover_key.c │ │ │ ├── ecc_set_curve.c │ │ │ ├── ecc_set_curve_internal.c │ │ │ ├── ecc_set_key.c │ │ │ ├── ecc_shared_secret.c │ │ │ ├── ecc_sign_hash.c │ │ │ ├── ecc_sign_hash_eth27.c │ │ │ ├── ecc_sign_hash_internal.c │ │ │ ├── ecc_sign_hash_rfc5656.c │ │ │ ├── ecc_sign_hash_rfc7518.c │ │ │ ├── ecc_sizes.c │ │ │ ├── ecc_ssh_ecdsa_encode_name.c │ │ │ ├── ecc_verify_hash.c │ │ │ ├── ecc_verify_hash_eth27.c │ │ │ ├── ecc_verify_hash_internal.c │ │ │ ├── ecc_verify_hash_rfc5656.c │ │ │ ├── ecc_verify_hash_rfc7518.c │ │ │ ├── ltc_ecc_export_point.c │ │ │ ├── ltc_ecc_import_point.c │ │ │ ├── ltc_ecc_is_point.c │ │ │ ├── ltc_ecc_is_point_at_infinity.c │ │ │ ├── ltc_ecc_map.c │ │ │ ├── ltc_ecc_mul2add.c │ │ │ ├── ltc_ecc_mulmod.c │ │ │ ├── ltc_ecc_mulmod_timing.c │ │ │ ├── ltc_ecc_points.c │ │ │ ├── ltc_ecc_projective_add_point.c │ │ │ ├── ltc_ecc_projective_dbl_point.c │ │ │ └── ltc_ecc_verify_key.c │ │ ├── ed25519 │ │ │ ├── ed25519_export.c │ │ │ ├── ed25519_import.c │ │ │ ├── ed25519_import_pkcs8.c │ │ │ ├── ed25519_import_raw.c │ │ │ ├── ed25519_import_x509.c │ │ │ ├── ed25519_make_key.c │ │ │ ├── ed25519_sign.c │ │ │ └── ed25519_verify.c │ │ ├── pka_key.c │ │ ├── pkcs1 │ │ │ ├── pkcs_1_i2osp.c │ │ │ ├── pkcs_1_mgf1.c │ │ │ ├── pkcs_1_oaep_decode.c │ │ │ ├── pkcs_1_oaep_encode.c │ │ │ ├── pkcs_1_os2ip.c │ │ │ ├── pkcs_1_pss_decode.c │ │ │ ├── pkcs_1_pss_encode.c │ │ │ ├── pkcs_1_v1_5_decode.c │ │ │ └── pkcs_1_v1_5_encode.c │ │ ├── rsa │ │ │ ├── rsa_decrypt_key.c │ │ │ ├── rsa_encrypt_key.c │ │ │ ├── rsa_export.c │ │ │ ├── rsa_exptmod.c │ │ │ ├── rsa_get_size.c │ │ │ ├── rsa_import.c │ │ │ ├── rsa_import_pkcs8.c │ │ │ ├── rsa_import_x509.c │ │ │ ├── rsa_key.c │ │ │ ├── rsa_make_key.c │ │ │ ├── rsa_set.c │ │ │ ├── rsa_sign_hash.c │ │ │ ├── rsa_sign_saltlen_get.c │ │ │ └── rsa_verify_hash.c │ │ └── x25519 │ │ │ ├── x25519_export.c │ │ │ ├── x25519_import.c │ │ │ ├── x25519_import_pkcs8.c │ │ │ ├── x25519_import_raw.c │ │ │ ├── x25519_import_x509.c │ │ │ ├── x25519_make_key.c │ │ │ └── x25519_shared_secret.c │ ├── prngs │ │ ├── chacha20.c │ │ ├── fortuna.c │ │ ├── rc4.c │ │ ├── rng_get_bytes.c │ │ ├── rng_make_prng.c │ │ ├── sober128.c │ │ ├── sprng.c │ │ └── yarrow.c │ └── stream │ │ ├── chacha │ │ ├── chacha_crypt.c │ │ ├── chacha_done.c │ │ ├── chacha_ivctr32.c │ │ ├── chacha_ivctr64.c │ │ ├── chacha_keystream.c │ │ ├── chacha_memory.c │ │ └── chacha_setup.c │ │ ├── rabbit │ │ ├── rabbit.c │ │ └── rabbit_memory.c │ │ ├── rc4 │ │ ├── rc4_stream.c │ │ └── rc4_stream_memory.c │ │ ├── salsa20 │ │ ├── salsa20_crypt.c │ │ ├── salsa20_done.c │ │ ├── salsa20_ivctr64.c │ │ ├── salsa20_keystream.c │ │ ├── salsa20_memory.c │ │ ├── salsa20_setup.c │ │ ├── xsalsa20_memory.c │ │ └── xsalsa20_setup.c │ │ ├── sober128 │ │ ├── sober128_stream.c │ │ ├── sober128_stream_memory.c │ │ └── sober128tab.c │ │ └── sosemanuk │ │ ├── sosemanuk.c │ │ └── sosemanuk_memory.c ├── ltm │ ├── LICENSE │ ├── bn_error.c │ ├── bn_fast_mp_invmod.c │ ├── bn_fast_mp_montgomery_reduce.c │ ├── bn_fast_s_mp_mul_digs.c │ ├── bn_fast_s_mp_mul_high_digs.c │ ├── bn_fast_s_mp_sqr.c │ ├── bn_mp_2expt.c │ ├── bn_mp_abs.c │ ├── bn_mp_add.c │ ├── bn_mp_add_d.c │ ├── bn_mp_addmod.c │ ├── bn_mp_and.c │ ├── bn_mp_clamp.c │ ├── bn_mp_clear.c │ ├── bn_mp_clear_multi.c │ ├── bn_mp_cmp.c │ ├── bn_mp_cmp_d.c │ ├── bn_mp_cmp_mag.c │ ├── bn_mp_cnt_lsb.c │ ├── bn_mp_complement.c │ ├── bn_mp_copy.c │ ├── bn_mp_count_bits.c │ ├── bn_mp_div.c │ ├── bn_mp_div_2.c │ ├── bn_mp_div_2d.c │ ├── bn_mp_div_3.c │ ├── bn_mp_div_d.c │ ├── bn_mp_dr_is_modulus.c │ ├── bn_mp_dr_reduce.c │ ├── bn_mp_dr_setup.c │ ├── bn_mp_exch.c │ ├── bn_mp_export.c │ ├── bn_mp_expt_d.c │ ├── bn_mp_expt_d_ex.c │ ├── bn_mp_exptmod.c │ ├── bn_mp_exptmod_fast.c │ ├── bn_mp_exteuclid.c │ ├── bn_mp_fread.c │ ├── bn_mp_fwrite.c │ ├── bn_mp_gcd.c │ ├── bn_mp_get_bit.c │ ├── bn_mp_get_int.c │ ├── bn_mp_get_long.c │ ├── bn_mp_grow.c │ ├── bn_mp_import.c │ ├── bn_mp_init.c │ ├── bn_mp_init_copy.c │ ├── bn_mp_init_multi.c │ ├── bn_mp_init_set.c │ ├── bn_mp_init_set_int.c │ ├── bn_mp_init_size.c │ ├── bn_mp_invmod.c │ ├── bn_mp_invmod_slow.c │ ├── bn_mp_is_square.c │ ├── bn_mp_jacobi.c │ ├── bn_mp_karatsuba_mul.c │ ├── bn_mp_karatsuba_sqr.c │ ├── bn_mp_kronecker.c │ ├── bn_mp_lcm.c │ ├── bn_mp_lshd.c │ ├── bn_mp_mod.c │ ├── bn_mp_mod_2d.c │ ├── bn_mp_mod_d.c │ ├── bn_mp_montgomery_calc_normalization.c │ ├── bn_mp_montgomery_reduce.c │ ├── bn_mp_montgomery_setup.c │ ├── bn_mp_mul.c │ ├── bn_mp_mul_2.c │ ├── bn_mp_mul_2d.c │ ├── bn_mp_mul_d.c │ ├── bn_mp_mulmod.c │ ├── bn_mp_n_root.c │ ├── bn_mp_n_root_ex.c │ ├── bn_mp_neg.c │ ├── bn_mp_or.c │ ├── bn_mp_prime_fermat.c │ ├── bn_mp_prime_frobenius_underwood.c │ ├── bn_mp_prime_is_divisible.c │ ├── bn_mp_prime_is_prime.c │ ├── bn_mp_prime_miller_rabin.c │ ├── bn_mp_prime_next_prime.c │ ├── bn_mp_prime_rabin_miller_trials.c │ ├── bn_mp_prime_random_ex.c │ ├── bn_mp_prime_strong_lucas_selfridge.c │ ├── bn_mp_radix_size.c │ ├── bn_mp_radix_smap.c │ ├── bn_mp_rand.c │ ├── bn_mp_read_radix.c │ ├── bn_mp_read_signed_bin.c │ ├── bn_mp_read_unsigned_bin.c │ ├── bn_mp_reduce.c │ ├── bn_mp_reduce_2k.c │ ├── bn_mp_reduce_2k_l.c │ ├── bn_mp_reduce_2k_setup.c │ ├── bn_mp_reduce_2k_setup_l.c │ ├── bn_mp_reduce_is_2k.c │ ├── bn_mp_reduce_is_2k_l.c │ ├── bn_mp_reduce_setup.c │ ├── bn_mp_rshd.c │ ├── bn_mp_set.c │ ├── bn_mp_set_int.c │ ├── bn_mp_set_long.c │ ├── bn_mp_shrink.c │ ├── bn_mp_signed_bin_size.c │ ├── bn_mp_sqr.c │ ├── bn_mp_sqrmod.c │ ├── bn_mp_sqrt.c │ ├── bn_mp_sqrtmod_prime.c │ ├── bn_mp_sub.c │ ├── bn_mp_sub_d.c │ ├── bn_mp_submod.c │ ├── bn_mp_tc_and.c │ ├── bn_mp_tc_div_2d.c │ ├── bn_mp_tc_or.c │ ├── bn_mp_tc_xor.c │ ├── bn_mp_to_signed_bin.c │ ├── bn_mp_to_signed_bin_n.c │ ├── bn_mp_to_unsigned_bin.c │ ├── bn_mp_to_unsigned_bin_n.c │ ├── bn_mp_toom_mul.c │ ├── bn_mp_toom_sqr.c │ ├── bn_mp_toradix.c │ ├── bn_mp_toradix_n.c │ ├── bn_mp_unsigned_bin_size.c │ ├── bn_mp_xor.c │ ├── bn_mp_zero.c │ ├── bn_prime_tab.c │ ├── bn_reverse.c │ ├── bn_s_mp_add.c │ ├── bn_s_mp_exptmod.c │ ├── bn_s_mp_mul_digs.c │ ├── bn_s_mp_mul_high_digs.c │ ├── bn_s_mp_sqr.c │ ├── bn_s_mp_sub.c │ ├── bncore.c │ ├── tommath.h │ ├── tommath_class.h │ ├── tommath_private.h │ └── tommath_superclass.h └── update-libtom.pl ├── t ├── 001_compile.t ├── 002_all_pm.t ├── 003_all_pm_pod.t ├── 004_all_pm_pod_spelling.t ├── 005_all_pm_pod_coverage.t ├── auth_enc_ccm.t ├── auth_enc_ccm_test_vector_ltc.t ├── auth_enc_chacha20poly1305.t ├── auth_enc_eax.t ├── auth_enc_eax_test_vector_ltc.t ├── auth_enc_gcm.t ├── auth_enc_gcm_test_vector_ltc.t ├── auth_enc_ocb.t ├── auth_enc_ocb_test_vectors_ietf.t ├── checksum.t ├── cipher_aes.t ├── cipher_aes_test_vectors_bc.t ├── cipher_anubis.t ├── cipher_blowfish.t ├── cipher_camellia.t ├── cipher_cast5.t ├── cipher_des.t ├── cipher_des_ede.t ├── cipher_idea.t ├── cipher_idea_compat.t ├── cipher_kasumi.t ├── cipher_khazad.t ├── cipher_multi2.t ├── cipher_multi2_rounds.t ├── cipher_noekeon.t ├── cipher_rc2.t ├── cipher_rc5.t ├── cipher_rc6.t ├── cipher_safer_k128.t ├── cipher_safer_k64.t ├── cipher_safer_sk128.t ├── cipher_safer_sk64.t ├── cipher_saferp.t ├── cipher_seed.t ├── cipher_seed_test_vectors_bc.t ├── cipher_serpent.t ├── cipher_serpent_compat.t ├── cipher_skipjack.t ├── cipher_stream.t ├── cipher_stream_rabbit.t ├── cipher_stream_salsa20.t ├── cipher_test_vectors_ltc.t ├── cipher_test_vectors_openssl.t ├── cipher_twofish.t ├── cipher_twofish_test_vectors_bc.t ├── cipher_xtea.t ├── cipher_xtea_test_vectors_bc.t ├── crypt-misc.t ├── data │ ├── binary-test.file │ ├── cryptx_priv_dh1.bin │ ├── cryptx_priv_dh2.bin │ ├── cryptx_priv_dh_pg1.bin │ ├── cryptx_priv_dh_pg2.bin │ ├── cryptx_priv_dsa1.der │ ├── cryptx_priv_dsa1.pem │ ├── cryptx_priv_dsa2.der │ ├── cryptx_priv_dsa2.pem │ ├── cryptx_priv_ecc1.der │ ├── cryptx_priv_ecc1.pem │ ├── cryptx_priv_ecc1_OLD.der │ ├── cryptx_priv_ecc1_OLD.pem │ ├── cryptx_priv_ecc2.der │ ├── cryptx_priv_ecc2.pem │ ├── cryptx_priv_ecc2_OLD.der │ ├── cryptx_priv_ecc2_OLD.pem │ ├── cryptx_priv_rsa1.der │ ├── cryptx_priv_rsa1.pem │ ├── cryptx_priv_rsa2.der │ ├── cryptx_priv_rsa2.pem │ ├── cryptx_pub_dh1.bin │ ├── cryptx_pub_dh2.bin │ ├── cryptx_pub_dh_pg1.bin │ ├── cryptx_pub_dh_pg2.bin │ ├── cryptx_pub_dsa1.der │ ├── cryptx_pub_dsa1.pem │ ├── cryptx_pub_dsa2.der │ ├── cryptx_pub_dsa2.pem │ ├── cryptx_pub_ecc1.der │ ├── cryptx_pub_ecc1.pem │ ├── cryptx_pub_ecc1_OLD.der │ ├── cryptx_pub_ecc1_OLD.pem │ ├── cryptx_pub_ecc2.der │ ├── cryptx_pub_ecc2.pem │ ├── cryptx_pub_ecc2_OLD.der │ ├── cryptx_pub_ecc2_OLD.pem │ ├── cryptx_pub_rsa1.der │ ├── cryptx_pub_rsa1.pem │ ├── cryptx_pub_rsa2.der │ ├── cryptx_pub_rsa2.pem │ ├── dsa-aes128.pem │ ├── dsa-aes192.pem │ ├── dsa-aes256.pem │ ├── dsa-camellia128.pem │ ├── dsa-camellia192.pem │ ├── dsa-camellia256.pem │ ├── dsa-des.pem │ ├── dsa-des3.pem │ ├── dsa-param.pem │ ├── dsa-seed.pem │ ├── ec-aes128.pem │ ├── ec-aes192.pem │ ├── ec-aes256.pem │ ├── ec-camellia128.pem │ ├── ec-camellia192.pem │ ├── ec-camellia256.pem │ ├── ec-des.pem │ ├── ec-des3.pem │ ├── ec-seed.pem │ ├── info.txt │ ├── jwk_ec-priv1.json │ ├── jwk_ec-pub.json │ ├── jwk_ec-pub1.json │ ├── jwk_ed25519-priv1.json │ ├── jwk_ed25519-pub1.json │ ├── jwk_rsa-priv.json │ ├── jwk_rsa-priv1.json │ ├── jwk_rsa-pub1.json │ ├── jwk_x25519-priv1.json │ ├── jwk_x25519-pub1.json │ ├── openssl_dsa1.der │ ├── openssl_dsa1.pem │ ├── openssl_dsa2.der │ ├── openssl_dsa2.pem │ ├── openssl_ec-short.der │ ├── openssl_ec-short.pem │ ├── openssl_ec-short.pub.der │ ├── openssl_ec-short.pub.pem │ ├── openssl_ec1.key.pem │ ├── openssl_ec1.pri.der │ ├── openssl_ec1.pri.pem │ ├── openssl_ec1.pric.der │ ├── openssl_ec1.pric.pem │ ├── openssl_ec1.pub.der │ ├── openssl_ec1.pub.pem │ ├── openssl_ec1.pubc.der │ ├── openssl_ec1.pubc.pem │ ├── openssl_ed25519_pk.der │ ├── openssl_ed25519_pk.pem │ ├── openssl_ed25519_sk.der │ ├── openssl_ed25519_sk.pem │ ├── openssl_ed25519_sk.pkcs8 │ ├── openssl_ed25519_sk_pbes1.pkcs8 │ ├── openssl_ed25519_sk_pbes2.pkcs8 │ ├── openssl_ed25519_sk_pw.pem │ ├── openssl_ed25519_sk_pw_t.pem │ ├── openssl_ed25519_sk_t.pem │ ├── openssl_ed25519_x509.der │ ├── openssl_ed25519_x509.pem │ ├── openssl_rsa-x509.der │ ├── openssl_rsa-x509.pem │ ├── openssl_rsa1.der │ ├── openssl_rsa1.pem │ ├── openssl_rsa1.pubonly.der │ ├── openssl_rsa1.pubonly.pem │ ├── openssl_rsa2.der │ ├── openssl_rsa2.pem │ ├── openssl_rsa2.pubonly.der │ ├── openssl_rsa2.pubonly.pem │ ├── openssl_x25519_pk.der │ ├── openssl_x25519_pk.pem │ ├── openssl_x25519_sk.der │ ├── openssl_x25519_sk.pem │ ├── openssl_x25519_sk.pkcs8 │ ├── openssl_x25519_sk_pbes1.pkcs8 │ ├── openssl_x25519_sk_pbes2.pkcs8 │ ├── openssl_x25519_sk_pw.pem │ ├── openssl_x25519_sk_pw_t.pem │ ├── openssl_x25519_sk_t.pem │ ├── pkcs8.ec-priv-nopass.der │ ├── pkcs8.ec-priv-nopass.pem │ ├── pkcs8.ec-priv-pass.der │ ├── pkcs8.ec-priv-pass.pem │ ├── pkcs8.ec-short-priv-nopass.der │ ├── pkcs8.ec-short-priv-nopass.pem │ ├── pkcs8.ec-short-priv-pass.der │ ├── pkcs8.ec-short-priv-pass.pem │ ├── pkcs8.rsa-priv-nopass.der │ ├── pkcs8.rsa-priv-nopass.pem │ ├── pkcs8.rsa-priv-pass.der │ ├── pkcs8.rsa-priv-pass.pem │ ├── rsa-aes128.pem │ ├── rsa-aes192.pem │ ├── rsa-aes256.pem │ ├── rsa-camellia128.pem │ ├── rsa-camellia192.pem │ ├── rsa-camellia256.pem │ ├── rsa-des.pem │ ├── rsa-des3.pem │ ├── rsa-seed.pem │ ├── ssh │ │ ├── ssh_dsa_1024_openssh │ │ ├── ssh_dsa_1024_openssh.pub │ │ ├── ssh_dsa_1024_openssh_pw │ │ ├── ssh_dsa_1024_pem │ │ ├── ssh_dsa_1024_pem_pw │ │ ├── ssh_dsa_1024_pkcs8 │ │ ├── ssh_dsa_1024_pkcs8.pub │ │ ├── ssh_dsa_1024_pkcs8_pw │ │ ├── ssh_dsa_1024_rfc4716.pub │ │ ├── ssh_ecdsa_256_openssh │ │ ├── ssh_ecdsa_256_openssh.pub │ │ ├── ssh_ecdsa_256_openssh_pw │ │ ├── ssh_ecdsa_256_pem │ │ ├── ssh_ecdsa_256_pem_pw │ │ ├── ssh_ecdsa_256_pkcs8 │ │ ├── ssh_ecdsa_256_pkcs8.pub │ │ ├── ssh_ecdsa_256_pkcs8_pw │ │ ├── ssh_ecdsa_256_rfc4716.pub │ │ ├── ssh_ecdsa_384_openssh │ │ ├── ssh_ecdsa_384_openssh.pub │ │ ├── ssh_ecdsa_384_openssh_pw │ │ ├── ssh_ecdsa_384_pem │ │ ├── ssh_ecdsa_384_pem_pw │ │ ├── ssh_ecdsa_384_pkcs8 │ │ ├── ssh_ecdsa_384_pkcs8.pub │ │ ├── ssh_ecdsa_384_pkcs8_pw │ │ ├── ssh_ecdsa_384_rfc4716.pub │ │ ├── ssh_ecdsa_521_openssh │ │ ├── ssh_ecdsa_521_openssh.pub │ │ ├── ssh_ecdsa_521_openssh_pw │ │ ├── ssh_ecdsa_521_pem │ │ ├── ssh_ecdsa_521_pem_pw │ │ ├── ssh_ecdsa_521_pkcs8 │ │ ├── ssh_ecdsa_521_pkcs8.pub │ │ ├── ssh_ecdsa_521_pkcs8_pw │ │ ├── ssh_ecdsa_521_rfc4716.pub │ │ ├── ssh_ed25519_openssh │ │ ├── ssh_ed25519_openssh.pub │ │ ├── ssh_ed25519_openssh_pw │ │ ├── ssh_ed25519_rfc4716.pub │ │ ├── ssh_rsa_1024_openssh │ │ ├── ssh_rsa_1024_openssh.pub │ │ ├── ssh_rsa_1024_openssh_pw │ │ ├── ssh_rsa_1024_pem │ │ ├── ssh_rsa_1024_pem.pub │ │ ├── ssh_rsa_1024_pem_pw │ │ ├── ssh_rsa_1024_pkcs8 │ │ ├── ssh_rsa_1024_pkcs8.pub │ │ ├── ssh_rsa_1024_pkcs8_pw │ │ ├── ssh_rsa_1024_rfc4716.pub │ │ ├── ssh_rsa_1536_openssh │ │ ├── ssh_rsa_1536_openssh.pub │ │ ├── ssh_rsa_1536_openssh_pw │ │ ├── ssh_rsa_1536_pem │ │ ├── ssh_rsa_1536_pem.pub │ │ ├── ssh_rsa_1536_pem_pw │ │ ├── ssh_rsa_1536_pkcs8 │ │ ├── ssh_rsa_1536_pkcs8.pub │ │ ├── ssh_rsa_1536_pkcs8_pw │ │ ├── ssh_rsa_1536_rfc4716.pub │ │ ├── ssh_rsa_2048_openssh │ │ ├── ssh_rsa_2048_openssh.pub │ │ ├── ssh_rsa_2048_openssh_pw │ │ ├── ssh_rsa_2048_pem │ │ ├── ssh_rsa_2048_pem.pub │ │ ├── ssh_rsa_2048_pem_pw │ │ ├── ssh_rsa_2048_pkcs8 │ │ ├── ssh_rsa_2048_pkcs8.pub │ │ ├── ssh_rsa_2048_pkcs8_pw │ │ ├── ssh_rsa_2048_rfc4716.pub │ │ ├── ssh_rsa_4096_openssh │ │ ├── ssh_rsa_4096_openssh.pub │ │ ├── ssh_rsa_4096_openssh_pw │ │ ├── ssh_rsa_4096_pem │ │ ├── ssh_rsa_4096_pem.pub │ │ ├── ssh_rsa_4096_pem_pw │ │ ├── ssh_rsa_4096_pkcs8 │ │ ├── ssh_rsa_4096_pkcs8.pub │ │ ├── ssh_rsa_4096_pkcs8_pw │ │ ├── ssh_rsa_4096_rfc4716.pub │ │ ├── ssh_rsa_768_openssh │ │ ├── ssh_rsa_768_openssh.pub │ │ ├── ssh_rsa_768_openssh_pw │ │ ├── ssh_rsa_768_pem │ │ ├── ssh_rsa_768_pem.pub │ │ ├── ssh_rsa_768_pem_pw │ │ ├── ssh_rsa_768_pkcs8 │ │ ├── ssh_rsa_768_pkcs8.pub │ │ ├── ssh_rsa_768_pkcs8_pw │ │ ├── ssh_rsa_768_rfc4716.pub │ │ ├── ssh_rsa_8192_openssh │ │ ├── ssh_rsa_8192_openssh.pub │ │ ├── ssh_rsa_8192_openssh_pw │ │ ├── ssh_rsa_8192_pem │ │ ├── ssh_rsa_8192_pem.pub │ │ ├── ssh_rsa_8192_pem_pw │ │ ├── ssh_rsa_8192_pkcs8 │ │ ├── ssh_rsa_8192_pkcs8.pub │ │ ├── ssh_rsa_8192_pkcs8_pw │ │ └── ssh_rsa_8192_rfc4716.pub │ ├── text-CR.file │ ├── text-CRLF.file │ └── text-LF.file ├── digest_blake2b_160.t ├── digest_blake2b_256.t ├── digest_blake2b_384.t ├── digest_blake2b_512.t ├── digest_blake2s_128.t ├── digest_blake2s_160.t ├── digest_blake2s_224.t ├── digest_blake2s_256.t ├── digest_chaes.t ├── digest_keccak224.t ├── digest_keccak256.t ├── digest_keccak384.t ├── digest_keccak512.t ├── digest_md2.t ├── digest_md4.t ├── digest_md5.t ├── digest_ripemd128.t ├── digest_ripemd160.t ├── digest_ripemd256.t ├── digest_ripemd320.t ├── digest_sha1.t ├── digest_sha224.t ├── digest_sha256.t ├── digest_sha384.t ├── digest_sha3_224.t ├── digest_sha3_256.t ├── digest_sha3_384.t ├── digest_sha3_512.t ├── digest_sha512.t ├── digest_sha512_224.t ├── digest_sha512_256.t ├── digest_shake.t ├── digest_test_vectors_ltc.t ├── digest_tiger192.t ├── digest_whirlpool.t ├── jwk.t ├── key_derivation.t ├── mac_blake2b.t ├── mac_blake2s.t ├── mac_f9.t ├── mac_hmac.t ├── mac_hmac_nist.t ├── mac_hmac_test_vectors_ltc.t ├── mac_omac.t ├── mac_omac_test_vectors_ltc.t ├── mac_pelican.t ├── mac_pmac.t ├── mac_pmac_test_vectors_ltc.t ├── mac_poly1305.t ├── mac_xcbc.t ├── mbi_ltm │ ├── bigfltpm.inc │ └── bigintpm.inc ├── mbi_ltm_01load.t ├── mbi_ltm_bigfltpm.t ├── mbi_ltm_bigintg.t ├── mbi_ltm_bigintpm.t ├── mbi_ltm_biglog.t ├── mbi_ltm_bigroot.t ├── mbi_ltm_bugs.t ├── mbi_ltm_mbi-from-big-scalar.t ├── mbi_ltm_since_1.999837.t ├── mbi_ltm_since_1.999842.t ├── mbi_ltm_since_2.005003.t ├── mbi_ltm_storable.t ├── mode_cbc.t ├── mode_cfb.t ├── mode_ctr.t ├── mode_ecb.t ├── mode_ofb.t ├── openssl │ ├── dsa-test.pl │ ├── ecc-test.pl │ ├── gen-dsa.sh │ ├── gen-ecdsa.sh │ ├── gen-rsa.pl │ ├── info.txt │ └── rsa-test.pl ├── pk_dh.t ├── pk_dsa.t ├── pk_dsa_test_vectors_openssl.t ├── pk_ecc.t ├── pk_ecc_test_vectors_openssl.t ├── pk_ed25519.t ├── pk_enc_pem.t ├── pk_rsa.t ├── pk_rsa_test_vectors_openssl.t ├── pk_x25519.t ├── pkcs8.t ├── prng.t ├── prng_chacha20.t ├── prng_fortuna.t ├── prng_rc4.t ├── prng_sober128.t ├── prng_yarrow.t ├── sshkey.t ├── wycheproof.t └── wycheproof │ ├── README.txt │ ├── aes_cbc_pkcs5_test.json │ ├── aes_ccm_test.json │ ├── aes_cmac_test.json │ ├── aes_eax_test.json │ ├── aes_gcm_siv_test.json │ ├── aes_gcm_test.json │ ├── aes_siv_cmac_test.json │ ├── chacha20_poly1305_test.json │ ├── dsa_test.json │ ├── ecdh_brainpoolP224r1_test.json │ ├── ecdh_brainpoolP256r1_test.json │ ├── ecdh_brainpoolP320r1_test.json │ ├── ecdh_brainpoolP384r1_test.json │ ├── ecdh_brainpoolP512r1_test.json │ ├── ecdh_secp224r1_ecpoint_test.json │ ├── ecdh_secp224r1_test.json │ ├── ecdh_secp256k1_test.json │ ├── ecdh_secp256r1_ecpoint_test.json │ ├── ecdh_secp256r1_test.json │ ├── ecdh_secp384r1_ecpoint_test.json │ ├── ecdh_secp384r1_test.json │ ├── ecdh_secp521r1_ecpoint_test.json │ ├── ecdh_secp521r1_test.json │ ├── ecdh_test.json │ ├── ecdh_webcrypto_test.json │ ├── ecdsa_brainpoolP224r1_sha224_test.json │ ├── ecdsa_brainpoolP256r1_sha256_test.json │ ├── ecdsa_brainpoolP320r1_sha384_test.json │ ├── ecdsa_brainpoolP384r1_sha384_test.json │ ├── ecdsa_brainpoolP512r1_sha512_test.json │ ├── ecdsa_secp224r1_sha224_test.json │ ├── ecdsa_secp224r1_sha256_test.json │ ├── ecdsa_secp224r1_sha512_test.json │ ├── ecdsa_secp256k1_sha256_test.json │ ├── ecdsa_secp256k1_sha512_test.json │ ├── ecdsa_secp256r1_sha256_test.json │ ├── ecdsa_secp256r1_sha512_test.json │ ├── ecdsa_secp384r1_sha384_test.json │ ├── ecdsa_secp384r1_sha512_test.json │ ├── ecdsa_secp521r1_sha512_test.json │ ├── ecdsa_test.json │ ├── ecdsa_webcrypto_test.json │ ├── eddsa_test.json │ ├── kw_test.json │ ├── kwp_test.json │ ├── rsa_pss_2048_sha1_mgf1_20_test.json │ ├── rsa_pss_2048_sha256_mgf1_0_test.json │ ├── rsa_pss_2048_sha256_mgf1_32_test.json │ ├── rsa_pss_3072_sha256_mgf1_32_test.json │ ├── rsa_pss_4096_sha256_mgf1_32_test.json │ ├── rsa_pss_4096_sha512_mgf1_32_test.json │ ├── rsa_pss_misc_test.json │ ├── rsa_signature_2048_sha224_test.json │ ├── rsa_signature_2048_sha256_test.json │ ├── rsa_signature_2048_sha512_test.json │ ├── rsa_signature_3072_sha256_test.json │ ├── rsa_signature_3072_sha384_test.json │ ├── rsa_signature_3072_sha512_test.json │ ├── rsa_signature_4096_sha384_test.json │ ├── rsa_signature_4096_sha512_test.json │ ├── rsa_signature_test.json │ └── x25519_test.json └── typemap /.gitignore: -------------------------------------------------------------------------------- 1 | *.a 2 | *.lib 3 | *.o 4 | *.obj 5 | *.pdb 6 | *.old 7 | *.ccs 8 | *.tmp 9 | *.bak 10 | *.zip 11 | *.gz 12 | *.base 13 | *.def 14 | *.bs 15 | *.exp 16 | *.lds 17 | _tmp* 18 | _build* 19 | tmp* 20 | pm_to_blib 21 | _build 22 | blib 23 | Build 24 | Build.bat 25 | MYMETA.json 26 | MYMETA.yml 27 | META.json 28 | META.yml 29 | MANIFEST 30 | CryptX.c 31 | CryptX-* 32 | /poznamky.txt 33 | /generators/_tmp 34 | /t/openssl/*.der 35 | /t/openssl/*.pem 36 | /t/openssl/*.data 37 | /t/openssl/*.sig 38 | /t/openssl/*.rsa 39 | /Makefile -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. -------------------------------------------------------------------------------- /MANIFEST.SKIP: -------------------------------------------------------------------------------- 1 | .git 2 | .svn 3 | ^_build 4 | ^_generators 5 | ^_tmp 6 | ^_rpm 7 | ^stage 8 | ^blib 9 | pm_to_blib* 10 | ^deps 11 | pod2htm*.tmp 12 | CryptX.c$ 13 | CryptX.xsc$ 14 | ^CryptX- 15 | \.o$ 16 | \.a$ 17 | \.lib$ 18 | \.bs$ 19 | \.obj$ 20 | \.pdb$ 21 | \.ccs$ 22 | \.old$ 23 | \.tmp$ 24 | \.bak$ 25 | \.zip$ 26 | \.gz$ 27 | \.base$ 28 | \.def$ 29 | \.exp$ 30 | \.lds$ 31 | ^MYMETA\.json$ 32 | ^MYMETA\.yml$ 33 | ^Build$ 34 | ^Build.PL$ 35 | ^Makefile$ 36 | ^Build\.bat$ 37 | ^MANIFEST\.SKIP$ 38 | tmp.* 39 | ^poznamky* 40 | \.stackdump$ 41 | ^.travis* 42 | ^.appveyor* 43 | t/openssl/.*$ 44 | ^src/liballinone* 45 | ^src/update-libtom.pl$ 46 | ^t/wycheproof.*$ 47 | -------------------------------------------------------------------------------- /_generators/gen.pl: -------------------------------------------------------------------------------- 1 | use strict; 2 | use warnings; 3 | 4 | if ($ARGV[0] && $ARGV[0] =~ /genco/) { 5 | system($^X, qw[_generators/tt_cipher.pl install_code]); 6 | system($^X, qw[_generators/tt_digest.pl install_code]); 7 | system($^X, qw[_generators/tt_mac.pl install_code]); 8 | system($^X, qw[_generators/tt_mode.pl install_code]); 9 | } 10 | elsif ($ARGV[0] && $ARGV[0] =~ /gente/) { 11 | die "blib dir not found, run 'make all'\n" unless -d 'blib'; 12 | system($^X, qw[-Mblib _generators/tt_cipher.pl install_tests]); 13 | system($^X, qw[-Mblib _generators/tt_digest.pl install_tests]); 14 | system($^X, qw[-Mblib _generators/tt_mac.pl install_tests]); 15 | system($^X, qw[-Mblib _generators/tt_mode.pl install_tests]); 16 | } 17 | else { 18 | die "usage:\n $0 gencode\n $0 gentest\n"; 19 | } -------------------------------------------------------------------------------- /lib/Crypt/AuthEnc.pm: -------------------------------------------------------------------------------- 1 | package Crypt::AuthEnc; 2 | 3 | use strict; 4 | use warnings; 5 | our $VERSION = '0.086'; 6 | 7 | ### not used 8 | 9 | 1; 10 | 11 | =pod 12 | 13 | =head1 NAME 14 | 15 | Crypt::AuthEnc - [internal only] 16 | 17 | =cut 18 | -------------------------------------------------------------------------------- /lib/Crypt/Mac.pm: -------------------------------------------------------------------------------- 1 | package Crypt::Mac; 2 | 3 | use strict; 4 | use warnings; 5 | our $VERSION = '0.086'; 6 | 7 | use Carp; 8 | $Carp::Internal{(__PACKAGE__)}++; 9 | use CryptX; 10 | 11 | sub addfile { 12 | my ($self, $file) = @_; 13 | 14 | my $handle; 15 | if (ref(\$file) eq 'SCALAR') { 16 | open($handle, "<", $file) || die "FATAL: cannot open '$file': $!"; 17 | binmode($handle); 18 | } 19 | else { 20 | $handle = $file 21 | } 22 | die "FATAL: invalid handle" unless defined $handle; 23 | 24 | my $n; 25 | my $buf = ""; 26 | local $SIG{__DIE__} = \&CryptX::_croak; 27 | while (($n = read($handle, $buf, 32*1024))) { 28 | $self->add($buf); 29 | } 30 | die "FATAL: read failed: $!" unless defined $n; 31 | 32 | return $self; 33 | } 34 | 35 | sub CLONE_SKIP { 1 } # prevent cloning 36 | 37 | 1; 38 | 39 | =pod 40 | 41 | =head1 NAME 42 | 43 | Crypt::Mac - [internal only] 44 | 45 | =cut 46 | -------------------------------------------------------------------------------- /lib/Crypt/Mode.pm: -------------------------------------------------------------------------------- 1 | package Crypt::Mode; 2 | 3 | use strict; 4 | use warnings; 5 | our $VERSION = '0.086'; 6 | 7 | ### not used 8 | 9 | 1; 10 | 11 | =pod 12 | 13 | =head1 NAME 14 | 15 | Crypt::Mode - [internal only] 16 | 17 | =cut 18 | -------------------------------------------------------------------------------- /lib/Crypt/PK.pm: -------------------------------------------------------------------------------- 1 | package Crypt::PK; 2 | 3 | use strict; 4 | use warnings; 5 | our $VERSION = '0.086'; 6 | 7 | use Carp; 8 | 9 | sub _ssh_parse { 10 | my $raw = shift; 11 | return unless defined $raw; 12 | my $len = length($raw); 13 | my @parts = (); 14 | my $i = 0; 15 | while (1) { 16 | last unless $i + 4 <= $len; 17 | my $part_len = unpack("N4", substr($raw, $i, 4)); 18 | last unless $i + 4 + $part_len <= $len; 19 | push @parts, substr($raw, $i + 4, $part_len); 20 | $i += $part_len + 4; 21 | } 22 | return @parts; 23 | } 24 | 25 | 1; 26 | 27 | =pod 28 | 29 | =head1 NAME 30 | 31 | Crypt::PK - [internal only] 32 | 33 | =cut 34 | -------------------------------------------------------------------------------- /src/README.txt: -------------------------------------------------------------------------------- 1 | This module also contains copies of 2 | * LibTomCrypt (https://github.com/libtom/libtomcrypt) 3 | * LibTomMath (https://github.com/libtom/libtommath) 4 | all of which fall into public-domain usage licenses. 5 | 6 | Please keep in mind that by contributing any code to 7 | subdirectories src/ltc or src/ltm your contribution 8 | will be considered under the same license as used by 9 | the above-mentioned libraries (public-domain). 10 | -------------------------------------------------------------------------------- /src/ltc/encauth/ccm/ccm_reset.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | #ifdef LTC_CCM_MODE 6 | 7 | /** 8 | Reset a CCM state to as if you just called ccm_init(). This saves the initialization time. 9 | @param ccm The CCM state to reset 10 | @return CRYPT_OK on success 11 | */ 12 | int ccm_reset(ccm_state *ccm) 13 | { 14 | LTC_ARGCHK(ccm != NULL); 15 | zeromem(ccm->PAD, sizeof(ccm->PAD)); 16 | zeromem(ccm->ctr, sizeof(ccm->ctr)); 17 | zeromem(ccm->CTRPAD, sizeof(ccm->CTRPAD)); 18 | ccm->CTRlen = 0; 19 | ccm->current_ptlen = 0; 20 | ccm->current_aadlen = 0; 21 | 22 | return CRYPT_OK; 23 | } 24 | 25 | #endif 26 | -------------------------------------------------------------------------------- /src/ltc/encauth/chachapoly/chacha20poly1305_add_aad.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | 4 | #include "tomcrypt_private.h" 5 | 6 | #ifdef LTC_CHACHA20POLY1305_MODE 7 | 8 | /** 9 | Add AAD to the ChaCha20Poly1305 state 10 | @param st The ChaCha20Poly1305 state 11 | @param in The additional authentication data to add to the ChaCha20Poly1305 state 12 | @param inlen The length of the ChaCha20Poly1305 data. 13 | @return CRYPT_OK on success 14 | */ 15 | int chacha20poly1305_add_aad(chacha20poly1305_state *st, const unsigned char *in, unsigned long inlen) 16 | { 17 | int err; 18 | 19 | if (inlen == 0) return CRYPT_OK; /* nothing to do */ 20 | LTC_ARGCHK(st != NULL); 21 | 22 | if (st->aadflg == 0) return CRYPT_ERROR; 23 | if ((err = poly1305_process(&st->poly, in, inlen)) != CRYPT_OK) return err; 24 | st->aadlen += (ulong64)inlen; 25 | return CRYPT_OK; 26 | } 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /src/ltc/encauth/chachapoly/chacha20poly1305_init.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | 4 | #include "tomcrypt_private.h" 5 | 6 | #ifdef LTC_CHACHA20POLY1305_MODE 7 | 8 | /** 9 | Initialize an ChaCha20Poly1305 context (only the key) 10 | @param st [out] The destination of the ChaCha20Poly1305 state 11 | @param key The secret key 12 | @param keylen The length of the secret key (octets) 13 | @return CRYPT_OK if successful 14 | */ 15 | int chacha20poly1305_init(chacha20poly1305_state *st, const unsigned char *key, unsigned long keylen) 16 | { 17 | XMEMSET(st, 0, sizeof(*st)); 18 | return chacha_setup(&st->chacha, key, keylen, 20); 19 | } 20 | 21 | #endif 22 | -------------------------------------------------------------------------------- /src/ltc/encauth/eax/eax_addheader.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | /** 4 | @file eax_addheader.c 5 | EAX implementation, add meta-data, by Tom St Denis 6 | */ 7 | #include "tomcrypt_private.h" 8 | 9 | #ifdef LTC_EAX_MODE 10 | 11 | /** 12 | add header (metadata) to the stream 13 | @param eax The current EAX state 14 | @param header The header (meta-data) data you wish to add to the state 15 | @param length The length of the header data 16 | @return CRYPT_OK if successful 17 | */ 18 | int eax_addheader(eax_state *eax, const unsigned char *header, 19 | unsigned long length) 20 | { 21 | LTC_ARGCHK(eax != NULL); 22 | LTC_ARGCHK(header != NULL); 23 | return omac_process(&eax->headeromac, header, length); 24 | } 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /src/ltc/encauth/eax/eax_decrypt.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | 4 | /** 5 | @file eax_decrypt.c 6 | EAX implementation, decrypt block, by Tom St Denis 7 | */ 8 | #include "tomcrypt_private.h" 9 | 10 | #ifdef LTC_EAX_MODE 11 | 12 | /** 13 | Decrypt data with the EAX protocol 14 | @param eax The EAX state 15 | @param ct The ciphertext 16 | @param pt [out] The plaintext 17 | @param length The length (octets) of the ciphertext 18 | @return CRYPT_OK if successful 19 | */ 20 | int eax_decrypt(eax_state *eax, const unsigned char *ct, unsigned char *pt, 21 | unsigned long length) 22 | { 23 | int err; 24 | 25 | LTC_ARGCHK(eax != NULL); 26 | LTC_ARGCHK(pt != NULL); 27 | LTC_ARGCHK(ct != NULL); 28 | 29 | /* omac ciphertext */ 30 | if ((err = omac_process(&eax->ctomac, ct, length)) != CRYPT_OK) { 31 | return err; 32 | } 33 | 34 | /* decrypt */ 35 | return ctr_decrypt(ct, pt, length, &eax->ctr); 36 | } 37 | 38 | #endif 39 | -------------------------------------------------------------------------------- /src/ltc/encauth/eax/eax_encrypt.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | 4 | /** 5 | @file eax_encrypt.c 6 | EAX implementation, encrypt block by Tom St Denis 7 | */ 8 | #include "tomcrypt_private.h" 9 | 10 | #ifdef LTC_EAX_MODE 11 | 12 | /** 13 | Encrypt with EAX a block of data. 14 | @param eax The EAX state 15 | @param pt The plaintext to encrypt 16 | @param ct [out] The ciphertext as encrypted 17 | @param length The length of the plaintext (octets) 18 | @return CRYPT_OK if successful 19 | */ 20 | int eax_encrypt(eax_state *eax, const unsigned char *pt, unsigned char *ct, 21 | unsigned long length) 22 | { 23 | int err; 24 | 25 | LTC_ARGCHK(eax != NULL); 26 | LTC_ARGCHK(pt != NULL); 27 | LTC_ARGCHK(ct != NULL); 28 | 29 | /* encrypt */ 30 | if ((err = ctr_encrypt(pt, ct, length, &eax->ctr)) != CRYPT_OK) { 31 | return err; 32 | } 33 | 34 | /* omac ciphertext */ 35 | return omac_process(&eax->ctomac, ct, length); 36 | } 37 | 38 | #endif 39 | 40 | -------------------------------------------------------------------------------- /src/ltc/encauth/gcm/gcm_reset.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | 4 | /** 5 | @file gcm_reset.c 6 | GCM implementation, reset a used state so it can accept IV data, by Tom St Denis 7 | */ 8 | #include "tomcrypt_private.h" 9 | 10 | #ifdef LTC_GCM_MODE 11 | 12 | /** 13 | Reset a GCM state to as if you just called gcm_init(). This saves the initialization time. 14 | @param gcm The GCM state to reset 15 | @return CRYPT_OK on success 16 | */ 17 | int gcm_reset(gcm_state *gcm) 18 | { 19 | LTC_ARGCHK(gcm != NULL); 20 | 21 | zeromem(gcm->buf, sizeof(gcm->buf)); 22 | zeromem(gcm->X, sizeof(gcm->X)); 23 | gcm->mode = LTC_GCM_MODE_IV; 24 | gcm->ivmode = 0; 25 | gcm->buflen = 0; 26 | gcm->totlen = 0; 27 | gcm->pttotlen = 0; 28 | 29 | return CRYPT_OK; 30 | } 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /src/ltc/encauth/ocb3/ocb3_int_ntz.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | 4 | /** 5 | @file ocb3_int_ntz.c 6 | OCB implementation, INTERNAL ONLY helper, by Tom St Denis 7 | */ 8 | #include "tomcrypt_private.h" 9 | 10 | #ifdef LTC_OCB3_MODE 11 | 12 | /** 13 | Returns the number of leading zero bits [from lsb up] (internal function) 14 | @param x The 32-bit value to observe 15 | @return The number of bits [from the lsb up] that are zero 16 | */ 17 | int ocb3_int_ntz(unsigned long x) 18 | { 19 | int c; 20 | x &= 0xFFFFFFFFUL; 21 | c = 0; 22 | while ((x & 1) == 0) { 23 | ++c; 24 | x >>= 1; 25 | } 26 | return c; 27 | } 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /src/ltc/encauth/ocb3/ocb3_int_xor_blocks.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | 4 | /** 5 | @file ocb3_int_xor_blocks.c 6 | OCB implementation, INTERNAL ONLY helper, by Karel Miko 7 | */ 8 | #include "tomcrypt_private.h" 9 | 10 | #ifdef LTC_OCB3_MODE 11 | 12 | /** 13 | Compute xor for two blocks of bytes 'out = block_a XOR block_b' (internal function) 14 | @param out The block of bytes (output) 15 | @param block_a The block of bytes (input) 16 | @param block_b The block of bytes (input) 17 | @param block_len The size of block_a, block_b, out 18 | */ 19 | void ocb3_int_xor_blocks(unsigned char *out, const unsigned char *block_a, const unsigned char *block_b, unsigned long block_len) 20 | { 21 | int x; 22 | if (out == block_a) { 23 | for (x = 0; x < (int)block_len; x++) out[x] ^= block_b[x]; 24 | } 25 | else { 26 | for (x = 0; x < (int)block_len; x++) out[x] = block_a[x] ^ block_b[x]; 27 | } 28 | } 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /src/ltc/mac/hmac/hmac_process.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file hmac_process.c 7 | HMAC support, process data, Tom St Denis/Dobes Vandermeer 8 | */ 9 | 10 | #ifdef LTC_HMAC 11 | 12 | /** 13 | Process data through HMAC 14 | @param hmac The hmac state 15 | @param in The data to send through HMAC 16 | @param inlen The length of the data to HMAC (octets) 17 | @return CRYPT_OK if successful 18 | */ 19 | int hmac_process(hmac_state *hmac, const unsigned char *in, unsigned long inlen) 20 | { 21 | int err; 22 | LTC_ARGCHK(hmac != NULL); 23 | LTC_ARGCHK(in != NULL); 24 | if ((err = hash_is_valid(hmac->hash)) != CRYPT_OK) { 25 | return err; 26 | } 27 | return hash_descriptor[hmac->hash].process(&hmac->md, in, inlen); 28 | } 29 | 30 | #endif 31 | 32 | -------------------------------------------------------------------------------- /src/ltc/mac/pmac/pmac_ntz.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file pmac_ntz.c 7 | PMAC implementation, internal function, by Tom St Denis 8 | */ 9 | 10 | #ifdef LTC_PMAC 11 | 12 | /** 13 | Internal PMAC function 14 | */ 15 | int pmac_ntz(unsigned long x) 16 | { 17 | int c; 18 | x &= 0xFFFFFFFFUL; 19 | c = 0; 20 | while ((x & 1) == 0) { 21 | ++c; 22 | x >>= 1; 23 | } 24 | return c; 25 | } 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /src/ltc/mac/pmac/pmac_shift_xor.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file pmac_shift_xor.c 7 | PMAC implementation, internal function, by Tom St Denis 8 | */ 9 | 10 | #ifdef LTC_PMAC 11 | 12 | /** 13 | Internal function. Performs the state update (adding correct multiple) 14 | @param pmac The PMAC state. 15 | */ 16 | void pmac_shift_xor(pmac_state *pmac) 17 | { 18 | int x, y; 19 | y = pmac_ntz(pmac->block_index++); 20 | #ifdef LTC_FAST 21 | for (x = 0; x < pmac->block_len; x += sizeof(LTC_FAST_TYPE)) { 22 | *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)pmac->Li + x)) ^= 23 | *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)pmac->Ls[y] + x)); 24 | } 25 | #else 26 | for (x = 0; x < pmac->block_len; x++) { 27 | pmac->Li[x] ^= pmac->Ls[y][x]; 28 | } 29 | #endif 30 | } 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /src/ltc/misc/burn_stack.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file burn_stack.c 7 | Burn stack, Tom St Denis 8 | */ 9 | 10 | /** 11 | Burn some stack memory 12 | @param len amount of stack to burn in bytes 13 | */ 14 | void burn_stack(unsigned long len) 15 | { 16 | unsigned char buf[32]; 17 | zeromem(buf, sizeof(buf)); 18 | if (len > (unsigned long)sizeof(buf)) { 19 | burn_stack(len - sizeof(buf)); 20 | } 21 | } 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/ltc/misc/crypt/crypt_argchk.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file crypt_argchk.c 7 | Perform argument checking, Tom St Denis 8 | */ 9 | 10 | #if (ARGTYPE == 0) 11 | void crypt_argchk(const char *v, const char *s, int d) 12 | { 13 | fprintf(stderr, "LTC_ARGCHK '%s' failure on line %d of file %s\n", 14 | v, d, s); 15 | abort(); 16 | } 17 | #endif 18 | -------------------------------------------------------------------------------- /src/ltc/misc/crypt/crypt_cipher_descriptor.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file crypt_cipher_descriptor.c 7 | Stores the cipher descriptor table, Tom St Denis 8 | */ 9 | 10 | struct ltc_cipher_descriptor cipher_descriptor[TAB_SIZE] = { 11 | { NULL, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL } 12 | }; 13 | 14 | LTC_MUTEX_GLOBAL(ltc_cipher_mutex) 15 | 16 | -------------------------------------------------------------------------------- /src/ltc/misc/crypt/crypt_cipher_is_valid.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file crypt_cipher_is_valid.c 7 | Determine if cipher is valid, Tom St Denis 8 | */ 9 | 10 | /* 11 | Test if a cipher index is valid 12 | @param idx The index of the cipher to search for 13 | @return CRYPT_OK if valid 14 | */ 15 | int cipher_is_valid(int idx) 16 | { 17 | LTC_MUTEX_LOCK(<c_cipher_mutex); 18 | if (idx < 0 || idx >= TAB_SIZE || cipher_descriptor[idx].name == NULL) { 19 | LTC_MUTEX_UNLOCK(<c_cipher_mutex); 20 | return CRYPT_INVALID_CIPHER; 21 | } 22 | LTC_MUTEX_UNLOCK(<c_cipher_mutex); 23 | return CRYPT_OK; 24 | } 25 | -------------------------------------------------------------------------------- /src/ltc/misc/crypt/crypt_find_cipher.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file crypt_find_cipher.c 7 | Find a cipher in the descriptor tables, Tom St Denis 8 | */ 9 | 10 | /** 11 | Find a registered cipher by name 12 | @param name The name of the cipher to look for 13 | @return >= 0 if found, -1 if not present 14 | */ 15 | int find_cipher(const char *name) 16 | { 17 | int x; 18 | LTC_ARGCHK(name != NULL); 19 | LTC_MUTEX_LOCK(<c_cipher_mutex); 20 | for (x = 0; x < TAB_SIZE; x++) { 21 | if (cipher_descriptor[x].name != NULL && !XSTRCMP(cipher_descriptor[x].name, name)) { 22 | LTC_MUTEX_UNLOCK(<c_cipher_mutex); 23 | return x; 24 | } 25 | } 26 | LTC_MUTEX_UNLOCK(<c_cipher_mutex); 27 | return -1; 28 | } 29 | 30 | -------------------------------------------------------------------------------- /src/ltc/misc/crypt/crypt_find_cipher_id.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file crypt_find_cipher_id.c 7 | Find cipher by ID, Tom St Denis 8 | */ 9 | 10 | /** 11 | Find a cipher by ID number 12 | @param ID The ID (not same as index) of the cipher to find 13 | @return >= 0 if found, -1 if not present 14 | */ 15 | int find_cipher_id(unsigned char ID) 16 | { 17 | int x; 18 | LTC_MUTEX_LOCK(<c_cipher_mutex); 19 | for (x = 0; x < TAB_SIZE; x++) { 20 | if (cipher_descriptor[x].ID == ID) { 21 | x = (cipher_descriptor[x].name == NULL) ? -1 : x; 22 | LTC_MUTEX_UNLOCK(<c_cipher_mutex); 23 | return x; 24 | } 25 | } 26 | LTC_MUTEX_UNLOCK(<c_cipher_mutex); 27 | return -1; 28 | } 29 | -------------------------------------------------------------------------------- /src/ltc/misc/crypt/crypt_find_hash.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file crypt_find_hash.c 7 | Find a hash, Tom St Denis 8 | */ 9 | 10 | /** 11 | Find a registered hash by name 12 | @param name The name of the hash to look for 13 | @return >= 0 if found, -1 if not present 14 | */ 15 | int find_hash(const char *name) 16 | { 17 | int x; 18 | LTC_ARGCHK(name != NULL); 19 | LTC_MUTEX_LOCK(<c_hash_mutex); 20 | for (x = 0; x < TAB_SIZE; x++) { 21 | if (hash_descriptor[x].name != NULL && XSTRCMP(hash_descriptor[x].name, name) == 0) { 22 | LTC_MUTEX_UNLOCK(<c_hash_mutex); 23 | return x; 24 | } 25 | } 26 | LTC_MUTEX_UNLOCK(<c_hash_mutex); 27 | return -1; 28 | } 29 | -------------------------------------------------------------------------------- /src/ltc/misc/crypt/crypt_find_hash_id.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file crypt_find_hash_id.c 7 | Find hash by ID, Tom St Denis 8 | */ 9 | 10 | /** 11 | Find a hash by ID number 12 | @param ID The ID (not same as index) of the hash to find 13 | @return >= 0 if found, -1 if not present 14 | */ 15 | int find_hash_id(unsigned char ID) 16 | { 17 | int x; 18 | LTC_MUTEX_LOCK(<c_hash_mutex); 19 | for (x = 0; x < TAB_SIZE; x++) { 20 | if (hash_descriptor[x].ID == ID) { 21 | x = (hash_descriptor[x].name == NULL) ? -1 : x; 22 | LTC_MUTEX_UNLOCK(<c_hash_mutex); 23 | return x; 24 | } 25 | } 26 | LTC_MUTEX_UNLOCK(<c_hash_mutex); 27 | return -1; 28 | } 29 | -------------------------------------------------------------------------------- /src/ltc/misc/crypt/crypt_find_hash_oid.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file crypt_find_hash_oid.c 7 | Find a hash, Tom St Denis 8 | */ 9 | 10 | int find_hash_oid(const unsigned long *ID, unsigned long IDlen) 11 | { 12 | int x; 13 | LTC_ARGCHK(ID != NULL); 14 | LTC_MUTEX_LOCK(<c_hash_mutex); 15 | for (x = 0; x < TAB_SIZE; x++) { 16 | if (hash_descriptor[x].name != NULL && hash_descriptor[x].OIDlen == IDlen && !XMEMCMP(hash_descriptor[x].OID, ID, sizeof(unsigned long) * IDlen)) { 17 | LTC_MUTEX_UNLOCK(<c_hash_mutex); 18 | return x; 19 | } 20 | } 21 | LTC_MUTEX_UNLOCK(<c_hash_mutex); 22 | return -1; 23 | } 24 | -------------------------------------------------------------------------------- /src/ltc/misc/crypt/crypt_find_prng.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file crypt_find_prng.c 7 | Find a PRNG, Tom St Denis 8 | */ 9 | 10 | /** 11 | Find a registered PRNG by name 12 | @param name The name of the PRNG to look for 13 | @return >= 0 if found, -1 if not present 14 | */ 15 | int find_prng(const char *name) 16 | { 17 | int x; 18 | LTC_ARGCHK(name != NULL); 19 | LTC_MUTEX_LOCK(<c_prng_mutex); 20 | for (x = 0; x < TAB_SIZE; x++) { 21 | if ((prng_descriptor[x].name != NULL) && XSTRCMP(prng_descriptor[x].name, name) == 0) { 22 | LTC_MUTEX_UNLOCK(<c_prng_mutex); 23 | return x; 24 | } 25 | } 26 | LTC_MUTEX_UNLOCK(<c_prng_mutex); 27 | return -1; 28 | } 29 | 30 | -------------------------------------------------------------------------------- /src/ltc/misc/crypt/crypt_hash_descriptor.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file crypt_hash_descriptor.c 7 | Stores the hash descriptor table, Tom St Denis 8 | */ 9 | 10 | struct ltc_hash_descriptor hash_descriptor[TAB_SIZE] = { 11 | { NULL, 0, 0, 0, { 0 }, 0, NULL, NULL, NULL, NULL, NULL } 12 | }; 13 | 14 | LTC_MUTEX_GLOBAL(ltc_hash_mutex) 15 | 16 | -------------------------------------------------------------------------------- /src/ltc/misc/crypt/crypt_hash_is_valid.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file crypt_hash_is_valid.c 7 | Determine if hash is valid, Tom St Denis 8 | */ 9 | 10 | /* 11 | Test if a hash index is valid 12 | @param idx The index of the hash to search for 13 | @return CRYPT_OK if valid 14 | */ 15 | int hash_is_valid(int idx) 16 | { 17 | LTC_MUTEX_LOCK(<c_hash_mutex); 18 | if (idx < 0 || idx >= TAB_SIZE || hash_descriptor[idx].name == NULL) { 19 | LTC_MUTEX_UNLOCK(<c_hash_mutex); 20 | return CRYPT_INVALID_HASH; 21 | } 22 | LTC_MUTEX_UNLOCK(<c_hash_mutex); 23 | return CRYPT_OK; 24 | } 25 | -------------------------------------------------------------------------------- /src/ltc/misc/crypt/crypt_ltc_mp_descriptor.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /* Initialize ltc_mp to nulls, to force allocation on all platforms, including macOS. */ 6 | ltc_math_descriptor ltc_mp = { 0 }; 7 | -------------------------------------------------------------------------------- /src/ltc/misc/crypt/crypt_prng_descriptor.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file crypt_prng_descriptor.c 7 | Stores the PRNG descriptors, Tom St Denis 8 | */ 9 | struct ltc_prng_descriptor prng_descriptor[TAB_SIZE] = { 10 | { NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL } 11 | }; 12 | 13 | LTC_MUTEX_GLOBAL(ltc_prng_mutex) 14 | 15 | -------------------------------------------------------------------------------- /src/ltc/misc/crypt/crypt_prng_is_valid.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file crypt_prng_is_valid.c 7 | Determine if PRNG is valid, Tom St Denis 8 | */ 9 | 10 | /* 11 | Test if a PRNG index is valid 12 | @param idx The index of the PRNG to search for 13 | @return CRYPT_OK if valid 14 | */ 15 | int prng_is_valid(int idx) 16 | { 17 | LTC_MUTEX_LOCK(<c_prng_mutex); 18 | if (idx < 0 || idx >= TAB_SIZE || prng_descriptor[idx].name == NULL) { 19 | LTC_MUTEX_UNLOCK(<c_prng_mutex); 20 | return CRYPT_INVALID_PRNG; 21 | } 22 | LTC_MUTEX_UNLOCK(<c_prng_mutex); 23 | return CRYPT_OK; 24 | } 25 | -------------------------------------------------------------------------------- /src/ltc/misc/crypt/crypt_prng_rng_descriptor.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | #ifdef LTC_PRNG_ENABLE_LTC_RNG 6 | unsigned long (*ltc_rng)(unsigned char *out, unsigned long outlen, void (*callback)(void)); 7 | #endif 8 | -------------------------------------------------------------------------------- /src/ltc/misc/crypt/crypt_register_all_prngs.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | 4 | #include "tomcrypt_private.h" 5 | 6 | /** 7 | @file crypt_register_all_prngs.c 8 | 9 | Steffen Jaeckel 10 | */ 11 | 12 | #define REGISTER_PRNG(h) do {\ 13 | LTC_ARGCHK(register_prng(h) != -1); \ 14 | } while(0) 15 | 16 | int register_all_prngs(void) 17 | { 18 | #ifdef LTC_YARROW 19 | REGISTER_PRNG(&yarrow_desc); 20 | #endif 21 | #ifdef LTC_FORTUNA 22 | REGISTER_PRNG(&fortuna_desc); 23 | #endif 24 | #ifdef LTC_RC4 25 | REGISTER_PRNG(&rc4_desc); 26 | #endif 27 | #ifdef LTC_CHACHA20_PRNG 28 | REGISTER_PRNG(&chacha20_prng_desc); 29 | #endif 30 | #ifdef LTC_SOBER128 31 | REGISTER_PRNG(&sober128_desc); 32 | #endif 33 | #ifdef LTC_SPRNG 34 | REGISTER_PRNG(&sprng_desc); 35 | #endif 36 | 37 | return CRYPT_OK; 38 | } 39 | -------------------------------------------------------------------------------- /src/ltc/misc/crypt/crypt_unregister_cipher.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file crypt_unregister_cipher.c 7 | Unregister a cipher, Tom St Denis 8 | */ 9 | 10 | /** 11 | Unregister a cipher from the descriptor table 12 | @param cipher The cipher descriptor to remove 13 | @return CRYPT_OK on success 14 | */ 15 | int unregister_cipher(const struct ltc_cipher_descriptor *cipher) 16 | { 17 | int x; 18 | 19 | LTC_ARGCHK(cipher != NULL); 20 | 21 | /* is it already registered? */ 22 | LTC_MUTEX_LOCK(<c_cipher_mutex); 23 | for (x = 0; x < TAB_SIZE; x++) { 24 | if (XMEMCMP(&cipher_descriptor[x], cipher, sizeof(struct ltc_cipher_descriptor)) == 0) { 25 | cipher_descriptor[x].name = NULL; 26 | cipher_descriptor[x].ID = 255; 27 | LTC_MUTEX_UNLOCK(<c_cipher_mutex); 28 | return CRYPT_OK; 29 | } 30 | } 31 | LTC_MUTEX_UNLOCK(<c_cipher_mutex); 32 | return CRYPT_ERROR; 33 | } 34 | -------------------------------------------------------------------------------- /src/ltc/misc/crypt/crypt_unregister_hash.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file crypt_unregister_hash.c 7 | Unregister a hash, Tom St Denis 8 | */ 9 | 10 | /** 11 | Unregister a hash from the descriptor table 12 | @param hash The hash descriptor to remove 13 | @return CRYPT_OK on success 14 | */ 15 | int unregister_hash(const struct ltc_hash_descriptor *hash) 16 | { 17 | int x; 18 | 19 | LTC_ARGCHK(hash != NULL); 20 | 21 | /* is it already registered? */ 22 | LTC_MUTEX_LOCK(<c_hash_mutex); 23 | for (x = 0; x < TAB_SIZE; x++) { 24 | if (XMEMCMP(&hash_descriptor[x], hash, sizeof(struct ltc_hash_descriptor)) == 0) { 25 | hash_descriptor[x].name = NULL; 26 | LTC_MUTEX_UNLOCK(<c_hash_mutex); 27 | return CRYPT_OK; 28 | } 29 | } 30 | LTC_MUTEX_UNLOCK(<c_hash_mutex); 31 | return CRYPT_ERROR; 32 | } 33 | -------------------------------------------------------------------------------- /src/ltc/misc/crypt/crypt_unregister_prng.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file crypt_unregister_prng.c 7 | Unregister a PRNG, Tom St Denis 8 | */ 9 | 10 | /** 11 | Unregister a PRNG from the descriptor table 12 | @param prng The PRNG descriptor to remove 13 | @return CRYPT_OK on success 14 | */ 15 | int unregister_prng(const struct ltc_prng_descriptor *prng) 16 | { 17 | int x; 18 | 19 | LTC_ARGCHK(prng != NULL); 20 | 21 | /* is it already registered? */ 22 | LTC_MUTEX_LOCK(<c_prng_mutex); 23 | for (x = 0; x < TAB_SIZE; x++) { 24 | if (XMEMCMP(&prng_descriptor[x], prng, sizeof(struct ltc_prng_descriptor)) == 0) { 25 | prng_descriptor[x].name = NULL; 26 | LTC_MUTEX_UNLOCK(<c_prng_mutex); 27 | return CRYPT_OK; 28 | } 29 | } 30 | LTC_MUTEX_UNLOCK(<c_prng_mutex); 31 | return CRYPT_ERROR; 32 | } 33 | -------------------------------------------------------------------------------- /src/ltc/misc/password_free.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file password_free.c 7 | Free the password inside a `struct password`, Steffen Jaeckel 8 | */ 9 | 10 | /** 11 | Free a password 12 | @param pw The password to be free'd 13 | @param ctx The password context 14 | */ 15 | void password_free(struct password *pw, const struct password_ctx *ctx) 16 | { 17 | if (!ctx || !pw || !pw->pw) 18 | return; 19 | 20 | zeromem(pw->pw, pw->l); 21 | if (ctx->free) { 22 | ctx->free(pw->pw); 23 | } else { 24 | XFREE(pw->pw); 25 | } 26 | pw->pw = NULL; 27 | pw->l = 0; 28 | } 29 | -------------------------------------------------------------------------------- /src/ltc/misc/zeromem.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file zeromem.c 7 | Zero a block of memory, Tom St Denis 8 | */ 9 | 10 | /** 11 | Zero a block of memory 12 | @param out The destination of the area to zero 13 | @param outlen The length of the area to zero (octets) 14 | */ 15 | void zeromem(volatile void *out, size_t outlen) 16 | { 17 | volatile char *mem = out; 18 | LTC_ARGCHKVD(out != NULL); 19 | while (outlen-- > 0) { 20 | *mem++ = '\0'; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/ltc/modes/cbc/cbc_done.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file cbc_done.c 7 | CBC implementation, finish chain, Tom St Denis 8 | */ 9 | 10 | #ifdef LTC_CBC_MODE 11 | 12 | /** Terminate the chain 13 | @param cbc The CBC chain to terminate 14 | @return CRYPT_OK on success 15 | */ 16 | int cbc_done(symmetric_CBC *cbc) 17 | { 18 | int err; 19 | LTC_ARGCHK(cbc != NULL); 20 | 21 | if ((err = cipher_is_valid(cbc->cipher)) != CRYPT_OK) { 22 | return err; 23 | } 24 | cipher_descriptor[cbc->cipher].done(&cbc->key); 25 | return CRYPT_OK; 26 | } 27 | 28 | 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /src/ltc/modes/cbc/cbc_getiv.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file cbc_getiv.c 7 | CBC implementation, get IV, Tom St Denis 8 | */ 9 | 10 | #ifdef LTC_CBC_MODE 11 | 12 | /** 13 | Get the current initialization vector 14 | @param IV [out] The destination of the initialization vector 15 | @param len [in/out] The max size and resulting size of the initialization vector 16 | @param cbc The CBC state 17 | @return CRYPT_OK if successful 18 | */ 19 | int cbc_getiv(unsigned char *IV, unsigned long *len, const symmetric_CBC *cbc) 20 | { 21 | LTC_ARGCHK(IV != NULL); 22 | LTC_ARGCHK(len != NULL); 23 | LTC_ARGCHK(cbc != NULL); 24 | if ((unsigned long)cbc->blocklen > *len) { 25 | *len = cbc->blocklen; 26 | return CRYPT_BUFFER_OVERFLOW; 27 | } 28 | XMEMCPY(IV, cbc->IV, cbc->blocklen); 29 | *len = cbc->blocklen; 30 | 31 | return CRYPT_OK; 32 | } 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /src/ltc/modes/cbc/cbc_setiv.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file cbc_setiv.c 7 | CBC implementation, set IV, Tom St Denis 8 | */ 9 | 10 | 11 | #ifdef LTC_CBC_MODE 12 | 13 | /** 14 | Set an initialization vector 15 | @param IV The initialization vector 16 | @param len The length of the vector (in octets) 17 | @param cbc The CBC state 18 | @return CRYPT_OK if successful 19 | */ 20 | int cbc_setiv(const unsigned char *IV, unsigned long len, symmetric_CBC *cbc) 21 | { 22 | LTC_ARGCHK(IV != NULL); 23 | LTC_ARGCHK(cbc != NULL); 24 | if (len != (unsigned long)cbc->blocklen) { 25 | return CRYPT_INVALID_ARG; 26 | } 27 | XMEMCPY(cbc->IV, IV, len); 28 | return CRYPT_OK; 29 | } 30 | 31 | #endif 32 | 33 | -------------------------------------------------------------------------------- /src/ltc/modes/cfb/cfb_done.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file cfb_done.c 7 | CFB implementation, finish chain, Tom St Denis 8 | */ 9 | 10 | #ifdef LTC_CFB_MODE 11 | 12 | /** Terminate the chain 13 | @param cfb The CFB chain to terminate 14 | @return CRYPT_OK on success 15 | */ 16 | int cfb_done(symmetric_CFB *cfb) 17 | { 18 | int err; 19 | LTC_ARGCHK(cfb != NULL); 20 | 21 | if ((err = cipher_is_valid(cfb->cipher)) != CRYPT_OK) { 22 | return err; 23 | } 24 | cipher_descriptor[cfb->cipher].done(&cfb->key); 25 | return CRYPT_OK; 26 | } 27 | 28 | 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /src/ltc/modes/cfb/cfb_getiv.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file cfb_getiv.c 7 | CFB implementation, get IV, Tom St Denis 8 | */ 9 | 10 | #ifdef LTC_CFB_MODE 11 | 12 | /** 13 | Get the current initialization vector 14 | @param IV [out] The destination of the initialization vector 15 | @param len [in/out] The max size and resulting size of the initialization vector 16 | @param cfb The CFB state 17 | @return CRYPT_OK if successful 18 | */ 19 | int cfb_getiv(unsigned char *IV, unsigned long *len, const symmetric_CFB *cfb) 20 | { 21 | LTC_ARGCHK(IV != NULL); 22 | LTC_ARGCHK(len != NULL); 23 | LTC_ARGCHK(cfb != NULL); 24 | if ((unsigned long)cfb->blocklen > *len) { 25 | *len = cfb->blocklen; 26 | return CRYPT_BUFFER_OVERFLOW; 27 | } 28 | XMEMCPY(IV, cfb->pad, cfb->blocklen); 29 | *len = cfb->blocklen; 30 | 31 | return CRYPT_OK; 32 | } 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /src/ltc/modes/cfb/cfb_setiv.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file cfb_setiv.c 7 | CFB implementation, set IV, Tom St Denis 8 | */ 9 | 10 | #ifdef LTC_CFB_MODE 11 | 12 | /** 13 | Set an initialization vector 14 | @param IV The initialization vector 15 | @param len The length of the vector (in octets) 16 | @param cfb The CFB state 17 | @return CRYPT_OK if successful 18 | */ 19 | int cfb_setiv(const unsigned char *IV, unsigned long len, symmetric_CFB *cfb) 20 | { 21 | int err; 22 | 23 | LTC_ARGCHK(IV != NULL); 24 | LTC_ARGCHK(cfb != NULL); 25 | 26 | if ((err = cipher_is_valid(cfb->cipher)) != CRYPT_OK) { 27 | return err; 28 | } 29 | 30 | if (len != (unsigned long)cfb->blocklen) { 31 | return CRYPT_INVALID_ARG; 32 | } 33 | 34 | /* force next block */ 35 | cfb->padlen = 0; 36 | XMEMCPY(cfb->pad, IV, len); 37 | return cipher_descriptor[cfb->cipher].ecb_encrypt(IV, cfb->IV, &cfb->key); 38 | } 39 | 40 | #endif 41 | 42 | -------------------------------------------------------------------------------- /src/ltc/modes/ctr/ctr_decrypt.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file ctr_decrypt.c 7 | CTR implementation, decrypt data, Tom St Denis 8 | */ 9 | 10 | #ifdef LTC_CTR_MODE 11 | 12 | /** 13 | CTR decrypt 14 | @param ct Ciphertext 15 | @param pt [out] Plaintext 16 | @param len Length of ciphertext (octets) 17 | @param ctr CTR state 18 | @return CRYPT_OK if successful 19 | */ 20 | int ctr_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_CTR *ctr) 21 | { 22 | LTC_ARGCHK(pt != NULL); 23 | LTC_ARGCHK(ct != NULL); 24 | LTC_ARGCHK(ctr != NULL); 25 | 26 | return ctr_encrypt(ct, pt, len, ctr); 27 | } 28 | 29 | #endif 30 | 31 | -------------------------------------------------------------------------------- /src/ltc/modes/ctr/ctr_done.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file ctr_done.c 7 | CTR implementation, finish chain, Tom St Denis 8 | */ 9 | 10 | #ifdef LTC_CTR_MODE 11 | 12 | /** Terminate the chain 13 | @param ctr The CTR chain to terminate 14 | @return CRYPT_OK on success 15 | */ 16 | int ctr_done(symmetric_CTR *ctr) 17 | { 18 | int err; 19 | LTC_ARGCHK(ctr != NULL); 20 | 21 | if ((err = cipher_is_valid(ctr->cipher)) != CRYPT_OK) { 22 | return err; 23 | } 24 | cipher_descriptor[ctr->cipher].done(&ctr->key); 25 | return CRYPT_OK; 26 | } 27 | 28 | 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /src/ltc/modes/ctr/ctr_getiv.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file ctr_getiv.c 7 | CTR implementation, get IV, Tom St Denis 8 | */ 9 | 10 | #ifdef LTC_CTR_MODE 11 | 12 | /** 13 | Get the current initialization vector 14 | @param IV [out] The destination of the initialization vector 15 | @param len [in/out] The max size and resulting size of the initialization vector 16 | @param ctr The CTR state 17 | @return CRYPT_OK if successful 18 | */ 19 | int ctr_getiv(unsigned char *IV, unsigned long *len, const symmetric_CTR *ctr) 20 | { 21 | LTC_ARGCHK(IV != NULL); 22 | LTC_ARGCHK(len != NULL); 23 | LTC_ARGCHK(ctr != NULL); 24 | if ((unsigned long)ctr->blocklen > *len) { 25 | *len = ctr->blocklen; 26 | return CRYPT_BUFFER_OVERFLOW; 27 | } 28 | XMEMCPY(IV, ctr->ctr, ctr->blocklen); 29 | *len = ctr->blocklen; 30 | 31 | return CRYPT_OK; 32 | } 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /src/ltc/modes/ecb/ecb_done.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file ecb_done.c 7 | ECB implementation, finish chain, Tom St Denis 8 | */ 9 | 10 | #ifdef LTC_ECB_MODE 11 | 12 | /** Terminate the chain 13 | @param ecb The ECB chain to terminate 14 | @return CRYPT_OK on success 15 | */ 16 | int ecb_done(symmetric_ECB *ecb) 17 | { 18 | int err; 19 | LTC_ARGCHK(ecb != NULL); 20 | 21 | if ((err = cipher_is_valid(ecb->cipher)) != CRYPT_OK) { 22 | return err; 23 | } 24 | cipher_descriptor[ecb->cipher].done(&ecb->key); 25 | return CRYPT_OK; 26 | } 27 | 28 | 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /src/ltc/modes/ofb/ofb_decrypt.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file ofb_decrypt.c 7 | OFB implementation, decrypt data, Tom St Denis 8 | */ 9 | 10 | #ifdef LTC_OFB_MODE 11 | 12 | /** 13 | OFB decrypt 14 | @param ct Ciphertext 15 | @param pt [out] Plaintext 16 | @param len Length of ciphertext (octets) 17 | @param ofb OFB state 18 | @return CRYPT_OK if successful 19 | */ 20 | int ofb_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_OFB *ofb) 21 | { 22 | LTC_ARGCHK(pt != NULL); 23 | LTC_ARGCHK(ct != NULL); 24 | LTC_ARGCHK(ofb != NULL); 25 | return ofb_encrypt(ct, pt, len, ofb); 26 | } 27 | 28 | 29 | #endif 30 | 31 | 32 | -------------------------------------------------------------------------------- /src/ltc/modes/ofb/ofb_done.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file ofb_done.c 7 | OFB implementation, finish chain, Tom St Denis 8 | */ 9 | 10 | #ifdef LTC_OFB_MODE 11 | 12 | /** Terminate the chain 13 | @param ofb The OFB chain to terminate 14 | @return CRYPT_OK on success 15 | */ 16 | int ofb_done(symmetric_OFB *ofb) 17 | { 18 | int err; 19 | LTC_ARGCHK(ofb != NULL); 20 | 21 | if ((err = cipher_is_valid(ofb->cipher)) != CRYPT_OK) { 22 | return err; 23 | } 24 | cipher_descriptor[ofb->cipher].done(&ofb->key); 25 | return CRYPT_OK; 26 | } 27 | 28 | 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /src/ltc/modes/ofb/ofb_getiv.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file ofb_getiv.c 7 | OFB implementation, get IV, Tom St Denis 8 | */ 9 | 10 | #ifdef LTC_OFB_MODE 11 | 12 | /** 13 | Get the current initialization vector 14 | @param IV [out] The destination of the initialization vector 15 | @param len [in/out] The max size and resulting size of the initialization vector 16 | @param ofb The OFB state 17 | @return CRYPT_OK if successful 18 | */ 19 | int ofb_getiv(unsigned char *IV, unsigned long *len, const symmetric_OFB *ofb) 20 | { 21 | LTC_ARGCHK(IV != NULL); 22 | LTC_ARGCHK(len != NULL); 23 | LTC_ARGCHK(ofb != NULL); 24 | if ((unsigned long)ofb->blocklen > *len) { 25 | *len = ofb->blocklen; 26 | return CRYPT_BUFFER_OVERFLOW; 27 | } 28 | XMEMCPY(IV, ofb->IV, ofb->blocklen); 29 | *len = ofb->blocklen; 30 | 31 | return CRYPT_OK; 32 | } 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /src/ltc/modes/ofb/ofb_setiv.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file ofb_setiv.c 7 | OFB implementation, set IV, Tom St Denis 8 | */ 9 | 10 | #ifdef LTC_OFB_MODE 11 | 12 | /** 13 | Set an initialization vector 14 | @param IV The initialization vector 15 | @param len The length of the vector (in octets) 16 | @param ofb The OFB state 17 | @return CRYPT_OK if successful 18 | */ 19 | int ofb_setiv(const unsigned char *IV, unsigned long len, symmetric_OFB *ofb) 20 | { 21 | int err; 22 | 23 | LTC_ARGCHK(IV != NULL); 24 | LTC_ARGCHK(ofb != NULL); 25 | 26 | if ((err = cipher_is_valid(ofb->cipher)) != CRYPT_OK) { 27 | return err; 28 | } 29 | 30 | if (len != (unsigned long)ofb->blocklen) { 31 | return CRYPT_INVALID_ARG; 32 | } 33 | 34 | /* force next block */ 35 | ofb->padlen = 0; 36 | return cipher_descriptor[ofb->cipher].ecb_encrypt(IV, ofb->IV, &ofb->key); 37 | } 38 | 39 | #endif 40 | 41 | -------------------------------------------------------------------------------- /src/ltc/pk/asn1/der/bit/der_length_bit_string.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file der_length_bit_string.c 7 | ASN.1 DER, get length of BIT STRING, Tom St Denis 8 | */ 9 | 10 | #ifdef LTC_DER 11 | /** 12 | Gets length of DER encoding of BIT STRING 13 | @param nbits The number of bits in the string to encode 14 | @param outlen [out] The length of the DER encoding for the given string 15 | @return CRYPT_OK if successful 16 | */ 17 | int der_length_bit_string(unsigned long nbits, unsigned long *outlen) 18 | { 19 | unsigned long nbytes, x; 20 | int err; 21 | 22 | LTC_ARGCHK(outlen != NULL); 23 | 24 | /* get the number of the bytes */ 25 | nbytes = (nbits >> 3) + ((nbits & 7) ? 1 : 0) + 1; 26 | 27 | if ((err = der_length_asn1_length(nbytes, &x)) != CRYPT_OK) { 28 | return err; 29 | } 30 | *outlen = 1 + x + nbytes; 31 | 32 | return CRYPT_OK; 33 | } 34 | 35 | #endif 36 | 37 | -------------------------------------------------------------------------------- /src/ltc/pk/asn1/der/boolean/der_decode_boolean.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file der_decode_boolean.c 7 | ASN.1 DER, decode a BOOLEAN, Tom St Denis 8 | */ 9 | 10 | 11 | #ifdef LTC_DER 12 | 13 | /** 14 | Read a BOOLEAN 15 | @param in The destination for the DER encoded BOOLEAN 16 | @param inlen The size of the DER BOOLEAN 17 | @param out [out] The boolean to decode 18 | @return CRYPT_OK if successful 19 | */ 20 | int der_decode_boolean(const unsigned char *in, unsigned long inlen, 21 | int *out) 22 | { 23 | LTC_ARGCHK(in != NULL); 24 | LTC_ARGCHK(out != NULL); 25 | 26 | if (inlen < 3 || in[0] != 0x01 || in[1] != 0x01 || (in[2] != 0x00 && in[2] != 0xFF)) { 27 | return CRYPT_INVALID_ARG; 28 | } 29 | 30 | *out = (in[2]==0xFF) ? 1 : 0; 31 | 32 | return CRYPT_OK; 33 | } 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /src/ltc/pk/asn1/der/boolean/der_encode_boolean.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file der_encode_boolean.c 7 | ASN.1 DER, encode a BOOLEAN, Tom St Denis 8 | */ 9 | 10 | 11 | #ifdef LTC_DER 12 | 13 | /** 14 | Store a BOOLEAN 15 | @param in The boolean to encode 16 | @param out [out] The destination for the DER encoded BOOLEAN 17 | @param outlen [in/out] The max size and resulting size of the DER BOOLEAN 18 | @return CRYPT_OK if successful 19 | */ 20 | int der_encode_boolean(int in, 21 | unsigned char *out, unsigned long *outlen) 22 | { 23 | LTC_ARGCHK(outlen != NULL); 24 | LTC_ARGCHK(out != NULL); 25 | 26 | if (*outlen < 3) { 27 | *outlen = 3; 28 | return CRYPT_BUFFER_OVERFLOW; 29 | } 30 | 31 | *outlen = 3; 32 | out[0] = 0x01; 33 | out[1] = 0x01; 34 | out[2] = in ? 0xFF : 0x00; 35 | 36 | return CRYPT_OK; 37 | } 38 | 39 | #endif 40 | -------------------------------------------------------------------------------- /src/ltc/pk/asn1/der/boolean/der_length_boolean.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file der_length_boolean.c 7 | ASN.1 DER, get length of a BOOLEAN, Tom St Denis 8 | */ 9 | 10 | #ifdef LTC_DER 11 | /** 12 | Gets length of DER encoding of a BOOLEAN 13 | @param outlen [out] The length of the DER encoding 14 | @return CRYPT_OK if successful 15 | */ 16 | int der_length_boolean(unsigned long *outlen) 17 | { 18 | LTC_ARGCHK(outlen != NULL); 19 | *outlen = 3; 20 | return CRYPT_OK; 21 | } 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /src/ltc/pk/asn1/der/general/der_length_asn1_identifier.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file der_length_asn1_identifier.c 7 | ASN.1 DER, determine the length when encoding the ASN.1 Identifier, Steffen Jaeckel 8 | */ 9 | 10 | #ifdef LTC_DER 11 | /** 12 | Determine the length required when encoding the ASN.1 Identifier 13 | @param id The ASN.1 identifier to encode 14 | @param idlen [out] The required length to encode list 15 | @return CRYPT_OK if successful 16 | */ 17 | 18 | int der_length_asn1_identifier(const ltc_asn1_list *id, unsigned long *idlen) 19 | { 20 | return der_encode_asn1_identifier(id, NULL, idlen); 21 | } 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /src/ltc/pk/asn1/der/general/der_length_asn1_length.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file der_length_asn1_length.c 7 | ASN.1 DER, determine the length of the ASN.1 length field, Steffen Jaeckel 8 | */ 9 | 10 | #ifdef LTC_DER 11 | /** 12 | Determine the length required to encode len in the ASN.1 length field 13 | @param len The length to encode 14 | @param outlen [out] The length that's required to store len 15 | @return CRYPT_OK if successful 16 | */ 17 | int der_length_asn1_length(unsigned long len, unsigned long *outlen) 18 | { 19 | return der_encode_asn1_length(len, NULL, outlen); 20 | } 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /src/ltc/pk/asn1/der/octet/der_length_octet_string.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file der_length_octet_string.c 7 | ASN.1 DER, get length of OCTET STRING, Tom St Denis 8 | */ 9 | 10 | #ifdef LTC_DER 11 | /** 12 | Gets length of DER encoding of OCTET STRING 13 | @param noctets The number of octets in the string to encode 14 | @param outlen [out] The length of the DER encoding for the given string 15 | @return CRYPT_OK if successful 16 | */ 17 | int der_length_octet_string(unsigned long noctets, unsigned long *outlen) 18 | { 19 | unsigned long x; 20 | int err; 21 | 22 | LTC_ARGCHK(outlen != NULL); 23 | 24 | if ((err = der_length_asn1_length(noctets, &x)) != CRYPT_OK) { 25 | return err; 26 | } 27 | *outlen = 1 + x + noctets; 28 | 29 | return CRYPT_OK; 30 | } 31 | 32 | #endif 33 | 34 | -------------------------------------------------------------------------------- /src/ltc/pk/asn1/der/sequence/der_decode_sequence_ex.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | 6 | /** 7 | @file der_decode_sequence_ex.c 8 | ASN.1 DER, decode a SEQUENCE, Tom St Denis 9 | */ 10 | 11 | #ifdef LTC_DER 12 | 13 | /** 14 | Decode a SEQUENCE 15 | @param in The DER encoded input 16 | @param inlen The size of the input 17 | @param list The list of items to decode 18 | @param outlen The number of items in the list 19 | @param flags c.f. enum ltc_der_seq 20 | @return CRYPT_OK on success 21 | */ 22 | int der_decode_sequence_ex(const unsigned char *in, unsigned long inlen, 23 | ltc_asn1_list *list, unsigned long outlen, unsigned int flags) 24 | { 25 | return der_decode_custom_type_ex(in, inlen, NULL, list, outlen, flags); 26 | } 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /src/ltc/pk/asn1/der/utctime/der_length_utctime.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file der_length_utctime.c 7 | ASN.1 DER, get length of UTCTIME, Tom St Denis 8 | */ 9 | 10 | #ifdef LTC_DER 11 | 12 | /** 13 | Gets length of DER encoding of UTCTIME 14 | @param utctime The UTC time structure to get the size of 15 | @param outlen [out] The length of the DER encoding 16 | @return CRYPT_OK if successful 17 | */ 18 | int der_length_utctime(const ltc_utctime *utctime, unsigned long *outlen) 19 | { 20 | LTC_ARGCHK(outlen != NULL); 21 | LTC_ARGCHK(utctime != NULL); 22 | 23 | if (utctime->off_hh == 0 && utctime->off_mm == 0) { 24 | /* we encode as YYMMDDhhmmssZ */ 25 | *outlen = 2 + 13; 26 | } else { 27 | /* we encode as YYMMDDhhmmss{+|-}hh'mm' */ 28 | *outlen = 2 + 17; 29 | } 30 | 31 | return CRYPT_OK; 32 | } 33 | 34 | #endif 35 | -------------------------------------------------------------------------------- /src/ltc/pk/dh/dh_export_key.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | 4 | #include "tomcrypt_private.h" 5 | 6 | #ifdef LTC_MDH 7 | 8 | /** 9 | Binary export a DH key to a buffer 10 | @param out [out] The destination for the key 11 | @param outlen [in/out] The max size and resulting size of the DH key 12 | @param type Which type of key (PK_PRIVATE or PK_PUBLIC) 13 | @param key The key you wish to export 14 | @return CRYPT_OK if successful 15 | */ 16 | int dh_export_key(void *out, unsigned long *outlen, int type, const dh_key *key) 17 | { 18 | unsigned long len; 19 | void *k; 20 | 21 | LTC_ARGCHK(out != NULL); 22 | LTC_ARGCHK(outlen != NULL); 23 | LTC_ARGCHK(key != NULL); 24 | 25 | k = (type == PK_PRIVATE) ? key->x : key->y; 26 | len = ltc_mp_unsigned_bin_size(k); 27 | 28 | if (*outlen < len) { 29 | *outlen = len; 30 | return CRYPT_BUFFER_OVERFLOW; 31 | } 32 | *outlen = len; 33 | 34 | return ltc_mp_to_unsigned_bin(k, out); 35 | } 36 | 37 | #endif /* LTC_MDH */ 38 | -------------------------------------------------------------------------------- /src/ltc/pk/dh/dh_free.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | 4 | #include "tomcrypt_private.h" 5 | 6 | #ifdef LTC_MDH 7 | 8 | /** 9 | Free the allocated ram for a DH key 10 | @param key The key which you wish to free 11 | */ 12 | void dh_free(dh_key *key) 13 | { 14 | LTC_ARGCHKVD(key != NULL); 15 | ltc_mp_cleanup_multi(&key->prime, &key->base, &key->y, &key->x, LTC_NULL); 16 | } 17 | 18 | #endif /* LTC_MDH */ 19 | -------------------------------------------------------------------------------- /src/ltc/pk/dsa/dsa_free.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file dsa_free.c 7 | DSA implementation, free a DSA key, Tom St Denis 8 | */ 9 | 10 | #ifdef LTC_MDSA 11 | 12 | /** 13 | Free a DSA key 14 | @param key The key to free from memory 15 | */ 16 | void dsa_free(dsa_key *key) 17 | { 18 | LTC_ARGCHKVD(key != NULL); 19 | ltc_mp_cleanup_multi(&key->y, &key->x, &key->q, &key->g, &key->p, LTC_NULL); 20 | key->type = key->qord = 0; 21 | } 22 | 23 | #endif 24 | -------------------------------------------------------------------------------- /src/ltc/pk/dsa/dsa_init.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | 6 | #ifdef LTC_MDSA 7 | 8 | /** 9 | Init DSA key 10 | @param key [out] the key to init 11 | @return CRYPT_OK if successful. 12 | */ 13 | int dsa_int_init(dsa_key *key) 14 | { 15 | LTC_ARGCHK(key != NULL); 16 | LTC_ARGCHK(ltc_mp.name != NULL); 17 | 18 | /* init key */ 19 | return ltc_mp_init_multi(&key->p, &key->g, &key->q, &key->x, &key->y, LTC_NULL); 20 | } 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /src/ltc/pk/dsa/dsa_make_key.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file dsa_make_key.c 7 | DSA implementation, generate a DSA key 8 | */ 9 | 10 | #ifdef LTC_MDSA 11 | 12 | /** 13 | Old-style creation of a DSA key 14 | @param prng An active PRNG state 15 | @param wprng The index of the PRNG desired 16 | @param group_size Size of the multiplicative group (octets) 17 | @param modulus_size Size of the modulus (octets) 18 | @param key [out] Where to store the created key 19 | @return CRYPT_OK if successful. 20 | */ 21 | int dsa_make_key(prng_state *prng, int wprng, int group_size, int modulus_size, dsa_key *key) 22 | { 23 | int err; 24 | 25 | if ((err = dsa_generate_pqg(prng, wprng, group_size, modulus_size, key)) != CRYPT_OK) { return err; } 26 | if ((err = dsa_generate_key(prng, wprng, key)) != CRYPT_OK) { return err; } 27 | 28 | return CRYPT_OK; 29 | } 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /src/ltc/pk/ecc/ecc_ansi_x963_export.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | 4 | #include "tomcrypt_private.h" 5 | 6 | /** 7 | @file ecc_ansi_x963_export.c 8 | ECC Crypto, Tom St Denis 9 | */ 10 | 11 | #ifdef LTC_MECC 12 | 13 | /** ECC X9.63 (Sec. 4.3.6) uncompressed export 14 | @param key Key to export 15 | @param out [out] destination of export 16 | @param outlen [in/out] Length of destination and final output size 17 | Return CRYPT_OK on success 18 | */ 19 | int ecc_ansi_x963_export(const ecc_key *key, unsigned char *out, unsigned long *outlen) 20 | { 21 | return ecc_get_key(out, outlen, PK_PUBLIC, key); 22 | } 23 | 24 | #endif 25 | -------------------------------------------------------------------------------- /src/ltc/pk/ecc/ecc_free.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | 4 | #include "tomcrypt_private.h" 5 | 6 | /** 7 | @file ecc_free.c 8 | ECC Crypto, Tom St Denis 9 | */ 10 | 11 | #ifdef LTC_MECC 12 | 13 | /** 14 | Free an ECC key from memory 15 | @param key The key you wish to free 16 | */ 17 | void ecc_free(ecc_key *key) 18 | { 19 | LTC_ARGCHKVD(key != NULL); 20 | 21 | ltc_mp_cleanup_multi(&key->dp.prime, &key->dp.order, 22 | &key->dp.A, &key->dp.B, 23 | &key->dp.base.x, &key->dp.base.y, &key->dp.base.z, 24 | &key->pubkey.x, &key->pubkey.y, &key->pubkey.z, 25 | &key->k, NULL); 26 | } 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /src/ltc/pk/ecc/ecc_get_oid_str.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | 4 | #include "tomcrypt_private.h" 5 | 6 | #ifdef LTC_MECC 7 | 8 | /** Extract OID as a string from ECC key 9 | @param out [out] destination buffer 10 | @param outlen [in/out] Length of destination buffer and final output size (without terminating NUL byte) 11 | @param key The ECC key 12 | Return CRYPT_OK on success 13 | */ 14 | 15 | int ecc_get_oid_str(char *out, unsigned long *outlen, const ecc_key *key) 16 | { 17 | LTC_ARGCHK(key != NULL); 18 | 19 | return pk_oid_num_to_str(key->dp.oid, key->dp.oidlen, out, outlen); 20 | } 21 | 22 | #endif 23 | -------------------------------------------------------------------------------- /src/ltc/pk/ecc/ecc_get_size.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | 4 | #include "tomcrypt_private.h" 5 | 6 | /** 7 | @file ecc_get_size.c 8 | ECC Crypto, Tom St Denis 9 | */ 10 | 11 | #ifdef LTC_MECC 12 | 13 | /** 14 | Get the size of an ECC key 15 | @param key The key to get the size of 16 | @return The size (octets) of the key or INT_MAX on error 17 | */ 18 | int ecc_get_size(const ecc_key *key) 19 | { 20 | if (key == NULL) { 21 | return INT_MAX; 22 | } 23 | return key->dp.size; 24 | } 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /src/ltc/pk/ecc/ecc_sizes.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | 4 | #include "tomcrypt_private.h" 5 | 6 | /** 7 | @file ecc_sizes.c 8 | ECC Crypto, Tom St Denis 9 | */ 10 | 11 | #ifdef LTC_MECC 12 | 13 | void ecc_sizes(int *low, int *high) 14 | { 15 | int i, size; 16 | void *prime; 17 | 18 | LTC_ARGCHKVD(low != NULL); 19 | LTC_ARGCHKVD(high != NULL); 20 | 21 | *low = INT_MAX; 22 | *high = 0; 23 | 24 | if (ltc_mp_init(&prime) == CRYPT_OK) { 25 | for (i = 0; ltc_ecc_curves[i].prime != NULL; i++) { 26 | if (ltc_mp_read_radix(prime, ltc_ecc_curves[i].prime, 16) == CRYPT_OK) { 27 | size = ltc_mp_unsigned_bin_size(prime); 28 | if (size < *low) *low = size; 29 | if (size > *high) *high = size; 30 | } 31 | } 32 | ltc_mp_clear(prime); 33 | } 34 | } 35 | 36 | #endif 37 | -------------------------------------------------------------------------------- /src/ltc/pk/ed25519/ed25519_export.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file ed25519_export.c 7 | Export an Ed25519 key to a binary packet, Steffen Jaeckel 8 | */ 9 | 10 | #ifdef LTC_CURVE25519 11 | 12 | /** 13 | Export an Ed25519 key to a binary packet 14 | @param out [out] The destination for the key 15 | @param outlen [in/out] The max size and resulting size of the Ed25519 key 16 | @param type Which type of key (PK_PRIVATE, PK_PUBLIC|PK_STD or PK_PUBLIC) 17 | @param key The key you wish to export 18 | @return CRYPT_OK if successful 19 | */ 20 | int ed25519_export( unsigned char *out, unsigned long *outlen, 21 | int which, 22 | const curve25519_key *key) 23 | { 24 | LTC_ARGCHK(key != NULL); 25 | 26 | if (key->pka != LTC_PKA_ED25519) return CRYPT_PK_INVALID_TYPE; 27 | 28 | return ec25519_export(out, outlen, which, key); 29 | } 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /src/ltc/pk/ed25519/ed25519_make_key.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file ed25519_make_key.c 7 | Create an Ed25519 key, Steffen Jaeckel 8 | */ 9 | 10 | #ifdef LTC_CURVE25519 11 | 12 | /** 13 | Create an Ed25519 key 14 | @param prng An active PRNG state 15 | @param wprng The index of the PRNG desired 16 | @param key [out] Destination of a newly created private key pair 17 | @return CRYPT_OK if successful 18 | */ 19 | int ed25519_make_key(prng_state *prng, int wprng, curve25519_key *key) 20 | { 21 | int err; 22 | 23 | LTC_ARGCHK(prng != NULL); 24 | LTC_ARGCHK(key != NULL); 25 | 26 | if ((err = tweetnacl_crypto_sign_keypair(prng, wprng, key->pub, key->priv)) != CRYPT_OK) { 27 | return err; 28 | } 29 | 30 | key->type = PK_PRIVATE; 31 | key->pka = LTC_PKA_ED25519; 32 | 33 | return err; 34 | } 35 | 36 | #endif 37 | -------------------------------------------------------------------------------- /src/ltc/pk/pka_key.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | void pka_key_destroy(ltc_pka_key **key) 6 | { 7 | LTC_ARGCHKVD(key != NULL); 8 | 9 | if (!*key) 10 | return; 11 | 12 | pka_key_free(*key); 13 | zeromem(*key, sizeof(**key)); 14 | XFREE(*key); 15 | *key = NULL; 16 | } 17 | 18 | void pka_key_free(ltc_pka_key *key) 19 | { 20 | LTC_ARGCHKVD(key != NULL); 21 | switch (key->id) { 22 | case LTC_PKA_DH: 23 | #if defined(LTC_MDH) 24 | dh_free(&key->u.dh); 25 | #endif 26 | break; 27 | case LTC_PKA_DSA: 28 | #if defined(LTC_MDSA) 29 | dsa_free(&key->u.dsa); 30 | #endif 31 | break; 32 | case LTC_PKA_RSA: 33 | #if defined(LTC_MRSA) 34 | rsa_free(&key->u.rsa); 35 | #endif 36 | break; 37 | case LTC_PKA_EC: 38 | #if defined(LTC_MECC) 39 | ecc_free(&key->u.ecc); 40 | #endif 41 | break; 42 | default: 43 | break; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/ltc/pk/pkcs1/pkcs_1_i2osp.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file pkcs_1_i2osp.c 7 | Integer to Octet I2OSP, Tom St Denis 8 | */ 9 | 10 | #ifdef LTC_PKCS_1 11 | 12 | /* always stores the same # of bytes, pads with leading zero bytes 13 | as required 14 | */ 15 | 16 | /** 17 | PKCS #1 Integer to binary 18 | @param n The integer to store 19 | @param modulus_len The length of the RSA modulus 20 | @param out [out] The destination for the integer 21 | @return CRYPT_OK if successful 22 | */ 23 | int pkcs_1_i2osp(void *n, unsigned long modulus_len, unsigned char *out) 24 | { 25 | unsigned long size; 26 | 27 | size = ltc_mp_unsigned_bin_size(n); 28 | 29 | if (size > modulus_len) { 30 | return CRYPT_BUFFER_OVERFLOW; 31 | } 32 | 33 | /* store it */ 34 | zeromem(out, modulus_len); 35 | return ltc_mp_to_unsigned_bin(n, out+(modulus_len-size)); 36 | } 37 | 38 | #endif /* LTC_PKCS_1 */ 39 | 40 | -------------------------------------------------------------------------------- /src/ltc/pk/pkcs1/pkcs_1_os2ip.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file pkcs_1_os2ip.c 7 | Octet to Integer OS2IP, Tom St Denis 8 | */ 9 | #ifdef LTC_PKCS_1 10 | 11 | /** 12 | Read a binary string into an mp_int 13 | @param n [out] The mp_int destination 14 | @param in The binary string to read 15 | @param inlen The length of the binary string 16 | @return CRYPT_OK if successful 17 | */ 18 | int pkcs_1_os2ip(void *n, unsigned char *in, unsigned long inlen) 19 | { 20 | return ltc_mp_read_unsigned_bin(n, in, inlen); 21 | } 22 | 23 | #endif /* LTC_PKCS_1 */ 24 | 25 | -------------------------------------------------------------------------------- /src/ltc/pk/rsa/rsa_get_size.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file rsa_get_size.c 7 | Retrieve the size of an RSA key, Steffen Jaeckel. 8 | */ 9 | 10 | #ifdef LTC_MRSA 11 | 12 | /** 13 | Retrieve the size in bytes of an RSA key. 14 | @param key The RSA key 15 | @return The size in bytes of the RSA key or INT_MAX on error. 16 | */ 17 | int rsa_get_size(const rsa_key *key) 18 | { 19 | int ret = INT_MAX; 20 | LTC_ARGCHK(key != NULL); 21 | 22 | if (key) 23 | { 24 | ret = ltc_mp_unsigned_bin_size(key->N); 25 | } /* if */ 26 | 27 | return ret; 28 | } 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /src/ltc/pk/x25519/x25519_export.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | #include "tomcrypt_private.h" 4 | 5 | /** 6 | @file x25519_export.c 7 | Export a X25519 key to a binary packet, Steffen Jaeckel 8 | */ 9 | 10 | #ifdef LTC_CURVE25519 11 | 12 | /** 13 | Export a X25519 key to a binary packet 14 | @param out [out] The destination for the key 15 | @param outlen [in/out] The max size and resulting size of the X25519 key 16 | @param type Which type of key (PK_PRIVATE, PK_PUBLIC|PK_STD or PK_PUBLIC) 17 | @param key The key you wish to export 18 | @return CRYPT_OK if successful 19 | */ 20 | int x25519_export( unsigned char *out, unsigned long *outlen, 21 | int which, 22 | const curve25519_key *key) 23 | { 24 | LTC_ARGCHK(key != NULL); 25 | 26 | if (key->pka != LTC_PKA_X25519) return CRYPT_PK_INVALID_TYPE; 27 | 28 | return ec25519_export(out, outlen, which, key); 29 | } 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /src/ltc/stream/chacha/chacha_done.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | 4 | #include "tomcrypt_private.h" 5 | 6 | #ifdef LTC_CHACHA 7 | 8 | /** 9 | Terminate and clear ChaCha state 10 | @param st The ChaCha state 11 | @return CRYPT_OK on success 12 | */ 13 | int chacha_done(chacha_state *st) 14 | { 15 | LTC_ARGCHK(st != NULL); 16 | zeromem(st, sizeof(chacha_state)); 17 | return CRYPT_OK; 18 | } 19 | 20 | #endif 21 | -------------------------------------------------------------------------------- /src/ltc/stream/chacha/chacha_keystream.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | 4 | /* The implementation is based on: 5 | * chacha-ref.c version 20080118 6 | * Public domain from D. J. Bernstein 7 | */ 8 | 9 | #include "tomcrypt_private.h" 10 | 11 | #ifdef LTC_CHACHA 12 | 13 | /** 14 | Generate a stream of random bytes via ChaCha 15 | @param st The ChaCha20 state 16 | @param out [out] The output buffer 17 | @param outlen The output length 18 | @return CRYPT_OK on success 19 | */ 20 | int chacha_keystream(chacha_state *st, unsigned char *out, unsigned long outlen) 21 | { 22 | if (outlen == 0) return CRYPT_OK; /* nothing to do */ 23 | LTC_ARGCHK(out != NULL); 24 | XMEMSET(out, 0, outlen); 25 | return chacha_crypt(st, out, outlen, out); 26 | } 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /src/ltc/stream/rc4/rc4_stream_memory.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | 4 | #include "tomcrypt_private.h" 5 | 6 | #ifdef LTC_RC4_STREAM 7 | 8 | /** 9 | Encrypt (or decrypt) bytes of ciphertext (or plaintext) with RC4 10 | @param key The key 11 | @param keylen The key length 12 | @param datain The plaintext (or ciphertext) 13 | @param datalen The length of the input and output (octets) 14 | @param dataout [out] The ciphertext (or plaintext) 15 | @return CRYPT_OK if successful 16 | */ 17 | int rc4_stream_memory(const unsigned char *key, unsigned long keylen, 18 | const unsigned char *datain, unsigned long datalen, 19 | unsigned char *dataout) 20 | { 21 | rc4_state st; 22 | int err; 23 | 24 | if ((err = rc4_stream_setup(&st, key, keylen)) != CRYPT_OK) goto WIPE_KEY; 25 | err = rc4_stream_crypt(&st, datain, datalen, dataout); 26 | WIPE_KEY: 27 | rc4_stream_done(&st); 28 | return err; 29 | } 30 | 31 | #endif /* LTC_RC4_STREAM */ 32 | -------------------------------------------------------------------------------- /src/ltc/stream/salsa20/salsa20_done.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | 4 | #include "tomcrypt_private.h" 5 | 6 | #ifdef LTC_SALSA20 7 | 8 | /** 9 | Terminate and clear Salsa20 state 10 | @param st The Salsa20 state 11 | @return CRYPT_OK on success 12 | */ 13 | int salsa20_done(salsa20_state *st) 14 | { 15 | LTC_ARGCHK(st != NULL); 16 | zeromem(st, sizeof(salsa20_state)); 17 | return CRYPT_OK; 18 | } 19 | 20 | #endif 21 | -------------------------------------------------------------------------------- /src/ltc/stream/salsa20/salsa20_keystream.c: -------------------------------------------------------------------------------- 1 | /* LibTomCrypt, modular cryptographic library -- Tom St Denis */ 2 | /* SPDX-License-Identifier: Unlicense */ 3 | 4 | /* The implementation is based on: 5 | * "Salsa20 specification", http://cr.yp.to/snuffle/spec.pdf 6 | * and salsa20-ref.c version 20051118 7 | * Public domain from D. J. Bernstein 8 | */ 9 | 10 | #include "tomcrypt_private.h" 11 | 12 | #ifdef LTC_SALSA20 13 | 14 | /** 15 | Generate a stream of random bytes via Salsa20 16 | @param st The Salsa20 state 17 | @param out [out] The output buffer 18 | @param outlen The output length 19 | @return CRYPT_OK on success 20 | */ 21 | int salsa20_keystream(salsa20_state *st, unsigned char *out, unsigned long outlen) 22 | { 23 | if (outlen == 0) return CRYPT_OK; /* nothing to do */ 24 | LTC_ARGCHK(out != NULL); 25 | XMEMSET(out, 0, outlen); 26 | return salsa20_crypt(st, out, outlen, out); 27 | } 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /src/ltm/bn_mp_abs.c: -------------------------------------------------------------------------------- 1 | #include "tommath_private.h" 2 | #ifdef BN_MP_ABS_C 3 | /* LibTomMath, multiple-precision integer library -- Tom St Denis 4 | * 5 | * LibTomMath is a library that provides multiple-precision 6 | * integer arithmetic as well as number theoretic functionality. 7 | * 8 | * The library was designed directly after the MPI library by 9 | * Michael Fromberger but has been written from scratch with 10 | * additional optimizations in place. 11 | * 12 | * SPDX-License-Identifier: Unlicense 13 | */ 14 | 15 | /* b = |a| 16 | * 17 | * Simple function copies the input and fixes the sign to positive 18 | */ 19 | int mp_abs(const mp_int *a, mp_int *b) 20 | { 21 | int res; 22 | 23 | /* copy a to b */ 24 | if (a != b) { 25 | if ((res = mp_copy(a, b)) != MP_OKAY) { 26 | return res; 27 | } 28 | } 29 | 30 | /* force the sign of b to positive */ 31 | b->sign = MP_ZPOS; 32 | 33 | return MP_OKAY; 34 | } 35 | #endif 36 | 37 | /* ref: $Format:%D$ */ 38 | /* git commit: $Format:%H$ */ 39 | /* commit time: $Format:%ai$ */ 40 | -------------------------------------------------------------------------------- /src/ltm/bn_mp_addmod.c: -------------------------------------------------------------------------------- 1 | #include "tommath_private.h" 2 | #ifdef BN_MP_ADDMOD_C 3 | /* LibTomMath, multiple-precision integer library -- Tom St Denis 4 | * 5 | * LibTomMath is a library that provides multiple-precision 6 | * integer arithmetic as well as number theoretic functionality. 7 | * 8 | * The library was designed directly after the MPI library by 9 | * Michael Fromberger but has been written from scratch with 10 | * additional optimizations in place. 11 | * 12 | * SPDX-License-Identifier: Unlicense 13 | */ 14 | 15 | /* d = a + b (mod c) */ 16 | int mp_addmod(const mp_int *a, const mp_int *b, const mp_int *c, mp_int *d) 17 | { 18 | int res; 19 | mp_int t; 20 | 21 | if ((res = mp_init(&t)) != MP_OKAY) { 22 | return res; 23 | } 24 | 25 | if ((res = mp_add(a, b, &t)) != MP_OKAY) { 26 | mp_clear(&t); 27 | return res; 28 | } 29 | res = mp_mod(&t, c, d); 30 | mp_clear(&t); 31 | return res; 32 | } 33 | #endif 34 | 35 | /* ref: $Format:%D$ */ 36 | /* git commit: $Format:%H$ */ 37 | /* commit time: $Format:%ai$ */ 38 | -------------------------------------------------------------------------------- /src/ltm/bn_mp_clear_multi.c: -------------------------------------------------------------------------------- 1 | #include "tommath_private.h" 2 | #ifdef BN_MP_CLEAR_MULTI_C 3 | /* LibTomMath, multiple-precision integer library -- Tom St Denis 4 | * 5 | * LibTomMath is a library that provides multiple-precision 6 | * integer arithmetic as well as number theoretic functionality. 7 | * 8 | * The library was designed directly after the MPI library by 9 | * Michael Fromberger but has been written from scratch with 10 | * additional optimizations in place. 11 | * 12 | * SPDX-License-Identifier: Unlicense 13 | */ 14 | 15 | #include 16 | 17 | void mp_clear_multi(mp_int *mp, ...) 18 | { 19 | mp_int *next_mp = mp; 20 | va_list args; 21 | va_start(args, mp); 22 | while (next_mp != NULL) { 23 | mp_clear(next_mp); 24 | next_mp = va_arg(args, mp_int *); 25 | } 26 | va_end(args); 27 | } 28 | #endif 29 | 30 | /* ref: $Format:%D$ */ 31 | /* git commit: $Format:%H$ */ 32 | /* commit time: $Format:%ai$ */ 33 | -------------------------------------------------------------------------------- /src/ltm/bn_mp_complement.c: -------------------------------------------------------------------------------- 1 | #include "tommath_private.h" 2 | #ifdef BN_MP_COMPLEMENT_C 3 | /* LibTomMath, multiple-precision integer library -- Tom St Denis 4 | * 5 | * LibTomMath is a library that provides multiple-precision 6 | * integer arithmetic as well as number theoretic functionality. 7 | * 8 | * The library was designed directly after the MPI library by 9 | * Michael Fromberger but has been written from scratch with 10 | * additional optimizations in place. 11 | * 12 | * SPDX-License-Identifier: Unlicense 13 | */ 14 | 15 | /* b = ~a */ 16 | int mp_complement(const mp_int *a, mp_int *b) 17 | { 18 | int res = mp_neg(a, b); 19 | return (res == MP_OKAY) ? mp_sub_d(b, 1uL, b) : res; 20 | } 21 | #endif 22 | 23 | /* ref: $Format:%D$ */ 24 | /* git commit: $Format:%H$ */ 25 | /* commit time: $Format:%ai$ */ 26 | -------------------------------------------------------------------------------- /src/ltm/bn_mp_dr_setup.c: -------------------------------------------------------------------------------- 1 | #include "tommath_private.h" 2 | #ifdef BN_MP_DR_SETUP_C 3 | /* LibTomMath, multiple-precision integer library -- Tom St Denis 4 | * 5 | * LibTomMath is a library that provides multiple-precision 6 | * integer arithmetic as well as number theoretic functionality. 7 | * 8 | * The library was designed directly after the MPI library by 9 | * Michael Fromberger but has been written from scratch with 10 | * additional optimizations in place. 11 | * 12 | * SPDX-License-Identifier: Unlicense 13 | */ 14 | 15 | /* determines the setup value */ 16 | void mp_dr_setup(const mp_int *a, mp_digit *d) 17 | { 18 | /* the casts are required if DIGIT_BIT is one less than 19 | * the number of bits in a mp_digit [e.g. DIGIT_BIT==31] 20 | */ 21 | *d = (mp_digit)(((mp_word)1 << (mp_word)DIGIT_BIT) - (mp_word)a->dp[0]); 22 | } 23 | 24 | #endif 25 | 26 | /* ref: $Format:%D$ */ 27 | /* git commit: $Format:%H$ */ 28 | /* commit time: $Format:%ai$ */ 29 | -------------------------------------------------------------------------------- /src/ltm/bn_mp_exch.c: -------------------------------------------------------------------------------- 1 | #include "tommath_private.h" 2 | #ifdef BN_MP_EXCH_C 3 | /* LibTomMath, multiple-precision integer library -- Tom St Denis 4 | * 5 | * LibTomMath is a library that provides multiple-precision 6 | * integer arithmetic as well as number theoretic functionality. 7 | * 8 | * The library was designed directly after the MPI library by 9 | * Michael Fromberger but has been written from scratch with 10 | * additional optimizations in place. 11 | * 12 | * SPDX-License-Identifier: Unlicense 13 | */ 14 | 15 | /* swap the elements of two integers, for cases where you can't simply swap the 16 | * mp_int pointers around 17 | */ 18 | void mp_exch(mp_int *a, mp_int *b) 19 | { 20 | mp_int t; 21 | 22 | t = *a; 23 | *a = *b; 24 | *b = t; 25 | } 26 | #endif 27 | 28 | /* ref: $Format:%D$ */ 29 | /* git commit: $Format:%H$ */ 30 | /* commit time: $Format:%ai$ */ 31 | -------------------------------------------------------------------------------- /src/ltm/bn_mp_expt_d.c: -------------------------------------------------------------------------------- 1 | #include "tommath_private.h" 2 | #ifdef BN_MP_EXPT_D_C 3 | /* LibTomMath, multiple-precision integer library -- Tom St Denis 4 | * 5 | * LibTomMath is a library that provides multiple-precision 6 | * integer arithmetic as well as number theoretic functionality. 7 | * 8 | * The library was designed directly after the MPI library by 9 | * Michael Fromberger but has been written from scratch with 10 | * additional optimizations in place. 11 | * 12 | * SPDX-License-Identifier: Unlicense 13 | */ 14 | 15 | /* wrapper function for mp_expt_d_ex() */ 16 | int mp_expt_d(const mp_int *a, mp_digit b, mp_int *c) 17 | { 18 | return mp_expt_d_ex(a, b, c, 0); 19 | } 20 | 21 | #endif 22 | 23 | /* ref: $Format:%D$ */ 24 | /* git commit: $Format:%H$ */ 25 | /* commit time: $Format:%ai$ */ 26 | -------------------------------------------------------------------------------- /src/ltm/bn_mp_init_copy.c: -------------------------------------------------------------------------------- 1 | #include "tommath_private.h" 2 | #ifdef BN_MP_INIT_COPY_C 3 | /* LibTomMath, multiple-precision integer library -- Tom St Denis 4 | * 5 | * LibTomMath is a library that provides multiple-precision 6 | * integer arithmetic as well as number theoretic functionality. 7 | * 8 | * The library was designed directly after the MPI library by 9 | * Michael Fromberger but has been written from scratch with 10 | * additional optimizations in place. 11 | * 12 | * SPDX-License-Identifier: Unlicense 13 | */ 14 | 15 | /* creates "a" then copies b into it */ 16 | int mp_init_copy(mp_int *a, const mp_int *b) 17 | { 18 | int res; 19 | 20 | if ((res = mp_init_size(a, b->used)) != MP_OKAY) { 21 | return res; 22 | } 23 | 24 | if ((res = mp_copy(b, a)) != MP_OKAY) { 25 | mp_clear(a); 26 | } 27 | 28 | return res; 29 | } 30 | #endif 31 | 32 | /* ref: $Format:%D$ */ 33 | /* git commit: $Format:%H$ */ 34 | /* commit time: $Format:%ai$ */ 35 | -------------------------------------------------------------------------------- /src/ltm/bn_mp_init_set.c: -------------------------------------------------------------------------------- 1 | #include "tommath_private.h" 2 | #ifdef BN_MP_INIT_SET_C 3 | /* LibTomMath, multiple-precision integer library -- Tom St Denis 4 | * 5 | * LibTomMath is a library that provides multiple-precision 6 | * integer arithmetic as well as number theoretic functionality. 7 | * 8 | * The library was designed directly after the MPI library by 9 | * Michael Fromberger but has been written from scratch with 10 | * additional optimizations in place. 11 | * 12 | * SPDX-License-Identifier: Unlicense 13 | */ 14 | 15 | /* initialize and set a digit */ 16 | int mp_init_set(mp_int *a, mp_digit b) 17 | { 18 | int err; 19 | if ((err = mp_init(a)) != MP_OKAY) { 20 | return err; 21 | } 22 | mp_set(a, b); 23 | return err; 24 | } 25 | #endif 26 | 27 | /* ref: $Format:%D$ */ 28 | /* git commit: $Format:%H$ */ 29 | /* commit time: $Format:%ai$ */ 30 | -------------------------------------------------------------------------------- /src/ltm/bn_mp_init_set_int.c: -------------------------------------------------------------------------------- 1 | #include "tommath_private.h" 2 | #ifdef BN_MP_INIT_SET_INT_C 3 | /* LibTomMath, multiple-precision integer library -- Tom St Denis 4 | * 5 | * LibTomMath is a library that provides multiple-precision 6 | * integer arithmetic as well as number theoretic functionality. 7 | * 8 | * The library was designed directly after the MPI library by 9 | * Michael Fromberger but has been written from scratch with 10 | * additional optimizations in place. 11 | * 12 | * SPDX-License-Identifier: Unlicense 13 | */ 14 | 15 | /* initialize and set a digit */ 16 | int mp_init_set_int(mp_int *a, unsigned long b) 17 | { 18 | int err; 19 | if ((err = mp_init(a)) != MP_OKAY) { 20 | return err; 21 | } 22 | return mp_set_int(a, b); 23 | } 24 | #endif 25 | 26 | /* ref: $Format:%D$ */ 27 | /* git commit: $Format:%H$ */ 28 | /* commit time: $Format:%ai$ */ 29 | -------------------------------------------------------------------------------- /src/ltm/bn_mp_mod_d.c: -------------------------------------------------------------------------------- 1 | #include "tommath_private.h" 2 | #ifdef BN_MP_MOD_D_C 3 | /* LibTomMath, multiple-precision integer library -- Tom St Denis 4 | * 5 | * LibTomMath is a library that provides multiple-precision 6 | * integer arithmetic as well as number theoretic functionality. 7 | * 8 | * The library was designed directly after the MPI library by 9 | * Michael Fromberger but has been written from scratch with 10 | * additional optimizations in place. 11 | * 12 | * SPDX-License-Identifier: Unlicense 13 | */ 14 | 15 | int mp_mod_d(const mp_int *a, mp_digit b, mp_digit *c) 16 | { 17 | return mp_div_d(a, b, NULL, c); 18 | } 19 | #endif 20 | 21 | /* ref: $Format:%D$ */ 22 | /* git commit: $Format:%H$ */ 23 | /* commit time: $Format:%ai$ */ 24 | -------------------------------------------------------------------------------- /src/ltm/bn_mp_mulmod.c: -------------------------------------------------------------------------------- 1 | #include "tommath_private.h" 2 | #ifdef BN_MP_MULMOD_C 3 | /* LibTomMath, multiple-precision integer library -- Tom St Denis 4 | * 5 | * LibTomMath is a library that provides multiple-precision 6 | * integer arithmetic as well as number theoretic functionality. 7 | * 8 | * The library was designed directly after the MPI library by 9 | * Michael Fromberger but has been written from scratch with 10 | * additional optimizations in place. 11 | * 12 | * SPDX-License-Identifier: Unlicense 13 | */ 14 | 15 | /* d = a * b (mod c) */ 16 | int mp_mulmod(const mp_int *a, const mp_int *b, const mp_int *c, mp_int *d) 17 | { 18 | int res; 19 | mp_int t; 20 | 21 | if ((res = mp_init_size(&t, c->used)) != MP_OKAY) { 22 | return res; 23 | } 24 | 25 | if ((res = mp_mul(a, b, &t)) != MP_OKAY) { 26 | mp_clear(&t); 27 | return res; 28 | } 29 | res = mp_mod(&t, c, d); 30 | mp_clear(&t); 31 | return res; 32 | } 33 | #endif 34 | 35 | /* ref: $Format:%D$ */ 36 | /* git commit: $Format:%H$ */ 37 | /* commit time: $Format:%ai$ */ 38 | -------------------------------------------------------------------------------- /src/ltm/bn_mp_n_root.c: -------------------------------------------------------------------------------- 1 | #include "tommath_private.h" 2 | #ifdef BN_MP_N_ROOT_C 3 | /* LibTomMath, multiple-precision integer library -- Tom St Denis 4 | * 5 | * LibTomMath is a library that provides multiple-precision 6 | * integer arithmetic as well as number theoretic functionality. 7 | * 8 | * The library was designed directly after the MPI library by 9 | * Michael Fromberger but has been written from scratch with 10 | * additional optimizations in place. 11 | * 12 | * SPDX-License-Identifier: Unlicense 13 | */ 14 | 15 | /* wrapper function for mp_n_root_ex() 16 | * computes c = (a)**(1/b) such that (c)**b <= a and (c+1)**b > a 17 | */ 18 | int mp_n_root(const mp_int *a, mp_digit b, mp_int *c) 19 | { 20 | return mp_n_root_ex(a, b, c, 0); 21 | } 22 | 23 | #endif 24 | 25 | /* ref: $Format:%D$ */ 26 | /* git commit: $Format:%H$ */ 27 | /* commit time: $Format:%ai$ */ 28 | -------------------------------------------------------------------------------- /src/ltm/bn_mp_neg.c: -------------------------------------------------------------------------------- 1 | #include "tommath_private.h" 2 | #ifdef BN_MP_NEG_C 3 | /* LibTomMath, multiple-precision integer library -- Tom St Denis 4 | * 5 | * LibTomMath is a library that provides multiple-precision 6 | * integer arithmetic as well as number theoretic functionality. 7 | * 8 | * The library was designed directly after the MPI library by 9 | * Michael Fromberger but has been written from scratch with 10 | * additional optimizations in place. 11 | * 12 | * SPDX-License-Identifier: Unlicense 13 | */ 14 | 15 | /* b = -a */ 16 | int mp_neg(const mp_int *a, mp_int *b) 17 | { 18 | int res; 19 | if (a != b) { 20 | if ((res = mp_copy(a, b)) != MP_OKAY) { 21 | return res; 22 | } 23 | } 24 | 25 | if (mp_iszero(b) != MP_YES) { 26 | b->sign = (a->sign == MP_ZPOS) ? MP_NEG : MP_ZPOS; 27 | } else { 28 | b->sign = MP_ZPOS; 29 | } 30 | 31 | return MP_OKAY; 32 | } 33 | #endif 34 | 35 | /* ref: $Format:%D$ */ 36 | /* git commit: $Format:%H$ */ 37 | /* commit time: $Format:%ai$ */ 38 | -------------------------------------------------------------------------------- /src/ltm/bn_mp_reduce_setup.c: -------------------------------------------------------------------------------- 1 | #include "tommath_private.h" 2 | #ifdef BN_MP_REDUCE_SETUP_C 3 | /* LibTomMath, multiple-precision integer library -- Tom St Denis 4 | * 5 | * LibTomMath is a library that provides multiple-precision 6 | * integer arithmetic as well as number theoretic functionality. 7 | * 8 | * The library was designed directly after the MPI library by 9 | * Michael Fromberger but has been written from scratch with 10 | * additional optimizations in place. 11 | * 12 | * SPDX-License-Identifier: Unlicense 13 | */ 14 | 15 | /* pre-calculate the value required for Barrett reduction 16 | * For a given modulus "b" it calulates the value required in "a" 17 | */ 18 | int mp_reduce_setup(mp_int *a, const mp_int *b) 19 | { 20 | int res; 21 | 22 | if ((res = mp_2expt(a, b->used * 2 * DIGIT_BIT)) != MP_OKAY) { 23 | return res; 24 | } 25 | return mp_div(a, b, a, NULL); 26 | } 27 | #endif 28 | 29 | /* ref: $Format:%D$ */ 30 | /* git commit: $Format:%H$ */ 31 | /* commit time: $Format:%ai$ */ 32 | -------------------------------------------------------------------------------- /src/ltm/bn_mp_set.c: -------------------------------------------------------------------------------- 1 | #include "tommath_private.h" 2 | #ifdef BN_MP_SET_C 3 | /* LibTomMath, multiple-precision integer library -- Tom St Denis 4 | * 5 | * LibTomMath is a library that provides multiple-precision 6 | * integer arithmetic as well as number theoretic functionality. 7 | * 8 | * The library was designed directly after the MPI library by 9 | * Michael Fromberger but has been written from scratch with 10 | * additional optimizations in place. 11 | * 12 | * SPDX-License-Identifier: Unlicense 13 | */ 14 | 15 | /* set to a digit */ 16 | void mp_set(mp_int *a, mp_digit b) 17 | { 18 | mp_zero(a); 19 | a->dp[0] = b & MP_MASK; 20 | a->used = (a->dp[0] != 0u) ? 1 : 0; 21 | } 22 | #endif 23 | 24 | /* ref: $Format:%D$ */ 25 | /* git commit: $Format:%H$ */ 26 | /* commit time: $Format:%ai$ */ 27 | -------------------------------------------------------------------------------- /src/ltm/bn_mp_set_long.c: -------------------------------------------------------------------------------- 1 | #include "tommath_private.h" 2 | #ifdef BN_MP_SET_LONG_C 3 | /* LibTomMath, multiple-precision integer library -- Tom St Denis 4 | * 5 | * LibTomMath is a library that provides multiple-precision 6 | * integer arithmetic as well as number theoretic functionality. 7 | * 8 | * The library was designed directly after the MPI library by 9 | * Michael Fromberger but has been written from scratch with 10 | * additional optimizations in place. 11 | * 12 | * SPDX-License-Identifier: Unlicense 13 | */ 14 | 15 | /* set a platform dependent unsigned long int */ 16 | MP_SET_XLONG(mp_set_long, unsigned long) 17 | #endif 18 | 19 | /* ref: $Format:%D$ */ 20 | /* git commit: $Format:%H$ */ 21 | /* commit time: $Format:%ai$ */ 22 | -------------------------------------------------------------------------------- /src/ltm/bn_mp_shrink.c: -------------------------------------------------------------------------------- 1 | #include "tommath_private.h" 2 | #ifdef BN_MP_SHRINK_C 3 | /* LibTomMath, multiple-precision integer library -- Tom St Denis 4 | * 5 | * LibTomMath is a library that provides multiple-precision 6 | * integer arithmetic as well as number theoretic functionality. 7 | * 8 | * The library was designed directly after the MPI library by 9 | * Michael Fromberger but has been written from scratch with 10 | * additional optimizations in place. 11 | * 12 | * SPDX-License-Identifier: Unlicense 13 | */ 14 | 15 | /* shrink a bignum */ 16 | int mp_shrink(mp_int *a) 17 | { 18 | mp_digit *tmp; 19 | int used = 1; 20 | 21 | if (a->used > 0) { 22 | used = a->used; 23 | } 24 | 25 | if (a->alloc != used) { 26 | if ((tmp = OPT_CAST(mp_digit) XREALLOC(a->dp, sizeof(mp_digit) * (size_t)used)) == NULL) { 27 | return MP_MEM; 28 | } 29 | a->dp = tmp; 30 | a->alloc = used; 31 | } 32 | return MP_OKAY; 33 | } 34 | #endif 35 | 36 | /* ref: $Format:%D$ */ 37 | /* git commit: $Format:%H$ */ 38 | /* commit time: $Format:%ai$ */ 39 | -------------------------------------------------------------------------------- /src/ltm/bn_mp_signed_bin_size.c: -------------------------------------------------------------------------------- 1 | #include "tommath_private.h" 2 | #ifdef BN_MP_SIGNED_BIN_SIZE_C 3 | /* LibTomMath, multiple-precision integer library -- Tom St Denis 4 | * 5 | * LibTomMath is a library that provides multiple-precision 6 | * integer arithmetic as well as number theoretic functionality. 7 | * 8 | * The library was designed directly after the MPI library by 9 | * Michael Fromberger but has been written from scratch with 10 | * additional optimizations in place. 11 | * 12 | * SPDX-License-Identifier: Unlicense 13 | */ 14 | 15 | /* get the size for an signed equivalent */ 16 | int mp_signed_bin_size(const mp_int *a) 17 | { 18 | return 1 + mp_unsigned_bin_size(a); 19 | } 20 | #endif 21 | 22 | /* ref: $Format:%D$ */ 23 | /* git commit: $Format:%H$ */ 24 | /* commit time: $Format:%ai$ */ 25 | -------------------------------------------------------------------------------- /src/ltm/bn_mp_sqrmod.c: -------------------------------------------------------------------------------- 1 | #include "tommath_private.h" 2 | #ifdef BN_MP_SQRMOD_C 3 | /* LibTomMath, multiple-precision integer library -- Tom St Denis 4 | * 5 | * LibTomMath is a library that provides multiple-precision 6 | * integer arithmetic as well as number theoretic functionality. 7 | * 8 | * The library was designed directly after the MPI library by 9 | * Michael Fromberger but has been written from scratch with 10 | * additional optimizations in place. 11 | * 12 | * SPDX-License-Identifier: Unlicense 13 | */ 14 | 15 | /* c = a * a (mod b) */ 16 | int mp_sqrmod(const mp_int *a, const mp_int *b, mp_int *c) 17 | { 18 | int res; 19 | mp_int t; 20 | 21 | if ((res = mp_init(&t)) != MP_OKAY) { 22 | return res; 23 | } 24 | 25 | if ((res = mp_sqr(a, &t)) != MP_OKAY) { 26 | mp_clear(&t); 27 | return res; 28 | } 29 | res = mp_mod(&t, b, c); 30 | mp_clear(&t); 31 | return res; 32 | } 33 | #endif 34 | 35 | /* ref: $Format:%D$ */ 36 | /* git commit: $Format:%H$ */ 37 | /* commit time: $Format:%ai$ */ 38 | -------------------------------------------------------------------------------- /src/ltm/bn_mp_submod.c: -------------------------------------------------------------------------------- 1 | #include "tommath_private.h" 2 | #ifdef BN_MP_SUBMOD_C 3 | /* LibTomMath, multiple-precision integer library -- Tom St Denis 4 | * 5 | * LibTomMath is a library that provides multiple-precision 6 | * integer arithmetic as well as number theoretic functionality. 7 | * 8 | * The library was designed directly after the MPI library by 9 | * Michael Fromberger but has been written from scratch with 10 | * additional optimizations in place. 11 | * 12 | * SPDX-License-Identifier: Unlicense 13 | */ 14 | 15 | /* d = a - b (mod c) */ 16 | int mp_submod(const mp_int *a, const mp_int *b, const mp_int *c, mp_int *d) 17 | { 18 | int res; 19 | mp_int t; 20 | 21 | 22 | if ((res = mp_init(&t)) != MP_OKAY) { 23 | return res; 24 | } 25 | 26 | if ((res = mp_sub(a, b, &t)) != MP_OKAY) { 27 | mp_clear(&t); 28 | return res; 29 | } 30 | res = mp_mod(&t, c, d); 31 | mp_clear(&t); 32 | return res; 33 | } 34 | #endif 35 | 36 | /* ref: $Format:%D$ */ 37 | /* git commit: $Format:%H$ */ 38 | /* commit time: $Format:%ai$ */ 39 | -------------------------------------------------------------------------------- /src/ltm/bn_mp_tc_div_2d.c: -------------------------------------------------------------------------------- 1 | #include "tommath_private.h" 2 | #ifdef BN_MP_TC_DIV_2D_C 3 | /* LibTomMath, multiple-precision integer library -- Tom St Denis 4 | * 5 | * LibTomMath is a library that provides multiple-precision 6 | * integer arithmetic as well as number theoretic functionality. 7 | * 8 | * The library was designed directly after the MPI library by 9 | * Michael Fromberger but has been written from scratch with 10 | * additional optimizations in place. 11 | * 12 | * SPDX-License-Identifier: Unlicense 13 | */ 14 | 15 | /* two complement right shift */ 16 | int mp_tc_div_2d(const mp_int *a, int b, mp_int *c) 17 | { 18 | int res; 19 | if (mp_isneg(a) == MP_NO) { 20 | return mp_div_2d(a, b, c, NULL); 21 | } 22 | 23 | res = mp_add_d(a, 1uL, c); 24 | if (res != MP_OKAY) { 25 | return res; 26 | } 27 | 28 | res = mp_div_2d(c, b, c, NULL); 29 | return (res == MP_OKAY) ? mp_sub_d(c, 1uL, c) : res; 30 | } 31 | #endif 32 | 33 | /* ref: $Format:%D$ */ 34 | /* git commit: $Format:%H$ */ 35 | /* commit time: $Format:%ai$ */ 36 | -------------------------------------------------------------------------------- /src/ltm/bn_mp_to_signed_bin.c: -------------------------------------------------------------------------------- 1 | #include "tommath_private.h" 2 | #ifdef BN_MP_TO_SIGNED_BIN_C 3 | /* LibTomMath, multiple-precision integer library -- Tom St Denis 4 | * 5 | * LibTomMath is a library that provides multiple-precision 6 | * integer arithmetic as well as number theoretic functionality. 7 | * 8 | * The library was designed directly after the MPI library by 9 | * Michael Fromberger but has been written from scratch with 10 | * additional optimizations in place. 11 | * 12 | * SPDX-License-Identifier: Unlicense 13 | */ 14 | 15 | /* store in signed [big endian] format */ 16 | int mp_to_signed_bin(const mp_int *a, unsigned char *b) 17 | { 18 | int res; 19 | 20 | if ((res = mp_to_unsigned_bin(a, b + 1)) != MP_OKAY) { 21 | return res; 22 | } 23 | b[0] = (a->sign == MP_ZPOS) ? (unsigned char)0 : (unsigned char)1; 24 | return MP_OKAY; 25 | } 26 | #endif 27 | 28 | /* ref: $Format:%D$ */ 29 | /* git commit: $Format:%H$ */ 30 | /* commit time: $Format:%ai$ */ 31 | -------------------------------------------------------------------------------- /src/ltm/bn_mp_to_signed_bin_n.c: -------------------------------------------------------------------------------- 1 | #include "tommath_private.h" 2 | #ifdef BN_MP_TO_SIGNED_BIN_N_C 3 | /* LibTomMath, multiple-precision integer library -- Tom St Denis 4 | * 5 | * LibTomMath is a library that provides multiple-precision 6 | * integer arithmetic as well as number theoretic functionality. 7 | * 8 | * The library was designed directly after the MPI library by 9 | * Michael Fromberger but has been written from scratch with 10 | * additional optimizations in place. 11 | * 12 | * SPDX-License-Identifier: Unlicense 13 | */ 14 | 15 | /* store in signed [big endian] format */ 16 | int mp_to_signed_bin_n(const mp_int *a, unsigned char *b, unsigned long *outlen) 17 | { 18 | if (*outlen < (unsigned long)mp_signed_bin_size(a)) { 19 | return MP_VAL; 20 | } 21 | *outlen = (unsigned long)mp_signed_bin_size(a); 22 | return mp_to_signed_bin(a, b); 23 | } 24 | #endif 25 | 26 | /* ref: $Format:%D$ */ 27 | /* git commit: $Format:%H$ */ 28 | /* commit time: $Format:%ai$ */ 29 | -------------------------------------------------------------------------------- /src/ltm/bn_mp_to_unsigned_bin_n.c: -------------------------------------------------------------------------------- 1 | #include "tommath_private.h" 2 | #ifdef BN_MP_TO_UNSIGNED_BIN_N_C 3 | /* LibTomMath, multiple-precision integer library -- Tom St Denis 4 | * 5 | * LibTomMath is a library that provides multiple-precision 6 | * integer arithmetic as well as number theoretic functionality. 7 | * 8 | * The library was designed directly after the MPI library by 9 | * Michael Fromberger but has been written from scratch with 10 | * additional optimizations in place. 11 | * 12 | * SPDX-License-Identifier: Unlicense 13 | */ 14 | 15 | /* store in unsigned [big endian] format */ 16 | int mp_to_unsigned_bin_n(const mp_int *a, unsigned char *b, unsigned long *outlen) 17 | { 18 | if (*outlen < (unsigned long)mp_unsigned_bin_size(a)) { 19 | return MP_VAL; 20 | } 21 | *outlen = (unsigned long)mp_unsigned_bin_size(a); 22 | return mp_to_unsigned_bin(a, b); 23 | } 24 | #endif 25 | 26 | /* ref: $Format:%D$ */ 27 | /* git commit: $Format:%H$ */ 28 | /* commit time: $Format:%ai$ */ 29 | -------------------------------------------------------------------------------- /src/ltm/bn_mp_unsigned_bin_size.c: -------------------------------------------------------------------------------- 1 | #include "tommath_private.h" 2 | #ifdef BN_MP_UNSIGNED_BIN_SIZE_C 3 | /* LibTomMath, multiple-precision integer library -- Tom St Denis 4 | * 5 | * LibTomMath is a library that provides multiple-precision 6 | * integer arithmetic as well as number theoretic functionality. 7 | * 8 | * The library was designed directly after the MPI library by 9 | * Michael Fromberger but has been written from scratch with 10 | * additional optimizations in place. 11 | * 12 | * SPDX-License-Identifier: Unlicense 13 | */ 14 | 15 | /* get the size for an unsigned equivalent */ 16 | int mp_unsigned_bin_size(const mp_int *a) 17 | { 18 | int size = mp_count_bits(a); 19 | return (size / 8) + ((((unsigned)size & 7u) != 0u) ? 1 : 0); 20 | } 21 | #endif 22 | 23 | /* ref: $Format:%D$ */ 24 | /* git commit: $Format:%H$ */ 25 | /* commit time: $Format:%ai$ */ 26 | -------------------------------------------------------------------------------- /src/ltm/bn_mp_zero.c: -------------------------------------------------------------------------------- 1 | #include "tommath_private.h" 2 | #ifdef BN_MP_ZERO_C 3 | /* LibTomMath, multiple-precision integer library -- Tom St Denis 4 | * 5 | * LibTomMath is a library that provides multiple-precision 6 | * integer arithmetic as well as number theoretic functionality. 7 | * 8 | * The library was designed directly after the MPI library by 9 | * Michael Fromberger but has been written from scratch with 10 | * additional optimizations in place. 11 | * 12 | * SPDX-License-Identifier: Unlicense 13 | */ 14 | 15 | /* set to zero */ 16 | void mp_zero(mp_int *a) 17 | { 18 | int n; 19 | mp_digit *tmp; 20 | 21 | a->sign = MP_ZPOS; 22 | a->used = 0; 23 | 24 | tmp = a->dp; 25 | for (n = 0; n < a->alloc; n++) { 26 | *tmp++ = 0; 27 | } 28 | } 29 | #endif 30 | 31 | /* ref: $Format:%D$ */ 32 | /* git commit: $Format:%H$ */ 33 | /* commit time: $Format:%ai$ */ 34 | -------------------------------------------------------------------------------- /src/ltm/bn_reverse.c: -------------------------------------------------------------------------------- 1 | #include "tommath_private.h" 2 | #ifdef BN_REVERSE_C 3 | /* LibTomMath, multiple-precision integer library -- Tom St Denis 4 | * 5 | * LibTomMath is a library that provides multiple-precision 6 | * integer arithmetic as well as number theoretic functionality. 7 | * 8 | * The library was designed directly after the MPI library by 9 | * Michael Fromberger but has been written from scratch with 10 | * additional optimizations in place. 11 | * 12 | * SPDX-License-Identifier: Unlicense 13 | */ 14 | 15 | /* reverse an array, used for radix code */ 16 | void bn_reverse(unsigned char *s, int len) 17 | { 18 | int ix, iy; 19 | unsigned char t; 20 | 21 | ix = 0; 22 | iy = len - 1; 23 | while (ix < iy) { 24 | t = s[ix]; 25 | s[ix] = s[iy]; 26 | s[iy] = t; 27 | ++ix; 28 | --iy; 29 | } 30 | } 31 | #endif 32 | 33 | /* ref: $Format:%D$ */ 34 | /* git commit: $Format:%H$ */ 35 | /* commit time: $Format:%ai$ */ 36 | -------------------------------------------------------------------------------- /t/003_all_pm_pod.t: -------------------------------------------------------------------------------- 1 | use strict; 2 | use warnings; 3 | 4 | use Test::More; 5 | 6 | plan skip_all => "set AUTHOR_MODE to enable this test (developer only!)" unless $ENV{AUTHOR_MODE}; 7 | plan skip_all => "File::Find not installed" unless eval { require File::Find }; 8 | plan skip_all => "Test::Pod not installed" unless eval { require Test::Pod }; 9 | plan tests => 109; 10 | 11 | my @files; 12 | File::Find::find({ wanted=>sub { push @files, $_ if /\.pm$/ }, no_chdir=>1 }, 'lib'); 13 | 14 | for my $m (sort @files) { 15 | Test::Pod::pod_file_ok( $m, "Valid POD in '$m'" ); 16 | } 17 | -------------------------------------------------------------------------------- /t/cipher_twofish_test_vectors_bc.t: -------------------------------------------------------------------------------- 1 | use strict; 2 | use warnings; 3 | 4 | use Test::More tests => 3; 5 | use Crypt::Cipher::Twofish; 6 | 7 | my $line = 1; 8 | while (my $l = ) { 9 | chomp($l); 10 | $l =~ s/[\s\t]+/ /g; 11 | my $d = {}; 12 | for my $pair (split / /, $l) { 13 | my ($k, $v) = split /:/, $pair; 14 | $d->{$k} = $v; 15 | } 16 | 17 | my $c = Crypt::Cipher::Twofish->new(pack('H*',$d->{key})); 18 | my $result = pack('H*', $d->{pt}); 19 | $result = $c->encrypt($result) for(1..$d->{iter}); 20 | is(unpack('H*', $result), lc($d->{ct}), "line=$line"); 21 | $line++; 22 | } 23 | 24 | __DATA__ 25 | iter:1 key:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f pt:000102030405060708090A0B0C0D0E0F ct:8ef0272c42db838bcf7b07af0ec30f38 26 | iter:1 key:000102030405060708090a0b0c0d0e0f1011121314151617 pt:000102030405060708090A0B0C0D0E0F ct:95accc625366547617f8be4373d10cd7 27 | iter:1 key:000102030405060708090a0b0c0d0e0f pt:000102030405060708090A0B0C0D0E0F ct:9fb63337151be9c71306d159ea7afaa4 28 | -------------------------------------------------------------------------------- /t/cipher_xtea_test_vectors_bc.t: -------------------------------------------------------------------------------- 1 | use strict; 2 | use warnings; 3 | 4 | use Test::More tests => 4; 5 | use Crypt::Cipher::XTEA; 6 | 7 | my $line = 1; 8 | while (my $l = ) { 9 | chomp($l); 10 | $l =~ s/[\s\t]+/ /g; 11 | my $d = {}; 12 | for my $pair (split / /, $l) { 13 | my ($k, $v) = split /:/, $pair; 14 | $d->{$k} = $v; 15 | } 16 | 17 | my $c = Crypt::Cipher::XTEA->new(pack('H*',$d->{key})); 18 | my $result = pack('H*', $d->{pt}); 19 | $result = $c->encrypt($result) for(1..$d->{iter}); 20 | is(unpack('H*', $result), lc($d->{ct}), "line=$line"); 21 | $line++; 22 | } 23 | 24 | __DATA__ 25 | iter:1 key:00000000000000000000000000000000 pt:0000000000000000 ct:dee9d4d8f7131ed9 26 | iter:1 key:00000000000000000000000000000000 pt:0102030405060708 ct:065c1b8975c6a816 27 | iter:1 key:0123456712345678234567893456789A pt:0000000000000000 ct:1ff9a0261ac64264 28 | iter:1 key:0123456712345678234567893456789A pt:0102030405060708 ct:8c67155b2ef91ead 29 | -------------------------------------------------------------------------------- /t/data/binary-test.file: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/binary-test.file -------------------------------------------------------------------------------- /t/data/cryptx_priv_dh1.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/cryptx_priv_dh1.bin -------------------------------------------------------------------------------- /t/data/cryptx_priv_dh2.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/cryptx_priv_dh2.bin -------------------------------------------------------------------------------- /t/data/cryptx_priv_dh_pg1.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/cryptx_priv_dh_pg1.bin -------------------------------------------------------------------------------- /t/data/cryptx_priv_dh_pg2.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/cryptx_priv_dh_pg2.bin -------------------------------------------------------------------------------- /t/data/cryptx_priv_dsa1.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/cryptx_priv_dsa1.der -------------------------------------------------------------------------------- /t/data/cryptx_priv_dsa2.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/cryptx_priv_dsa2.der -------------------------------------------------------------------------------- /t/data/cryptx_priv_ecc1.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/cryptx_priv_ecc1.der -------------------------------------------------------------------------------- /t/data/cryptx_priv_ecc1.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PRIVATE KEY----- 2 | MIIBEwIBAQQg722QX6XVTBoXlyXCtQxpRtQK76sEA+rP7f9SF8zyg02ggaUwgaIC 3 | AQEwLAYHKoZIzj0BAQIhAP////////////////////////////////////7///wv 4 | MAYEAQAEAQcEQQR5vmZ++dy7rFWgYpXOhwsHApv82y3OKNlZ8oFbFvgXmEg62ncm 5 | o8RlXaT7/A4RCKj9F7RIpoVUGZxH0I/7ENS4AiEA/////////////////////rqu 6 | 3OavSKA7v9JejNA2QUECAQGhRANCAATAaLdUh3pKsyilabrG1GSoGxflJ9LWUlcq 7 | uxG9o1ctUL+M52NFkNKSOgMRLKau405TyHFrQ0Q+EjQCRkNvO4yK 8 | -----END EC PRIVATE KEY----- 9 | -------------------------------------------------------------------------------- /t/data/cryptx_priv_ecc1_OLD.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/cryptx_priv_ecc1_OLD.der -------------------------------------------------------------------------------- /t/data/cryptx_priv_ecc1_OLD.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PRIVATE KEY----- 2 | MG8DAgeAAgEgAiEAq1PtXRbOVQuq8Wuk8WEzKq1W1jeQYpwnhx7VFdT8IpwCIHj8NMajIOImcqlu 3 | u22kg4ekBUGj1+XPrg1YpRPjjIiIAiEAp/Q6zUoF1prkWX5ucj618em5t+qlG23oPPNvloe1fe4= 4 | -----END EC PRIVATE KEY----- 5 | -------------------------------------------------------------------------------- /t/data/cryptx_priv_ecc2.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/cryptx_priv_ecc2.der -------------------------------------------------------------------------------- /t/data/cryptx_priv_ecc2.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PRIVATE KEY----- 2 | MIIBEwIBAQQgDoQBZ4/WvEv60n7lQ2MO9CCmm2+D1TAVROsCG2FTAJ2ggaUwgaIC 3 | AQEwLAYHKoZIzj0BAQIhAP////////////////////////////////////7///wv 4 | MAYEAQAEAQcEQQR5vmZ++dy7rFWgYpXOhwsHApv82y3OKNlZ8oFbFvgXmEg62ncm 5 | o8RlXaT7/A4RCKj9F7RIpoVUGZxH0I/7ENS4AiEA/////////////////////rqu 6 | 3OavSKA7v9JejNA2QUECAQGhRANCAASE4xf5yit44KY5gUVylgL+3pEdSqPzW+RR 7 | Tx14x9LA66Uu6kcRQC8CR7+8pRp3pIHylN783HsDbJb46QWLdGIO 8 | -----END EC PRIVATE KEY----- 9 | -------------------------------------------------------------------------------- /t/data/cryptx_priv_ecc2_OLD.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/cryptx_priv_ecc2_OLD.der -------------------------------------------------------------------------------- /t/data/cryptx_priv_ecc2_OLD.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PRIVATE KEY----- 2 | MG8DAgeAAgEgAiEAwlhDYQrUrJwbA37CWwk6Yr4SUEls2ZljuK0Lre1m5xcCIEy8lSEMcDIOi+ON 3 | RXG95gi61HJaNi2fuiqXEMg0EOzCAiEA7Tu/FCpxSTkBWWDnbyEI0Mrfa0FeHARIYvdYyaZhkeY= 4 | -----END EC PRIVATE KEY----- 5 | -------------------------------------------------------------------------------- /t/data/cryptx_priv_rsa1.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/cryptx_priv_rsa1.der -------------------------------------------------------------------------------- /t/data/cryptx_priv_rsa2.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/cryptx_priv_rsa2.der -------------------------------------------------------------------------------- /t/data/cryptx_pub_dh1.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/cryptx_pub_dh1.bin -------------------------------------------------------------------------------- /t/data/cryptx_pub_dh2.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/cryptx_pub_dh2.bin -------------------------------------------------------------------------------- /t/data/cryptx_pub_dh_pg1.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/cryptx_pub_dh_pg1.bin -------------------------------------------------------------------------------- /t/data/cryptx_pub_dh_pg2.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/cryptx_pub_dh_pg2.bin -------------------------------------------------------------------------------- /t/data/cryptx_pub_dsa1.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/cryptx_pub_dsa1.der -------------------------------------------------------------------------------- /t/data/cryptx_pub_dsa2.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/cryptx_pub_dsa2.der -------------------------------------------------------------------------------- /t/data/cryptx_pub_ecc1.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/cryptx_pub_ecc1.der -------------------------------------------------------------------------------- /t/data/cryptx_pub_ecc1.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIH1MIGuBgcqhkjOPQIBMIGiAgEBMCwGByqGSM49AQECIQD///////////////// 3 | ///////////////////+///8LzAGBAEABAEHBEEEeb5mfvncu6xVoGKVzocLBwKb 4 | /NstzijZWfKBWxb4F5hIOtp3JqPEZV2k+/wOEQio/Re0SKaFVBmcR9CP+xDUuAIh 5 | AP////////////////////66rtzmr0igO7/SXozQNkFBAgEBA0IABMBot1SHekqz 6 | KKVpusbUZKgbF+Un0tZSVyq7Eb2jVy1Qv4znY0WQ0pI6AxEspq7jTlPIcWtDRD4S 7 | NAJGQ287jIo= 8 | -----END PUBLIC KEY----- 9 | -------------------------------------------------------------------------------- /t/data/cryptx_pub_ecc1_OLD.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/cryptx_pub_ecc1_OLD.der -------------------------------------------------------------------------------- /t/data/cryptx_pub_ecc1_OLD.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MEwDAgcAAgEgAiEAq1PtXRbOVQuq8Wuk8WEzKq1W1jeQYpwnhx7VFdT8IpwCIHj8NMajIOImcqlu 3 | u22kg4ekBUGj1+XPrg1YpRPjjIiI 4 | -----END PUBLIC KEY----- 5 | -------------------------------------------------------------------------------- /t/data/cryptx_pub_ecc2.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/cryptx_pub_ecc2.der -------------------------------------------------------------------------------- /t/data/cryptx_pub_ecc2.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIH1MIGuBgcqhkjOPQIBMIGiAgEBMCwGByqGSM49AQECIQD///////////////// 3 | ///////////////////+///8LzAGBAEABAEHBEEEeb5mfvncu6xVoGKVzocLBwKb 4 | /NstzijZWfKBWxb4F5hIOtp3JqPEZV2k+/wOEQio/Re0SKaFVBmcR9CP+xDUuAIh 5 | AP////////////////////66rtzmr0igO7/SXozQNkFBAgEBA0IABITjF/nKK3jg 6 | pjmBRXKWAv7ekR1Ko/Nb5FFPHXjH0sDrpS7qRxFALwJHv7ylGnekgfKU3vzcewNs 7 | lvjpBYt0Yg4= 8 | -----END PUBLIC KEY----- 9 | -------------------------------------------------------------------------------- /t/data/cryptx_pub_ecc2_OLD.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/cryptx_pub_ecc2_OLD.der -------------------------------------------------------------------------------- /t/data/cryptx_pub_ecc2_OLD.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MEwDAgcAAgEgAiEAwlhDYQrUrJwbA37CWwk6Yr4SUEls2ZljuK0Lre1m5xcCIEy8lSEMcDIOi+ON 3 | RXG95gi61HJaNi2fuiqXEMg0EOzC 4 | -----END PUBLIC KEY----- 5 | -------------------------------------------------------------------------------- /t/data/cryptx_pub_rsa1.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/cryptx_pub_rsa1.der -------------------------------------------------------------------------------- /t/data/cryptx_pub_rsa1.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0KXMyuA9+cL1xMjAzoQNYs3ieZkNxnJx 3 | XvgDYx+vb+K30DiBdQyM5i7nCUcQoMPswnNTCx4NBJX4km0pp53NsqGIcT+OM0URPWMaCfVeAvYF 4 | PYe5BBxtVKQit0qOD95Mb13oxr3mLKC1VKHsvbNSexlkjebq61lhirBlDGla6d1t9XElkLnZ+Z/H 5 | +BCPgGpKEriSQAcp27Ke6EbHlVNol25lnV6Z3pZkmeAv9SSWEnw/MHrG64AM7e0izOaNtPheLp1P 6 | Gqp5vD2HgMD7L6VZn+PsZ4RPskd1bVaxfsbdvgUD6C2hhrxle9QUtzhfi0MO1sq5+B4wJ6yT1jd3 7 | n9uujwIDAQAB 8 | -----END PUBLIC KEY----- 9 | -------------------------------------------------------------------------------- /t/data/cryptx_pub_rsa2.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/cryptx_pub_rsa2.der -------------------------------------------------------------------------------- /t/data/cryptx_pub_rsa2.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu6ev5Yw8H0B8msvHeXo0d5g13WFp6BbX 3 | JWXBNhS7mKcg8+TANm8pRpAcxQw8j1wxhrec/J6JtWpGna04nm1Z7MmfgdQ3n+pGuE79SkJsuDyk 4 | NtNK/M+WCt9TeXJw+ANbJzfJlLyC/E0yLYJ0AsA5uFZqDhRgPVYmoSWA8g5Y3asnmYgGmHyORc8G 5 | 0HJzAIJLZ2v6jNh66Nd3BFbl6Sqm6sJ5nzbVV8lWVwB4exDXI2+/Fa9bzzsglNdD5+qZ5O4qgEAW 6 | GFkx7LDJczPKX+RzCBqXeE6dm/qK+Jg9ivUfwD3mpJJ/6l9je65KCUWLTgmMvsd27Wr9rkJHZdV3 7 | CFRavQIDAQAB 8 | -----END PUBLIC KEY----- 9 | -------------------------------------------------------------------------------- /t/data/dsa-aes128.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN DSA PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: AES-128-CBC,D5AA4E2FC68B30CC904B43873EF31A38 4 | 5 | +VjbpU/gBzYiOyicUuDXBHuQccCeam1b+J50z/hI2wHVS6IItRlqYxax/fB4fePC 6 | SHnlzoV0uDPsCUwGIVdfLXC88gsmof/hsKF0qxKnuKakKG+u1p+fauYbe3QWfAf5 7 | 6StHmFqEB6vaX2j2RpEoFsXcTf96Dp6+p+RAXXSK14VsD2kNha2jt9wi/7MXrbdQ 8 | QWL8LNaZGP7QnN5+qyNNmCscjpoKZRP+g1Gswnz7GCDGmOFeopKfYJBGP+mqJuzG 9 | 1KklNxJcZ9aoga58Az/hkf/EUjQjI5yvysTVwjqxNkpRAa+43z1t2WXVui4dGBvP 10 | +OPcRwqZviQlzTFz4ArOl/jNz/ZEwAmJJSS1SuKfSTGb4/7ErWTBPUS3XoFUtd79 11 | 79tRYrhomhlv8qThsJtnz3cBrYgzuKbipPdyLH49bg+4+R3UWQuPKa3g9b+KiqlY 12 | hftPVHgzzxdb2oVhERx9Tjx3/QTJ1fiSgZdpGpYA5wL7wM8AHBpH3CBdDdwAq2XS 13 | JpFq4iMIN93BF3kcxwiPPnC95yOOGt91RmiV+FHPfZGFvh0P6ZF4E3l5fH9LBRTQ 14 | ODvimQy7N5/m048YxXyiyb6T0FqMluNfF6EGt+YAiyc= 15 | -----END DSA PRIVATE KEY----- 16 | -------------------------------------------------------------------------------- /t/data/dsa-aes192.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN DSA PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: AES-192-CBC,7AF69ABEBB17E476DF28AA325F4219F4 4 | 5 | zMTTppHV4c6wg2II7EjxZ2Sr7fmvX86UQELRue2cr1fGJNupWmJ2/bYdKxz0hIaj 6 | 7/WLPSms2YJqBHNXr6YH4lWTJ8plitAHMrhd1dUTOPnZvZ0/idMzSy8E2yVh707k 7 | hAh8gl9eVttUEFGVA0oRRnpAwt5Lh64+R3MdFoKNLxeg7qL6suLq0bd9AC0YTGzr 8 | QiHFBT3xm+Iwhpij7T0KxfkG0QAM5dRGGqOCo9BdEXUYs2Y9kj5ZkkLysK3dp51k 9 | /tRkq69eRS3Ox8X885NITpP6DjxA6IAui5AWMZ1ASysbdude9cgIf8FGjxLjjItd 10 | ny2NZ5b/zWzEAEAlnHm7BnR2uatG5GrFLO1L1gKSde9UUKZ5GAnTVNPpSGcih37p 11 | vzP7l+PKk+mSjS3O82FtTFBX/Wz8aw7DP8B9LP8pQ6NQIL9vzYiP/ZBde8KDuFM9 12 | e5ViwXrxIB3QQadGkPNsUitKDtw/fn9cDrH1VDJ+V9Ce/yTx0uKdzfZ/Lko5tcLg 13 | dovfjBy93qEiF5dF3cNU8+67uW4MJKtG6/K4AAi0nsl9ZpoAxkviyXUOgX+uWyzR 14 | 34vr/UhtnqZ+WbobvRsbUw== 15 | -----END DSA PRIVATE KEY----- 16 | -------------------------------------------------------------------------------- /t/data/dsa-aes256.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN DSA PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: AES-256-CBC,14ED68BBD5515C2E83ABF597D7AA0ACD 4 | 5 | YOIUB/SU/320rjnJuaiTTb/8b2ND6E6s9zumY2/axEnWwtscFHIefS/oqPKyJAbM 6 | W//Kq1J4lWZ5oJEVVTE1Y6DNI0StQ7xubVOQg6KbY5tDMG9JzvBPoEXVVtOeegXV 7 | EcPFFuOlKmmWkqF6bWYGsXnBpxSR52cexBsk/G0WP19GkUoIYQM84GeecGdAJvZN 8 | iGdgX9ecGtzNeWprfTsrMMBTCFDb7twyj0OLuzUeoTapnx68wmkeWebBMk1DaOkR 9 | 6HZT6UT6MfjnDDJLt/myCQhNoNymN0y53EAvPQDWOA3cOXCrHdvBICgq5ezdmNBZ 10 | O/yD/+Lk/S7lbrPeo/cdJZw7CCQdy3Jn9J6dmPRT/J/I5/uuR14igOL944WGIT/j 11 | +FslH2g9YnLA6lkYCBRUf7pM6cbKIDUS/nNvSW914Qug08WxIc0oUZ7DZBuaOAVC 12 | crq2k5R3PnQ0OtggvOx8zj9/M/Tk99sjGwhj3DfoIJfZlFbORoZ1e4S93Qy9ekw0 13 | vVKXmChFoTnt+QpYOF5U3QOfK0VL9Sf44mE8/FIYPssI+rusX2tVjr8lEElRwoqB 14 | ZDupgGBZSu+mZ8E/dVnScA== 15 | -----END DSA PRIVATE KEY----- 16 | -------------------------------------------------------------------------------- /t/data/dsa-camellia128.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN DSA PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: CAMELLIA-128-CBC,4AAF8AA37E76D1BC8F72F37DC2D865AD 4 | 5 | S+DAz1fM1R1IaCO+F5pOw6JF6sHEQQk1fHDvubOFOH5hrWsYFwrla2o0fJvhBbon 6 | 4KcXE8QNRy1ss8g1EqLI+ok0wUVGvvn7m2CcvZzcVC9tZE+WtKHKQVNFfJaKm7dA 7 | VdY23Ad79vBQ0cpda+aR4EerGdqI8uVkf8eqveOXbBIR/TvqOXuh9XotdTPfds2j 8 | DyzmocgPgnQSEXNS6zB2meyo3gUt16/VBA0oW0Fh2TvKYksV5f8XRJqmpRSZXPx8 9 | ZBA51+odZ/8By1sZuONvME/xeFZ5PLI5vMiYoBfhEphVAWPvtgDuxTOOxZSrCpT5 10 | dZ2tUr9D4dzZcLEvnaXXZNDw69HJJWeAjiM/76tLgzSLN6i4T35bYQiMdjMyYOIB 11 | QLIazPfN1llBb7DHjzQPATJ2w59U1bTO28oGmwZJNp4xL6hc0TcHb4N+HIHtyxQB 12 | jJPdl8wiWdJC1Cc9dNa3pmDpYoxdP01FcQOWomUOpC1gZNRVBTIph/tL5Jd15P0R 13 | nW4Jm6/8pOAUo7GkA5eXa3RRjwroN61EJQlyuBsURM/26WnFGcSFArCL6V7ILcMx 14 | TmShOEasVHRDWd509h4cFg== 15 | -----END DSA PRIVATE KEY----- 16 | -------------------------------------------------------------------------------- /t/data/dsa-camellia192.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN DSA PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: CAMELLIA-192-CBC,473E445A0D5FD8803AA40F48225CD6A3 4 | 5 | w2e2vMYEj7pO33x/Me+9MzrTJYRI9vfPdzYQCsowxdlybFTcwUtqeCgPzeW5C6BZ 6 | rx9WTX3OcYFPnAX22BFgDvGqT+3+ybR9NKylxUvoUC7OOofOa1gW+e1XqSRbkr+r 7 | Jo26GT4ROBVY/i56qTUlYqg7X182wIp0MQSXJq+HXPhEogO4zYMXbROC9U7LcG4/ 8 | KO40Nx+C/18xRUAg2ZDjdkjK9L5u+QBpXa8qQuFtYd20NdDf8DQvgO9IwcDzPrMD 9 | kYznrMosCMPpEfBik4PwjQDjyKFAe0j6O8ePIA+KVPO/gXF6EqNP/QZoGEwzpXIo 10 | 7Vu50ztdomni6L/EjpsltlmdJMXNA/JozYiWqp8UnQbdHOt7wvwTlJCpDas+GvHk 11 | hHQ6HC4rOgCxCuZIzTlYVxx+ca6FEXnNs1hzmlVc692nkvSwQIt3i65IENH7hC4q 12 | 0yU2hF2+JANPiYVAfd2ERWDbpkTM8ug6XT9lcAKVUw3AI1aWA6xMLdZSU8atdIT9 13 | 6/KVFN/tXrNbm/U0C0EDcojNsSLE+vb4A6SBkuYZka/b5nXea1qOcwt/CNmn3bzf 14 | bK68/s9EKkZQOekHrklfAw== 15 | -----END DSA PRIVATE KEY----- 16 | -------------------------------------------------------------------------------- /t/data/dsa-camellia256.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN DSA PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: CAMELLIA-256-CBC,5D6BC3C2DCE61EC62D34FF9379050AFE 4 | 5 | OQd/C+mhpHyFgjg8qR3esn54ENjfIg/+JjF996zi/fzA4vFeO6uJ257dFui3m84b 6 | O6Q71wOpXWTpx8TKRCGUnoTE4Few4c+HJwwqu1I2NrKiiBi7DfuJF7T+PMX6z66E 7 | R7gzUo+Zy7QdNKHAG75gDE9dgQBwbMHcuJ0iM0RWE59SleCtyQos+bFhR/ny7Amg 8 | hPKq909XnmVbvWP5y84b8nK394PKqoK51lP0HoKY1NSPkuwj/RM61SiMRX1t5hpC 9 | FdGQE9INaNCi8MJsq1oGPVAM1f72C5qb+JmCcGcaMyHxZf1YJYLYkraeSijrbwm9 10 | Tz4n1vZOdgHckf31na78g79zlTWjDkON/QVFP3Ln4lT1sU9c7Gg/DducPnNQ9d00 11 | 2Czc8NofsR9DkafhUT9+Hr9QsNB6eukROlfpyiHSZeaN0Y1hkbwGIXvU85fW8zfb 12 | ZYntNY+bTFDRCZyI04I87Z+DWxRAo8XJEskzGpJLuQYJzBZnHKnracPCYQtnSqFz 13 | k5Kd3ZzoqksjVHVcI9m3reSFFY+NHcKQ15OQp+SMTQQnu1+nAhZQIV/tMhDslRMr 14 | dDS9tkq8CiLdtRac3vcZCQ== 15 | -----END DSA PRIVATE KEY----- 16 | -------------------------------------------------------------------------------- /t/data/dsa-des.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN DSA PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: DES-CBC,227ADC3AA0299491 4 | 5 | UISxBYAxPQMl2eK9LMAeHsssF6IxO+4G2ta2Jn8VE+boJrrH3iSTKeMXGjGaXl0z 6 | DwcLGV+KMR70y+cxtTb34rFy+uSpBy10dOQJhxALDbe1XfCDQIUfaXRfMNA3um2I 7 | JdZixUD/zcxBOUzao+MCr0V9XlJDgqBhJ5EEr53XHH07Eo5fhiBfbbR9NzdUPFrQ 8 | p2ASyZtFh7RXoIBUCQgg21oeLddcNWV7gd/Y46kghO9s0JbJ8C+IsuWEPRSq502h 9 | tSoDN6B0sxbVvOUICLLbQaxt7yduTAhRxVIJZ1PWATTVD7CZBVz9uIDZ7LOv+er2 10 | 1q3vkwb8E9spPsA240+BnfD571XEop4jrawxC0VKQZ+3cPVLc6jhIsxvzzFQUt67 11 | g66v8GUgt7KF3KhVV7qEtntybQWDWb+K/uTIH9Ra8nP820d3Rnl61pPXDPlluteT 12 | WSLOvEMN2zRmkaxQNv/tLdT0SYpQtdjw74G3A6T7+KnvinKrjtp1a/AXkCF9hNEx 13 | DGbxOYo1UOmk8qdxWCrab34nO+Q8oQc9wjXHG+ZtRYIMoGMKREK8DeL4H1RPNkMf 14 | rwXWk8scd8QFmJAb8De1VQ== 15 | -----END DSA PRIVATE KEY----- 16 | -------------------------------------------------------------------------------- /t/data/dsa-des3.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN DSA PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: DES-EDE3-CBC,C4193B6D1BF3F2BF 4 | 5 | A6o3o6+4F8iri8HFnDZuvYJmT3nNZQht14ysR2KZcjHs/J/vuOk4vKlk4C76Qdg4 6 | uwpK1kep5Noi59odAwdmVPLOoVvmQDBRt2Jfvg61+lBXTywnBYNse8XhrBZLX08W 7 | T/zb/edyf8ct/kSkKqGsQXtpmNR2RdXDW+5zkCRHHkd6QFnlFD5E5GCFt6vsXVrK 8 | LlDzS7+iiPAaclEpW7HzsuR62PCyc7tPycxkWhqiM1b68/sShwurz1R7FPpzkpIc 9 | EnL+B4kNwtxhwdITqe4DEuHM5+7DhfovHImvDsBD1KyPd3Y5unMHj/Aw94se/P4l 10 | TTV3SYQnFzStcRpAKcgRysWr7dR+uZ86QEAVeoY6sL1r2gdNgV2AxjEhMoTeu++n 11 | j2nf59WJHbQfLs3yFAmK+xtSv0VAffvbchbnI05vZOaMNTtVY83e68ftoRCK3PWC 12 | VbgAec0zcce0qvuxbicUFhg/oLQbdWTV5w56a23QsPSkG+DFIp8BKrLL75SpcBKi 13 | nnbApxb0nFcJkYn9747mPXjOp6RYHE/7DkyqkGkK5q0eO2R6xf4GaOFq6MfDM6aH 14 | iQCsZt5wMjirfSSNALfuI4X4NlrqBN+2 15 | -----END DSA PRIVATE KEY----- 16 | -------------------------------------------------------------------------------- /t/data/dsa-param.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN DSA PARAMETERS----- 2 | MIIBHgKBgQCkSN9kp68di6qn62zD56W13LM8zWB9H3oa7jRGFsH2kXIn4iKSf4pU 3 | HI43XLtHAnu5QVhwC+tf+Y5lcnbCzv27mxd+/tMV5vT3kcnmgeB+KnhONZhktcAt 4 | ktZ+ph3G7RA9N5CwxagXpATH7i+6QImZNG0DVh7uu6PLHSk9K64hUwIVAP+7jv0v 5 | Fn1Lurrjmh3GHkNJ3pc/AoGAQ31/Z3w1ymitWAr5B9Tv7zIWTe5BLuMRrJ673j2d 6 | /qbV8rDpDv14GykOlflgLxd/xSaL7D2NJw/7bRXWOaa2t9ht4ENsJ3Qf2jJMzj5Z 7 | QO3qpkLH58UKX/j9LQfbxLBlIdqxI4k2UlCEd54vIjgrDlvwUR58fzmSSB1USfpH 8 | SAE= 9 | -----END DSA PARAMETERS----- 10 | -------------------------------------------------------------------------------- /t/data/dsa-seed.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN DSA PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: SEED-CBC,B4BD523CD59DA8DF3E8F397BBC025D8F 4 | 5 | Twepa9tc/xebHwoZq9HidpglTPYPsxFY2LtidA9oHgLRLrbnhxNnf4LXmcqT69RG 6 | QziI9YK0wlH31FRqaGbaQ6bP8E18EsSs2yGbHMciSHYr5Sz7KLxF7tE3urUCISZ1 7 | NKuPe48PxLn4izKKgynKELzrtPjqQhCxBOmltSSNQ6HqW6qJQ5iyIKZHBWz3r9Lg 8 | 0/P3J2tjmViteStyeAdKjJI8HqipdghB12jNjAFE0M8LhUK2VYJYJd45Yur/z3NB 9 | 6nA6UgEeNCL4BT7hVsoQ7Fil4j641hSdo4rVVkLEobb+PFwvEqIM8KaQR8Xyn0Hx 10 | imzGYxONqbr0JzWIZOwD2ty8X2CMS4q7k2GS8OkWwiupK8ksMhxWTDkrT5aysvDE 11 | ZYNwXKrR5aaIKnJG0bwZvxpLNn1Nuy1EoGwLcMyCwCqfndg2AqTXgDx5+fUWx7UZ 12 | EN22lEbWdGcbPh8gMVdyWG452xDc271SgEOhNF6fEAKvA00/C3FqgrmU4jDfv1H0 13 | t9nCQLOM3CN/PbcCf0umMn1ZuSWRMB8laVqgsRs+Io0AJx/73/Aix8U4jCWSJQwD 14 | ogz8cKEeceuywzqADWGcxg== 15 | -----END DSA PRIVATE KEY----- 16 | -------------------------------------------------------------------------------- /t/data/ec-aes128.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: AES-128-CBC,98245C830C9282F7937E13D1D5BA11EC 4 | 5 | 0Y85oZ2+BKXYwrkBjsZdj6gnhOAfS5yDVmEsxFCDug+R3+Kw3QvyIfO4MVo9iWoA 6 | D7wtoRfbt2OlBaLVl553+6QrUoa2DyKf8kLHQs1x1/J7tJOMM4SCXjlrOaToQ0dT 7 | o7fOnjQjHne16pjgBVqGilY/I79Ab85AnE4uw7vgEucBEiU0d3nrhwuS2Opnhzyx 8 | 009q9VLDPwY2+q7tXjTqnk9mCmQgsiaDJqY09wlauSukYPgVuOJFmi1VdkRSDKYZ 9 | rUUsQvz6Q6Q+QirSlfHna+NhUgQ2eyhGszwcP6NU8iqIxI+NCwfFVuAzw539yYwS 10 | 8SICczoC/YRlaclayXuomQ== 11 | -----END EC PRIVATE KEY----- 12 | -------------------------------------------------------------------------------- /t/data/ec-aes192.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: AES-192-CBC,CF0DF9FBAECBEF5FCE53EF2264D61B50 4 | 5 | dXLk+Rgos3L2WJRAtmJ690eHwjLhNeHppsdBS83T/xcJQtW//8Fkxa9XyJp4PG43 6 | MxYt5x9bJysmRVZ5Z+lxrkwxh1P82Fj8lq8wJ0ijnxrdQUG8dj3M5b6TvXZ9Wwml 7 | D5t28yduo4f+72UOAyfKLIbh/fbYg0sejdRaK6s1aFDpbhg1oKqhjldgPZsLB+M2 8 | awzwlYtfQaCPxlGMSyfvanS4X7TL1KHcaX7g1ygvwBcqli85cIynZsaGKTj26Itb 9 | pvOECs6IE81hsFbHBe4KeLakqVcqdo4wBwbwbrZANxk= 10 | -----END EC PRIVATE KEY----- 11 | -------------------------------------------------------------------------------- /t/data/ec-aes256.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: AES-256-CBC,5112DF71CEEE534741673D8F36CFF9FF 4 | 5 | lqxba1ld8+3CaMQJWNWVPmHqaipNSSKeEPDShvdvTgUEGn6gaCxcS2volX0FPTRp 6 | CS38ie3jOhbY6d8D62QCyMLFeY43nlzJnxJ2KdA8b7/RM+XXw9M/QK0xI7sMdDRp 7 | JorqKquZWHa4YmhdEi7rUwMTycivBzO7dhadgpH5V0R3XvHYiZjGdGwNnFGb4VzU 8 | fIeZWgMA86Vd8yP4vrMxzufcvY6Whjtnoj3ruHOdYU/Y93BdgmYojGWWdEanDp1k 9 | WiBAEDQBtsfOZS2OTQ0dVMJX1HooTSn1U8yM/iKf1VcdXCvfZrOyHMkN1pEM2RYK 10 | 5/Bq5dfLXqiwbxWOKoelsQ== 11 | -----END EC PRIVATE KEY----- 12 | -------------------------------------------------------------------------------- /t/data/ec-camellia128.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: CAMELLIA-128-CBC,118544E97AC088140AC1C0C06ABC759E 4 | 5 | f/moV4xfY8b+3foS4l8MFfkdVYW1x3mausivtv3O7aMpJCS46bEvYvQ0xTPZwvDc 6 | 3jnxmkHGem6yaofmxcLDEpOV4Hr2sBGK4OAxtdv+w5BzN9U0iOTehG83nlcp280u 7 | wkd8r2h4Yz7wyZZClGccPw7CGBcBwhkvhfAVK9p/qISDo2HKPSSAx5STZ1QhsIro 8 | ALd+UGup+LLfckn2no1A1EAnq721XpYPJUyO0KacvZXGkGEX8FGpKcBfPHIZY01M 9 | KaxsuEbxPldHFUDOWkT+ID3jPiSlUlurQtUKbagzPJS2opQXRcW5WiZZ/fgJMETV 10 | mXrESk3A1j3eHEgqJlsWSQyNyxcvmc1EN8WFgzjwWBA3yaG/dyYyjjAOzaIOAwO8 11 | QhOwQFD9t7JU0C2CKvgv/JAx/4maOyNUcncNY+4JlYrsV/U5Hp1kvGmjAZP7CVuD 12 | -----END EC PRIVATE KEY----- 13 | -------------------------------------------------------------------------------- /t/data/ec-camellia192.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: CAMELLIA-192-CBC,3D2679B0FA9626F66AC2855E10732713 4 | 5 | 1xhoIqCYu1HBKVW0G8o3TKQQFkrD/KrOWTRNTCuP4WDVjCL7YLTBeJQbEuAxpuci 6 | tICDjO0FSy5L4RjKOveoL+akG52LflnsWpYkwcxmsp+FIPHTR0sFZvkD5HDID0ZB 7 | y2XpDhMNInVELjAcHGg8NfzrgLFb7xzgWBUTIONzqw4Komfkes31mIalbh+/V1Z4 8 | ZE0r7BiOnd+NO2Rydw2u4zWRsgZBXdVTGm+97ZIWoiNLN6unAU1Q65gYRABg94nq 9 | APFIJZz800WXIcCFFyrM7QsX2WCP5Q/121j8k0l5Quw+ylkziZSFxivcZXyM2a24 10 | 43gZt/1Hu5zVK0e4dDfUlQIDw5ugPO/B/ShkuaY1B12BMTf6EeNtAyBjFjX+TP+4 11 | -----END EC PRIVATE KEY----- 12 | -------------------------------------------------------------------------------- /t/data/ec-camellia256.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: CAMELLIA-256-CBC,E1CB2335163192A57FD06C3279CFD052 4 | 5 | z3zB6/uGCQL2Drl2lr3Hl/85yHdt/WFW/5XHka2SVO8v9scr77AJdshZyypPbFLi 6 | ieS1lEedDbsADjwbyFrHQmO1Tz6vNfAfAnUCEVJnFcAxtkdeYabN25srhJ1pQYte 7 | 6vzi+7uOmNjLQRmSvN1NaA20JKuyFFEhSPKiVhK84tl6GOKhyu0ETzjjAP89RtDm 8 | 5+sHmGxedPonEDilAYcWo3Y55v0nbctwDhBQXio2VGgjw9QiCoa9pApjcNo9sr9S 9 | uj/OWTTlaiiBTZQ7PJ93zeNkpomV4eZxrSVDPRTkAyR9emKScVLVZN8/rACgwZzi 10 | t80ALww0VVnoyNuMqVh008fEE96X3MjixzdyXpOXfGeiXjFHCka+8M/SQ92C4G45 11 | XFR0C2ql1yDeo4zoNihrsm0VXoz5M/beOGZtELoase0mNsqmOPmKQQKnb3Lkm0aE 12 | +iuasKk3fQ5J30FLegrNr4xcLKO5ztkiykjMp/9G4dsm30iWEcdfJETMvYsfPXox 13 | WptJWdMP6RtCyz9v+6KBjvHi05GHph+STgRm8QGUDVDaQdP27p2za9xJokWbzbxa 14 | Hk0/WUBdboa0a7MTCUFJqVqT+IIHK4Y34DKqw1no7aki3UJJNiR4Dnlta7bR4m4q 15 | yKCvFVaxKE+Y/WippfyKEZciiZxHprrQUCv+yy6rRGo= 16 | -----END EC PRIVATE KEY----- 17 | -------------------------------------------------------------------------------- /t/data/ec-des.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: DES-CBC,25CCB799403FC4A8 4 | 5 | cVh3cIHbAHumbPxqkNyUTijnJxs5gAYx/R6XazSzfOv5AVniXWcBYXUz8xxu5ihG 6 | njKhB/A7NnMrRBT3MU//Q16sKnnsC1YwRVFn5Ynzs0ZE+Z2XKHbV/pgRtlYWbgUA 7 | fiXZttximkYqHr4BB0lfcm89jV8Ks50wGMmpADd/b09R5BhrYEt30poLqArKokZ+ 8 | YIxR/nf1pcd6frbvnQmR/6TiX6SNf+9GZohIkBhkcT24OTSEtLdJnQg4wCzwuKW/ 9 | oLKMPxKtHtQ= 10 | -----END EC PRIVATE KEY----- 11 | -------------------------------------------------------------------------------- /t/data/ec-des3.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: DES-EDE3-CBC,BCC03F44667493FB 4 | 5 | OcnqVLNcxYQyDJKMkWEFv1sLOFnui9hN8wPidDYS3rP1HTeFZRQeWznTtqAs6MAH 6 | vFnHHLTYMJXlGJ/qSb9sJmRJw2XAkRUtsT6vxXvf0IhPTd5632aXSjewUllOfl+N 7 | 1tmztrOGWtHIms9Kz4noG1ApXhv66eUtLMDkiKR85D2Wai4yzyftFQyFT0BzFTxu 8 | IHcZ7oDYYX50+iru0x9aP990jyXzzrlURLCpgtr940YkoLquudvyn9s/6wtKqeyG 9 | SIEU6SHQhYrsiVTpQWMIUQc2T0HVoCoHBUGFAtj4wYA= 10 | -----END EC PRIVATE KEY----- 11 | -------------------------------------------------------------------------------- /t/data/ec-seed.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: SEED-CBC,94487C737A60F0E41D5AF5A3BA0B155E 4 | 5 | 3MjBEjo9vDpSKd0UbyCngNl7dVJfxdEwqTOQw0rjl8qYBlvbdx+zSMQTixKXJR70 6 | +Z+z1UvW415QTEyTArnuwwfDMkgGB5w3tr2+YuF8908vvtyX2GKvkdaEvFHdYb0X 7 | 8PSABZgiAPdjgzDDm3WZHj72wcgiJeXs+UCId2Aqueqxfd+qRT9UmpBUJ7VGlT6w 8 | u3YV+1SbCqNZr/vV6XoJ5z8VuaXQiv2HuROzbqZ5gKSag4Mk9UlmMhLs6SeN40du 9 | xQDZj3NStwbZUlPlJwkSMzmzjoyHMY5xFbKdtFB8LiYTYlDu7qQr2E/T2TviquBw 10 | HobzhyW1rPKfJ/4uUpflww== 11 | -----END EC PRIVATE KEY----- 12 | -------------------------------------------------------------------------------- /t/data/jwk_ec-priv1.json: -------------------------------------------------------------------------------- 1 | {"kty":"EC", 2 | "crv":"P-256", 3 | "x":"MKBCTNIcKUSDii11ySs3526iDZ8AiTo7Tu6KPAqv7D4", 4 | "y":"4Etl6SRW2YiLUrN5vfvVHuhp7x8PxltmWWlbbM4IFyM", 5 | "d":"870MB6gfuTJ4HtUnUvYMyJpr5eUZNP4Bk43bVdj3eAE", 6 | "use":"enc", 7 | "kid":"1"} -------------------------------------------------------------------------------- /t/data/jwk_ec-pub.json: -------------------------------------------------------------------------------- 1 | {"kty":"EC", 2 | "crv":"P-256", 3 | "x":"f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU", 4 | "y":"x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0", 5 | "kid":"Public key used in JWS A.3 example" 6 | } -------------------------------------------------------------------------------- /t/data/jwk_ec-pub1.json: -------------------------------------------------------------------------------- 1 | {"kty":"EC", 2 | "crv":"P-256", 3 | "x":"MKBCTNIcKUSDii11ySs3526iDZ8AiTo7Tu6KPAqv7D4", 4 | "y":"4Etl6SRW2YiLUrN5vfvVHuhp7x8PxltmWWlbbM4IFyM", 5 | "use":"enc", 6 | "kid":"1"} -------------------------------------------------------------------------------- /t/data/jwk_ed25519-priv1.json: -------------------------------------------------------------------------------- 1 | {"kty":"OKP","crv":"Ed25519","x":"oF0a6lgwrJplzfs4RmDUl-NpfEa0Gc8s7IXei9JFRZ0","d":"RcEJum_STotn0j77a5LZnNRX4hNxcsDXSf4rWgwULa0"} -------------------------------------------------------------------------------- /t/data/jwk_ed25519-pub1.json: -------------------------------------------------------------------------------- 1 | {"kty":"OKP","crv":"Ed25519","x":"oF0a6lgwrJplzfs4RmDUl-NpfEa0Gc8s7IXei9JFRZ0"} -------------------------------------------------------------------------------- /t/data/jwk_rsa-pub1.json: -------------------------------------------------------------------------------- 1 | {"kty":"RSA", 2 | "n": "0vx7agoebGcQSuuPiLJXZptN9nndrQmbXEps2aiAFbWhM78LhWx4cbbfAAtVT86zwu1RK7aPFFxuhDR1L6tSoc_BJECPebWKRXjBZCiFV4n3oknjhMstn64tZ_2W-5JsGY4Hc5n9yBXArwl93lqt7_RN5w6Cf0h4QyQ5v-65YGjQR0_FDW2QvzqY368QQMicAtaSqzs8KJZgnYb9c7d0zgdAZHzu6qMQvRL5hajrn1n91CbOpbISD08qNLyrdkt-bFTWhAI4vMQFh6WeZu0fM4lFd2NcRwr3XPksINHaQ-G_xBniIqbw0Ls1jF44-csFCur-kEgU8awapJzKnqDKgw", 3 | "e":"AQAB", 4 | "alg":"RS256", 5 | "kid":"2011-04-29"} -------------------------------------------------------------------------------- /t/data/jwk_x25519-priv1.json: -------------------------------------------------------------------------------- 1 | {"kty":"OKP","crv":"X25519","x":"6ngG9yGoVwUSyPbvtOjWIMSaUp5N9eqnfexkb7HofkE","d":"AC-T0Qulco2N2OlSdyHaujJhwLsb7957S72sYx1FRlE"} -------------------------------------------------------------------------------- /t/data/jwk_x25519-pub1.json: -------------------------------------------------------------------------------- 1 | {"kty":"OKP","crv":"X25519","x":"6ngG9yGoVwUSyPbvtOjWIMSaUp5N9eqnfexkb7HofkE"} -------------------------------------------------------------------------------- /t/data/openssl_dsa1.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/openssl_dsa1.der -------------------------------------------------------------------------------- /t/data/openssl_dsa2.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/openssl_dsa2.der -------------------------------------------------------------------------------- /t/data/openssl_ec-short.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/openssl_ec-short.der -------------------------------------------------------------------------------- /t/data/openssl_ec-short.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PRIVATE KEY----- 2 | MHcCAQEEIBG1c3z52T8XwMsahGVdOZWgKCQJfv+l7djuJjgetdbDoAoGCCqGSM49 3 | AwEHoUQDQgAEoBUyo8CQAFPeYPvv78ylh5MwFZjTCLQeb042TjiMJxG+9DLFmRSM 4 | lBQ9T/RsLLc+PmpB1+7yPAR+oR5gZn3kJQ== 5 | -----END EC PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /t/data/openssl_ec-short.pub.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/openssl_ec-short.pub.der -------------------------------------------------------------------------------- /t/data/openssl_ec-short.pub.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEoBUyo8CQAFPeYPvv78ylh5MwFZjT 3 | CLQeb042TjiMJxG+9DLFmRSMlBQ9T/RsLLc+PmpB1+7yPAR+oR5gZn3kJQ== 4 | -----END PUBLIC KEY----- 5 | -------------------------------------------------------------------------------- /t/data/openssl_ec1.pri.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/openssl_ec1.pri.der -------------------------------------------------------------------------------- /t/data/openssl_ec1.pri.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PRIVATE KEY----- 2 | MIIB+gIBAQQwCKEAcA6cIt6CGfyLKm57LyXWv2PgTjydrHSbvhDJTOl+7bzUW8DS 3 | rgSdtSPONPq1oIIBWzCCAVcCAQEwPAYHKoZIzj0BAQIxAP////////////////// 4 | ///////////////////////+/////wAAAAAAAAAA/////zB7BDD///////////// 5 | /////////////////////////////v////8AAAAAAAAAAP////wEMLMxL6fiPufk 6 | mI4Fa+P4LRkYHZxu/oFBEgMUCI9QE4daxlY5jYou0Z0qhcjt0+wq7wMVAKM1kmqj 7 | GaJ6HQCJamdzpIJ6zaxzBGEEqofKIr6LBTeOscce8yCtdG4dO2KLp5uYWfdB4IJU 8 | KjhVAvJdv1UpbDpUXjhydgq3NhfeSpYmLG9dnpi/kpLcKfj0Hb0omhR86doxE7Xw 9 | uMAKYLHOHX6BnXpDHXyQ6g5fAjEA////////////////////////////////x2NN 10 | gfQ3Ld9YGg2ySLCneuzsGWrMxSlzAgEBoWQDYgAEeGyHPLmHcszPQ9MIIYnznpzi 11 | QbvuJtYSjCqtIGxDfzgcLcc3nCc5tBxo+qX6OJEzcWdDAC0bwplY+9Z9jHR3ylNy 12 | ovlHoK4ItdWkVO8NH89SLSRyVuOF8N5t3CHIo93B 13 | -----END EC PRIVATE KEY----- 14 | -------------------------------------------------------------------------------- /t/data/openssl_ec1.pric.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/openssl_ec1.pric.der -------------------------------------------------------------------------------- /t/data/openssl_ec1.pric.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PRIVATE KEY----- 2 | MIIBmgIBAQQwCKEAcA6cIt6CGfyLKm57LyXWv2PgTjydrHSbvhDJTOl+7bzUW8DS 3 | rgSdtSPONPq1oIIBKzCCAScCAQEwPAYHKoZIzj0BAQIxAP////////////////// 4 | ///////////////////////+/////wAAAAAAAAAA/////zB7BDD///////////// 5 | /////////////////////////////v////8AAAAAAAAAAP////wEMLMxL6fiPufk 6 | mI4Fa+P4LRkYHZxu/oFBEgMUCI9QE4daxlY5jYou0Z0qhcjt0+wq7wMVAKM1kmqj 7 | GaJ6HQCJamdzpIJ6zaxzBDEDqofKIr6LBTeOscce8yCtdG4dO2KLp5uYWfdB4IJU 8 | KjhVAvJdv1UpbDpUXjhydgq3AjEA////////////////////////////////x2NN 9 | gfQ3Ld9YGg2ySLCneuzsGWrMxSlzAgEBoTQDMgADeGyHPLmHcszPQ9MIIYnznpzi 10 | QbvuJtYSjCqtIGxDfzgcLcc3nCc5tBxo+qX6OJEz 11 | -----END EC PRIVATE KEY----- 12 | -------------------------------------------------------------------------------- /t/data/openssl_ec1.pub.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/openssl_ec1.pub.der -------------------------------------------------------------------------------- /t/data/openssl_ec1.pub.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIIBzDCCAWQGByqGSM49AgEwggFXAgEBMDwGByqGSM49AQECMQD///////////// 3 | /////////////////////////////v////8AAAAAAAAAAP////8wewQw//////// 4 | //////////////////////////////////7/////AAAAAAAAAAD////8BDCzMS+n 5 | 4j7n5JiOBWvj+C0ZGB2cbv6BQRIDFAiPUBOHWsZWOY2KLtGdKoXI7dPsKu8DFQCj 6 | NZJqoxmieh0AiWpnc6SCes2scwRhBKqHyiK+iwU3jrHHHvMgrXRuHTtii6ebmFn3 7 | QeCCVCo4VQLyXb9VKWw6VF44cnYKtzYX3kqWJixvXZ6Yv5KS3Cn49B29KJoUfOna 8 | MRO18LjACmCxzh1+gZ16Qx18kOoOXwIxAP////////////////////////////// 9 | /8djTYH0Ny3fWBoNskiwp3rs7BlqzMUpcwIBAQNiAAR4bIc8uYdyzM9D0wghifOe 10 | nOJBu+4m1hKMKq0gbEN/OBwtxzecJzm0HGj6pfo4kTNxZ0MALRvCmVj71n2MdHfK 11 | U3Ki+Uegrgi11aRU7w0fz1ItJHJW44Xw3m3cIcij3cE= 12 | -----END PUBLIC KEY----- 13 | -------------------------------------------------------------------------------- /t/data/openssl_ec1.pubc.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/openssl_ec1.pubc.der -------------------------------------------------------------------------------- /t/data/openssl_ec1.pubc.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIIBbDCCATQGByqGSM49AgEwggEnAgEBMDwGByqGSM49AQECMQD///////////// 3 | /////////////////////////////v////8AAAAAAAAAAP////8wewQw//////// 4 | //////////////////////////////////7/////AAAAAAAAAAD////8BDCzMS+n 5 | 4j7n5JiOBWvj+C0ZGB2cbv6BQRIDFAiPUBOHWsZWOY2KLtGdKoXI7dPsKu8DFQCj 6 | NZJqoxmieh0AiWpnc6SCes2scwQxA6qHyiK+iwU3jrHHHvMgrXRuHTtii6ebmFn3 7 | QeCCVCo4VQLyXb9VKWw6VF44cnYKtwIxAP////////////////////////////// 8 | /8djTYH0Ny3fWBoNskiwp3rs7BlqzMUpcwIBAQMyAAN4bIc8uYdyzM9D0wghifOe 9 | nOJBu+4m1hKMKq0gbEN/OBwtxzecJzm0HGj6pfo4kTM= 10 | -----END PUBLIC KEY----- 11 | -------------------------------------------------------------------------------- /t/data/openssl_ed25519_pk.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/openssl_ed25519_pk.der -------------------------------------------------------------------------------- /t/data/openssl_ed25519_pk.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MCowBQYDK2VwAyEAoF0a6lgwrJplzfs4RmDUl+NpfEa0Gc8s7IXei9JFRZ0= 3 | -----END PUBLIC KEY----- 4 | -------------------------------------------------------------------------------- /t/data/openssl_ed25519_sk.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/openssl_ed25519_sk.der -------------------------------------------------------------------------------- /t/data/openssl_ed25519_sk.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MC4CAQAwBQYDK2VwBCIEIEXBCbpv0k6LZ9I++2uS2ZzUV+ITcXLA10n+K1oMFC2t 3 | -----END PRIVATE KEY----- 4 | -------------------------------------------------------------------------------- /t/data/openssl_ed25519_sk.pkcs8: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/openssl_ed25519_sk.pkcs8 -------------------------------------------------------------------------------- /t/data/openssl_ed25519_sk_pbes1.pkcs8: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/openssl_ed25519_sk_pbes1.pkcs8 -------------------------------------------------------------------------------- /t/data/openssl_ed25519_sk_pbes2.pkcs8: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/openssl_ed25519_sk_pbes2.pkcs8 -------------------------------------------------------------------------------- /t/data/openssl_ed25519_sk_pw.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN ENCRYPTED PRIVATE KEY----- 2 | MIGHMEsGCSqGSIb3DQEFDTA+MCkGCSqGSIb3DQEFDDAcBAjPx9JkdpRH2QICCAAw 3 | DAYIKoZIhvcNAgkFADARBgUrDgMCBwQIWWieQojaWTcEOGj43SxqHUys4Eb2M27N 4 | AkhqpmhosOxKrpGi0L3h8m8ipHE8EwI94NeOMsjfVw60aJuCrssY5vKN 5 | -----END ENCRYPTED PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /t/data/openssl_ed25519_sk_pw_t.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN ED25519 PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: DES-CBC,6A64D756D49C1EFF 4 | 5 | 8xQ7OyfQ10IITNEKcJGZA53Z1yk+NJQU7hrKqXwChZtgWNInhMBJRl9pozLKDSkH 6 | v7u6EOve8NY= 7 | -----END ED25519 PRIVATE KEY----- 8 | -------------------------------------------------------------------------------- /t/data/openssl_ed25519_sk_t.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN ED25519 PRIVATE KEY----- 2 | MC4CAQAwBQYDK2VwBCIEIEXBCbpv0k6LZ9I++2uS2ZzUV+ITcXLA10n+K1oMFC2t 3 | -----END ED25519 PRIVATE KEY----- 4 | -------------------------------------------------------------------------------- /t/data/openssl_ed25519_x509.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/openssl_ed25519_x509.der -------------------------------------------------------------------------------- /t/data/openssl_ed25519_x509.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIBODCB66ADAgECAhRWDU9FZBBUZ7KTdX8f7Bco8jsoaTAFBgMrZXAwETEPMA0G 3 | A1UEAwwGQ3J5cHRYMCAXDTIwMDExOTEzMDIwMloYDzIyOTMxMTAyMTMwMjAyWjAR 4 | MQ8wDQYDVQQDDAZDcnlwdFgwKjAFBgMrZXADIQCgXRrqWDCsmmXN+zhGYNSX42l8 5 | RrQZzyzshd6L0kVFnaNTMFEwHQYDVR0OBBYEFHCGFtVibAxxWYyRt5wazMpqSZDV 6 | MB8GA1UdIwQYMBaAFHCGFtVibAxxWYyRt5wazMpqSZDVMA8GA1UdEwEB/wQFMAMB 7 | Af8wBQYDK2VwA0EAqG/+98smzqF/wmFX3zHXSaA67as202HnBJod1Tiurw1f+lr3 8 | BX6OMtsDpgRq9O77IF1Qyx/MdJEwwErczOIbAA== 9 | -----END CERTIFICATE----- 10 | -------------------------------------------------------------------------------- /t/data/openssl_rsa-x509.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/openssl_rsa-x509.der -------------------------------------------------------------------------------- /t/data/openssl_rsa1.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/openssl_rsa1.der -------------------------------------------------------------------------------- /t/data/openssl_rsa1.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIICXQIBAAKBgQDV9a3rZ+yTE+cfK7sQJJz3S3nSVuYo73aDY827t4D1ri9AOK2f 3 | Kot/pKKXpCA67rxtGRNdcxl0bQP1UknetqNdDRtE5DSLHbenxTRqbfH4c5SPxUkt 4 | Qj3yKVMguSxaoy0Vdca5mhsvZC4mY9wN5mY+TA/HIpvsoUzTa59T2jw04wIDAQAB 5 | AoGAUPVbT73NGIHpbDQB3kPcWP5oJBzZjhe+Ak1bZXI0C8JTArvvhlB05GGJXFOw 6 | FlyLU8SvPSb2NMWjP8pZRTpaaYQRqneIVCaLgWTIZB+dh8CWDpkF+4vHxJF+D0eu 7 | aT6YPKI6SJxlYOA1MWJ+zdxY/Ml5rvSrWwnqq8+EIOECT5ECQQDs2yJAGPDNipYk 8 | xDaSldw/jMy885CJdmOCMg6/zLMgRIHDF/zpm5iyjwKAh7zc0as66kv2w1X5Ce5P 9 | lygSspCXAkEA50DKXQ3LF7XlYKmXZSkJVLIQtyUl8Wu8uTre6szYiYVV6vocJ0JQ 10 | /pJX5oxed3Q61puY4N/MGUj3yv5mpwb7lQJBALBVqFcd+lCbx5IRvis9hJ6PXXGi 11 | x01/pS+twstKQ2VXe1/agQEORQ1SaON1qsafFiKjgfBxlpT0rsX0W/InnHsCQC8R 12 | Xd7gvtR9nkk1W24okxCdCY/tTLK9pfThiZuqw+wBqoIgE/jdo5Sc/q0bJuMTUiJ6 13 | GvyyMF15H44+h3A5mJ0CQQDOOXZTDP4qkQG1+UTuztxkNHkwqRizhJOy3MYcVtGd 14 | WtDkziCYuzRh7HNa8yGC/dxP8mLEhBhvs1MAjrLk7rNw 15 | -----END RSA PRIVATE KEY----- 16 | -------------------------------------------------------------------------------- /t/data/openssl_rsa1.pubonly.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/openssl_rsa1.pubonly.der -------------------------------------------------------------------------------- /t/data/openssl_rsa1.pubonly.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDV9a3rZ+yTE+cfK7sQJJz3S3nS 3 | VuYo73aDY827t4D1ri9AOK2fKot/pKKXpCA67rxtGRNdcxl0bQP1UknetqNdDRtE 4 | 5DSLHbenxTRqbfH4c5SPxUktQj3yKVMguSxaoy0Vdca5mhsvZC4mY9wN5mY+TA/H 5 | IpvsoUzTa59T2jw04wIDAQAB 6 | -----END PUBLIC KEY----- 7 | -------------------------------------------------------------------------------- /t/data/openssl_rsa2.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/openssl_rsa2.der -------------------------------------------------------------------------------- /t/data/openssl_rsa2.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIICXgIBAAKBgQDkfd+59oUInJsIyN+0ac83pvhpAmqUuVfGhIuj3C/E1O9XT//E 3 | JtMHEQp4I7w1jDsOAxuyZk20l9mkN7CuV1u2VlPrPq6kch0YIAJo6UxL8+k9azZ6 4 | hpjEvj4C9yO/p0XZgOWUGmaqxs5gMpCMeyd35FKZRzdFbewbdcZ99fMyfQIDAQAB 5 | AoGBAOHkC4XW0MilwqPZq0e6f5EecmGmcOYdokhxi3fw3Az1ErW4MjyiwWgwEbCa 6 | a5xoyY1dx0kE2PecVB+EqxiA5vmrDGMnsV3yTpVUnSF5+DjKyU7q1C1T1ikXdRn0 7 | S5HgjRA66A3aqIY3643S8YXWSvX6G1ynmWL4CLG5NPG94KnlAkEA/LvZh8/9Hk41 8 | cdAWPc69+IgcswhLJlqWQl2WmNnAcyVps8DIE9/fYnFLvzaZQJmfPfiQx/X08PvL 9 | LiShCdEjMwJBAOdx0jP2Kx6rt7LqmNidLDvo0earYY9FjgNDOXvPYjUfZPyz6sRG 10 | nb8VUNypEbJn1cLgtao9XW0rw4gh5pVtU48CQQDDoQCz4Oo0ECPMcl8U/rgL7ggR 11 | CQVqrcoLmvfcXwlZ2Abm7f2xbKQ0RjB01WVxHLintoUTUy6DbtQKZq4EtE8DAkBT 12 | zmhSPnpgscdj9wT/svIYg3a2MyqxiXsh/U6sYWzrVYHo63FAP13RmnNcY7AvzN+f 13 | oGTHz06sQGOeQMBRLXRLAkEA3Jl+ydtUlDaSmzatMl72PGdWgOmvp6PYIE9S5Exc 14 | S5m2oK8yymRKNUN2SrO2+JnJ5LtqYHbzsoR5jhBoJK9G6w== 15 | -----END RSA PRIVATE KEY----- 16 | -------------------------------------------------------------------------------- /t/data/openssl_rsa2.pubonly.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/openssl_rsa2.pubonly.der -------------------------------------------------------------------------------- /t/data/openssl_rsa2.pubonly.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDkfd+59oUInJsIyN+0ac83pvhp 3 | AmqUuVfGhIuj3C/E1O9XT//EJtMHEQp4I7w1jDsOAxuyZk20l9mkN7CuV1u2VlPr 4 | Pq6kch0YIAJo6UxL8+k9azZ6hpjEvj4C9yO/p0XZgOWUGmaqxs5gMpCMeyd35FKZ 5 | RzdFbewbdcZ99fMyfQIDAQAB 6 | -----END PUBLIC KEY----- 7 | -------------------------------------------------------------------------------- /t/data/openssl_x25519_pk.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/openssl_x25519_pk.der -------------------------------------------------------------------------------- /t/data/openssl_x25519_pk.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MCowBQYDK2VuAyEA6ngG9yGoVwUSyPbvtOjWIMSaUp5N9eqnfexkb7HofkE= 3 | -----END PUBLIC KEY----- 4 | -------------------------------------------------------------------------------- /t/data/openssl_x25519_sk.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/openssl_x25519_sk.der -------------------------------------------------------------------------------- /t/data/openssl_x25519_sk.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MC4CAQAwBQYDK2VuBCIEIAAvk9ELpXKNjdjpUnch2royYcC7G+/ee0u9rGMdRUZR 3 | -----END PRIVATE KEY----- 4 | -------------------------------------------------------------------------------- /t/data/openssl_x25519_sk.pkcs8: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/openssl_x25519_sk.pkcs8 -------------------------------------------------------------------------------- /t/data/openssl_x25519_sk_pbes1.pkcs8: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/openssl_x25519_sk_pbes1.pkcs8 -------------------------------------------------------------------------------- /t/data/openssl_x25519_sk_pbes2.pkcs8: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/openssl_x25519_sk_pbes2.pkcs8 -------------------------------------------------------------------------------- /t/data/openssl_x25519_sk_pw.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN ENCRYPTED PRIVATE KEY----- 2 | MIGHMEsGCSqGSIb3DQEFDTA+MCkGCSqGSIb3DQEFDDAcBAiS0NOFZmjJswICCAAw 3 | DAYIKoZIhvcNAgkFADARBgUrDgMCBwQIGd40Hdso8Y4EONSRCTrqvftl9hl3zbH9 4 | 2QmHF1KJ4HDMdLDRxD7EynonCw2SV7BO+XNRHzw2yONqiTybfte7nk9t 5 | -----END ENCRYPTED PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /t/data/openssl_x25519_sk_pw_t.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN X25519 PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: DES-CBC,DEEFD3D6B714E75A 4 | 5 | dfFWP5bKn49aZ993NVAhQQPdFWgsTb4j8CWhRjGBVTPl6ITstAL17deBIRBwZb7h 6 | pAyIka81Kfs= 7 | -----END X25519 PRIVATE KEY----- 8 | -------------------------------------------------------------------------------- /t/data/openssl_x25519_sk_t.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN X25519 PRIVATE KEY----- 2 | MC4CAQAwBQYDK2VuBCIEIAAvk9ELpXKNjdjpUnch2royYcC7G+/ee0u9rGMdRUZR 3 | -----END X25519 PRIVATE KEY----- 4 | -------------------------------------------------------------------------------- /t/data/pkcs8.ec-priv-nopass.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/pkcs8.ec-priv-nopass.der -------------------------------------------------------------------------------- /t/data/pkcs8.ec-priv-nopass.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIIBMAIBADCB0wYHKoZIzj0CATCBxwIBATAkBgcqhkjOPQEBAhkA//////////// 3 | /////////v//////////MEsEGP////////////////////7//////////AQYIhI9 4 | wjlaBcqnQj2uzMlHYKfUYiVr1WkWAxUAxGloRDXes3jEtlypWR4qV2MFmi4EMQR9 5 | KXeBAMZaHaF4NxZYjc4ri0rujiKPGJY4qQ8iY3M3M0tJ3LZqbcj5l4rKdkipQ7AC 6 | GQD///////////////96YtAxyD9ClPZA7BMCAQEEVTBTAgEBBBiKolTGIsTgOCtl 7 | 6dpdos0LvuaExCDFyT6hNAMyAAREwaCX0VY1LZxLW3G75tmft4p9uhc0J7/+NGaP 8 | DN3Tr7SXkT9+co2a+8KPJhQy10k= 9 | -----END PRIVATE KEY----- 10 | -------------------------------------------------------------------------------- /t/data/pkcs8.ec-priv-pass.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/pkcs8.ec-priv-pass.der -------------------------------------------------------------------------------- /t/data/pkcs8.ec-priv-pass.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN ENCRYPTED PRIVATE KEY----- 2 | MIIBWjAcBgoqhkiG9w0BDAEDMA4ECKvdZESlMxWnAgIIAASCATjCay4uTsTVaS2L 3 | d8714Xwv3EWfIFc4+I3dWFQayElm+PNcWIuESk3Pr4VwIUEuLAzo5xCI5G60DnDX 4 | 5Bux/FenEbeE4Vi/s8UmUDANGbAZrOzrlEzDKitCuYV77cK8Bkrdu408OqrmNBtn 5 | HTtUX9o+o+fNbqHvrsQwRbBm7BcvG8P83kcMBDDVCgfJHfME4NeFZTFfgG+NOT6f 6 | 77jN4ylAac6jEa/lEnYWUn2CorTb/gT/5G/o6KuY7RHIYGQIgkQGGbQBCoUISgi8 7 | Mk+7012wlXiN+tzeAkvitTvZlVXTHBwnx1iU5cmx+S4VmH2DdZPNq7lbp69uiqzZ 8 | CtFNCAlycZJkf7aiYgDQeimUDIceW+NKSf8PZCgLkvBNAgJ7GvS5SVvQoOrghtEI 9 | 5fUFKVAaDkKBGXUgCY8= 10 | -----END ENCRYPTED PRIVATE KEY----- 11 | -------------------------------------------------------------------------------- /t/data/pkcs8.ec-short-priv-nopass.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/pkcs8.ec-short-priv-nopass.der -------------------------------------------------------------------------------- /t/data/pkcs8.ec-short-priv-nopass.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MG8CAQAwEwYHKoZIzj0CAQYIKoZIzj0DAQMEVTBTAgEBBBjFP/caeQV4WO3fnWWS 3 | f917PGzwtypd/t+hNAMyAATSg6pBT7RO6l/p+aKcrFsGuthUdfwJWS5V3NGcVt1b 4 | lEHQYjWya2YnHaPq/iMFa7A= 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /t/data/pkcs8.ec-short-priv-pass.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/pkcs8.ec-short-priv-pass.der -------------------------------------------------------------------------------- /t/data/pkcs8.ec-short-priv-pass.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN ENCRYPTED PRIVATE KEY----- 2 | MIGYMBwGCiqGSIb3DQEMAQMwDgQINApjTa6oFl0CAggABHi+59l4d4e6KtG9yci2 3 | BSC65LEsQSnrnFAExfKptNU1zMFsDLCRvDeDQDbxc6HlfoxyqFL4SmH1g3RvC/Vv 4 | NfckdL5O2L8MRnM+ljkFtV2Te4fszWcJFdd7KiNOkPpn+7sWLfzQdvhHChLKUzmz 5 | 4INKZyMv/G7VpZ0= 6 | -----END ENCRYPTED PRIVATE KEY----- 7 | -------------------------------------------------------------------------------- /t/data/pkcs8.rsa-priv-nopass.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/pkcs8.rsa-priv-nopass.der -------------------------------------------------------------------------------- /t/data/pkcs8.rsa-priv-nopass.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBANPN17xW4EkH5PXG 3 | 1i/i3rE1EXFcCHyxmz95VRBDs1p3MuYf9mxntbfYAmuzS3KrRWh3IyX/Eh80N/v9 4 | OXPlwZbVqSTX+L3pCEJtRtsWn0zmswGThjMZiwle0oWuap63L35F1QN8EDaSPSBC 5 | yGELNRr6rwVYq0w5b+LOcaCZ+/H1AgMBAAECgYEApfu3aGpww+rC3HUhX0+ckyTy 6 | cXLdV9LbxidwqRlVEb0+DyfXNucjelp2sy5EHy3na9GJovo8mmWSxhCRGKliRkQ6 7 | XgrEMZdCSaWI2AazuHAGlUJRFEVkvdla3AuBAn6y0YdDp/3kbg0yahmKyD8Gq74z 8 | nUYbDL3R5JtR2Ad/KlUCQQDvSEICTHbO/BF7hVmlKRYZSNHKEPrv8X/OlppS14Kv 9 | QRwc+CZ5+l6T1Y+l5cHJQUXrXZoWS1K741TXdUhjjUd7AkEA4pod804Ex8sttdWi 10 | pHMfeyj+IbPAk5XnBc91jT7AYIeL8ccjtfl99xhMsGFaxrh3wA/4SGEvwzWkbxcq 11 | H8G5TwJAKNG+0P2SVwURRm0dOdukdXPCtiHnbP9Zujhe4zr4hEUrMpXymmRntfh8 12 | pORpBpgoAVraams3Fe5WDttnGfSD+QJAOOC6V9HjfUrQhG3FT0XeRwm5EDiQQ/tC 13 | a8DxHqz7mL8tL1ju68ReC+G7jiJBqNOwqzLW/UP3uyYByiikWChGHQJAHUau7jIM 14 | 45ErO096n94Vh95p76ANxOroWszOt39TyvJOykIfoPwFagLrBWV9Jjos2/D54KE+ 15 | fyoy4t3yHT+/nw== 16 | -----END PRIVATE KEY----- 17 | -------------------------------------------------------------------------------- /t/data/pkcs8.rsa-priv-pass.der: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DCIT/perl-CryptX/3f85a16899da93c0c1ec600efc929885e945abf9/t/data/pkcs8.rsa-priv-pass.der -------------------------------------------------------------------------------- /t/data/pkcs8.rsa-priv-pass.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN ENCRYPTED PRIVATE KEY----- 2 | MIICojAcBgoqhkiG9w0BDAEDMA4ECCQk+Rr1yzzcAgIIAASCAoD/mgpUFjxxM/Ty 3 | Yt+NeT0Fo4echgoGksqs6+rYhO16oshG664emZfkuNoFGGzJ38X6GVuqIXhlPnYQ 4 | biKvL37dN/KnoGytFHq9Wnk8dDwjGHPtwajhW5WuIV3NuhW/AO1PF/cRZKFjWrPt 5 | NWY5CrpfH6t6zojoe+5uyXpH29lQy4OqvSRdPIt/12UcB+tzV7XzSWEuXh8HAi8a 6 | sYUu6tuCFnq4GrD2ffM4KWFmL5GqBAwN6m0KkyrNni9XT+RaA6zEhv/lVcwg2esa 7 | 4/EzRs0ixzzZDKaml8oCMl9RHtFAbQmdlfV7Ip4rGK9BwY6UFiDMIVru6HynOVQK 8 | vvZ+j//bgO+3ubrv7psX+vC9Fy/MoH2Tc7MIwDN/QVTciPZlzjWBnBNxMfeFKtEn 9 | d7NFiapgfLuRQIiDTMrW/clcqvO54NphxhrcgUEoxos4twKZARntqPZHtf8nEM2x 10 | 2sEF5kI65aEF/5Yy16qvP0vZAA2B1kcIdXZ8XLZCp4c3olhkIrmgUpo1gyFXdCoC 11 | 7dT5Cz7/YLkq5hkcFrtp4V9BZMR24fSttc4p24N5xuZ+JneGnGkLX6B+nJAtm9vw 12 | bZA6P+23GI0qeMzL3HJXwCOTSsWfm/H9W5+2Zmw851aAmE+pZLni/pk3e3iNSWgs 13 | 946x/doA5O0uCFsU7oxme+WAIp2SjhxGoe808Lf1CCFMPboFi1O/E0NsX8SIEX+i 14 | U+UHi4kxZqVkr3Q5SB/9kiSv8K1bE787yueQOT/dsTYYaMsjAbkEZo0o/47F32T6 15 | A2ioXHOV/pr5zNHqE5tL+qKEcLYbAUF1O+WvmdqYz+vHQjRQBatAqTmncvLDYr/j 16 | 1HPwZX2d 17 | -----END ENCRYPTED PRIVATE KEY----- 18 | -------------------------------------------------------------------------------- /t/data/rsa-aes128.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: AES-128-CBC,2823DCBA91F7DBA2ED920CAEE40F0BB4 4 | 5 | KAADjca5SzbAbdz2cF567ZO9WjZz+lA1C40gsOBvHB6LjWU32YGW6Hz9a7pwUjOh 6 | E/gGSFkKv6pTJgXfLs/l+pIDGSohhzChw7hkmN1IgVXqDQZw3koW5Yn7bg6xeJoI 7 | JFwIIQhnft6BHG2o/5MzUTRwHpIxRuIaz2FnZtBNbVtQInHtP8LJIAVoyoO4c0ET 8 | IQBDj7dwOAPdxOsrKCRkjI8IBMwWtKBq7XunkE15dZFFZrZOfIaXUqNYF9DlCHBk 9 | eGV2lZoL99pOtJzHTBzv3rtyPYqCNotTNnui2Z0Jzcq8K97XAlzKhL7BFMw5TSUF 10 | Tf9ECgumaRELXDdlUtEiZ7uACBXAW+qTUxOCrp+EeyfUBYPLuiy9KQvJd4C+8QIs 11 | OIYekzfqZfhbhOdb0U7ZRN3KXfuNS70vKfoMyuW4UVx75QZt3CnJL8M6dn+eijjw 12 | mEVCT/a8SLgTgMKtl2AzFiJK4WqvnUs9iOswlaAWCIpvrMQmxltoL34aim55EZKd 13 | gDlEW5zCcjYe8A5d5abd4cX8vVrN57j2O3Dk9Dgyr4ZHPjBMF8b6LnWqBGrgFrbQ 14 | LpjDZRNm4W7JuROL5VtSBEwP5VAMdl56UPlgGmM6K2MgAvkZ99ycffu0vsKOxd1T 15 | 5wpY2y5SBOyoex0XPa9woz0GOLjf9ydpVlVikPHk4XX2ts0+L5VttkQ7wO9GLUj0 16 | OltsrOxscHq3xPYsJgxmmHGmhrlTKIv1YHjzZsteqZLokH3kr1sCEX+vS3lqaQP8 17 | rmIjf2vAWi3inteZifZ2v48V8XPTOUky/YQvTEGDstHWVd74hhrCVfx+Jk7vjipr 18 | -----END RSA PRIVATE KEY----- 19 | -------------------------------------------------------------------------------- /t/data/rsa-aes192.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: AES-192-CBC,BEA13A8B02546A15B7F23ADA71266129 4 | 5 | 7Qv9E1ZLVnTUu7sG+EdRWqDpOo9vr8ro6Mqg1wHqXozx3JuOTbW9QvcVra9vcdfQ 6 | Zk2HC9sDKc44Jjw04zXQ8jUpFbjCtSGYqCp8Vjq/hsDsMwDMwqskq8BAN8G4s7K6 7 | vkb/RBqbix+Dm3h9AWsh7+x1BNPX6aC8qyH2YZN/IlPfn52Oq8sTIk6w834NifzH 8 | Y87zI+cJ4e8o8XIVIAoRQFiVbLT5DsV8eMKh1jgwS3b5rdAK/GzDgEWwgonb3R2y 9 | 8KGrCIAQbkY1j5jNdurhAwJVEPUr9mwv4tPLoj0vFOez87TNh7iyTQwJ7NsDCilQ 10 | +S7xXxaLewKOvVqo9Qf1k8/xTWUtwSbtwA8V/E+8t7Qv1JkcBNGGDCRw8DWKmr3c 11 | q1qjA2yTILFqi+F+5bmpucPA+tm+iJjgo5uPqw0A/CzSI2Y1haXdxf5thf5eHzJW 12 | nGL5e+2muuirsViNRi4bcqaQ6nngWFLpeeySLL2gbgnEe2z7nDfBoN0821j3G8Qt 13 | mb/lW8KBjQVYoPlboW3u/QAy73Md4IGxvowqRQezOuhr6LHXP9UpzH3RfrHykUzx 14 | FhExT3Ke4volyejYZCBMqIL6AEHNjefJsPGRD8Z2Hfvso6EXhOeMV/hcMd+rgy1f 15 | EMV6hBIIkLWWSKU6yu19nd6xdLp6ZJ3pHbuDT/6EHJs7klF/OdvhGRl1icf3Bvmt 16 | Jnsu9OvVPvNfdPb5agjmcXF962xk5ceypfwJguBQVIqw/XHsu7cjU9EKdTIlg5oo 17 | oxDxyLYAdFUMhFiYtvYd4uCOIjIdFlRZYU9Hj+aI/5jGfrHglTRZWukJTtv6Yjpj 18 | -----END RSA PRIVATE KEY----- 19 | -------------------------------------------------------------------------------- /t/data/rsa-aes256.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: AES-256-CBC,E4FF35065678C2D4BF54C5F3070797EB 4 | 5 | 0u2a9fhgca81gTue3i5W7uT6BDXpNR1SwVR0RyXs3eTKgFrdy0NPxfACIpekTZiD 6 | ZKTpXwM6tbVC5gzsMK1SBeoiiXvDW3lN+nmiWzY9+sVssv0ys+fjq6WwlEbF3tI/ 7 | OflPOb17M50LLFxOlH7bqwzt5fMBHs2XA+ehMdg24ah1f7pSWjuZdjPOEMuV+XZf 8 | wGJTcdJKMZHdGn0hBxItuEQrYrxJloOJgYS5fjKoAGLmS6dKKVQa+nAJKVE24VIj 9 | spngBoB8zD4OW4Q6qFyPqiFjY/A4JgzBnwcKnkRVCbO629zbdvsgZDiHA4OIm3GH 10 | MWfdkDU48hmTriHXQs0dVEmZieRMVIKK0Y4gXXGElQy3w7XTUhvad9o093Ddr1UR 11 | ZktzPumpnnNVnhPdAmVQtENvqdrFvD/FhNpYnP8HeT0CYQf/aQSZs2Te3doWH6Mz 12 | quE6BXCBqJv8C+YKk8ugFmpzX7An9Lc46KA7hAc6eCQNvPPGEvH75IKWULqZYyBG 13 | xpLWow1jNId8zmgTIW+9eOpEroQ9/Lc5/9E/kSyylVfNxXAGmfdG4kzdF2vLyR4r 14 | cnMJfJtHKOx1QJ6nJfa/giuEwTcrJBleDRFslE1zVoNi03PZ9l5LS0YKhGSmLPoj 15 | T6IvAmKDGYuhp1hnO8spN2awqXaUYwrIzsIWKgwUTSvGc4TepWK72qP+h6/TpSq3 16 | Sp0OhzNWM6YgLi4gchx54CYbsYwf7vhi7qK6ko2sehMJ3UC8rFQzl+OoddbdQ7dI 17 | +ZKzilZ/ppvh4yKdtYWEB/M17GzJHbU9SPCNKv0S+bo1gG5dsQO2Zlh0CvQUwzaG 18 | -----END RSA PRIVATE KEY----- 19 | -------------------------------------------------------------------------------- /t/data/rsa-camellia128.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: CAMELLIA-128-CBC,E1719CB01F51547E271937E2B3D150F3 4 | 5 | zzVZcRFkUA1zdt5Cp63erlq8IoL/t4HDDfAVJqQxuU78XB5VFe8BPN6XFedIBYhe 6 | q9s5fG4ULjf8NJtKPZ4Di7T8HZvAn50BJLa0u9HBHZDQiFQNzrt7Tb7MA2ENuqzG 7 | kmzza8wK15Hzri64Dmfq+Tl19fznAHTnawsrHQiahg9ylEPA2ZulDqnGP6ru71mB 8 | ohEIwg1cxJvaEkQUMiPXUirg/o9qeVhXRBT2cNWPa+qn7E/ufNhmvJM219TqzlQg 9 | 4+4zTEi8PkZZHeDASZ1Z/XiZHM7Rlm6PT36QqXORhoVAXeK00ErCpv979ljQ6cEP 10 | 4xIjRacmbCNrMPdpvggJP/QJdHvvWzZZHiv8BveET9R2RjquFwhRLKIJZ+IR5D/K 11 | Ppb5wQFCyL0cJ3Tv43e7AWO4oH2QZO7qc2lfnriuolbLHBRcYUUe9qbLHuu5rqdj 12 | BG/ZV0eiHVwCj8g0a0TK0fz0jCiKEe52AlEernnIj6/accQsUDuZfkDLmYoK6me0 13 | SbGAEfrY1jMPuWwSJvCl9UGozJx4lPXB/3qtkEr5656MYHvf0OWpXqWIkcfDwZ5z 14 | QXruOzzF+ynSB8a/RMcrgKMW9l/3Uvgylcwngkgln85lxpSf1U1vRD2jfcmanPxq 15 | WyIgUGFB8yrLYsiWVv3Xtt9UGfa1s+EW5jTA9uYPAXoadD+HWKqCgQCBGLOpPNZl 16 | U6fTHzM42gxd+5kTcy9IZGSn6lB04K1tRNiJyds1OC7Hb/wq+VvZYy6kAx7WaAmz 17 | CSgH1AIz60AKS3ZknZRnz1IZhDT99BB4dc2RYndY7M778D5bQAP5VZ6DIuTL5mGJ 18 | -----END RSA PRIVATE KEY----- 19 | -------------------------------------------------------------------------------- /t/data/rsa-camellia192.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: CAMELLIA-192-CBC,BA47F350F95736DBA1AFD47D0998C35B 4 | 5 | hTtFvf+yjUz4lhhNLe2voESxZ6ae65dvl3eWtNZmVmnVhArHqDmcak8GleLD1a2a 6 | FfwJGzdhvAQcLtfn1jpdObjwPS8XUQ9PVk3Dbjc5f4nP5f1ThkcewRtpStpc2MHH 7 | KJvXUOrDhcawO5MJ/EjvRCLs5N2Ykzqn/ptuk2xHGu116MFIZDH079iTYv3j/qQD 8 | OgengmO4uBAuQ5x6VMnIRRwF8zKYZH8wvWTD3FKInN/Fy7x8MOW+b6+eq63uD5vO 9 | oPXKaXJKtK1n1JiET5fdb9NJHZ5T4MERou0hFcHxT79TGtXwY2gsZ807sXIHZwIq 10 | +0c/tLEfNIuaGz4pA0s6c1fYbN4cx5dj+oqrsAaP7QazpEtuE1nlnQYCqlOAwEyN 11 | +x4T2fM7P2Vw7DOaLlyDIBXWtSfMhVfF0BXBsMya8BREownyvIt/lsbTv516waNp 12 | pM6Tojekf2E6U4IQlselIHS5N76KJullosymypyFh2y8S+OjUi4ZsstOgI+84aju 13 | F+/QMyW3I8gaFo3hL6y7Xzc5L3woKfHTXul0IyAofmLeUXWAABTY5FIxM5suaGkw 14 | ko7XTq8xVaQufHFxJZyG96epOe7YWgZ9d/t5gUSnK/6S0J7O0fMMn6vKQOCaaNV4 15 | Xb3QNJb+2zxPtV3p1ZmQy10i61f+X1WfXx53jG2HLIqBdGc0WxApTaVgppYSxaeT 16 | LF8Lc+8lJRgOTidOr/wdWSuYjbbnGlxx+MHSJboljxzB3XAJ5LDQ0taU0IKkdpfD 17 | QV1BDul0tXsAQs7uEp7rqiLmE1kALzU8EE0+d6/VrVmuvLhDAE1arcyPXPIQAKLa 18 | -----END RSA PRIVATE KEY----- 19 | -------------------------------------------------------------------------------- /t/data/rsa-camellia256.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: CAMELLIA-256-CBC,A3CE93CC318DCA6C8537B9554149F96F 4 | 5 | uJ1S7ZSrL959vXzFKkzI1vFBHw9n7kH62Zf+iH8gLtLVmMDeIoioX8UGYTvK+jWz 6 | SbZv2e4bIoxufFIPY+lZ+seLTdU4lWpZ6Shc6xHGc7qRjZ+pT5+c0Dm+W7XQLBoQ 7 | Lwrtb3c6mdhVmJBkk0At9XtzWu2WNE8rQtkWl1NvJLpIbmrQ75DTn2WMQXTgE7fo 8 | 8jMngWoIyZFwXnWavJLPUq7WkaXfp8AfRiei7riPT35Y98juGc8MMISR9yWhg6Pz 9 | cCMEvHMns/v0aurhmkTHTIbHI8BjbEGJ5hMhJx6CijANvWbh/UCOBx50GZINs0+q 10 | ZZ8Mn5lHPVV1Q6bMEBQvLAbvUrOebxNg7Fljs6KBFoKm9bN6cLX24jNQ+b4c7I7P 11 | FU3fSnvU9taAxrOev2a913Ek28jdwJQE8sZut128VBMvLj9HIb1Lf5jnMkoapH3f 12 | HA57VrPhzNFIR7/tx3jT4clzW3AyyKt1E/7UQkfZjANnKwsL9Ru8Z0X/BLxSQlMp 13 | HsEHVVLGlVZCrNFp0L7ex39JT6WYoRt2YT0HySrDTu8R4Yh8hgBOKTLLtk/2Ubwb 14 | HrEoQc7e71JDHpnwetxZhUWuIg0IJjz8QZSZzxRgY6qoA1FZV4JEExlyqDCeP7EC 15 | MS7Jur3pMhXMga7rmsXxJOs0bf/vyxFmXZCeSWyF2laKBJ7MHnGd1Xc6k70jQdJ0 16 | wHy4Dwf/6+mgU9zb10NhduXfEEWRvSjc95nwOAdzgvVlTOs0PzECI1BSnFskWG9f 17 | DxjFHpNAvbLq6kY4v/UEf6mCdgKesfsScH6XL5YJbkgT7JA7KUFO13j16d8B5rrW 18 | -----END RSA PRIVATE KEY----- 19 | -------------------------------------------------------------------------------- /t/data/rsa-des.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: DES-CBC,5CA5B2DF978A847C 4 | 5 | fEuYTfFWcMY5GYXLY7+LbmTeKRNyE/NnvHD+Nr0pJdM0Su7o/9emaQ5xMLgpnBEd 6 | P3p4hnU3irTe5OIE6SxEY9P5M3DH6CnX4jdZ27DvBlUGj64lowRi3QoY9V4+FvkC 7 | tqdy9Y5BkK+eyxr7eIgHpebNTLEdd/7SUgJhPpkP1IZGBcY2HfCqrid4ZGPHaENj 8 | 1jlVUy2/Uv8qsQzVEB0JchLouZC+B6oRVKOzaEIspQirR+VKC8dE/3k7ss/EaqnV 9 | hss19GOaOLzzmAFJa5aWc0bhLI4NMvzsZKELpnKSkcYT+urT/F+BjKGTNhEW/ky/ 10 | Zy/HcWE3Ql0Jid1kSZqXJm9eesw/SSNn2hTO0hvznRzIFFnI+2GU1EN3PDg6SKQv 11 | QhzqUuKZ79Gb5tBxKgjEUd+vH/piJ87SumgIHce3gWX5nPblvOoa+VvYs+nWkJDU 12 | 8GiftUxrc1RTkJRO10L/WDHV8rq9D4/hmBUcSeZRHG1N9AAddx39HUm90T8vxUBI 13 | 2y5HdS1ypP30eWy5srk+by1QBcH/s8OHj0uGd8pAcnZS4sMeWyxA1pso3xPG982l 14 | SOEc6BVVACKPp3qqSGZ96sP4g2oa1uY7mon5GbF3GUFu70LfWjshBU2LT1Wuqcm/ 15 | UatR/Wv6PH6JK69Nt9iclGTBSXwC72IscJG1a09fa4fNRN76FOFojB5ZM9RqFccH 16 | cxwIa4W9qbyvTP2uGFRmxB4PnCvgUn5f/BHFsB6QinjRhuLweP31e0CGUM83xE7H 17 | 7Ds5QbMVonnFIuURDZKLXisUNArhsGNxj4NLFh654aI= 18 | -----END RSA PRIVATE KEY----- 19 | -------------------------------------------------------------------------------- /t/data/rsa-des3.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: DES-EDE3-CBC,C183E11FE570A434 4 | 5 | 8CEARke2e/AzkOk4eB+Kll0Kt2vrxcr1Q5/VN+y0tRRV9fgqYb24PtwRVSA2bOpi 6 | ksC08XsoOq/qRwdE2EWSqsoZ7xM1eRDTl0oYmW5Tzp2qisqw2QMe9urYG7Qo6R41 7 | rr+DSzBVPJf9EhygeiWaNuqADZWAr5mF+zzHPjkShf/+g3cZ+uUDA0AWHGdlbp3N 8 | 08oUnGBKK2jyNX+DVcQrrMTICNzU1YJwznpeY2YgZpaYwWvNTRh7asi6Be2UFxWx 9 | LNALom6LTpL+F611RS9/qOtlfUpWSE7XK5bIQE5j59VR93VxEP58ilU/qNXI6DXO 10 | +LfEiXB98iRux8fQ68Ooqlere7//HxOPLp3KNcxXgHxuRsfWBuAO5qVGQOWhUanB 11 | RiG6/Wq3ONe/PRRkMAme3lxGNpPR8VHw/F6jLhA/cFGV6e3IdwEI7esAnYnJEI0x 12 | 5wB9EoG3DhJMdPhULBp3md7oxFip1lxfZmhh1hh84FR3etin7bHHfaz+nWain+RQ 13 | s6uf3yTYnpPjiC/d5WSS2d1sQ5T6DOaXBt9E5O5E9q0vehFHoY+jfwPy7/VOX/LV 14 | l3s3WjaBd4o6M69TNBXSlAlFD0fvfpkaUMSvzVXevMwEl6qWhWkkc9YWt/mmBNRU 15 | 2DcIdPOwNtKERcNqxxw5EYoEKGktHfDZtjki1rB7icN/HWU92QujnhoC4PgjAV1p 16 | MU9zOs9xwK05fC4Aowxujoa+hs/BO4Ss7G0oATrdteymOjiVGh9zBfWBlb3szlQG 17 | bQo9UGYcCIpHMJQz4yah5tca+n4II2ICJFRNx5siTqu7iUSOyZ945w== 18 | -----END RSA PRIVATE KEY----- 19 | -------------------------------------------------------------------------------- /t/data/rsa-seed.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: SEED-CBC,DEDB927E484244917048F7B10B131414 4 | 5 | uvGL1hXZrBta0ctGaQraLnjRAdCmn/Lxunk/MEGRqqAlF7R3I44YLF/GEhwqrRuW 6 | 7qXfOzDqLJQohA/dUq9+6brukMb2E7b+af2BSKYK6fpKF2y84Sq3E/6/mZbEGQje 7 | 4fPeG+nt4L8LDza76IRDU1Z5qNXAMfvYj/GopgeIzWTbFwwM8H2rm9U/LwBalPQA 8 | lRvdOLgO0gGnHTA2b3I3APPzWdLwX7vGgczIZCJUSXuGCMQVtNfpM1kAdqttpiyr 9 | Iow2DNnZ7+eA5qlgS2NcgvGb5FIDj43sgzJLRBAXN46Dc5zWI0Wk2i4pBYbJd73i 10 | 5qNPRgS2EaSPsPMLBH/3pvRzPI/Bptqz5NzkbJrV5ojppK4pdTJdyOswp73Jr6e+ 11 | Y768RzHcGaNm6TYjHjWg5E3/6wfqlYw1x2BDmcR7ny9VV/GF2pHzJOsU+sb0fTM+ 12 | 0OuDARunbDMFl+xjzwvcErSR1cWwxY9M6DMxZmWVFGJD7ovVaKZ1lgwBuEdZh5yo 13 | Rg0RrMFhwB/gZHkMm8xtSHGdCcsjqmixqbm4jxoYwZ8RLoFkMWshFmM+hjvb0SKi 14 | Jxo4qOnS3smWduICjhEedLkwpVmbMzGXnZjVcJpBacV6KrQOa6O2vBSbo4w2ZQM7 15 | ZeU+CU3p1718GNInt5+H17HeupROk87HnHiDLKuLZw8GLcqSDAHpgSzTHusvM04q 16 | uQt0SrU8KH5oILcj9I6embONOpZR7zY9+eFPGemTrwNFQVSt1L9nuLCUr+ZqmWNl 17 | AqVtOGq9kWSvWUo9URx/Ze7Y0Zs/6DBmn/dMQnWMR75nV/kgE29P35A8vzXPXcaE 18 | -----END RSA PRIVATE KEY----- 19 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_dsa_1024_openssh.pub: -------------------------------------------------------------------------------- 1 | ssh-dss AAAAB3NzaC1kc3MAAACBAKU8/avmkFeGnSqwYG7dZnQlG+01QNaxu3F5v0NcL/SRUW7IdpUq8t14siK0mA6yjphLhOf5t8gugTEVBllP86ANSbFigH7WN3v6ydJWqm60pNhNHN//50cnNtIsXbxeq3VtsI64pkH1OJqeZDHLmu73k4T0EKOzsylSfF/wtVBJAAAAFQChpubLHViwPB+jSvUb8e4THS7PBQAAAIAJD1PMCiTCQa1xyD/NCWOajCufTOIzKAhm6l+nlBVPiKI+262XpYt127Ke4mPL8XJBizoTjSQN08uHMg/8L6W/cdO2aZ+mhkBnS1xAm83DAwqLrDraR1w/4QRFxr5Vbyy8qnejrPjTJobBN1BGsv84wHkjmoCn6pFIfkGYeATlJgAAAIAHYPU1zMVBTDWru7SNC4G2UyWGWYYLjLytBVHfQmBa51CmqrSs2kCfGLGA1ynfYENsxcJq9nsXrb4i17H5BHJFkH0g7BUDpeBeLr8gsK3WgfqWwtZsDkltObw9chUD/siK6q/dk/fSIB2Ho0inev7k68Z5ZkNI4XOwuEssAVhmwA== This is a test key! 2 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_dsa_1024_pem: -------------------------------------------------------------------------------- 1 | -----BEGIN DSA PRIVATE KEY----- 2 | MIIBuwIBAAKBgQClPP2r5pBXhp0qsGBu3WZ0JRvtNUDWsbtxeb9DXC/0kVFuyHaV 3 | KvLdeLIitJgOso6YS4Tn+bfILoExFQZZT/OgDUmxYoB+1jd7+snSVqputKTYTRzf 4 | /+dHJzbSLF28Xqt1bbCOuKZB9TianmQxy5ru95OE9BCjs7MpUnxf8LVQSQIVAKGm 5 | 5ssdWLA8H6NK9Rvx7hMdLs8FAoGACQ9TzAokwkGtccg/zQljmowrn0ziMygIZupf 6 | p5QVT4iiPtutl6WLdduynuJjy/FyQYs6E40kDdPLhzIP/C+lv3HTtmmfpoZAZ0tc 7 | QJvNwwMKi6w62kdcP+EERca+VW8svKp3o6z40yaGwTdQRrL/OMB5I5qAp+qRSH5B 8 | mHgE5SYCgYAHYPU1zMVBTDWru7SNC4G2UyWGWYYLjLytBVHfQmBa51CmqrSs2kCf 9 | GLGA1ynfYENsxcJq9nsXrb4i17H5BHJFkH0g7BUDpeBeLr8gsK3WgfqWwtZsDklt 10 | Obw9chUD/siK6q/dk/fSIB2Ho0inev7k68Z5ZkNI4XOwuEssAVhmwAIVAJjBvZ2W 11 | /WS2qshYFM74ef4InjBE 12 | -----END DSA PRIVATE KEY----- 13 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_dsa_1024_pem_pw: -------------------------------------------------------------------------------- 1 | -----BEGIN DSA PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: AES-128-CBC,FC53412322B9C202AED2949BF06265AD 4 | 5 | ohmK3nDoFdyf6WPogk70WVUp2LdIJK4pRaCRp717Idj8veVXn+RLiojuFIcrViWF 6 | Hlmzold9A/pYegoXEwcKJCvoJm9UZf0sfBANMhe/MuauwyRelDnnA4OPoeyHnTV3 7 | HV6nHE/p0sJQtxDJ+QTG4eMHjX1MgurMVY+9W3iuu3vrWc3iBa8O61+AthNSWSWa 8 | upy6t40Yu5BIwZYEyOY1nyJY8OWUvMj5uc3zTACa+Ua4GJ5L0eY7H5N8gn5ifN8W 9 | itQBB2TEOjJc5ixTgJf/G+bZikLiK/7xJGAAlecPa+TWCy/c/rXZA4acBn0Ax3PZ 10 | bZT3m5/9Xa3d/BIkScwSHLIyM7K/wL2DnFnNY2xZempIYW7FFnpexTfBOilr1YoY 11 | 2EYxuVZv8KcACRv4c6yC30MEE6r6MiemvvIwgs2HCbx+krpr0Dvxqxo3IoapSdO4 12 | CrxGGu490+v+ZqTQZH+pfAmrr8RdMFEwVdRNT7UN+ZwaqD/bAMlcUjIErNq5/Yf9 13 | hSl6Bi3ekOlJMyt53N/rpAa7f4RNPAuOBsHkIavCA09jjnmDawZtfChiQg+Lb27n 14 | 6/pfxpqEiejCIttRCW8/dQ== 15 | -----END DSA PRIVATE KEY----- 16 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_dsa_1024_pkcs8: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIIBSwIBADCCASsGByqGSM44BAEwggEeAoGBAKU8/avmkFeGnSqwYG7dZnQlG+01 3 | QNaxu3F5v0NcL/SRUW7IdpUq8t14siK0mA6yjphLhOf5t8gugTEVBllP86ANSbFi 4 | gH7WN3v6ydJWqm60pNhNHN//50cnNtIsXbxeq3VtsI64pkH1OJqeZDHLmu73k4T0 5 | EKOzsylSfF/wtVBJAhUAoabmyx1YsDwfo0r1G/HuEx0uzwUCgYAJD1PMCiTCQa1x 6 | yD/NCWOajCufTOIzKAhm6l+nlBVPiKI+262XpYt127Ke4mPL8XJBizoTjSQN08uH 7 | Mg/8L6W/cdO2aZ+mhkBnS1xAm83DAwqLrDraR1w/4QRFxr5Vbyy8qnejrPjTJobB 8 | N1BGsv84wHkjmoCn6pFIfkGYeATlJgQXAhUAmMG9nZb9ZLaqyFgUzvh5/gieMEQ= 9 | -----END PRIVATE KEY----- 10 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_dsa_1024_pkcs8.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIIBtjCCASsGByqGSM44BAEwggEeAoGBAKU8/avmkFeGnSqwYG7dZnQlG+01QNax 3 | u3F5v0NcL/SRUW7IdpUq8t14siK0mA6yjphLhOf5t8gugTEVBllP86ANSbFigH7W 4 | N3v6ydJWqm60pNhNHN//50cnNtIsXbxeq3VtsI64pkH1OJqeZDHLmu73k4T0EKOz 5 | sylSfF/wtVBJAhUAoabmyx1YsDwfo0r1G/HuEx0uzwUCgYAJD1PMCiTCQa1xyD/N 6 | CWOajCufTOIzKAhm6l+nlBVPiKI+262XpYt127Ke4mPL8XJBizoTjSQN08uHMg/8 7 | L6W/cdO2aZ+mhkBnS1xAm83DAwqLrDraR1w/4QRFxr5Vbyy8qnejrPjTJobBN1BG 8 | sv84wHkjmoCn6pFIfkGYeATlJgOBhAACgYAHYPU1zMVBTDWru7SNC4G2UyWGWYYL 9 | jLytBVHfQmBa51CmqrSs2kCfGLGA1ynfYENsxcJq9nsXrb4i17H5BHJFkH0g7BUD 10 | peBeLr8gsK3WgfqWwtZsDkltObw9chUD/siK6q/dk/fSIB2Ho0inev7k68Z5ZkNI 11 | 4XOwuEssAVhmwA== 12 | -----END PUBLIC KEY----- 13 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_dsa_1024_pkcs8_pw: -------------------------------------------------------------------------------- 1 | -----BEGIN ENCRYPTED PRIVATE KEY----- 2 | MIIBrTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIC1Dl0imCfgMCAggA 3 | MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAECBBChlIQxZfVu1iB5k+1BDnkyBIIB 4 | UNCHjRWVQROFx7kHHqLIFP8riXrATt0CbYcyOMaJsFSIoIRz6G9UDBCgdYmVHe19 5 | LfmXMQ+IuXVc0IP3HJnoDNfXvbKmqdEtCZfg2efcLeWNTP+ck2jZmoXsq+tsFl5Y 6 | 4cB/5MEJah9R7/ashHJ22X0VpQBXzqcXaHiqCzudPYOmGT32CD8ECs1dkHVIHQIB 7 | rhqlU4j3Lf+1C/ui1tG6gJRQkKaMmU9Rtgn3BcLf7iKRJZGFcmc1ND13mAqaS0II 8 | aBvsRUao10ItfN5M0llaQrJoC2RFCg/3Mif0VOXJy5XUOE60JOVsLAdNBtaUtDD/ 9 | 8w6qlJf9c7qud2gNN4Ct2viXsOEZ+D83EmuGowIcJABMaHFKdBVfzO9kbUw6HAV1 10 | scIcbCsYzczr5fJXd/wQ5/jWYEvGLZZeFcddkwjnGkg5GZCgxVoC+b272BLqSsfo 11 | 7w== 12 | -----END ENCRYPTED PRIVATE KEY----- 13 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_dsa_1024_rfc4716.pub: -------------------------------------------------------------------------------- 1 | ---- BEGIN SSH2 PUBLIC KEY ---- 2 | Comment: "1024-bit DSA, converted by miko@YUE from OpenSSH" 3 | AAAAB3NzaC1kc3MAAACBAKU8/avmkFeGnSqwYG7dZnQlG+01QNaxu3F5v0NcL/SRUW7Idp 4 | Uq8t14siK0mA6yjphLhOf5t8gugTEVBllP86ANSbFigH7WN3v6ydJWqm60pNhNHN//50cn 5 | NtIsXbxeq3VtsI64pkH1OJqeZDHLmu73k4T0EKOzsylSfF/wtVBJAAAAFQChpubLHViwPB 6 | +jSvUb8e4THS7PBQAAAIAJD1PMCiTCQa1xyD/NCWOajCufTOIzKAhm6l+nlBVPiKI+262X 7 | pYt127Ke4mPL8XJBizoTjSQN08uHMg/8L6W/cdO2aZ+mhkBnS1xAm83DAwqLrDraR1w/4Q 8 | RFxr5Vbyy8qnejrPjTJobBN1BGsv84wHkjmoCn6pFIfkGYeATlJgAAAIAHYPU1zMVBTDWr 9 | u7SNC4G2UyWGWYYLjLytBVHfQmBa51CmqrSs2kCfGLGA1ynfYENsxcJq9nsXrb4i17H5BH 10 | JFkH0g7BUDpeBeLr8gsK3WgfqWwtZsDkltObw9chUD/siK6q/dk/fSIB2Ho0inev7k68Z5 11 | ZkNI4XOwuEssAVhmwA== 12 | ---- END SSH2 PUBLIC KEY ---- 13 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_ecdsa_256_openssh: -------------------------------------------------------------------------------- 1 | -----BEGIN OPENSSH PRIVATE KEY----- 2 | b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAaAAAABNlY2RzYS 3 | 1zaGEyLW5pc3RwMjU2AAAACG5pc3RwMjU2AAAAQQSOECF1+jINDVg+jr1qm/y/PLE7Oeoa 4 | rObF5AIer6/TZXhXM2oowlMp//ai8/wn1oNaao9yoDohWeAck98WHySLAAAAsDnMKZ45zC 5 | meAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBI4QIXX6Mg0NWD6O 6 | vWqb/L88sTs56hqs5sXkAh6vr9NleFczaijCUyn/9qLz/CfWg1pqj3KgOiFZ4ByT3xYfJI 7 | sAAAAgawKIwHs3k5dhRXIdHgA+9C6labiTG/M+XejrsL4lqiMAAAATVGhpcyBpcyBhIHRl 8 | c3Qga2V5IQECAwQF 9 | -----END OPENSSH PRIVATE KEY----- 10 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_ecdsa_256_openssh.pub: -------------------------------------------------------------------------------- 1 | ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBI4QIXX6Mg0NWD6OvWqb/L88sTs56hqs5sXkAh6vr9NleFczaijCUyn/9qLz/CfWg1pqj3KgOiFZ4ByT3xYfJIs= This is a test key! 2 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_ecdsa_256_openssh_pw: -------------------------------------------------------------------------------- 1 | -----BEGIN OPENSSH PRIVATE KEY----- 2 | b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABAn5/9Dp+ 3 | 3e5/CONojF0m0zAAAAEAAAAAEAAABoAAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlz 4 | dHAyNTYAAABBBI4QIXX6Mg0NWD6OvWqb/L88sTs56hqs5sXkAh6vr9NleFczaijCUyn/9q 5 | Lz/CfWg1pqj3KgOiFZ4ByT3xYfJIsAAACwdmVChYQWUHPXdRjHIakF5mpsXJCuad7ytcaP 6 | Hfi4EpadWiB08WtFpfmefLLaICd5b7dqJyVqTLOi1euFQOtOOjkn9kFfIUZiS97RgTDJX1 7 | YpVgDr30M4rj83SdeaCsmkp4/cAqF3NGjzljMX6wpaSAFpTsCjnp7Cm4wcT02DRTJ/7/KG 8 | OcvrFyuab2vtVWSBU4lmNs4Xg9GFstkp0ecf5ThbGhQkYkkSILM1sMnBmoA= 9 | -----END OPENSSH PRIVATE KEY----- 10 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_ecdsa_256_pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PRIVATE KEY----- 2 | MHcCAQEEIGsCiMB7N5OXYUVyHR4APvQupWm4kxvzPl3o67C+JaojoAoGCCqGSM49 3 | AwEHoUQDQgAEjhAhdfoyDQ1YPo69apv8vzyxOznqGqzmxeQCHq+v02V4VzNqKMJT 4 | Kf/2ovP8J9aDWmqPcqA6IVngHJPfFh8kiw== 5 | -----END EC PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_ecdsa_256_pem_pw: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: AES-128-CBC,9D82B6C20F99509D97334341A49FB673 4 | 5 | v81D80E80YvIpPvV7k+e1TC1AQ4McvsmS3WavIAC8bN60seWSN0Q0A6tD+q6SET2 6 | MHM8Op660IeoZ8BdTfKjH8CwiRlDBiSKl2zpAb+R3wiq9M4XdbG0h5+NiztoErB6 7 | VPeHeML4pd4fFt5fyOliMgw9VW7ZAhH2akXcZumtsME= 8 | -----END EC PRIVATE KEY----- 9 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_ecdsa_256_pkcs8: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgawKIwHs3k5dhRXId 3 | HgA+9C6labiTG/M+XejrsL4lqiOhRANCAASOECF1+jINDVg+jr1qm/y/PLE7Oeoa 4 | rObF5AIer6/TZXhXM2oowlMp//ai8/wn1oNaao9yoDohWeAck98WHySL 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_ecdsa_256_pkcs8.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEjhAhdfoyDQ1YPo69apv8vzyxOznq 3 | GqzmxeQCHq+v02V4VzNqKMJTKf/2ovP8J9aDWmqPcqA6IVngHJPfFh8kiw== 4 | -----END PUBLIC KEY----- 5 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_ecdsa_256_pkcs8_pw: -------------------------------------------------------------------------------- 1 | -----BEGIN ENCRYPTED PRIVATE KEY----- 2 | MIHsMFcGCSqGSIb3DQEFDTBKMCkGCSqGSIb3DQEFDDAcBAjv0zzuInVzRQICCAAw 3 | DAYIKoZIhvcNAgkFADAdBglghkgBZQMEAQIEEK/HPCZMTSzrXy+kuS337CoEgZBX 4 | nUxLaCttKGUGwBTPAXFmihMfI54wNG3rSPCI1YQ0vs197hGST+V6EChSRVJWG2Zq 5 | 9vbdqsZUGaAqfNwd4e0vq8dkG45+mnYapI9p1QT2+kpFT1Vfgf7BdZiwunNHyT1H 6 | 2bxbs4dy4WNqVjOGIl7HW6G1wuqTTxkEBKuk68aBvJiYDq92ccXzUMuL+kv8eJE= 7 | -----END ENCRYPTED PRIVATE KEY----- 8 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_ecdsa_256_rfc4716.pub: -------------------------------------------------------------------------------- 1 | ---- BEGIN SSH2 PUBLIC KEY ---- 2 | Comment: "256-bit ECDSA, converted by miko@YUE from OpenSSH" 3 | AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBI4QIXX6Mg0NWD6OvW 4 | qb/L88sTs56hqs5sXkAh6vr9NleFczaijCUyn/9qLz/CfWg1pqj3KgOiFZ4ByT3xYfJIs= 5 | ---- END SSH2 PUBLIC KEY ---- 6 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_ecdsa_384_openssh: -------------------------------------------------------------------------------- 1 | -----BEGIN OPENSSH PRIVATE KEY----- 2 | b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAiAAAABNlY2RzYS 3 | 1zaGEyLW5pc3RwMzg0AAAACG5pc3RwMzg0AAAAYQSWQhcqgIlNqJCXnzncp4aTBiGpG15J 4 | JssG1M5eI3wHQlGkIPpRQ1azuRkpODZREXfIhak/vv378nbAnNoJE69h+xwi1W4hHsz4ql 5 | watHXJMwcpitiwhzPQZCbbjpuIZjQAAADgAwOSlwMDkpcAAAATZWNkc2Etc2hhMi1uaXN0 6 | cDM4NAAAAAhuaXN0cDM4NAAAAGEElkIXKoCJTaiQl5853KeGkwYhqRteSSbLBtTOXiN8B0 7 | JRpCD6UUNWs7kZKTg2URF3yIWpP779+/J2wJzaCROvYfscItVuIR7M+KpcGrR1yTMHKYrY 8 | sIcz0GQm246biGY0AAAAMQD3dcLYMCsBbWxLYEQybGLLM6eUtV3ANwkys6qIxd39ZBIJOX 9 | Q6Rh53xIuu1X8HFlwAAAATVGhpcyBpcyBhIHRlc3Qga2V5IQECAwQ= 10 | -----END OPENSSH PRIVATE KEY----- 11 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_ecdsa_384_openssh.pub: -------------------------------------------------------------------------------- 1 | ecdsa-sha2-nistp384 AAAAE2VjZHNhLXNoYTItbmlzdHAzODQAAAAIbmlzdHAzODQAAABhBJZCFyqAiU2okJefOdynhpMGIakbXkkmywbUzl4jfAdCUaQg+lFDVrO5GSk4NlERd8iFqT++/fvydsCc2gkTr2H7HCLVbiEezPiqXBq0dckzBymK2LCHM9BkJtuOm4hmNA== This is a test key! 2 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_ecdsa_384_openssh_pw: -------------------------------------------------------------------------------- 1 | -----BEGIN OPENSSH PRIVATE KEY----- 2 | b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABBsDCK4+N 3 | u8awAwogYgkan4AAAAEAAAAAEAAACIAAAAE2VjZHNhLXNoYTItbmlzdHAzODQAAAAIbmlz 4 | dHAzODQAAABhBJZCFyqAiU2okJefOdynhpMGIakbXkkmywbUzl4jfAdCUaQg+lFDVrO5GS 5 | k4NlERd8iFqT++/fvydsCc2gkTr2H7HCLVbiEezPiqXBq0dckzBymK2LCHM9BkJtuOm4hm 6 | NAAAAOCP90SKhFjPa4AQkGEBDdUgE9XeFIcfF6LMGU9kAvcxQEMzrgNyH8HqB2eaqmp/u4 7 | 5+HuE/MUhS4f245E40AMCqD3RnQuQDw9j+M/YzV15xadIz/Ks2TAL0aKlagyxfzRpJWhFq 8 | g+7V6bu3gc60ktvxM3kNcvc5w9uATfVPc0K4ZqRyYMYBoMoR/MFhwurTK8xBU1bldu1T7k 9 | xWy3N0+OUA6kCx7CPHV2Wf5PTFkX98l5KjU/E4vqrr6z5QpiGcnrIJ4V5C3BjToqdrTR50 10 | QI624LZ3MHyL060gUXgMbSlnkg== 11 | -----END OPENSSH PRIVATE KEY----- 12 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_ecdsa_384_pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PRIVATE KEY----- 2 | MIGkAgEBBDD3dcLYMCsBbWxLYEQybGLLM6eUtV3ANwkys6qIxd39ZBIJOXQ6Rh53 3 | xIuu1X8HFlygBwYFK4EEACKhZANiAASWQhcqgIlNqJCXnzncp4aTBiGpG15JJssG 4 | 1M5eI3wHQlGkIPpRQ1azuRkpODZREXfIhak/vv378nbAnNoJE69h+xwi1W4hHsz4 5 | qlwatHXJMwcpitiwhzPQZCbbjpuIZjQ= 6 | -----END EC PRIVATE KEY----- 7 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_ecdsa_384_pem_pw: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: AES-128-CBC,578CCBDEBACEA1887BD7E416B5644199 4 | 5 | 55LvNV4jryWi7gkFMIRChGAoI18K+3GDuqBnRQ5GosqtVDa94XGZ38UcbY9BEqas 6 | G6S5JgS00UKFUVOvYiwcZ+hGG4LW38Q6eDo82notKIrVd1GSlXkAEInrXNwuK0kl 7 | OTQ3wSRrbjlndB4Taut3YKu3LqpNfAcA1q/KabjXTsLX80tj2ONMrLMikSqut1tr 8 | uKaNYDsxhW+wm1seFKYxUOHJ7M3eRhd7DPL5LuyIXR0= 9 | -----END EC PRIVATE KEY----- 10 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_ecdsa_384_pkcs8: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIG2AgEAMBAGByqGSM49AgEGBSuBBAAiBIGeMIGbAgEBBDD3dcLYMCsBbWxLYEQy 3 | bGLLM6eUtV3ANwkys6qIxd39ZBIJOXQ6Rh53xIuu1X8HFlyhZANiAASWQhcqgIlN 4 | qJCXnzncp4aTBiGpG15JJssG1M5eI3wHQlGkIPpRQ1azuRkpODZREXfIhak/vv37 5 | 8nbAnNoJE69h+xwi1W4hHsz4qlwatHXJMwcpitiwhzPQZCbbjpuIZjQ= 6 | -----END PRIVATE KEY----- 7 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_ecdsa_384_pkcs8.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAElkIXKoCJTaiQl5853KeGkwYhqRteSSbL 3 | BtTOXiN8B0JRpCD6UUNWs7kZKTg2URF3yIWpP779+/J2wJzaCROvYfscItVuIR7M 4 | +KpcGrR1yTMHKYrYsIcz0GQm246biGY0 5 | -----END PUBLIC KEY----- 6 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_ecdsa_384_pkcs8_pw: -------------------------------------------------------------------------------- 1 | -----BEGIN ENCRYPTED PRIVATE KEY----- 2 | MIIBHDBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIohYB0kuf38cCAggA 3 | MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAECBBDU9x93yJ82oFkEaN8CK4BTBIHA 4 | 74OxXzZLYTPnedtq5wq6j4Dq4TNtyp6zqKPTiB3nva6QsrO8ekzf+lc4rj3+Tald 5 | GuAIysEKglscGLb4er53tuzceYE0R18yMQgK3/RAHcf9K9UkfeXkAlVTJGAwj0LE 6 | tBD2b/q5B4lf6ofGs+UCbQdJMFEGa4fcPUAeSmp4ftoLoCmizEo2AtnWBoR6DQH6 7 | wUDaC3/xMZpz70CBeNw06KAqO75lQgFtQS5MDz/OvBIu6jaYs46Dpg6qCi+3R35J 8 | -----END ENCRYPTED PRIVATE KEY----- 9 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_ecdsa_384_rfc4716.pub: -------------------------------------------------------------------------------- 1 | ---- BEGIN SSH2 PUBLIC KEY ---- 2 | Comment: "384-bit ECDSA, converted by miko@YUE from OpenSSH" 3 | AAAAE2VjZHNhLXNoYTItbmlzdHAzODQAAAAIbmlzdHAzODQAAABhBJZCFyqAiU2okJefOd 4 | ynhpMGIakbXkkmywbUzl4jfAdCUaQg+lFDVrO5GSk4NlERd8iFqT++/fvydsCc2gkTr2H7 5 | HCLVbiEezPiqXBq0dckzBymK2LCHM9BkJtuOm4hmNA== 6 | ---- END SSH2 PUBLIC KEY ---- 7 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_ecdsa_521_openssh: -------------------------------------------------------------------------------- 1 | -----BEGIN OPENSSH PRIVATE KEY----- 2 | b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAArAAAABNlY2RzYS 3 | 1zaGEyLW5pc3RwNTIxAAAACG5pc3RwNTIxAAAAhQQBZN+bK7Xj/bcAsGCr1PaLzAYu+w3e 4 | pRAT6xWjBG9AmXWeTAt50qn5Rh0VpEm1KY3T3Tu3GEDaSvWFx2zUjuYW1NYBWYMohhccCW 5 | GM/DQI3nQVzIMh+CVqZSuRUJuT+XL2oJSLQvapCoqFF4QnOu2DGAbYr15VHtD4CKupGx06 6 | m1+vuTcAAAEY56EKgOehCoAAAAATZWNkc2Etc2hhMi1uaXN0cDUyMQAAAAhuaXN0cDUyMQ 7 | AAAIUEAWTfmyu14/23ALBgq9T2i8wGLvsN3qUQE+sVowRvQJl1nkwLedKp+UYdFaRJtSmN 8 | 0907txhA2kr1hcds1I7mFtTWAVmDKIYXHAlhjPw0CN50FcyDIfglamUrkVCbk/ly9qCUi0 9 | L2qQqKhReEJzrtgxgG2K9eVR7Q+AirqRsdOptfr7k3AAAAQgDeJefvwF/LJrhUok7XvKgI 10 | WcZ2BoXq2ebXKSDC4GyYElLhjLtz4eIxp0kySKDqvw0RrelJV7dqbiItueACXH5uDgAAAB 11 | NUaGlzIGlzIGEgdGVzdCBrZXkhAQIDBAUGBw== 12 | -----END OPENSSH PRIVATE KEY----- 13 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_ecdsa_521_openssh.pub: -------------------------------------------------------------------------------- 1 | ecdsa-sha2-nistp521 AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAFk35srteP9twCwYKvU9ovMBi77Dd6lEBPrFaMEb0CZdZ5MC3nSqflGHRWkSbUpjdPdO7cYQNpK9YXHbNSO5hbU1gFZgyiGFxwJYYz8NAjedBXMgyH4JWplK5FQm5P5cvaglItC9qkKioUXhCc67YMYBtivXlUe0PgIq6kbHTqbX6+5Nw== This is a test key! 2 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_ecdsa_521_openssh_pw: -------------------------------------------------------------------------------- 1 | -----BEGIN OPENSSH PRIVATE KEY----- 2 | b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABCH9NIw7T 3 | kdQ3+vJ7X7mK9mAAAAEAAAAAEAAACsAAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlz 4 | dHA1MjEAAACFBAFk35srteP9twCwYKvU9ovMBi77Dd6lEBPrFaMEb0CZdZ5MC3nSqflGHR 5 | WkSbUpjdPdO7cYQNpK9YXHbNSO5hbU1gFZgyiGFxwJYYz8NAjedBXMgyH4JWplK5FQm5P5 6 | cvaglItC9qkKioUXhCc67YMYBtivXlUe0PgIq6kbHTqbX6+5NwAAASBhW6bs4n2BCSwr/d 7 | 36a0+zTe0UZIrEPZR1bVKIdUvsGzT6m9vt+X72Qzx+RtatepwcddgU7Y9MnO0Idn6N24DM 8 | YeG75MHMX4kVOpaLDyCQe6xlFJevAJUnsv+cLLih3kv+YSg3sTb3GIYLrxwgngPKkCiG+F 9 | 69gbLh/nxxqbLzl67Xt5Yblmy6lV+sZRJMrNUQT66+2WX4aN2MLfAM0Umaue+aq4ijwV4+ 10 | RNXNwXv/Eyhac2jDQW2+UgdWVSjqNwWmgaSi6m2gXKXIWxggdwgJlklVIQJIPkTZHd5r4P 11 | KI5MysGGZYoFU209vyiii4nY2zckbuyM1j1AwzHwfqIMka/+Zy+h4yVupwljm+NncOy82q 12 | 5x/hgkh3zs+zCkZPPt8= 13 | -----END OPENSSH PRIVATE KEY----- 14 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_ecdsa_521_pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PRIVATE KEY----- 2 | MIHcAgEBBEIA3iXn78Bfyya4VKJO17yoCFnGdgaF6tnm1ykgwuBsmBJS4Yy7c+Hi 3 | MadJMkig6r8NEa3pSVe3am4iLbngAlx+bg6gBwYFK4EEACOhgYkDgYYABAFk35sr 4 | teP9twCwYKvU9ovMBi77Dd6lEBPrFaMEb0CZdZ5MC3nSqflGHRWkSbUpjdPdO7cY 5 | QNpK9YXHbNSO5hbU1gFZgyiGFxwJYYz8NAjedBXMgyH4JWplK5FQm5P5cvaglItC 6 | 9qkKioUXhCc67YMYBtivXlUe0PgIq6kbHTqbX6+5Nw== 7 | -----END EC PRIVATE KEY----- 8 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_ecdsa_521_pem_pw: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: AES-128-CBC,CDE898660DF24DC4638A0C291D395218 4 | 5 | ZQz9iMCd17RSwBBzi5dMk4hom1b9KKsfwCMOhfnh5bNtmMmwy00GoCDZgNmAsezC 6 | vQ/t5f0S8ZNtJaUOr2JgQl30wPP7GAWcc7BCJP3Qp8wqqF4ByEbsIvcX5nmIT4ft 7 | RK6SjBEU5HrsZEB5hOyl81C1ZwiqK8QgYOb034y2scT+CunraBOvXKiffuDUs0NO 8 | hyulD92+jmfGlReoLFZjcPFH+H099QvZwKCoQ57hxrnVHsmozRAaPoPdWAMNHrkq 9 | B6OLFk5UMge5Ctolb8JEK8fNdRj5xTNT7Xh99G8edT8= 10 | -----END EC PRIVATE KEY----- 11 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_ecdsa_521_pkcs8: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIHuAgEAMBAGByqGSM49AgEGBSuBBAAjBIHWMIHTAgEBBEIA3iXn78Bfyya4VKJO 3 | 17yoCFnGdgaF6tnm1ykgwuBsmBJS4Yy7c+HiMadJMkig6r8NEa3pSVe3am4iLbng 4 | Alx+bg6hgYkDgYYABAFk35srteP9twCwYKvU9ovMBi77Dd6lEBPrFaMEb0CZdZ5M 5 | C3nSqflGHRWkSbUpjdPdO7cYQNpK9YXHbNSO5hbU1gFZgyiGFxwJYYz8NAjedBXM 6 | gyH4JWplK5FQm5P5cvaglItC9qkKioUXhCc67YMYBtivXlUe0PgIq6kbHTqbX6+5 7 | Nw== 8 | -----END PRIVATE KEY----- 9 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_ecdsa_521_pkcs8.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIGbMBAGByqGSM49AgEGBSuBBAAjA4GGAAQBZN+bK7Xj/bcAsGCr1PaLzAYu+w3e 3 | pRAT6xWjBG9AmXWeTAt50qn5Rh0VpEm1KY3T3Tu3GEDaSvWFx2zUjuYW1NYBWYMo 4 | hhccCWGM/DQI3nQVzIMh+CVqZSuRUJuT+XL2oJSLQvapCoqFF4QnOu2DGAbYr15V 5 | HtD4CKupGx06m1+vuTc= 6 | -----END PUBLIC KEY----- 7 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_ecdsa_521_pkcs8_pw: -------------------------------------------------------------------------------- 1 | -----BEGIN ENCRYPTED PRIVATE KEY----- 2 | MIIBXTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIj/klIHUYLiQCAggA 3 | MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAECBBA7Rd+K0DxULl6ZqNjQB0QiBIIB 4 | AKnis0COKrS7sq9kRq08FksIbkGJi+i0z/JQ3txzqWIE6NLgAkiZ7EJjk2DyTj5+ 5 | XbNQwZB456Wt+6LxJQesRxL2DYrRZkWbmUIRIurdO0t2b0ibdAPoubEKW+SvhS6l 6 | GihBpM3njn/C6z67P7DekGmWBWdkk36qaBKaYVQsE53sQ2whAtZt2EKrJxjONKBI 7 | z5Yak6S00tgjHTf/DBSVLnh/2Y+Q1uGxmzgJORmtexssmqeVmF/uJhyOcshyIPQn 8 | frpJ6Rw/4aLckxjZ5nwlULFM1B/3hGi/IH+rfcQOg0Jv7WnP/arfQyylWnPq4V8P 9 | ztPdEmIvZ5+OADu9zhbZHX4= 10 | -----END ENCRYPTED PRIVATE KEY----- 11 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_ecdsa_521_rfc4716.pub: -------------------------------------------------------------------------------- 1 | ---- BEGIN SSH2 PUBLIC KEY ---- 2 | Comment: "521-bit ECDSA, converted by miko@YUE from OpenSSH" 3 | AAAAE2VjZHNhLXNoYTItbmlzdHA1MjEAAAAIbmlzdHA1MjEAAACFBAFk35srteP9twCwYK 4 | vU9ovMBi77Dd6lEBPrFaMEb0CZdZ5MC3nSqflGHRWkSbUpjdPdO7cYQNpK9YXHbNSO5hbU 5 | 1gFZgyiGFxwJYYz8NAjedBXMgyH4JWplK5FQm5P5cvaglItC9qkKioUXhCc67YMYBtivXl 6 | Ue0PgIq6kbHTqbX6+5Nw== 7 | ---- END SSH2 PUBLIC KEY ---- 8 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_ed25519_openssh: -------------------------------------------------------------------------------- 1 | -----BEGIN OPENSSH PRIVATE KEY----- 2 | b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW 3 | QyNTUxOQAAACC9F7IhXEQ6eh6bKGpPDnYogTCYTNlCrMzU8aBku3SfvgAAAJiavUZAmr1G 4 | QAAAAAtzc2gtZWQyNTUxOQAAACC9F7IhXEQ6eh6bKGpPDnYogTCYTNlCrMzU8aBku3Sfvg 5 | AAAEDVvPqQHjnRzlV/e2kq+R5egY12xCIw9mJIuVWBm05ZBL0XsiFcRDp6Hpsoak8OdiiB 6 | MJhM2UKszNTxoGS7dJ++AAAAE1RoaXMgaXMgYSB0ZXN0IGtleSEBAg== 7 | -----END OPENSSH PRIVATE KEY----- 8 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_ed25519_openssh.pub: -------------------------------------------------------------------------------- 1 | ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL0XsiFcRDp6Hpsoak8OdiiBMJhM2UKszNTxoGS7dJ++ This is a test key! 2 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_ed25519_openssh_pw: -------------------------------------------------------------------------------- 1 | -----BEGIN OPENSSH PRIVATE KEY----- 2 | b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABBS5x65zJ 3 | 2KlBbJ8giugjyEAAAAEAAAAAEAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIL0XsiFcRDp6Hpso 4 | ak8OdiiBMJhM2UKszNTxoGS7dJ++AAAAoIG2oeen4YUUXyDj3RS2qGYLFhXBg5zjs6eWUt 5 | f/f7o7o41LkZavIAC3bBc8PTPQwXg6QnGtGNkQaHae1Xe1Ca0dFDivSiOtrKSWzvgObcFG 6 | JhEuxuPnFtNBVzpJGxJf3bCXZujIWobOQM5tNgJuVzpUUzWl0yYFUILAHS9AXwVnO1zUZ2 7 | Ddv7nyEbUXx1fGK4WFFBFGFxk9HDDQFxXqfiw= 8 | -----END OPENSSH PRIVATE KEY----- 9 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_ed25519_rfc4716.pub: -------------------------------------------------------------------------------- 1 | ---- BEGIN SSH2 PUBLIC KEY ---- 2 | Comment: "256-bit ED25519, converted by miko@YUE from OpenSSH" 3 | AAAAC3NzaC1lZDI1NTE5AAAAIL0XsiFcRDp6Hpsoak8OdiiBMJhM2UKszNTxoGS7dJ++ 4 | ---- END SSH2 PUBLIC KEY ---- 5 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_rsa_1024_openssh.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQC458k0igFgcvkrDjUKo0gIgPW0+7QEPck7/DXIpGAkHzHDTQLu7/IzxBDCL7iQhF2eQwaR/s9SXjs2DV/OT3SXM3QjJO4PS3nHkzfP7Zjqm9LGSicBgR8x5LPmxoNVA3qOInMP5xhhgbKYYusuBMAlpEgq/T9uCvLIuvRnGhBTDw== This is a test key! 2 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_rsa_1024_pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIICWwIBAAKBgQC458k0igFgcvkrDjUKo0gIgPW0+7QEPck7/DXIpGAkHzHDTQLu 3 | 7/IzxBDCL7iQhF2eQwaR/s9SXjs2DV/OT3SXM3QjJO4PS3nHkzfP7Zjqm9LGSicB 4 | gR8x5LPmxoNVA3qOInMP5xhhgbKYYusuBMAlpEgq/T9uCvLIuvRnGhBTDwIDAQAB 5 | AoGAD5UhBLd4pDssOm+pEqtt/6F2k3j+07itQ8vecHlBzOmAFRhhXeeEvs4QJ31E 6 | DZHKHfNCE32o1SUx0j1QTJ+vkIWHcQmLR89cLROlB4cyb+e4ki483ROr6niDNhni 7 | KeaeW9QGMEHIAbf8UbguA2vU4p+9wcemNiFUJcwiQ740zNECQQD2GyyQbzEUbiiw 8 | GjGbH131aVvO2FtYpYWckQhgfrBdwkLECUDRL4ggqGpOgjnF4WFXa2UC/BvLySAE 9 | jfwBhUy3AkEAwFbCKDQWIblrQoCeFHU75fASbCXwEGtMIO/+GT9hcpUAB5iQjwOe 10 | AMQEbs7aezSufGbIyUUL6AJBGoRGRVcEaQJALwEPqOJjyFgl00Sddtgt1OJzk3UF 11 | NVAfzcBxjiSEQNQKdnCh/ZILeNlRvH7o099w/QZY+5H1KR3XzKblm9C+zwJAavKS 12 | 6Tn1KHFqg8Lyo1uAn9160OnTb73JyfLIbo+Ahu704kRh9TPEspZMBLU+ZQ2pDAE3 13 | GjsrYKmIO89bJ4k4KQJADF9+tNJ1xtW1z/wS/u1IGTkMLYApyqUMf2ewf5yvD8yx 14 | H4PEeYEC96+kn6bdEErk6ssOP2O1n9jwIlRyZgcKOg== 15 | -----END RSA PRIVATE KEY----- 16 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_rsa_1024_pem.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PUBLIC KEY----- 2 | MIGJAoGBALjnyTSKAWBy+SsONQqjSAiA9bT7tAQ9yTv8NcikYCQfMcNNAu7v8jPE 3 | EMIvuJCEXZ5DBpH+z1JeOzYNX85PdJczdCMk7g9LeceTN8/tmOqb0sZKJwGBHzHk 4 | s+bGg1UDeo4icw/nGGGBsphi6y4EwCWkSCr9P24K8si69GcaEFMPAgMBAAE= 5 | -----END RSA PUBLIC KEY----- 6 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_rsa_1024_pem_pw: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: AES-128-CBC,E477849D4A0566B706D2DFDD516E2F3E 4 | 5 | mkf+MOS5kcOUMqKEyiBiBgrB3Lv4KFQyc7V26EkYIziNwriuKArhBv8Vt5SBmrzk 6 | z9nVqPVw/CgpTlf/4BkR78EHkV4DoCgt8JIOKz1kDl9GLyRPsHIPL+g0IpBg1+LK 7 | B0uDFoP5/aQfSl+5t1RODd11wrUg6T1BSRzRTJvzvXagrelVrZlxieTNYHd0B5AX 8 | eJyX39DpaEIoOfyfaQFWQIaMns2Vd1y0uYdhUd8DdTHyD176KNBW10qrbzjNrIDl 9 | 3TTx6RtU0m7qxRC1++BZ/ZeKo1EnUdzPzeFNq2mO2Th2i7n2VaSuYIrArAtewYCw 10 | CiZPVFFZhwWc6PqR27hqC5wn8nX2NrlmBHiJ16Jrkb1jLW6jUMOJRITtEjCEjcQO 11 | 05Jcj+dk60VduXG25N6EfH3Ff1P256fRZfJOaN1abyc9TlFPO701OStTLiKm/O8O 12 | CwOSHK75CAnvbeHeLxA7r5s+y10toEZw2eR6lbUnMsu9WkwF0J/6GbQh44sVfCIQ 13 | WNqwX76qCPxZWzMY2mLdNAl0noNMNZVlYlw1t6a23P7lzWXOOI/nO42braR/OApQ 14 | Xn6wiLh1CzL3CvgraDocbYEBGrx0wIiz/emKJKHDTuxbcR8QNYzcr1k7z6WWQP/8 15 | tiV/8xqneg4f4BM8zPat8fJXnr50ZB1u7UcLwDOK6ergkksRgIA7wJeL7yhZVJP8 16 | s39x8w57HSFY0JWIlap7hJDD7MnnLNbQzdJ4d4HyY53uOEtYA/hFzOPGEsWL+c90 17 | ulbWwNz2ew2VCUuTg4CDnsckR0OUGSXQIY4xUzcTwcw= 18 | -----END RSA PRIVATE KEY----- 19 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_rsa_1024_pkcs8: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBALjnyTSKAWBy+SsO 3 | NQqjSAiA9bT7tAQ9yTv8NcikYCQfMcNNAu7v8jPEEMIvuJCEXZ5DBpH+z1JeOzYN 4 | X85PdJczdCMk7g9LeceTN8/tmOqb0sZKJwGBHzHks+bGg1UDeo4icw/nGGGBsphi 5 | 6y4EwCWkSCr9P24K8si69GcaEFMPAgMBAAECgYAPlSEEt3ikOyw6b6kSq23/oXaT 6 | eP7TuK1Dy95weUHM6YAVGGFd54S+zhAnfUQNkcod80ITfajVJTHSPVBMn6+QhYdx 7 | CYtHz1wtE6UHhzJv57iSLjzdE6vqeIM2GeIp5p5b1AYwQcgBt/xRuC4Da9Tin73B 8 | x6Y2IVQlzCJDvjTM0QJBAPYbLJBvMRRuKLAaMZsfXfVpW87YW1ilhZyRCGB+sF3C 9 | QsQJQNEviCCoak6COcXhYVdrZQL8G8vJIASN/AGFTLcCQQDAVsIoNBYhuWtCgJ4U 10 | dTvl8BJsJfAQa0wg7/4ZP2FylQAHmJCPA54AxARuztp7NK58ZsjJRQvoAkEahEZF 11 | VwRpAkAvAQ+o4mPIWCXTRJ122C3U4nOTdQU1UB/NwHGOJIRA1Ap2cKH9kgt42VG8 12 | fujT33D9Blj7kfUpHdfMpuWb0L7PAkBq8pLpOfUocWqDwvKjW4Cf3XrQ6dNvvcnJ 13 | 8shuj4CG7vTiRGH1M8SylkwEtT5lDakMATcaOytgqYg7z1sniTgpAkAMX3600nXG 14 | 1bXP/BL+7UgZOQwtgCnKpQx/Z7B/nK8PzLEfg8R5gQL3r6Sfpt0QSuTqyw4/Y7Wf 15 | 2PAiVHJmBwo6 16 | -----END PRIVATE KEY----- 17 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_rsa_1024_pkcs8.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC458k0igFgcvkrDjUKo0gIgPW0 3 | +7QEPck7/DXIpGAkHzHDTQLu7/IzxBDCL7iQhF2eQwaR/s9SXjs2DV/OT3SXM3Qj 4 | JO4PS3nHkzfP7Zjqm9LGSicBgR8x5LPmxoNVA3qOInMP5xhhgbKYYusuBMAlpEgq 5 | /T9uCvLIuvRnGhBTDwIDAQAB 6 | -----END PUBLIC KEY----- 7 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_rsa_1024_rfc4716.pub: -------------------------------------------------------------------------------- 1 | ---- BEGIN SSH2 PUBLIC KEY ---- 2 | Comment: "1024-bit RSA, converted by miko@YUE from OpenSSH" 3 | AAAAB3NzaC1yc2EAAAADAQABAAAAgQC458k0igFgcvkrDjUKo0gIgPW0+7QEPck7/DXIpG 4 | AkHzHDTQLu7/IzxBDCL7iQhF2eQwaR/s9SXjs2DV/OT3SXM3QjJO4PS3nHkzfP7Zjqm9LG 5 | SicBgR8x5LPmxoNVA3qOInMP5xhhgbKYYusuBMAlpEgq/T9uCvLIuvRnGhBTDw== 6 | ---- END SSH2 PUBLIC KEY ---- 7 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_rsa_1536_openssh.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAwQCkYHef/kFhdtEwG4YZfanYY92cmDX9gqw7OE2dxMyQyj5Eyn/ztaIIERJGv2BG7TlEi8Gd83wFvSrqk4diHycQm2FbLtp258buy/PYCY3cvxYL1imUxt6aPeLphzxQpt2dSwCom6M5Dq/sxB4YV+lvVpWZEuIFzsfGtqiLO7U4x80lXC1430MtN5Z6nYTOVtktYkFJCmMSThYice6L4RHdTNejQZlmKGfLEKeR3wTwBIfLO9XFkSlHz2Uk4q/Clr0= This is a test key! 2 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_rsa_1536_pem.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PUBLIC KEY----- 2 | MIHJAoHBAKRgd5/+QWF20TAbhhl9qdhj3ZyYNf2CrDs4TZ3EzJDKPkTKf/O1oggR 3 | Eka/YEbtOUSLwZ3zfAW9KuqTh2IfJxCbYVsu2nbnxu7L89gJjdy/FgvWKZTG3po9 4 | 4umHPFCm3Z1LAKibozkOr+zEHhhX6W9WlZkS4gXOx8a2qIs7tTjHzSVcLXjfQy03 5 | lnqdhM5W2S1iQUkKYxJOFiJx7ovhEd1M16NBmWYoZ8sQp5HfBPAEh8s71cWRKUfP 6 | ZSTir8KWvQIDAQAB 7 | -----END RSA PUBLIC KEY----- 8 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_rsa_1536_pkcs8.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIHfMA0GCSqGSIb3DQEBAQUAA4HNADCByQKBwQCkYHef/kFhdtEwG4YZfanYY92c 3 | mDX9gqw7OE2dxMyQyj5Eyn/ztaIIERJGv2BG7TlEi8Gd83wFvSrqk4diHycQm2Fb 4 | Ltp258buy/PYCY3cvxYL1imUxt6aPeLphzxQpt2dSwCom6M5Dq/sxB4YV+lvVpWZ 5 | EuIFzsfGtqiLO7U4x80lXC1430MtN5Z6nYTOVtktYkFJCmMSThYice6L4RHdTNej 6 | QZlmKGfLEKeR3wTwBIfLO9XFkSlHz2Uk4q/Clr0CAwEAAQ== 7 | -----END PUBLIC KEY----- 8 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_rsa_1536_rfc4716.pub: -------------------------------------------------------------------------------- 1 | ---- BEGIN SSH2 PUBLIC KEY ---- 2 | Comment: "1536-bit RSA, converted by miko@YUE from OpenSSH" 3 | AAAAB3NzaC1yc2EAAAADAQABAAAAwQCkYHef/kFhdtEwG4YZfanYY92cmDX9gqw7OE2dxM 4 | yQyj5Eyn/ztaIIERJGv2BG7TlEi8Gd83wFvSrqk4diHycQm2FbLtp258buy/PYCY3cvxYL 5 | 1imUxt6aPeLphzxQpt2dSwCom6M5Dq/sxB4YV+lvVpWZEuIFzsfGtqiLO7U4x80lXC1430 6 | MtN5Z6nYTOVtktYkFJCmMSThYice6L4RHdTNejQZlmKGfLEKeR3wTwBIfLO9XFkSlHz2Uk 7 | 4q/Clr0= 8 | ---- END SSH2 PUBLIC KEY ---- 9 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_rsa_2048_openssh.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDdxjN0+2xc7pdreBqYc/mDRC8OuWrS7wre5fEUBpylorQjbhtUVUU+Ox/6RSZbbeNg3EvcWTT7NQY71w7LGSgiNK9bgU1K1516zpvY0F2IGgx9xZvvIJVELSXQRFgIBSFesamVZvJRd5+szgq1jmMTibo9fyPJoZLPys5SFxPHDeyKUz8lzYHVmuOhzOhSjSNHQGVP0Hoe8N7dQaFU40A8JSsUh567vgjXlts13KErGaBey244oe4J+xlwzWHsigAj1DoCGMaDdSQ8WfE/BEUJq5mNEp+GxQe4hHMwbbg2RJZZ8kFRKOiCUicQkVCFA3yWao+5odcgyI03sqfnrgkb This is a test key! 2 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_rsa_2048_pem.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PUBLIC KEY----- 2 | MIIBCgKCAQEA3cYzdPtsXO6Xa3gamHP5g0QvDrlq0u8K3uXxFAacpaK0I24bVFVF 3 | Pjsf+kUmW23jYNxL3Fk0+zUGO9cOyxkoIjSvW4FNStedes6b2NBdiBoMfcWb7yCV 4 | RC0l0ERYCAUhXrGplWbyUXefrM4KtY5jE4m6PX8jyaGSz8rOUhcTxw3silM/Jc2B 5 | 1ZrjoczoUo0jR0BlT9B6HvDe3UGhVONAPCUrFIeeu74I15bbNdyhKxmgXstuOKHu 6 | CfsZcM1h7IoAI9Q6AhjGg3UkPFnxPwRFCauZjRKfhsUHuIRzMG24NkSWWfJBUSjo 7 | glInEJFQhQN8lmqPuaHXIMiNN7Kn564JGwIDAQAB 8 | -----END RSA PUBLIC KEY----- 9 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_rsa_2048_pkcs8.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3cYzdPtsXO6Xa3gamHP5 3 | g0QvDrlq0u8K3uXxFAacpaK0I24bVFVFPjsf+kUmW23jYNxL3Fk0+zUGO9cOyxko 4 | IjSvW4FNStedes6b2NBdiBoMfcWb7yCVRC0l0ERYCAUhXrGplWbyUXefrM4KtY5j 5 | E4m6PX8jyaGSz8rOUhcTxw3silM/Jc2B1ZrjoczoUo0jR0BlT9B6HvDe3UGhVONA 6 | PCUrFIeeu74I15bbNdyhKxmgXstuOKHuCfsZcM1h7IoAI9Q6AhjGg3UkPFnxPwRF 7 | CauZjRKfhsUHuIRzMG24NkSWWfJBUSjoglInEJFQhQN8lmqPuaHXIMiNN7Kn564J 8 | GwIDAQAB 9 | -----END PUBLIC KEY----- 10 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_rsa_2048_rfc4716.pub: -------------------------------------------------------------------------------- 1 | ---- BEGIN SSH2 PUBLIC KEY ---- 2 | Comment: "2048-bit RSA, converted by miko@YUE from OpenSSH" 3 | AAAAB3NzaC1yc2EAAAADAQABAAABAQDdxjN0+2xc7pdreBqYc/mDRC8OuWrS7wre5fEUBp 4 | ylorQjbhtUVUU+Ox/6RSZbbeNg3EvcWTT7NQY71w7LGSgiNK9bgU1K1516zpvY0F2IGgx9 5 | xZvvIJVELSXQRFgIBSFesamVZvJRd5+szgq1jmMTibo9fyPJoZLPys5SFxPHDeyKUz8lzY 6 | HVmuOhzOhSjSNHQGVP0Hoe8N7dQaFU40A8JSsUh567vgjXlts13KErGaBey244oe4J+xlw 7 | zWHsigAj1DoCGMaDdSQ8WfE/BEUJq5mNEp+GxQe4hHMwbbg2RJZZ8kFRKOiCUicQkVCFA3 8 | yWao+5odcgyI03sqfnrgkb 9 | ---- END SSH2 PUBLIC KEY ---- 10 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_rsa_4096_openssh.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCjoUqRX9tJ6YVj+E7Y0D9oy2SCUtoLmNqovMOc/bWB+Fg8GgEQNp99XvH6p+/XDIY4Mm91Q9o1rydWnAnHKs/9LOySpOUNbbflDsFstN8ZrqqyuPiIoZqawQvYexk0/0ZyNckA9fWAKZDJom1N5DutBK55Dgq40yHkpAB6nlqdWLY8Iab0V4LKTtNBGydrdPR8A10I54kDkFxx82NOZNJ9hq7QYYJDsL5Le/fB+PqIksP5qo2lfaPJe9xtx7m4+FIJRQQOLrFef/K0tO1Zv0U5dVNHmWWhyTN4tnwoEX4pZ7YkHHemcBFiX4xt70/zpvG5cuIPMwJIA5P72w7A5ifKSoTLrkQGy7yW/ezyxrm42Ng5jNQb+jsiuQhcnU/IKip7xO1K2zxSPhcwDRRIPGGwkCfMrr5PG4EVn9PJCeW/ydQpOm4ysJay8AZxyQohP1jRasus+qUGovOHD6rjiDrg0lDpJY7Cf6EtPU/Z0GFyf5WY4952lRiawIXLi0VOAexG/s/n+eIiwTiFOtnmURjRjLJ3TlkVy/C9Iw6TBaJsF9DW/MN4BeYMSAVodVjqWJyLQc7ulbymguMuNnkhDjQ1XR0SXNw9fzT9lE+NC+EOwxysOu+y9ErV6lA8mExwtmu/a9zHUnyunXUz8ZVFh6mUhP0Tc7X/F/Q2XTTxzzC4jw== This is a test key! 2 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_rsa_4096_pem.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PUBLIC KEY----- 2 | MIICCgKCAgEAo6FKkV/bSemFY/hO2NA/aMtkglLaC5jaqLzDnP21gfhYPBoBEDaf 3 | fV7x+qfv1wyGODJvdUPaNa8nVpwJxyrP/SzskqTlDW235Q7BbLTfGa6qsrj4iKGa 4 | msEL2HsZNP9GcjXJAPX1gCmQyaJtTeQ7rQSueQ4KuNMh5KQAep5anVi2PCGm9FeC 5 | yk7TQRsna3T0fANdCOeJA5BccfNjTmTSfYau0GGCQ7C+S3v3wfj6iJLD+aqNpX2j 6 | yXvcbce5uPhSCUUEDi6xXn/ytLTtWb9FOXVTR5llockzeLZ8KBF+KWe2JBx3pnAR 7 | Yl+Mbe9P86bxuXLiDzMCSAOT+9sOwOYnykqEy65EBsu8lv3s8sa5uNjYOYzUG/o7 8 | IrkIXJ1PyCoqe8TtSts8Uj4XMA0USDxhsJAnzK6+TxuBFZ/TyQnlv8nUKTpuMrCW 9 | svAGcckKIT9Y0WrLrPqlBqLzhw+q44g64NJQ6SWOwn+hLT1P2dBhcn+VmOPedpUY 10 | msCFy4tFTgHsRv7P5/niIsE4hTrZ5lEY0Yyyd05ZFcvwvSMOkwWibBfQ1vzDeAXm 11 | DEgFaHVY6lici0HO7pW8poLjLjZ5IQ40NV0dElzcPX80/ZRPjQvhDsMcrDrvsvRK 12 | 1epQPJhMcLZrv2vcx1J8rp11M/GVRYeplIT9E3O1/xf0Nl008c8wuI8CAwEAAQ== 13 | -----END RSA PUBLIC KEY----- 14 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_rsa_4096_pkcs8.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAo6FKkV/bSemFY/hO2NA/ 3 | aMtkglLaC5jaqLzDnP21gfhYPBoBEDaffV7x+qfv1wyGODJvdUPaNa8nVpwJxyrP 4 | /SzskqTlDW235Q7BbLTfGa6qsrj4iKGamsEL2HsZNP9GcjXJAPX1gCmQyaJtTeQ7 5 | rQSueQ4KuNMh5KQAep5anVi2PCGm9FeCyk7TQRsna3T0fANdCOeJA5BccfNjTmTS 6 | fYau0GGCQ7C+S3v3wfj6iJLD+aqNpX2jyXvcbce5uPhSCUUEDi6xXn/ytLTtWb9F 7 | OXVTR5llockzeLZ8KBF+KWe2JBx3pnARYl+Mbe9P86bxuXLiDzMCSAOT+9sOwOYn 8 | ykqEy65EBsu8lv3s8sa5uNjYOYzUG/o7IrkIXJ1PyCoqe8TtSts8Uj4XMA0USDxh 9 | sJAnzK6+TxuBFZ/TyQnlv8nUKTpuMrCWsvAGcckKIT9Y0WrLrPqlBqLzhw+q44g6 10 | 4NJQ6SWOwn+hLT1P2dBhcn+VmOPedpUYmsCFy4tFTgHsRv7P5/niIsE4hTrZ5lEY 11 | 0Yyyd05ZFcvwvSMOkwWibBfQ1vzDeAXmDEgFaHVY6lici0HO7pW8poLjLjZ5IQ40 12 | NV0dElzcPX80/ZRPjQvhDsMcrDrvsvRK1epQPJhMcLZrv2vcx1J8rp11M/GVRYep 13 | lIT9E3O1/xf0Nl008c8wuI8CAwEAAQ== 14 | -----END PUBLIC KEY----- 15 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_rsa_4096_rfc4716.pub: -------------------------------------------------------------------------------- 1 | ---- BEGIN SSH2 PUBLIC KEY ---- 2 | Comment: "4096-bit RSA, converted by miko@YUE from OpenSSH" 3 | AAAAB3NzaC1yc2EAAAADAQABAAACAQCjoUqRX9tJ6YVj+E7Y0D9oy2SCUtoLmNqovMOc/b 4 | WB+Fg8GgEQNp99XvH6p+/XDIY4Mm91Q9o1rydWnAnHKs/9LOySpOUNbbflDsFstN8Zrqqy 5 | uPiIoZqawQvYexk0/0ZyNckA9fWAKZDJom1N5DutBK55Dgq40yHkpAB6nlqdWLY8Iab0V4 6 | LKTtNBGydrdPR8A10I54kDkFxx82NOZNJ9hq7QYYJDsL5Le/fB+PqIksP5qo2lfaPJe9xt 7 | x7m4+FIJRQQOLrFef/K0tO1Zv0U5dVNHmWWhyTN4tnwoEX4pZ7YkHHemcBFiX4xt70/zpv 8 | G5cuIPMwJIA5P72w7A5ifKSoTLrkQGy7yW/ezyxrm42Ng5jNQb+jsiuQhcnU/IKip7xO1K 9 | 2zxSPhcwDRRIPGGwkCfMrr5PG4EVn9PJCeW/ydQpOm4ysJay8AZxyQohP1jRasus+qUGov 10 | OHD6rjiDrg0lDpJY7Cf6EtPU/Z0GFyf5WY4952lRiawIXLi0VOAexG/s/n+eIiwTiFOtnm 11 | URjRjLJ3TlkVy/C9Iw6TBaJsF9DW/MN4BeYMSAVodVjqWJyLQc7ulbymguMuNnkhDjQ1XR 12 | 0SXNw9fzT9lE+NC+EOwxysOu+y9ErV6lA8mExwtmu/a9zHUnyunXUz8ZVFh6mUhP0Tc7X/ 13 | F/Q2XTTxzzC4jw== 14 | ---- END SSH2 PUBLIC KEY ---- 15 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_rsa_768_openssh: -------------------------------------------------------------------------------- 1 | -----BEGIN OPENSSH PRIVATE KEY----- 2 | b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAdwAAAAdz 3 | c2gtcnNhAAAAAwEAAQAAAGEA2Hm3hkBQp5UIjURO6/VBG46/g0DE3cNWRxgdsOsQ 4 | /w8ynpvO+tRnQqarC6xmsNg+2kiKD9QeUs/O9GKFVh5+gKOx75te1dysX5+AdNRj 5 | UEzOfi9upnWLOYiTRrv5bVHXAAABoBEnz2cRJ89nAAAAB3NzaC1yc2EAAABhANh5 6 | t4ZAUKeVCI1ETuv1QRuOv4NAxN3DVkcYHbDrEP8PMp6bzvrUZ0KmqwusZrDYPtpI 7 | ig/UHlLPzvRihVYefoCjse+bXtXcrF+fgHTUY1BMzn4vbqZ1izmIk0a7+W1R1wAA 8 | AAMBAAEAAABhAKvBNwm/sb6lEpnzHqM8fiH9Spo7I3fIaoYR7kzW1S9pwYHyoXCG 9 | Yj+RuZiTew7JIu+4Kl5DZNnuP4V3swURYFvX/ufD++5Qs4kNmu39uFBiX3y2sW8C 10 | uySjsjjcgb+vAQAAADAEjSqGRZ0zY1NzZ2pxqlpOJVYT5+cebGlBxCbR+AJ1/IFh 11 | Pi5sQOp8N3nzPDbcUqIAAAAxAO7sYlU1v/3oyV8QjvqRXgmeB0wuxOGFImzox4sO 12 | 0HBeAxfCxYcQfZiC4uVSxF5glwAAADEA5/KZlRMxLcRTSJ6Yco0C8GOFH8+jqWMU 13 | aUez5zzukKy3D8ivg7Xc69oLf2FWPYDBAAAAE1RoaXMgaXMgYSB0ZXN0IGtleSEB 14 | AgMEBQYH 15 | -----END OPENSSH PRIVATE KEY----- 16 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_rsa_768_openssh.pub: -------------------------------------------------------------------------------- 1 | ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAYQDYebeGQFCnlQiNRE7r9UEbjr+DQMTdw1ZHGB2w6xD/DzKem8761GdCpqsLrGaw2D7aSIoP1B5Sz870YoVWHn6Ao7Hvm17V3Kxfn4B01GNQTM5+L26mdYs5iJNGu/ltUdc= comment for rsa/768 key 2 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_rsa_768_openssh_pw: -------------------------------------------------------------------------------- 1 | -----BEGIN OPENSSH PRIVATE KEY----- 2 | b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABAC 3 | J8hSzoIyLx3E5jPIB2+dAAAAEAAAAAEAAAB3AAAAB3NzaC1yc2EAAAADAQABAAAA 4 | YQDYebeGQFCnlQiNRE7r9UEbjr+DQMTdw1ZHGB2w6xD/DzKem8761GdCpqsLrGaw 5 | 2D7aSIoP1B5Sz870YoVWHn6Ao7Hvm17V3Kxfn4B01GNQTM5+L26mdYs5iJNGu/lt 6 | UdcAAAGg5KEoKEGcbJHtDO+YEzKTpVbR3vJgiVQa+uZRbxxF4MSa/8/4KmXVAe4F 7 | hcLVJ+lmuebATIlH/3E1nefqrshZNbStiJIDf810UBd0b4C56CPCgb3SUmS0FWeh 8 | TTFdqXmJhMFlhLlCNVYxJrTEAmpFIBuhmz9Unj2B/qhhwgtDJny6RXwNklfwdAh+ 9 | 0K2xI7nQMY+9n/80PrIetXxdrI9Rauh4MIIhVzgif5ps02VbJ8Ts2BMpFBzaS6gY 10 | +G/5IXqM2vmqIpe1zetvRCJP1WRTmaYGJ6El57m0OQ8ZwzCBGNGEfp74ouEIlS2A 11 | LMuhSUwCfHfUK19t5lzrjBvjQp4XutST/bbjKhIRdQOwK1nusZazivxNocLLEYzD 12 | UIL6OECmIRdeUVJZzQlYUvJR8oYVXvGX/cF/kA6ppyzZhoonBtGRwALplo6OfdOt 13 | pNPk/ZmlyIUmV+Eil522Q9WO3a+e7sCGxGbj/Ua8/C8NJHs/rRvyZ8yfL6lvJKMi 14 | Yk96FZiXS7rEi1p63A8oxgO4rYbghwIfXAN6UDgRpaM7ulC4Lao= 15 | -----END OPENSSH PRIVATE KEY----- 16 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_rsa_768_pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIBywIBAAJhANh5t4ZAUKeVCI1ETuv1QRuOv4NAxN3DVkcYHbDrEP8PMp6bzvrU 3 | Z0KmqwusZrDYPtpIig/UHlLPzvRihVYefoCjse+bXtXcrF+fgHTUY1BMzn4vbqZ1 4 | izmIk0a7+W1R1wIDAQABAmEAq8E3Cb+xvqUSmfMeozx+If1Kmjsjd8hqhhHuTNbV 5 | L2nBgfKhcIZiP5G5mJN7Dski77gqXkNk2e4/hXezBRFgW9f+58P77lCziQ2a7f24 6 | UGJffLaxbwK7JKOyONyBv68BAjEA7uxiVTW//ejJXxCO+pFeCZ4HTC7E4YUibOjH 7 | iw7QcF4DF8LFhxB9mILi5VLEXmCXAjEA5/KZlRMxLcRTSJ6Yco0C8GOFH8+jqWMU 8 | aUez5zzukKy3D8ivg7Xc69oLf2FWPYDBAjAz9+i/ngxfvzWl3uUqrVnl/6CYuoeK 9 | gjnltJBKt/MwrdJAZdYvNbAL71RJC0K5QIsCMQDTAoQv947E6RcvOIDNrXUgBhmk 10 | z/w+7BE0mfOTiX4rBcVgSZ1KwFckBXBySLXxK8ECMASNKoZFnTNjU3NnanGqWk4l 11 | VhPn5x5saUHEJtH4AnX8gWE+LmxA6nw3efM8NtxSog== 12 | -----END RSA PRIVATE KEY----- 13 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_rsa_768_pem.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PUBLIC KEY----- 2 | MGgCYQDYebeGQFCnlQiNRE7r9UEbjr+DQMTdw1ZHGB2w6xD/DzKem8761GdCpqsL 3 | rGaw2D7aSIoP1B5Sz870YoVWHn6Ao7Hvm17V3Kxfn4B01GNQTM5+L26mdYs5iJNG 4 | u/ltUdcCAwEAAQ== 5 | -----END RSA PUBLIC KEY----- 6 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_rsa_768_pem_pw: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | Proc-Type: 4,ENCRYPTED 3 | DEK-Info: AES-128-CBC,B8B44B077A4C4A63144875D0A8319272 4 | 5 | 4S9dwwHP6kvCq+PHpCOEuJV9eFZo30ujR4V4ju2GEDxoNzl+RvBurSABRv+MOwOO 6 | +7cXxFOCNFOnhKxvwENLyJ/wvkO7X0al1lF0yFHoF5scWFG1LRxQKp3kpW+k/ncW 7 | +eO72S7Er0fv3DbMC7ZqXXecHc5RauC16quRWqHrYuRHpGj8VqzveEz2r4XAg0zB 8 | OBq+osTF/fxydpncrtChRwcgyCZ7Er9eMEID0T+vlJFmuNEUYvYW9j4BVqMcmoKA 9 | qKr5vr95ss4Hq8lOnha4OQlVzod883QzB3MCMLFkE3e9x3DyvyfGgm0CIIZzz/I4 10 | 3w40pmq1tB/yrp2V8PvdC+ksWHx/2MFuzhcgeugfnrE0my9khsGLkaS2k1fbueBl 11 | s83tIODLBbvjS26KxrADo5vHltwGD9GK6CpnAbL4tS2YVHiOaaI8fqWjNNq8EoXI 12 | tmMve/dEej0HILbjIp0IqKs/rOtrTxf4UBKAhf+j2S8VxDq1gf28YR34zHEpzM3p 13 | bMTPlg0KZRYJ9x7VNz818a4FSBJOWMI8VXBbb7lW/iSQwvQ3orX5rhNrdkHa4B2W 14 | aYaiT78/MwUzjmexGRSgNhymDmHrNx76cg40MeWV6vU= 15 | -----END RSA PRIVATE KEY----- 16 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_rsa_768_pkcs8: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIIB5QIBADANBgkqhkiG9w0BAQEFAASCAc8wggHLAgEAAmEA2Hm3hkBQp5UIjURO 3 | 6/VBG46/g0DE3cNWRxgdsOsQ/w8ynpvO+tRnQqarC6xmsNg+2kiKD9QeUs/O9GKF 4 | Vh5+gKOx75te1dysX5+AdNRjUEzOfi9upnWLOYiTRrv5bVHXAgMBAAECYQCrwTcJ 5 | v7G+pRKZ8x6jPH4h/UqaOyN3yGqGEe5M1tUvacGB8qFwhmI/kbmYk3sOySLvuCpe 6 | Q2TZ7j+Fd7MFEWBb1/7nw/vuULOJDZrt/bhQYl98trFvArsko7I43IG/rwECMQDu 7 | 7GJVNb/96MlfEI76kV4JngdMLsThhSJs6MeLDtBwXgMXwsWHEH2YguLlUsReYJcC 8 | MQDn8pmVEzEtxFNInphyjQLwY4Ufz6OpYxRpR7PnPO6QrLcPyK+Dtdzr2gt/YVY9 9 | gMECMDP36L+eDF+/NaXe5SqtWeX/oJi6h4qCOeW0kEq38zCt0kBl1i81sAvvVEkL 10 | QrlAiwIxANMChC/3jsTpFy84gM2tdSAGGaTP/D7sETSZ85OJfisFxWBJnUrAVyQF 11 | cHJItfErwQIwBI0qhkWdM2NTc2dqcapaTiVWE+fnHmxpQcQm0fgCdfyBYT4ubEDq 12 | fDd58zw23FKi 13 | -----END PRIVATE KEY----- 14 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_rsa_768_pkcs8.pub: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MHwwDQYJKoZIhvcNAQEBBQADawAwaAJhANh5t4ZAUKeVCI1ETuv1QRuOv4NAxN3D 3 | VkcYHbDrEP8PMp6bzvrUZ0KmqwusZrDYPtpIig/UHlLPzvRihVYefoCjse+bXtXc 4 | rF+fgHTUY1BMzn4vbqZ1izmIk0a7+W1R1wIDAQAB 5 | -----END PUBLIC KEY----- 6 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_rsa_768_pkcs8_pw: -------------------------------------------------------------------------------- 1 | -----BEGIN ENCRYPTED PRIVATE KEY----- 2 | MIICTTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIEaKL7XuBIEICAggA 3 | MAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAEqBBCZ+XyUGrg7gYyFqeguoe1NBIIB 4 | 8Go4EfQEXAYL36fZ4VFayZ+TsC788ISC4fPlpw9mGDH2rzC0TvB8qAUhMaGkKyx3 5 | jxCs0jPObG3cW1W7R54ZN7Vc3HgXnqizEsImab8nejjJZc/MdgUU7vvUg+gPg6s2 6 | KdVIyJb5fQqKVR/412UEnZ5HZtKsi+L2EMBaorOWav7ZexEnJo9UTgdW1Fxt1LVy 7 | qZmwJgZ6M0tlniWlBJXmTlsiaUW8rgXi7X+0YQLYslboSQdRw+Wkkjks/mHi2720 8 | fuoc/n4gR+Ijc8p8VrB8cjvTVNRJ2Ldi1ecmZqnpY2nZ5+7rVAbMzb+1LrJjYxuI 9 | LICjRrJqI12/HGic1GQEz89pBKLQrO2S3yEDQfz88I5oEfG4tisKD4vctiWyp9BQ 10 | AT3NWGuOS1jYMXwLGGQOPbC84GzZbzrtdHXKvboLlPg5RX5Chhw05na53rue5XI+ 11 | pLRPr+ohw77Q9Dv0A4LZIJlDowdzmEzOl2fYluEHbFm0Qega+Dub+8U8eCejb9S4 12 | qBvZWpfNjNpcAypwHi9PHL7pHdY1w/l/Mwj/pn/4cN0dLz33u65sgDz590nkDVfG 13 | peomL/xbDKMHHFIG/217RpDkIPS0sRbIdO3DgnUIjTle4OGRTpCsMW6VKfPy4liv 14 | cRCMx2Tt+IfOdLWW38hi6u4= 15 | -----END ENCRYPTED PRIVATE KEY----- 16 | -------------------------------------------------------------------------------- /t/data/ssh/ssh_rsa_768_rfc4716.pub: -------------------------------------------------------------------------------- 1 | ---- BEGIN SSH2 PUBLIC KEY ---- 2 | Comment: "768-bit RSA, converted by miko@HIROKO from OpenSSH" 3 | AAAAB3NzaC1yc2EAAAADAQABAAAAYQDYebeGQFCnlQiNRE7r9UEbjr+DQMTdw1ZHGB2w6x 4 | D/DzKem8761GdCpqsLrGaw2D7aSIoP1B5Sz870YoVWHn6Ao7Hvm17V3Kxfn4B01GNQTM5+ 5 | L26mdYs5iJNGu/ltUdc= 6 | ---- END SSH2 PUBLIC KEY ---- 7 | -------------------------------------------------------------------------------- /t/data/text-CR.file: -------------------------------------------------------------------------------- 1 | line1 line2 line3 line4 line5 line6 line7 line8 line9 line10 line11 line12 line13 line14 line15 line16 line17 line18 line19 -------------------------------------------------------------------------------- /t/data/text-CRLF.file: -------------------------------------------------------------------------------- 1 | line1 2 | line2 3 | line3 4 | line4 5 | line5 6 | line6 7 | line7 8 | line8 9 | line9 10 | line10 11 | line11 12 | line12 13 | line13 14 | line14 15 | line15 16 | line16 17 | line17 18 | line18 19 | line19 20 | -------------------------------------------------------------------------------- /t/data/text-LF.file: -------------------------------------------------------------------------------- 1 | line1 2 | line2 3 | line3 4 | line4 5 | line5 6 | line6 7 | line7 8 | line8 9 | line9 10 | line10 11 | line11 12 | line12 13 | line13 14 | line14 15 | line15 16 | line16 17 | line17 18 | line18 19 | line19 20 | -------------------------------------------------------------------------------- /t/mbi_ltm_01load.t: -------------------------------------------------------------------------------- 1 | #!perl 2 | 3 | use strict; # restrict unsafe constructs 4 | use warnings; # enable optional warnings 5 | 6 | use Test::More tests => 2; 7 | 8 | BEGIN { 9 | use_ok('Math::BigInt::LTM'); 10 | use_ok('Math::BigInt'); # Math::BigInt is required for the tests 11 | }; 12 | 13 | diag "Math::BigInt VERSION=$Math::BigInt::VERSION\n"; 14 | -------------------------------------------------------------------------------- /t/mbi_ltm_bugs.t: -------------------------------------------------------------------------------- 1 | #!perl 2 | 3 | use strict; 4 | use warnings; 5 | 6 | use Test::More; 7 | 8 | BEGIN { 9 | plan skip_all => "requires Math::BigInt" unless eval { require Math::BigInt }; 10 | plan tests => 2; 11 | } 12 | 13 | use Math::BigInt lib => 'LTM'; 14 | 15 | my $V = $Math::BigInt::VERSION; 16 | 17 | # https://github.com/DCIT/perl-CryptX/issues/56 18 | { 19 | my ($x, $y); 20 | $x = Math::BigInt->new("2"); 21 | $y = Math::BigInt->new("-1"); 22 | is($x ** $y, $V < 1.999817 ? 'NaN' : 0); 23 | $x = Math::BigInt->new("-2"); 24 | $y = Math::BigInt->new("-2"); 25 | is($x ** $y, $V < 1.999817 ? 'NaN' : 0); 26 | } 27 | -------------------------------------------------------------------------------- /t/mbi_ltm_storable.t: -------------------------------------------------------------------------------- 1 | use strict; 2 | use warnings; 3 | use Test::More; 4 | 5 | BEGIN { 6 | plan skip_all => "requires Storable 2.0+" unless eval { require Storable && eval($Storable::VERSION) >= 2.0 }; 7 | plan tests => 1; 8 | } 9 | 10 | use Math::BigInt::LTM; 11 | 12 | use Storable qw(freeze thaw); 13 | 14 | my $num = Math::BigInt::LTM->_new(42); 15 | 16 | my $serialised = freeze $num; 17 | my $cloned = thaw $serialised; 18 | 19 | ok(!Math::BigInt::LTM->_acmp($cloned, $num)); 20 | -------------------------------------------------------------------------------- /t/pk_enc_pem.t: -------------------------------------------------------------------------------- 1 | use strict; 2 | use warnings; 3 | use Test::More tests => 27; 4 | 5 | use Crypt::PK::RSA; 6 | use Crypt::PK::DSA; 7 | use Crypt::PK::ECC; 8 | 9 | for my $f (qw/rsa-aes128.pem rsa-aes192.pem rsa-aes256.pem rsa-des.pem rsa-des3.pem rsa-seed.pem rsa-camellia128.pem rsa-camellia192.pem rsa-camellia256.pem/) { 10 | my $pk = Crypt::PK::RSA->new("t/data/$f", 'secret'); 11 | is($pk->is_private, 1, $f); 12 | } 13 | 14 | for my $f (qw/dsa-aes128.pem dsa-aes192.pem dsa-aes256.pem dsa-des.pem dsa-des3.pem dsa-seed.pem dsa-camellia128.pem dsa-camellia192.pem dsa-camellia256.pem/) { 15 | my $pk = Crypt::PK::DSA->new("t/data/$f", 'secret'); 16 | is($pk->is_private, 1, $f); 17 | } 18 | 19 | for my $f (qw/ec-aes128.pem ec-aes192.pem ec-aes256.pem ec-camellia128.pem ec-camellia192.pem ec-camellia256.pem ec-des.pem ec-des3.pem ec-seed.pem/) { 20 | my $pk = Crypt::PK::ECC->new("t/data/$f", 'secret'); 21 | is($pk->is_private, 1, $f); 22 | } 23 | -------------------------------------------------------------------------------- /t/wycheproof/README.txt: -------------------------------------------------------------------------------- 1 | * https://github.com/google/wycheproof 2 | * testvectors/*.json --------------------------------------------------------------------------------