Beispiel #1
0
void newhope_sharedb(unsigned char *sharedkey, unsigned char *send, const unsigned char *received)
{
  poly sp, ep, v, a, pka, c, epp, bp;
  unsigned char seed[NEWHOPE_SEEDBYTES];
  unsigned char noiseseed[32];
  
  randombytes(noiseseed, 32);

  decode_a(&pka, seed, received);
  gen_a(&a, seed);

  poly_getnoise(&sp,noiseseed,0);
  poly_ntt(&sp);
  poly_getnoise(&ep,noiseseed,1);
  poly_ntt(&ep);

  poly_pointwise(&bp, &a, &sp);
  poly_add(&bp, &bp, &ep);
  
  poly_pointwise(&v, &pka, &sp);
  poly_bitrev(&v);
  poly_invntt(&v);

  poly_getnoise(&epp,noiseseed,2);
  poly_add(&v, &v, &epp);

  helprec(&c, &v, noiseseed, 3);

  encode_b(send, &bp, &c);
  
  rec(sharedkey, &v, &c);

  sha3256(sharedkey, sharedkey, 32);
}
Beispiel #2
0
int encode_inter(

  pbs_attribute  *attr,   /* ptr to pbs_attribute */
  tlist_head     *phead,  /* head of pbs_attribute list */
  const char    *atname, /* pbs_attribute name */
  const char    *rsname, /* resource name or null */
  int             mode,   /* encode mode, unused here */
  int             perm)   /* only used for resources */

  {
  if (mode == ATR_ENCODE_CLIENT)
    return (encode_b(attr, phead, atname, rsname, mode, perm));
  else
    return (encode_l(attr, phead, atname, rsname, mode, perm));
  }