#include "os.h" | |
#include <mp.h> | |
#include <libsec.h> | |
#include <bio.h> | |
void | |
main(void) | |
{ | |
RSApriv *rsa; | |
Biobuf b; | |
char *p; | |
int n; | |
mpint *clr, *enc, *clr2; | |
uchar buf[4096]; | |
uchar *e; | |
vlong start; | |
fmtinstall('B', mpconv); | |
rsa = rsagen(1024, 16, 0); | |
if(rsa == nil) | |
sysfatal("rsagen"); | |
Binit(&b, 0, OREAD); | |
clr = mpnew(0); | |
clr2 = mpnew(0); | |
enc = mpnew(0); | |
strtomp("123456789abcdef123456789abcdef123456789abcdef123456789abcdef", nil, 16, clr); | |
rsaencrypt(&rsa->pub, clr, enc); | |
start = nsec(); | |
for(n = 0; n < 10; n++) | |
rsadecrypt(rsa, enc, clr); | |
print("%lld\n", nsec()-start); | |
start = nsec(); | |
for(n = 0; n < 10; n++) | |
mpexp(enc, rsa->dk, rsa->pub.n, clr2); | |
print("%lld\n", nsec()-start); | |
if(mpcmp(clr, clr2) != 0) | |
print("%B != %B\n", clr, clr2); | |
print("> "); | |
while(p = Brdline(&b, '\n')){ | |
n = Blinelen(&b); | |
letomp((uchar*)p, n, clr); | |
print("clr %B\n", clr); | |
rsaencrypt(&rsa->pub, clr, enc); | |
print("enc %B\n", enc); | |
rsadecrypt(rsa, enc, clr); | |
print("clr %B\n", clr); | |
n = mptole(clr, buf, sizeof(buf), nil); | |
write(1, buf, n); | |
print("> "); | |
} | |
} |