OQS_STATUS OQS_KEX_rlwe_newhope_avx2_alice_0(UNUSED OQS_KEX *k, void **alice_priv, uint8_t **alice_msg, size_t *alice_msg_len) { OQS_STATUS ret; /* allocate public/private key pair */ *alice_msg = malloc(NEWHOPE_SENDABYTES); if (*alice_msg == NULL) { goto err; } *alice_priv = malloc(sizeof(poly)); if (*alice_priv == NULL) { goto err; } /* generate public/private key pair */ newhope_keygen(*alice_msg, (poly *) (*alice_priv)); *alice_msg_len = NEWHOPE_SENDABYTES; ret = OQS_SUCCESS; goto cleanup; err: ret = OQS_ERROR; OQS_MEM_insecure_free(*alice_msg); *alice_msg = NULL; OQS_MEM_secure_free(*alice_priv, sizeof(poly)); *alice_priv = NULL; cleanup: return ret; }
void CECPQ1_offer(uint8_t send[CECPQ1_OFFER_BYTES], CECPQ1_key* offer_key_output, RandomNumberGenerator& rng) { offer_key_output->m_x25519 = rng.random_vec(32); curve25519_basepoint(send, offer_key_output->m_x25519.data()); newhope_keygen(send + 32, &offer_key_output->m_newhope, rng, Newhope_Mode::BoringSSL); }
int main(void) { poly sk_a; unsigned char key_b[32]; unsigned char senda[NEWHOPE_SENDABYTES]; unsigned char sendb[NEWHOPE_SENDBBYTES]; unsigned long i; long t = 0; for(i=0;i<NRUNS;i++) { newhope_keygen(senda, &sk_a); newhope_sharedb(key_b, sendb, senda); t += hamming32(key_b); } printf("ones: %ld\n",t); printf("zeroes: %ld\n",256*NRUNS-t); printf("diff: %ld\n",256*NRUNS-2*t); return 0; }
int main(void) { clock_setup(); gpio_setup(); usart_setup(115200); rng_setup(); int i; unsigned char output[32]; poly sk; unsigned char key_a[32], key_b[32]; unsigned char senda[NEWHOPE_SENDABYTES]; unsigned char sendb[NEWHOPE_SENDBBYTES]; for(i=0;i<NTESTS;i++) { /*send_USART_str((unsigned char *)"starting to keygen\n");*/ newhope_keygen(senda,&sk); /*send_USART_str((unsigned char *)"starting to sharedb\n");*/ newhope_sharedb(key_a,sendb,senda); /*send_USART_str((unsigned char *)"starting to shareda\n");*/ newhope_shareda(key_b,&sk,sendb); if(memcmp(key_a,key_b,32)) { sprintf((char *)output, "Error in keys"); send_USART_str(output); } } sprintf((char *)output, "done!"); send_USART_str(output); signal_host(); return 0; }
int main(void) { poly sk_a; unsigned char key_a[32], key_b[32]; unsigned char senda[NTESTS*NEWHOPE_SENDABYTES]; unsigned char sendb[NTESTS*NEWHOPE_SENDBBYTES]; unsigned char seed[NEWHOPE_SEEDBYTES]; int i; for(i=0; i<NTESTS; i++) { t[i] = cpucycles(); randombytes(seed, NEWHOPE_SEEDBYTES); poly_uniform(&sk_a, seed); } print_results("poly_uniform: ", t, NTESTS); for(i=0; i<NTESTS; i++) { t[i] = cpucycles(); poly_ntt(&sk_a); } print_results("poly_ntt: ", t, NTESTS); for(i=0; i<NTESTS; i++) { t[i] = cpucycles(); poly_invntt(&sk_a); } print_results("poly_invntt: ", t, NTESTS); for(i=0; i<NTESTS; i++) { t[i] = cpucycles(); poly_getnoise(&sk_a,seed,0); } print_results("poly_getnoise: ", t, NTESTS); for(i=0; i<NTESTS; i++) { t[i] = cpucycles(); helprec(&sk_a, &sk_a, seed, 0); } print_results("helprec: ", t, NTESTS); for(i=0; i<NTESTS; i++) { t[i] = cpucycles(); rec(key_a, &sk_a, &sk_a); } print_results("rec: ", t, NTESTS); for(i=0; i<NTESTS; i++) { t[i] = cpucycles(); newhope_keygen(senda+i*NEWHOPE_SENDABYTES, &sk_a); } print_results("newhope_keygen: ", t, NTESTS); for(i=0; i<NTESTS; i++) { t[i] = cpucycles(); newhope_sharedb(key_b, sendb+i*NEWHOPE_SENDBBYTES, senda+i*NEWHOPE_SENDABYTES); } print_results("newhope_sharedb: ", t, NTESTS); for(i=0; i<NTESTS; i++) { t[i] = cpucycles(); newhope_shareda(key_a, &sk_a, sendb+i*NEWHOPE_SENDBBYTES); } print_results("newhope_shareda: ", t, NTESTS); return 0; }