コード例 #1
0
ファイル: dualview.c プロジェクト: dwinner/CppAppdev
int main(void)
{
   /* create Views object, initialize struct box view */
   union views box = {{YES, YELLOW, YES, GREEN, DASHED}};
   char binStr[8 * sizeof(unsigned int) + 1];

   printf("Original box settings:\n");
   showSettings(&box.st_view);
   printf("\nBox settings using unsigned int view:\n");
   showSettings1(box.ui_view);

   printf("bits are %s\n",
          intToBits(box.ui_view, binStr));
   box.ui_view &= ~FILL_MASK; /* clear fill bits */
   box.ui_view |= FILL_BLUE | FILL_GREEN; /* reset fill */
   box.ui_view ^= OPAQUE; /* toggle opacity */
   box.ui_view |= BORDER_RED; /* wrong approach */
   box.ui_view &= ~STYLE_MASK; /* clear style bits */
   box.ui_view |= B_DOTTED; /* set style to dotted*/
   printf("\nModified box settings:\n");
   showSettings(&box.st_view);
   printf("\nBox settings using unsigned int view:\n");
   showSettings1(box.ui_view);
   printf("bits are %s\n",
          intToBits(box.ui_view, binStr));

   return 0;
}
コード例 #2
0
bool Waters05::verify(CharmList & pk, ZR & M, CharmList & sig)
{
    G1 g;
    G1 g1;
    G1 g2;
    CharmListG1 u;
    G1 ut;
    G1 S1;
    G1 S2;
    CharmListZR m;
    G1 dotProd2 = group.init(G1_t, 1);
    
    g = pk[0].getG1();
    g1 = pk[1].getG1();
    g2 = pk[2].getG1();
    u = pk[3].getListG1();
    ut = pk[4].getG1();
    
    S1 = sig[0].getG1();
    S2 = sig[1].getG1();
    m = intToBits(M, l); // make sure this func works
    group.init(dotProd2, 1);
    for (int i = 0; i < l; i++)
    {
        dotProd2 = group.mul(dotProd2, group.exp(u[i], m[i]));
    }
    if ( ( (group.div(group.pair(S1, g), group.pair(S2, group.mul(ut, dotProd2)))) == (group.pair(g1, g2)) ) )
    {
        return true;
    }
    else
    {
        return false;
    }
}
コード例 #3
0
void Waters05::sign(CharmList & pk, G1 & sk, ZR & M, CharmList & sig)
{
    G1 g;
    G1 g1;
    G1 g2;
    CharmListG1 u;
    G1 ut;
    CharmListZR m;
    ZR r;
    G1 S2;
    G1 dotProd1 = group.init(G1_t, 1);
    G1 S1;
    
    g = pk[0].getG1();
    g1 = pk[1].getG1();
    g2 = pk[2].getG1();
    u = pk[3].getListG1();
    ut = pk[4].getG1();
    m = intToBits(M, l);

    r = group.random(ZR_t);
    S2 = group.exp(g, r);
    group.init(dotProd1, 1);
    for (int i = 0; i < l; i++)
    {
        dotProd1 = group.mul(dotProd1, group.exp(u[i], m[i]));
    }
    S1 = group.mul(sk, group.exp(group.mul(ut, dotProd1), r));
    sig.insert(0, S1);
    sig.insert(1, S2);
    return;
}
コード例 #4
0
ファイル: inverting.c プロジェクト: dwinner/CppAppdev
int main(void)
{
   char binStr[CHAR_BIT * sizeof(int) + 1];
   int number;

   puts("Enter integers and see them in binary.");
   puts("Non-numeric input terminates program.");
   while (scanf_s("%d", &number) == 1)
   {
      intToBits(number, binStr);
      printf("%d is\n", number);
      showBstr(binStr);
      putchar('\n');
      number = invertStart(number, 4);
      printf("Inverting the last 4 bits gives\n");
      showBstr(intToBits(number, binStr));
      putchar('\n');
   }
   puts("Bye!");

   return 0;
}