int polynomial_division(Polynomial *g, Polynomial *h, Polynomial *q, Polynomial *r, int p){ /* * */ int t,k,l; k = g->deg + 1; l = h->deg + 1; t = find_zp_inverse(p,h->cof[l-1]); if(t == NOTSUCCESS){ printf("Not able to find zp inverse of %d\n",h->cof[h->deg]); return NOTSUCCESS; } //printf("inverse is -- %d\n",t); init_polynomial(r,l-2); for(i=0;i<=k-1;i++){ r->cof[i] = g->cof[i]; } init_polynomial(q,k-l); for(i=k-l;i>=0;i--){ q->cof[i] = ( t*(r->cof[i+l-1]) )%p; for(j=0;j<=l-1;++j){ r->cof[i+j] = (r->cof[i+j] - ( (q->cof[i]) * (h->cof[j]) )%p ) %p; } } return SUCCESS; }
int main(int c, char **a) { char * material = 0; char * ip = "127.0.0.1"; uint i = 0; OE oe = OperatingEnvironment_LinuxNew(); MiniMacs mm = 0; init_polynomial(); if (c < 2 || c > 4) { printf("multirun <material> [< server >]\n"); return -1; } if ( c >= 2 ) { material = a[1]; } if (c >= 3) { ip =a[3]; } mm =GenericMiniMacs_DefaultLoadNew(oe, material); printf("Multirun CAES\n"); printf("material taken from: %s\n",material); printf("ip: %s\n", ip); return run(material,ip,oe,mm); }
int main(int c, char **a) { OE oe = OperatingEnvironment_LinuxNew(); init_polynomial(); if (oe) { MR mr = 0; int i = 0; MiniMacs mm = setup_generic_minimacs(oe, a[1]); if (!mm) return -42; mm->get_id(); mr = mm->connect("127.0.0.1",2020); mm->init_heap(6); C(mm->secret_input(0,0,0)); C(mm->open(0)); C(mm->secret_input(0,1,Data_shallow("\001\001",1))); C(mm->secret_input(0,2,Data_shallow("\002\002",1))); for(i = 0; i < 256;++i) C(mm->mul(3,2,1)); C(mm->add(3,3,3)); C(mm->open(3)); oe->p(mm->heap_get(0)->codeword); _p("Mul res", mm->heap_get(3)->codeword,8,8); } failure: return 0; }
int main(int c, char **a) { OE oe = OperatingEnvironment_New(); InitStats(oe); init_polynomial(); if (oe) { MR mr = 0; int i = 0; MiniMacs mm = setup_generic_minimacs(oe, a[1]); if (mm == 0) { printf("Uable to create MiniMacs Instance, leaving\n"); return 42; } printf("Inviting 1 party to computate on port 2020\n"); mm->invite(1,2020); mm->init_heap(6); C(mm->secret_input(0,0,Data_shallow("Rasmus",7))); C(mm->open(0)); C(mm->secret_input(0,1,Data_shallow("\001",1))); C(mm->secret_input(0,2,Data_shallow("\001",1))); C(mm->mul(3,1,2)); C(mm->open(3)); SymmetricMiniMacs_destroy( & mm ); } PrintMeasurements(oe); failure: return 0; }
int main(int c, char **a) { char * material = 0, * bdt_material=0; char * ip = "127.0.0.1"; uint count = 0, i = 0; OE oe = OperatingEnvironment_LinuxNew(); MiniMacs mm = 0; int * pids = 0; InitStats(oe); init_polynomial(); if (c < 3 || c > 5) { printf("multirun <material> <bdt_material> <count> [< server >]\n"); return -1; } if ( c >= 3 ) { material = a[1]; bdt_material = a[2]; } if (c >= 4) { count = atoi(a[3]); } if (c >= 5) { ip =a[4]; } // No bit encoder mm=BitWiseMulPar2MiniMacs_DefaultLoadNew(oe, material, bdt_material, False); if (!mm) { printf("Unable to create MiniMacs, see errors above.\n"); return -1; } printf("Multirun CAES\n"); printf("material taken from: %s\n",material); printf("ip: %s\n", ip); printf("count: %u\n",count); pids = (int*)oe->getmem(sizeof(int)*count); for( i = 0; i < count; ++i) { pids[i] = fork(); if (pids[i] == 0) { return run(ip,i,count,oe,mm); } } CHECK_POINT_S("TOTAL"); for(i = 0;i < count;++i) { wait(pids[i]); } CHECK_POINT_E("TOTAL"); PrintMeasurements(oe); }
int main(int c, char **a) { char * material = 0, * bdt_material=0; char * ip = "127.0.0.1"; uint count = 0, i = 0; OE oe = OperatingEnvironment_LinuxNew(); MiniMacs mm = 0; int * pids = 0; InitStats(oe); init_polynomial(); if (c < 3 || c > 5) { printf("multirun <material> <bdt_material> <count> [< server >]\n"); return -1; } if ( c >= 3 ) { material = a[1]; bdt_material = a[2]; } if (c >= 4) { count = atoi(a[3]); } if (c >= 5) { ip =a[4]; } // loads the preprocessing material making MiniMac ready mm=BitWiseMulPar2MiniMacs_DefaultLoadFFTNew(oe, material, bdt_material, True); printf("Multirun CAES\n"); printf("material taken from: %s\n",material); printf("ip: %s\n", ip); printf("count: %u\n",count); pids = (int*)oe->getmem(sizeof(int)*count); // create processes for parallel execution ({count} of them) for( i = 0; i < count; ++i) { pids[i] = fork(); if (pids[i] == 0) { return run(ip,i,count,oe,mm); } } // wait for everybody to complete CHECK_POINT_S("TOTAL"); for(i = 0;i < count;++i) { wait(pids[i]); } CHECK_POINT_E("TOTAL"); PrintMeasurements(oe); }
main(){ int degree,i,*ptr,p,t,k,l,j; Polynomial *g = malloc(sizeof(Polynomial)); Polynomial *h = malloc(sizeof(Polynomial)); Polynomial *r = malloc(sizeof(Polynomial)); Polynomial *q = malloc(sizeof(Polynomial)); printf("Polynomial Division\n"); printf("Enter p of Zp[X] : "); scanf("%d",&p); printf("Enter polynomial g belonging to Z%d[X] :\n",p); printf("Enter k (degree+1): "); scanf("%d",&k); //k-1 is the degree init_polynomial(g,k-1); printf("Enter its coffecients\n"); for(i=0;i<= g->deg;i++){ scanf("%d",&g->cof[i]); } printf("Enter polynomial h belonging to Z%d[X] :\n",p); printf("Enter l (degree+1): "); scanf("%d",&l); //l-1 is the degree init_polynomial(h,l-1); printf("Enter its coffecients\n"); for(i=0;i<= h->deg;i++){ scanf("%d",&h->cof[i]); } //print_polynomial(g); //print_polynomial(h); if(polynomial_division(g, h, q, r, p) != SUCCESS){ printf("Not able to do polynomial division\n"); exit(1); } printf("q is:\n"); print_polynomial(q); printf("r is:\n"); print_polynomial(r); }
int main(int c, char **a) { char * material = 0; char * ip = "127.0.0.1"; uint count = 0, i = 0; OE oe = OperatingEnvironment_LinuxNew(); MiniMacs mm = 0; int * pids = 0; InitStats(oe); init_polynomial(); if (c < 2 || c > 4) { printf("multirun <material> <count> [< server >]\n"); return -1; } if ( c >= 2 ) { material = a[1]; } if (c >= 3) { count = atoi(a[2]); } if (c >= 4) { ip =a[3]; } mm=GenericFFTMiniMacs_new(oe,a[1]); printf("Multirun CAES\n"); printf("material taken from: %s\n",material); printf("ip: %s\n", ip); printf("count: %u\n",count); pids = (int*)oe->getmem(sizeof(int)*count); for( i = 0; i < count; ++i) { pids[i] = fork(); if (pids[i] == 0) { return run(material,ip,i,oe,mm); } } CHECK_POINT_S("TOTAL"); for(i = 0;i < count;++i) { wait(pids[i]); } CHECK_POINT_E("TOTAL"); PrintMeasurements(oe); }
int main(int argc, char ** args) { char s[256] = {0}; int i = 0; uint ls = 0; printf("Galois Field 2^8 Polish Notation Calculator.\n"); init_polynomial(); while(ls < 4 || memcmp("quit",s,4) != 0) { gf8 res = 0; int i = 0; printf("gf8>");fflush(stdout); ls = read_line(s,sizeof(s)); res = do_read(s,&i); printf("%02u\n",res); } }
void main( ) { init_polynomial( ); while(1){ input_degree( ); if(get_degree( ) <= -1) break; input_coef( ); print_polynomial( ); print_derivative( ); clear_polynomial( ); } }
int main(int c, char **a) { OE oe = (OE)OperatingEnvironment_LinuxNew(); MiniMacs mm = 0; Data input = 0; uint count=0,i=0; init_polynomial(); mm = GenericMiniMacs_DefaultLoadNew(oe,a[1]); InitStats(oe); if (!mm) { oe->p("Error could not create instance of MiniMacs"); OperatingEnvironment_LinuxDestroy(&oe); return -1; } { CliArg arg = (CliArg)oe->getmem(sizeof(*arg)); arg->file = a[2]; arg->oe = oe; oe->newthread(client,arg); } mm->init_heap(2); mm->invite(1,8080); printf("Got client ... \n"); input = Data_new(oe, mm->get_ltext()); for(i = 0; i < mm->get_ltext(); ++i) { input->data[i] = 'r'; } mm->secret_input(0,0,input); for(count = 0; count < COUNT; ++count) { CHECK_POINT_S("Mul server"); mm->mul(1,0,0); CHECK_POINT_E("Mul server"); } usleep(5); PrintMeasurements(oe); return 0; }
int main(int c, char **s) { OE oe = OperatingEnvironment_New(); uint ltext = 120, lcode = 256, nplayers = 2; MiniMacsEnc encoder = 0; MiniMacsTripleRep ** triples = 0; MiniMacsRep ** singles = 0; MiniMacsRep *** pairs = 0; BitDecomposedTriple ** t = 0; MiniMacsRep * compat = 0; uint ltriples=1, lsingles=1, lpairs=1, lbtriples=1; byte * buf = 0; uint lbuf = 0; init_polynomial(); encoder = MiniMacsEnc_MatrixNew(oe,lcode, ltext); compat = minimacs_fake_setup(oe, encoder, ltext, nplayers, lcode, &triples, ltriples, &singles, lsingles, &pairs, lpairs,0); minimacs_fake_bdt( oe, encoder, compat, &t, lbtriples); printf("Save/Load BitDecomposedTriples\n"); write_bdt(t[0], lbtriples, &buf, &lbuf); { BitDecomposedTriple * loaded_bdt = 0; uint lloaded_bdt = 0; DerRC rc = 0; uint i = 0; rc = read_bdt(buf, lbuf, &loaded_bdt, &lloaded_bdt); if (rc != DER_OK) { printf("Oh crap \n"); exit(-1); } if (!loaded_bdt) { printf("Oh crap nothing there\n"); return -2; } if (lloaded_bdt ==1 ){ printf("Yes we loaded one\n"); } else { printf("Oh, no this failes\n"); } for (i = 0;i < lloaded_bdt;++i) { int j = 0; if (loaded_bdt[i]->a == 0) { printf("[%u] has no a\n",i); } if (loaded_bdt[i]->b == 0) { printf("[%u] has no b\n",i); } if (loaded_bdt[i]->c == 0) { printf("[%u] has no c\n",i); } for(j = 0;j < 8;++j) { if (loaded_bdt[i]->abits[j] == 0) { printf("[%u] has no abits[%u]\n",i,j); } if (loaded_bdt[i]->bbits[j] == 0) { printf("[%u] has no abits[%u]\n",i,j); } } } } { FD fd = 0; oe->open("file bdt.fat", &fd); oe->write(fd, buf, &lbuf); oe->close(fd); } // minimacs_fake_bdt(oe, encoder, return 0; }
int main(int c, char **a) { printf("Aarhus University - Multiparty Computation AES\n"); printf("All rights reserved (C)\n"); if (c == 2 || c == 3 || c == 4) { MiniMacsRep * singles = 0; MiniMacsRep ** pairs = 0; MiniMacsTripleRep * triples; uint lsingles = 0; uint lpairs = 0; uint ltriples = 0; MiniMacs comp = 0; CArena arena = 0; OE oe = 0; uint myid = 0; char * ipaddr = "any"; uint port = 2020; if (c == 1) { printf("caes <raw_material> [<client>] \n"); return 0; } oe = OperatingEnvironment_LinuxNew(); arena = CArena_new(oe); init_polynomial(); InitStats(oe); printf(oe->get_version());printf("\n"); printf("Loading material from file %s ... \n", a[1]); load_shares(a[1], &triples, <riples, &singles, &lsingles, &pairs, &lpairs ); comp = GenericMiniMacs_DefaultNew(oe,arena, singles, lsingles, pairs, lpairs, triples, ltriples ); if (ltriples == 0 && lpairs == 0 && lsingles == 0) { printf("Loading %s failed ...\n", a[1]); return -1; } myid = minimacs_rep_whoami(singles[0]); if(myid == 0) { uint no = minimacs_rep_no_players(singles[0]); if (c >= 3) { port = atoi(a[2]); } if (no == 0) return -1; no--; printf("Waiting for %u players to connect on %s:%u.\n",no,ipaddr,port); comp->invite(no,port); } else { if (c >= 3) { ipaddr = a[2]; } else { ipaddr = "127.0.0.1"; } if (c >= 4) { port = atoi(a[3]); } comp->connect(ipaddr,port); } { byte key[128] = {0}; byte pltxt[128] = {0}; mpc_aes(comp,pltxt,key,0,0,0); } PrintMeasurements(oe); } else { printf("Usage %s <preprocessed material>\n",a[0]); return 0; } return 0; }
int main(int c, char **a) { OE oe = OperatingEnvironment_LinuxNew(); init_polynomial(); if (oe) { MR mr = 0; MiniMacs mm = setup_generic_minimacs(oe, a[1]); printf("Inviting 1 party to computate on port 2020\n"); mm->invite(1,2020); mm->init_heap(6); // test secret input and open { MiniMacsRep rep = 0; byte data[85] = {0}; uint i = 0; for(i = 0;i < 85;++i) { data[i] = (byte)((i*101+65537)%255); } C(mm->secret_input(0,0,Data_shallow(data,85))); C(mm->open(0)); rep = mm->heap_get(0); if (!rep) { printf("Nothing to open\n"); return -1; } for(i = 0;i < 85;++i) { if (rep->codeword[i] != data[i]) { printf("Failure at possition %u\n",i); return -1; } } printf("Secret Input Done\n"); } // test multiply { byte data1[85] = {0}; byte data2[85] = {0}; byte p[85] = {0}; MiniMacsRep rep = 0; uint i = 0; for(i = 0; i < 85;++i) { data1[i] = (i*101+65537) % 255; data2[i] = (i*31+257) % 255; p[i] = multiply(multiply(data1[i], data2[i]), 42); } C(mm->secret_input(0,0,Data_shallow(data1,85))); C(mm->secret_input(0,1,Data_shallow(data2,85))); memset(data1,42,85); C(mm->secret_input(0,2,Data_shallow(data1,85))); C(mm->mul(3,0,1)); C(mm->mul(4,2,3)); C(mm->open(4)); rep = mm->heap_get(4); if (!rep) { printf("Rep is null.\n"); return -1; } for(i = 0;i < 85;++i) { if (rep->codeword[i] != p[i]) { printf("Failed at pos %u expected 0x04 got %u\n",i,rep->codeword[i]); return -1; } } } GenericMiniMacs_destroy( & mm ); } failure: return 0; }