diff options
author | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
---|---|---|
committer | Taru Karttunen <taruti@taruti.net> | 2011-03-30 15:46:40 +0300 |
commit | e5888a1ffdae813d7575f5fb02275c6bb07e5199 (patch) | |
tree | d8d51eac403f07814b9e936eed0c9a79195e2450 /sys/src/libsec/port/rsatest.c |
Import sources from 2011-03-30 iso image
Diffstat (limited to 'sys/src/libsec/port/rsatest.c')
-rwxr-xr-x | sys/src/libsec/port/rsatest.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/sys/src/libsec/port/rsatest.c b/sys/src/libsec/port/rsatest.c new file mode 100755 index 000000000..c7b2e33a1 --- /dev/null +++ b/sys/src/libsec/port/rsatest.c @@ -0,0 +1,56 @@ +#include "os.h" +#include <mp.h> +#include <libsec.h> +#include <bio.h> + +void +main(void) +{ + int n; + vlong start; + char *p; + uchar buf[4096]; + Biobuf b; + RSApriv *rsa; + mpint *clr, *enc, *clr2; + + fmtinstall('B', mpfmt); + + 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("> "); + } +} |