identest.c
来自「支持SSL v2/v3, TLS, PKCS #5, PKCS #7, PKCS」· C语言 代码 · 共 72 行
C
72 行
#include <stdio.h>#include <stdlib.h>#include "mpi.h"#include "mpprime.h"#include <sys/types.h>#include <time.h>#define MAX_PREC (4096 / MP_DIGIT_BIT)mp_err identity_test(void){ mp_size preca, precb; mp_err res; mp_int a, b; mp_int t1, t2, t3, t4, t5; preca = (rand() % MAX_PREC) + 1; precb = (rand() % MAX_PREC) + 1; mp_init(&a); mp_init(&b); mp_init(&t1); mp_init(&t2); mp_init(&t3); mp_init(&t4); mp_init(&t5); mpp_random_size(&a, preca); mpp_random_size(&b, precb); if (mp_cmp(&a, &b) < 0) mp_exch(&a, &b); MP_CHECKOK( mp_mod(&a, &b, &t1) ); /* t1 = a%b */ MP_CHECKOK( mp_div(&a, &b, &t2, &t3) ); /* t2 = a/b */ MP_CHECKOK( mp_mul(&b, &t2, &t3) ); /* t3 = (a/b)*b */ MP_CHECKOK( mp_add(&t1, &t3, &t4) ); /* t4 = a%b + (a/b)*b */ MP_CHECKOK( mp_sub(&t4, &a, &t5) ); /* t5 = a%b + (a/b)*b - a */ if (mp_cmp_z(&t5) != 0) { res = MP_UNDEF; goto CLEANUP; }CLEANUP: mp_clear(&a); mp_clear(&b); mp_clear(&t1); mp_clear(&t2); mp_clear(&t3); mp_clear(&t4); mp_clear(&t5); return res;}intmain(void){ unsigned int seed = (unsigned int)time(NULL); unsigned long count = 0; mp_err res; srand(seed); while (MP_OKAY == (res = identity_test())) { if ((++count % 100) == 0) fputc('.', stderr); } fprintf(stderr, "\ntest failed, err %d\n", res); return res;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?