chiark / gitweb /
Import release 0.1.3
[secnet.git] / rsa.c
diff --git a/rsa.c b/rsa.c
index 03318ba16ba75849207a3be6311729fdceb56d43..81fb1b5cd7ea5587502043fd938409e652d8d2c3 100644 (file)
--- a/rsa.c
+++ b/rsa.c
@@ -62,6 +62,10 @@ static string_t rsa_sign(void *sst, uint8_t *data, uint32_t datalen)
 
     msize=mpz_sizeinbase(&st->n, 16);
 
+    if (datalen*2+4>=msize) {
+       fatal("rsa_sign: message too big\n");
+    }
+
     strcpy(buff,"0001");
 
     for (i=0; i<datalen; i++) {
@@ -69,7 +73,7 @@ static string_t rsa_sign(void *sst, uint8_t *data, uint32_t datalen)
        buff[5+i*2]=hexchars[data[i]&0xf];
     }
     buff[4+datalen*2]=0;
-
+    
     for (i=datalen*2+4; i<msize; i++)
        buff[i]='f';