Example #1
0
File: bce.c Project: loiluu/weshare
void BroadcastKEM_using_indicies(global_broadcast_params_t gbp,
				 broadcast_system_t sys, ct_t myct,
				 int *in_recip, int num_recip, element_t key)
{
  Gen_encr_prod_from_indicies(gbp, sys, in_recip, num_recip);
  if(DEBUG && 0) {
    printf("index product = ");
    element_out_str(stdout, 0, sys->encr_prod);
    printf("\n");
  }
  BroadcastKEM_using_product(gbp, sys, myct, key);
}
Example #2
0
File: bce.c Project: loiluu/weshare
void BroadcastKEM_using_bitvec(global_broadcast_params_t gbp,
			       broadcast_system_t sys, 
			       char *recip, ct_t myct, element_t key)
{

  Gen_encr_prod_from_bitvec(gbp, sys, recip);
  if(DEBUG && 0) {
    printf("bitvec product = ");
    element_out_str(stdout, 0, sys->encr_prod);
    printf("\n");
  }
  BroadcastKEM_using_product(gbp, sys, myct, key);
}
Example #3
0
int BCEEncrypt(byte *sys_params_path, byte *CT_C0_out, byte *CT_C1_out, byte *symmetric_key_out)
{
    global_broadcast_params_t gbs;
    broadcast_system_t sys;
    ct_t shared_CT;
    element_t symmetric_key;
    int retlen;

    if (sys_params_path == NULL)
        return 1;

    if (CT_C0_out == NULL)
        return 2;

    if (CT_C1_out == NULL)
        return 3;

    if (symmetric_key_out == NULL)
        return 4;

    LoadParams((char *) sys_params_path, &gbs, &sys);

    shared_CT = (ct_t) pbc_malloc(sizeof(struct ciphertext_s));

    BroadcastKEM_using_product(gbs, sys, shared_CT, symmetric_key);

    retlen = element_to_bytes(CT_C0_out, shared_CT->C0);
    if (retlen != CT_C0_LENGTH)
        return 5;

    retlen = element_to_bytes(CT_C1_out, shared_CT->C1);
    if (retlen != CT_C1_LENGTH)
        return 6;

    retlen = element_to_bytes(symmetric_key_out, symmetric_key);
    if (retlen != SYMMETRIC_KEY_LENGTH)
        return 7;

    element_random(symmetric_key);
    element_clear(symmetric_key);
    FreeCT(shared_CT);
    pbc_free(shared_CT);
    FreeBCS(sys);
    pbc_free(sys);
    FreeGBP(gbs);
    pbc_free(gbs);

    return 0;
}