1
1

crypto: Use size_t for len argument in encrypt and decrpyt fn

Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
Этот коммит содержится в:
Andreas Schneider 2018-11-30 17:23:37 +01:00
родитель 6d3672911b
Коммит c6ca62d7e1
4 изменённых файлов: 52 добавлений и 28 удалений

Просмотреть файл

@ -165,10 +165,14 @@ struct ssh_cipher_struct {
/* sets the new key for immediate use */
int (*set_encrypt_key)(struct ssh_cipher_struct *cipher, void *key, void *IV);
int (*set_decrypt_key)(struct ssh_cipher_struct *cipher, void *key, void *IV);
void (*encrypt)(struct ssh_cipher_struct *cipher, void *in, void *out,
unsigned long len);
void (*decrypt)(struct ssh_cipher_struct *cipher, void *in, void *out,
unsigned long len);
void (*encrypt)(struct ssh_cipher_struct *cipher,
void *in,
void *out,
size_t len);
void (*decrypt)(struct ssh_cipher_struct *cipher,
void *in,
void *out,
size_t len);
void (*aead_encrypt)(struct ssh_cipher_struct *cipher, void *in, void *out,
size_t len, uint8_t *mac, uint64_t seq);
int (*aead_decrypt_length)(struct ssh_cipher_struct *cipher, void *in,

Просмотреть файл

@ -596,20 +596,25 @@ static int evp_cipher_set_decrypt_key(struct ssh_cipher_struct *cipher,
/* EVP wrapper function for encrypt/decrypt */
static void evp_cipher_encrypt(struct ssh_cipher_struct *cipher,
void *in,
void *out,
unsigned long len) {
void *in,
void *out,
size_t len)
{
int outlen = 0;
int rc = 0;
rc = EVP_EncryptUpdate(cipher->ctx, (unsigned char *)out, &outlen, (unsigned char *)in, len);
rc = EVP_EncryptUpdate(cipher->ctx,
(unsigned char *)out,
&outlen,
(unsigned char *)in,
(int)len);
if (rc != 1){
SSH_LOG(SSH_LOG_WARNING, "EVP_EncryptUpdate failed");
return;
}
if (outlen != (int)len){
SSH_LOG(SSH_LOG_WARNING,
"EVP_EncryptUpdate: output size %d for %lu in",
"EVP_EncryptUpdate: output size %d for %zu in",
outlen,
len);
return;
@ -617,20 +622,25 @@ static void evp_cipher_encrypt(struct ssh_cipher_struct *cipher,
}
static void evp_cipher_decrypt(struct ssh_cipher_struct *cipher,
void *in,
void *out,
unsigned long len) {
void *in,
void *out,
size_t len)
{
int outlen = 0;
int rc = 0;
rc = EVP_DecryptUpdate(cipher->ctx, (unsigned char *)out, &outlen, (unsigned char *)in, len);
rc = EVP_DecryptUpdate(cipher->ctx,
(unsigned char *)out,
&outlen,
(unsigned char *)in,
(int)len);
if (rc != 1){
SSH_LOG(SSH_LOG_WARNING, "EVP_DecryptUpdate failed");
return;
}
if (outlen != (int)len){
SSH_LOG(SSH_LOG_WARNING,
"EVP_DecryptUpdate: output size %d for %lu in",
"EVP_DecryptUpdate: output size %d for %zu in",
outlen,
len);
return;
@ -747,8 +757,8 @@ evp_cipher_aead_encrypt(struct ssh_cipher_struct *cipher,
NULL,
&outlen,
(unsigned char *)in,
aadlen);
if (rc == 0 || outlen != aadlen) {
(int)aadlen);
if (rc == 0 || outlen != (int)aadlen) {
SSH_LOG(SSH_LOG_WARNING, "Failed to pass authenticated data");
return;
}
@ -759,7 +769,7 @@ evp_cipher_aead_encrypt(struct ssh_cipher_struct *cipher,
(unsigned char *)out + aadlen,
&outlen,
(unsigned char *)in + aadlen,
len - aadlen);
(int)len - aadlen);
if (rc != 1 || outlen != len - aadlen) {
SSH_LOG(SSH_LOG_WARNING, "EVP_EncryptUpdate failed");
return;
@ -826,7 +836,7 @@ evp_cipher_aead_decrypt(struct ssh_cipher_struct *cipher,
NULL,
&outlen,
(unsigned char *)complete_packet,
aadlen);
(int)aadlen);
if (rc == 0) {
SSH_LOG(SSH_LOG_WARNING, "Failed to pass authenticated data");
return SSH_ERROR;

Просмотреть файл

@ -405,14 +405,20 @@ static int aes_set_key(struct ssh_cipher_struct *cipher, void *key, void *IV) {
return 0;
}
static void aes_encrypt(struct ssh_cipher_struct *cipher, void *in, void *out,
unsigned long len) {
gcry_cipher_encrypt(cipher->key[0], out, len, in, len);
static void aes_encrypt(struct ssh_cipher_struct *cipher,
void *in,
void *out,
size_t len)
{
gcry_cipher_encrypt(cipher->key[0], out, len, in, len);
}
static void aes_decrypt(struct ssh_cipher_struct *cipher, void *in, void *out,
unsigned long len) {
gcry_cipher_decrypt(cipher->key[0], out, len, in, len);
static void aes_decrypt(struct ssh_cipher_struct *cipher,
void *in,
void *out,
size_t len)
{
gcry_cipher_decrypt(cipher->key[0], out, len, in, len);
}
static int

Просмотреть файл

@ -708,8 +708,10 @@ error:
return SSH_ERROR;
}
static void cipher_encrypt(struct ssh_cipher_struct *cipher, void *in, void *out,
unsigned long len)
static void cipher_encrypt(struct ssh_cipher_struct *cipher,
void *in,
void *out,
size_t len)
{
size_t outlen = 0;
size_t total_len = 0;
@ -763,8 +765,10 @@ static void cipher_encrypt_cbc(struct ssh_cipher_struct *cipher, void *in, void
}
static void cipher_decrypt(struct ssh_cipher_struct *cipher, void *in, void *out,
unsigned long len)
static void cipher_decrypt(struct ssh_cipher_struct *cipher,
void *in,
void *out,
size_t len)
{
size_t outlen = 0;
int rc = 0;