aboutsummaryrefslogtreecommitdiff
path: root/libssh/wrapper.c
diff options
context:
space:
mode:
Diffstat (limited to 'libssh/wrapper.c')
-rw-r--r--libssh/wrapper.c165
1 files changed, 85 insertions, 80 deletions
diff --git a/libssh/wrapper.c b/libssh/wrapper.c
index f2011d88..a052c140 100644
--- a/libssh/wrapper.c
+++ b/libssh/wrapper.c
@@ -577,11 +577,11 @@ static int des3_set_key(struct crypto_struct *cipher, void *key) {
}
DES_set_odd_parity(key);
- DES_set_odd_parity(key + 8);
- DES_set_odd_parity(key + 16);
+ DES_set_odd_parity((void*)((uint8_t*)key + 8));
+ DES_set_odd_parity((void*)((uint8_t*)key + 16));
DES_set_key_unchecked(key, cipher->key);
- DES_set_key_unchecked(key + 8, cipher->key + sizeof(DES_key_schedule));
- DES_set_key_unchecked(key + 16, cipher->key + 2 * sizeof(DES_key_schedule));
+ DES_set_key_unchecked((void*)((uint8_t*)key + 8), (void*)((uint8_t*)cipher->key + sizeof(DES_key_schedule)));
+ DES_set_key_unchecked((void*)((uint8_t*)key + 16), (void*)((uint8_t*)cipher->key + 2 * sizeof(DES_key_schedule)));
}
return 0;
@@ -590,16 +590,16 @@ static int des3_set_key(struct crypto_struct *cipher, void *key) {
static void des3_encrypt(struct crypto_struct *cipher, void *in,
void *out, unsigned long len, void *IV) {
DES_ede3_cbc_encrypt(in, out, len, cipher->key,
- cipher->key + sizeof(DES_key_schedule),
- cipher->key + 2 * sizeof(DES_key_schedule),
+ (void*)((uint8_t*)cipher->key + sizeof(DES_key_schedule)),
+ (void*)((uint8_t*)cipher->key + 2 * sizeof(DES_key_schedule)),
IV, 1);
}
static void des3_decrypt(struct crypto_struct *cipher, void *in,
void *out, unsigned long len, void *IV) {
DES_ede3_cbc_encrypt(in, out, len, cipher->key,
- cipher->key + sizeof(DES_key_schedule),
- cipher->key + 2 * sizeof(DES_key_schedule),
+ (void*)((uint8_t*)cipher->key + sizeof(DES_key_schedule)),
+ (void*)((uint8_t*)cipher->key + 2 * sizeof(DES_key_schedule)),
IV, 0);
}
@@ -609,10 +609,10 @@ static void des3_1_encrypt(struct crypto_struct *cipher, void *in,
ssh_print_hexa("Encrypt IV before", IV, 24);
#endif
DES_ncbc_encrypt(in, out, len, cipher->key, IV, 1);
- DES_ncbc_encrypt(out, in, len, cipher->key + sizeof(DES_key_schedule),
- IV + 8, 0);
- DES_ncbc_encrypt(in, out, len, cipher->key + 2 * sizeof(DES_key_schedule),
- IV + 16, 1);
+ DES_ncbc_encrypt(out, in, len, (void*)((uint8_t*)cipher->key + sizeof(DES_key_schedule)),
+ (void*)((uint8_t*)IV + 8), 0);
+ DES_ncbc_encrypt(in, out, len, (void*)((uint8_t*)cipher->key + 2 * sizeof(DES_key_schedule)),
+ (void*)((uint8_t*)IV + 16), 1);
#ifdef DEBUG_CRYPTO
ssh_print_hexa("Encrypt IV after", IV, 24);
#endif
@@ -624,11 +624,11 @@ static void des3_1_decrypt(struct crypto_struct *cipher, void *in,
ssh_print_hexa("Decrypt IV before", IV, 24);
#endif
- DES_ncbc_encrypt(in, out, len, cipher->key + 2 * sizeof(DES_key_schedule),
+ DES_ncbc_encrypt(in, out, len, (void*)((uint8_t*)cipher->key + 2 * sizeof(DES_key_schedule)),
IV, 0);
- DES_ncbc_encrypt(out, in, len, cipher->key + sizeof(DES_key_schedule),
- IV + 8, 1);
- DES_ncbc_encrypt(in, out, len, cipher->key, IV + 16, 0);
+ DES_ncbc_encrypt(out, in, len, (void*)((uint8_t*)cipher->key + sizeof(DES_key_schedule)),
+ (void*)((uint8_t*)IV + 8), 1);
+ DES_ncbc_encrypt(in, out, len, cipher->key, (void*)((uint8_t*)IV + 16), 0);
#ifdef DEBUG_CRYPTO
ssh_print_hexa("Decrypt IV after", IV, 24);
@@ -637,90 +637,95 @@ static void des3_1_decrypt(struct crypto_struct *cipher, void *in,
#endif /* HAS_DES */
-/* the table of supported ciphers */
+/*
+ * The table of supported ciphers
+ *
+ * WARNING: If you modify crypto_struct, you must make sure the order is
+ * correct!
+ */
static struct crypto_struct ssh_ciphertab[] = {
#ifdef HAS_BLOWFISH
{
- .name = "blowfish-cbc",
- .blocksize = 8,
- .keylen = sizeof (BF_KEY),
- .key = NULL,
- .keysize = 128,
- .set_encrypt_key = blowfish_set_key,
- .set_decrypt_key = blowfish_set_key,
- .cbc_encrypt = blowfish_encrypt,
- .cbc_decrypt = blowfish_decrypt
+ "blowfish-cbc",
+ 8,
+ sizeof (BF_KEY),
+ NULL,
+ 128,
+ blowfish_set_key,
+ blowfish_set_key,
+ blowfish_encrypt,
+ blowfish_decrypt
},
#endif /* HAS_BLOWFISH */
#ifdef HAS_AES
{
- .name = "aes128-cbc",
- .blocksize = 16,
- .keylen = sizeof(AES_KEY),
- .key = NULL,
- .keysize = 128,
- .set_encrypt_key = aes_set_encrypt_key,
- .set_decrypt_key = aes_set_decrypt_key,
- .cbc_encrypt = aes_encrypt,
- .cbc_decrypt = aes_decrypt
+ "aes128-cbc",
+ 16,
+ sizeof(AES_KEY),
+ NULL,
+ 128,
+ aes_set_encrypt_key,
+ aes_set_decrypt_key,
+ aes_encrypt,
+ aes_decrypt
},
{
- .name = "aes192-cbc",
- .blocksize = 16,
- .keylen = sizeof(AES_KEY),
- .key = NULL,
- .keysize = 192,
- .set_encrypt_key = aes_set_encrypt_key,
- .set_decrypt_key = aes_set_decrypt_key,
- .cbc_encrypt = aes_encrypt,
- .cbc_decrypt = aes_decrypt
+ "aes192-cbc",
+ 16,
+ sizeof(AES_KEY),
+ NULL,
+ 192,
+ aes_set_encrypt_key,
+ aes_set_decrypt_key,
+ aes_encrypt,
+ aes_decrypt
},
{
- .name = "aes256-cbc",
- .blocksize = 16,
- .keylen = sizeof(AES_KEY),
- .key = NULL,
- .keysize = 256,
- .set_encrypt_key = aes_set_encrypt_key,
- .set_decrypt_key = aes_set_decrypt_key,
- .cbc_encrypt = aes_encrypt,
- .cbc_decrypt = aes_decrypt
+ "aes256-cbc",
+ 16,
+ sizeof(AES_KEY),
+ NULL,
+ 256,
+ aes_set_encrypt_key,
+ aes_set_decrypt_key,
+ aes_encrypt,
+ aes_decrypt
},
#endif /* HAS_AES */
#ifdef HAS_DES
{
- .name = "3des-cbc",
- .blocksize = 8,
- .keylen = sizeof(DES_key_schedule) * 3,
- .key = NULL,
- .keysize = 192,
- .set_encrypt_key = des3_set_key,
- .set_decrypt_key = des3_set_key,
- .cbc_encrypt = des3_encrypt,
- .cbc_decrypt = des3_decrypt
+ "3des-cbc",
+ 8,
+ sizeof(DES_key_schedule) * 3,
+ NULL,
+ 192,
+ des3_set_key,
+ des3_set_key,
+ des3_encrypt,
+ des3_decrypt
},
{
- .name = "3des-cbc-ssh1",
- .blocksize = 8,
- .keylen = sizeof(DES_key_schedule) * 3,
- .key = NULL,
- .keysize = 192,
- .set_encrypt_key = des3_set_key,
- .set_decrypt_key = des3_set_key,
- .cbc_encrypt = des3_1_encrypt,
- .cbc_decrypt = des3_1_decrypt
+ "3des-cbc-ssh1",
+ 8,
+ sizeof(DES_key_schedule) * 3,
+ NULL,
+ 192,
+ des3_set_key,
+ des3_set_key,
+ des3_1_encrypt,
+ des3_1_decrypt
},
#endif /* HAS_DES */
{
- .name = NULL,
- .blocksize = 0,
- .keylen = 0,
- .key = NULL,
- .keysize = 0,
- .set_encrypt_key = NULL,
- .set_decrypt_key = NULL,
- .cbc_encrypt = NULL,
- .cbc_decrypt = NULL
+ NULL,
+ 0,
+ 0,
+ NULL,
+ 0,
+ NULL,
+ NULL,
+ NULL,
+ NULL
}
};
#endif /* OPENSSL_CRYPTO */