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; }
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; } }
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; }
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; }