X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fgcrypt%2Frsa.c;h=c026968a77806157ae44502bd490e35c43e3be69;hb=2c6b2d70e6640f39563ad7bb0aa0ba87f883848c;hp=eb9f58dbc06eb1cb34915d2ebc242f62afcc755b;hpb=b18d5b572992debb04a7851e43143711319243a0;p=tinc diff --git a/src/gcrypt/rsa.c b/src/gcrypt/rsa.c index eb9f58db..c026968a 100644 --- a/src/gcrypt/rsa.c +++ b/src/gcrypt/rsa.c @@ -297,7 +297,8 @@ bool rsa_public_encrypt(rsa_t *rsa, void *in, size_t len, void *out) { gcry_mpi_t outmpi = gcry_mpi_new(len * 8); gcry_mpi_powm(outmpi, inmpi, rsa->e, rsa->n); - int pad = len - (gcry_mpi_get_nbits(outmpi) + 7) / 8; + size_t out_bytes = (gcry_mpi_get_nbits(outmpi) + 7) / 8; + size_t pad = len - MIN(out_bytes, len); while(pad--) { *(char *)out++ = 0; @@ -315,7 +316,7 @@ bool rsa_private_decrypt(rsa_t *rsa, void *in, size_t len, void *out) { gcry_mpi_t outmpi = gcry_mpi_new(len * 8); gcry_mpi_powm(outmpi, inmpi, rsa->d, rsa->n); - int pad = len - (gcry_mpi_get_nbits(outmpi) + 7) / 8; + size_t pad = len - (gcry_mpi_get_nbits(outmpi) + 7) / 8; while(pad--) { *(char *)out++ = 0;