def runTest(self, election_data):
     """
     Test if pi_j in (G_q^3 x G_q^2 x G_q^N) x (Z_q^4 x Z_q^N x Z_q^N) x G_q^N x G_q^N
     >>> res = spit.runTest({'pi_j': [['1480087838687999167062277319226971465937398361948978274707177620948566648158947887443778075355786727283504482872057690365959166730453190661705498994966826611211532915013738003276107626571651493692562622786367479412644735268590556815783391245022975075238800164180689536399270977580972527519394411289783797442934321450170232285313916950968074179587743235918981784470174870877923174520421226017060743488051123269710434092139375033589815933577120323070201479153618533690271564291278766919709242079275351726228669769175956071768754349852181400656573533435625890370039947811031592353292327908040915715284998119942688467277259984379747580274991900799752536064523123588895312969400352579712157808515386261702471479371581552638089473706377244795393548370568509561973714473872948297015756800023897498146994562705194843155909557795876732844431713021058780230349498250949884936366280832566749304369077990485953443189018945331081579260533', '666271631535156629212810650139014919111978117934376212770194555116520156317377673809338778123454387225319467678165313127748703364713982305534906201188528767837819967889126862957837600657868468772930199055502079815422194365220186899549993047142195653428220109192511318189617891422414072869541825096382370935550652939682331396492295833561392918418009658593600292065183962729733563530649943816810545819693080740424733217910783278187728586357039640191108040001917880078272820776036273095983972821660075405709137827278434835612791331910737829138935411072198436259060167992536676748575402165188319033310975424494025065748299770831276568503502149424444843933294528133905275138645872111799795111569092049379634585607392439227227990769992673669298709824907717392759720692571525712477638505579054035577420120287146088364220902118990132000298701189716790477775907960288270560164037144900854105960320145629100053562344301809964605747933', '549632294048505038562638275242250808398936786190142619330826063197867660647913978091714920130241525179440118366553261236710149004983503060836711081007812974364223930533527047493779422964412658287718174688000783682663346470347465048443759059350951663506998888862122295354606947430840330400905626278325125786038494311649830820495720709417773633241796906124864657569381377992935684174429550724205047964940329614313102738513356037715391821239691176601915652379208506816230978713195174911645804814089253418098706933679099719953141323016063030592707021402751663488776023354985911250671144986834095575945758267121197657771661894235533107423836920890392686508366025524106788255744403923148917432846286510392322154971452800735342937051838915469999331655270919729378544426424508565243049098104066440836842740897656176490802047278021043063436493381967734264083620343483688348635186270042084223431304911583547704729913542731482207962640', ['1353035036548180823616557593350235149593153904045395214924516243526022339741387540508001388007263824310099317536124724333537544939913756092488944348824365107148271211248715201338235624176161880236122273605686943974677899827052326451278139124152838613949077236085357719817045027199825720772785524057780217654619141011330788154617831421684639087645115031058537575598160404488276822845299046008034040226702574079655296969483714313675239394044262114449204881441971629124100263689642976248622123173936746276594270267934113023831550178639026475447324473441415522698166227291607562506320226210700665877234921573591887383757444368921346211626414020602298256691346787766566353406176244159180807875700718533305786248115032235550087746731198490704525734308787210166706784529902713684480502167130478481459406593849379943160615508232388851823919219251784293515669726630264690093218511749261407987909455246227729641773135908224413262952022', '1355476328598398243278414207048576018974293096161773658890862702002784104614730264094803160360940779228121183523506789365114899279444822451226984193479745743007165330616418917199270151292321241442079707546857361165240633869151496558777827273557964995804872152534566037104646991687527131963150863951133241363145294170780253911745601443747448783787771443448851122944549331468444096960321287377227469110245373029783896817375211739949762328075849806905712832066687920838222531137721451618453835173674016051763036409615368500579153115663990977095678049890270270570851342401178918207939358480052263988368375698145753098117087000051105496855764879119137290369881524714803135219028176591624107096912255336009843417075766663573818608050874571943883821380049045140092154532826259364913032431573800579963433750058393221192900600372045149501548634516080042650074136952386375140638401633763702653344990733528010850112208035821765000595235'], ['2614267985772886894184317509569892916694699401632404828409578738776831824994906619447935080737203421537416388906652966474508061397685975656593852191607565737368180991979675677636572867773243843962868004287347721648821217582813993280581345893580749475977382921211066571232959560150968987741065108396582231161686895662707934932772315495544616621171113543759650976588187117766579415134501790123698549069081632910256530704923224872655001930060695983622237189512737085312315320360866787916820823993177033252774340799398564360155818381739972024286970903609815512857986107675011501933631730919918239175955807532955155667325356969032510780319857106436875744131653519404742751413691162942181438298245217344968996784963299750609106844704999935019237711681203549899606706388176779484836818831196845335239822554848464492315625437119337836038107299995317200248041583736146735668886825310827491156568812264019833434792501004434736023409439', '3895796024847061959417117449946357088509791621722146585835948032430649729502439307782237865260991975050859067549911703104490343661502769410833020587276344567624907622232213518231034747386541405735391810410317926369063797845715880170370027648146054662138303422570815393261440474636829994886349390693171092285724203444089457365181497533166291482060244226551707545037686886909474232368451664159955025606605941460220632153358127317471110497707025519294199495570048341197434774672336060337181922023649930269589729056398948005755152360902361106001462779415955067495303597349423695757773810949620737888584649132197670971470879525637131673916746181337447065642769197580146857450042411008593319059896877330822151790902518678388943916613841279972728749770930709567786416982036460454517398580381738691140408001685892357033166344729210936426043486518687215000635547644251281876844156039095995135040156609115045547797061421003417145443101', '985581799131106571383715527077046014467938002471837251737723285955864689897333642923908687040982331446482010279083889980499544130558593082598095744729325355347541093018020613663717818463430111064695121976032467220994831992050451625526517052632831995956546198263911782273308252635931886013272949850617998403947985037768969340900793854531808222631785212774204817425295055641068735872643976787014071449171714076550747126171598081851221764101361548104965848133495741984218980130374318122813435265879760512058533200651468808932578174750351811385974807062850060106895602983995575716142191127054528376112610151192202915752272560160053099310222126259914211490899492738739770559137585482856183706287318575381843121251271181838295650099527743731591078038941001335970064141739065697332768099798885921275991025203823990786851163784671969074709461064747456959188939940825877916103758347188472222942647160564375082681394715944640391382809']], ['85135495924905705055856679318705350670233169867386356519831585610048703163626241677756111644121348030234477543188777457233408986202530552992610921771443863767492174546953908425011107616276720775845520096189476657462198002232513146021981871891959116009438425271949247758870054316885029156468744234503734704921159369138419736206215418632224081921740692262503558170546281289601700241516016043711177946252525565951879776163552337520900549718924840195194315507421061729553098506150916003657632280782373689003749358246811606525410333479672150250367364550897639611349429797245765220661209344292221553588270731923247143004193962176590611529956986468648622956344947413842779249903827611311725772218866873599230007933937883575897264415582276837373544705337336845778763670953758886272505817327064256538939687601354924316430978990242868708385342133252365760789305546851057661859320648974294226398354214679736375931955290569032577401025', '1368055697143258654215362814359017702241584970690773731703263379023200482864856754852770734699501000618673022401612691387647209202138662828426186412806972619233710662924323906244783930073787155328185431271740351647606455230539964399652827605343498424377838242230945380109578201502836528246898077014625619473284894241318355723635560231441736522555857648565630592932145818449949623232424164189066202196587855831354531440621742062054032767418049994786198101752581027858495990256487521156823828935795229262508142425156514042093585531408670210101043221379083069067100050585030411097463834351911258450048467679824008360907903883337241190055400622549465745372901594072602290632671499327559521192171064354754202529433705399998798955635285885183151760454058540272961231133748411356408451282135832179879831793238032819718935307242173215494584351842754110853570617582085706633672186457467992022862468943656967251133434039473379003572772', '681439188504940886347921701330590422538387805937824111157341809536097072088009796901930242438241054427545295553215907081085163061788477867688043000112688934713275323162249945173989492734865830678636398037523657930473390281465362213433216171592082184847653382760729223273329437427249079425975250857599822940382733800964287451451033889260593981149116712904476539136434113688438925003274995403465951229936159789245359648961043990675710946884225862317830163641620211708959937688539445430329419448591151224296054139596671027185343228177788284887106084917373007291423710986777597461497250782797587235427980270954331680045340105623319712300716066587544266682574970318856888499876939969816505488308722548968488297918693965304583961039373670335455109387710860115373840511339725381991798254001427839231024012184052624570825487721985962308752171808193414475356128333792935466496695906255045317238173508972014566956100961410486597243327', '656515896378874197451641054075605506813920820666689581613413533660705579821455784356479836346120866473256728648992669570343472396931478169723042812945233928129101168418029318397626877624571257401582795314457612835227406904036342121185606901063448587157234123692467900896089128214560231313747542421717415345400326607198045928342771101197446645325818141896685285465781840386993472510977238180045778359514485615679817772595137333445383373953568462427862112117139604010986247856298512692844771353848454082089964058839411795670191083500963173280965776220050785650643792043260266637033395379464898604081139042160552535795720394328301945859152459500482632181216859396122002025542597662525583466298330064021026953630919621297233481538865413178900539775386182700947896655097511564872388614806660165850200021036272502390857123874364021313336868278411412881072637519928072757201270209421215636307942477552722991968851623679452308852091', ['132632084079803441861112875863696211865129321284969660371641351329778117514545322034265844752510747275713161708216534437651549123460531349655348967684639235575877421845772917269972206310814824582687152371658505389540702797062557290435435085008878284774993582282533179436984705835543763256773152254094360737605739801898826976692887456493701293810019377103732287263823433180979037439603305839023287123527812146921778278196536631555025863131867986302403054114852633219660921297946893619974425935120385635177996372273408185289142681473791331236210186321417541647595909323483695534631492389298901455611383944598139290224540832407911133412266167283601677833276882433316570810942463047266798800308734758494887167913113778519741271416661733050136968780083654226962255752653056212934511247471053034378121525006824624016524479623299096692212821537751889289368365654700880476697937683192232180587048178505320475951513721105804716224667', '793256004408457534661443942113759213930627686110846208903590343684003391365184517601711916712040926420139482437090737539761644681440359122946035889751577817488144282508573371543899903202890922246067272316109904298929193933589681705731557402591650350104606219169196559347156376110982620408759542411104611052011752908938847132222817006401830113286407946062864265244832002963830954910348381093322170731155548902561002529628099921277052459203217993681468844940880673926613393409013896471610201456942745429017446101920216295919944356224258037865876517300877576998085135784556523874597047465696945833810251218892730672188079794866546643149649832931299035254384706516284812337438296497843795258037682369990178543075961442459940455061890569322528985970327671188100159521147135809251919473521929193453544938827542478104338286260435424494862583063069658418314282285322608263360406749924033833630098236120690144807149381693351027259848', '1322702790834028978487893224794528913180885957676590817389276391353968298446361939622385457107339954770832262119444967819553684912467577717736314573215993974146980710859586062632524439017781583036769221420284521946885354551467823395704110949440174682125858260209620422093229559239821894932101634194650488925030309849466815151641714429344854954261228982343185383256851767916019837518330697319739539188876709625759455630732912871620193703578443930994594240359860700040557604370644054933623542213066841584847094249376982330531445730306761573431999559550477286364614729121694336350086003400616696422838090447743237601091512606782901603983746987231984840952181169566127616576847273476971826125963573916213837632300268890912794406171131421066903932012417828101181131680979920395218181578011880196315738164576832309501436184828157477190909988196779858284023330308613253358185320846538255965932257241130473793678642767030704289470223'], ['1878517148374119233571373341128843661569250090285200389184792088332612160610941917207326906065475926505034573341322822128240269900820713333683036127615997249537219456189761215745074606492944012219023147432471968845411248149336376942965763075838873026112098929766152738022605485397086529639332601897368498282475724926269362788159993087482738809905631818685976704428415545875316855395388084440247982511377470876021474308028962946454316640882386346336869472638967878578310610952299984324531629023950821274985628441031838187758109144636472108437720345461487347614073275229890981069614443552427129213386530215257911937517413492573135017490901865379368126117186491067784297477514555311028467566583328473540623742852502837251931757846696253716919380331013927364659209696565798803710921092529700539980087673660333070579968979502445747623934075599002354087483860467183541716838611245151279488148873716531696497450559746449190187204754', '1201039578284884620649231693786477427632176483065208661261237803398489594680200460569417416226606438990299190485482822936477374938569930351768256462468979593165752565927392073634552678436264893727432066049270972465968022899640791831187260521291308799245988304679173723980119087369555688282746574842439059060876477490279561038321105951212678578299138363126051627977266588176629166984970071355110332318474037038038086468686299087037165210499195549476375338169766778653243781308105029789301133159085759997641584199474728912199487508708062746731557628097826664473413161014990886081438118114941125867021297666801053243428619451509730542694821070499504672708680900178211022843605201729134716683290875996055970825010700286616633752473661366075761058225853464423861059414087687064042957398927249013911189768565781573459181412948233338038022940808363049466102334940950905252960925626750777314131769273475693916629593204843423450113043', '1001035605549966437570592262277361877669001253514482762171777343942126541335527240123407970533469108312234521975331686169655106890330255190480306506393122574802252943211586939533331257427233519732797249650584060793081570386311981540216917213208730739506740906419066697967639000969122326344503867869031014709593789947053604052438897365569420610628124017637620009487569092612504169870039745436936781282371946156115795834829910570045292305068578204962642863319864607981884689220126733560583315783027793376094172298067731899609380099338907518579201276578238949632802032054542476129998748456926048968652798548753237166678519460487145237061178997183718771957075050144257441619496871865850180801760192232692729719988035697091281256352472752195568089418833507221261923805192702370377364484022785544246544118006603944311605381200236907712441135237840823761821565471018641839819803225713517340650789800509335395092651923944705742236727']], ['2982175799558336604400109773033690150175235904821223559397349544806063476526939885869018504184669509593845712292506588443297712023809181088617468149454777015783986414210139929539031895194021158850494357244321860460310053492932182543626502970743290879967794306663786688143982617567097802039213544975067717399968646689341541728559781490291923799665958063162618533753499238064050269035709418878238661600369341218002536990167623440342152854706849828048512254531107539810361083986963055736427493986884003904161918503417858510126788981661513025695616699026363379428097177354924657246710763217599798606315855114036918908751334738189211650303563520379732356709176914731024568582164548255420657490924882894287311256339542807086591497729044241476905156361838872741998490701039177501844328030328494910569919930767834033980009009612021044043735311183110871902223967197037138516419111645163264869932922311082613053795518623951702929570511', '3762053468234706666063122157887779098077686267317956656807384758242378786143285167434585810856818004509578757122013147999399509849988794506094723955406942417461741483485474049164805932810402122260391882050885870546197018960404505593575022093260708269883520038565783580263281736821780883513646018928041155245604580049832270132399630550396752565299040924369797479975165721298151649767382044672397324581394842734368757984814782451874891342006948319088517007245862266481894050738642756158483920500135751258617857893313241843854081783124262319820253216613731067514391601694396836209996619468584896666443394048187387862567745283795171046265509331359017541829156485648004464505235527286164521394829928629386492700715543490370966870954807715265533467983096893610220098967491816402946263421304779634110289354946341012715876467613878982691840464315267200516840187464980565579015545239026818764142066143907206070016602979118840837926619', '2452051096590804255103235451615443640583934189111652483050265925343546427739839702267367581175387204482130017975105916864162312064496652714490302664094308978621992061857475992357049576450246529259664488178948948392545927454195345141885209956814750601103457573811025024691876708166832311055391151032476721530138381657201731919803995533384824185774515933662903519477560248485005746368588857948642746749429877546774490302578354831621110558936018353981111921927307263535378997832238578942815422095391587781987466130856105560309681495809934222501390320602778722825881871903298865753951064475088833259157789331099569332834877863396804622090456390906179862111393621655630219051784454696070016357543344943778296052336133049253956347388491158668235568961567322711890621598264810175210049926693240531163858434144676790240717420801464712386498046786389994541003250399026510493345648071751934041185477020352253830367395121149090256963465'], ['3878512475332124260862310438329614370552989933380718568135529154010054420623659456546087401301293471016975827577798771560979765983632983246147519433474505613336105349112985510829083068213975755341043523054261492104104162876814022957360261115180488348371264976428680899735356232532728725239467453642915426636155739819302157604921287043236865183570819611816684075660624585290106385733084491802849195845372611098727153687834523804395881886103460000950120504171228296285210344141615418663402487015106290553271104604080735431603926750398268264887216652509613864225426905481047738380167512731713579120746405666546580113048761508643525877196017499486515122695975073517013617498719735441552189090503188098499399691983318939074578581520579992399865718620151183845066653857459449455456975998055889984951038679944755484142167267583602949701032442790080457656047523289991442836877298620185499709794280239356755096776178926370284483283699', '3425600022911430570310722110019879414024030111972911649988123066029865382461387113812638128076308532951525887855934027718967986698060025455772171774723698959677436875450325391029709897218339068101244529210093747361863178525825481590471412439185020389360896255929328485900004799828870643998523768364198506398671639269390402024508763376133137576004565413792687959477373873256385936068798653912769214541723158794292089515262827533597646230459577474589626200482011984405194138993816760956445916798699308488607657070017291142948220182974430839445341596459021539149648929582908227573455151295086874442183075050647096232313360168403132910295025934180815551808159034436442022358723003563059120590411264993506739028129557812067709476140138097723145430516620732947518205482439288966610315598024354314264866646157996407990828120453683918280246403249453406092047372875630901488438646954268840736778709286252813750279446806675527461989421', '957612535583297116848181642522746934097977445476906965565137367273466000353972728199582665611662480875324613946961400473969323972981158936704924538466104907477044115818857624694339012285954101418332890970223563906975196561090214430324332789863385462877577091062053672626414004031437257358702248367010777259636671900428612305865172008978463188644429811700676152889778768544478627790206798168178203323858647032791280880333463706115761158148609384143648929161909692218553771424747780888460081780517887558149906791768854377112954745360216583182038303002241378804985994167518197921020576971794133535690421020383737352783490098014768509004388651007427621046041373068398507923477658772302721803740965396309509920902118894018087838321837372424235083638331303697985030890831863095305152025284828433979381455701477246167083357264747255870761931302356881405232988440076420483006821889721014101747968800415198263641875352253281585105810']]})
     >>> res.test_result
     'successful'
     """
     pi = self.test_data
     N = self.election_data['N']
     param = self.election_data['secparams']
     res_pi_t_0 = multiMathGroupeHelper(pi[0][:3], 3, param.p)
     res_pi_t_1 = multiMathGroupeHelper(pi[0][3], 2, param.p)
     res_pi_t_2 = multiMathGroupeHelper(pi[0][4], N, param.p)
     res_pi_t = res_pi_t_0 and res_pi_t_1 and res_pi_t_2
     res_pi_s_0 = multiRangeTestHelper(pi[1][:4], 4, param.q)
     res_pi_s_1 = multiRangeTestHelper(pi[1][4], N, param.q)
     res_pi_s_2 = multiRangeTestHelper(pi[1][5], N, param.q)
     res_pi_s = res_pi_s_0 and res_pi_s_1 and res_pi_s_2
     res_c_bold = multiMathGroupeHelper(pi[2], N, param.p)
     res_c_hat_bold = multiMathGroupeHelper(pi[3], N, param.p)
     res_pi = res_pi_t and res_pi_s and res_c_bold and res_c_hat_bold
     self.test_result.addTestData('p', param.p)
     self.test_result.addTestData('q', param.q)
     self.test_result.addTestData('N', N)
     return 'successful' if res_pi else 'failed'
示例#2
0
 def runTest(self, election_data):
     """
     Test if x_j,y_j is in G_q_hat
     >>> res = pvcit.runTest({'d_hat_i': [['10729722235944325116265925487240351218108066854272454570275986057971857440212362366387286540590242025229488950774004015883323608514429060218566527330370220337766212627504421500361939783530728713302949139931928368454826547144576626874326282472131594410286247630327282331564261574365253922044764793815526821369387502716327641478337598515846158878373256817417737368556077672274845509023292018798959766908609004182711437188847083594026377930322994611276291547370838820231537292584230330094413072421643747911593385217989636534058870393124682411414913832592733196457930724963597528512647963405757077955416910093477115445879779398469104779234126872084151022203700713382625237370790617929059595149375318182799872820822416352656165389901314440611479590788828223419876066275356606938422612279298823843774164297156463472357837879208389962048985821802465122687584615471781773574910747606692466916007985152813521822163093623945019953655', '2575203165450752312745397201322418337662420404996904691712111171548464147564941889328993977132258194891537600540304559801747881796123341269384380455473131374947298526835619311802259660622013068428168991681304173072125713955932314709602795638841916296916041243711862610211202466059353044021405944161015759539888746383768566065947139303047574011165867013638423489894877719755046795581766063473048552099547801494071463960067167430130488812739128662367043638871524596182279767968668384856430686224913969990127266806467380585568168685661842473908974450492727627455993582079388037878031437900299003250013539500540305897232603802419603361430554010924747212068308957418607513992128696263497620468010641243871868628933717647597773093956860629572288799818043303506754509966977093384172775309491843026532187383702690991762761424149233031275718549313766353945915226041150797319038449609631092899794967332042572112462940383367396620910559'], ['420298681269036825962565103431545199556875700824682900390195690293384500616093238492470333516718147009778388158618634947862954817566003095977274612118411780299515768385091416902116745375230553603188749568272336249281251680743426956152308798866332934181173831240802760856366597504795038384234636823493494248279723296141362084679950499245171973335695904746744371708952924014522282863390956588875557872170125338646893010342610918960970689090194196102197592043800211196375472653336576524129600327138547312538788874853701172205034563911792924318307616465580551761196995733529401420558867554691054456766033117035987685610697748236180306637322682922869897624742019723137632708265614931258207801495703288730948899975073423222062190612653152071746636754960440786801503522725815429600990945960251383264184766098048273458436423249027138527657398416533656136320601998939903931777923639156019537009313094075062326727712281118016686416176', '935418298427977703383712788322807185872769492711391146435618782120242952160192389418378560734199389181363483792055961756404768418966029967855519099796026869905741746183102712327039794152964040259016713555136829774080160528655133737847264965275049944286036926570091635734603695718036923015030952226152698907081670388324568947981062409132801446914019057215439212089425055532809231599974516903232144877917387698422360473780279518175667627844779975014792050018584647425903107028150898886526410743593412687916120168129438112481731042630868226246780739782068342017893885472954492319313738272792049841175147212183174417792560717689113652745611741783903919470128746345701530406623616836163122280234904000052530902374299829056159713545210358492840964484631000994692072994726530189944452521153883990792989736920187719864020834322820969237046773806072226801326232485394338348461457055491471052342796719729985387461500288674514780162708'], ['3853732774341815637505271454632876426518106856544904941581114767206486669573544954867538725261407615087537959012189192926737592514292289834370307297429260359423291776288138836837822620142233103852071864715588880544374730208386090585587288689128990469332144190411728529343036734255545116596133644660129821643915173075431432252549859966815893774213530733226162725051169221842017146481997226074078797933794764199940408117911763924510191256860904003807963383709577798259950915422903633185163290111453850037197070693234110979294669794597452542451102380808446737179146145111281529226619913535853894958983163076986786537469696377000939566014534670718462624177561044967329003068106244032241428896320683473341624369467645748806366493179837597431375730446325579013837034348810138615798962090389162172170310275922453235873767337618326546598287943784699453764077973769845111057531542125620665264257566852926775400125769472482671258147432', '331897573396037741997076445917325928338561184507193824153147940978603093778489314358059334389255984760569984650254175930004928989233635411562950086031785700131952650697420286968398993569885734233586517537112330338528047746686087963980592237433360368130490995529012436018719913171819911383085810719583360735247482426061458755569690704960084761925934909512776147963628397945311115821627114345645215730097759929265280916023588385189222178550317728347706055525165951717955842179395996557112004245247714360764488725204411637274259061399308523692757613309383036500578226784889479516000707415287662152386756311250154499214918405634182102931935234520513348818756272708862962433333826773069724379579958676201889349618099213147395099416520927340538648350061593317939598125179528308387048805541735116886697649549904740882264431947726945513248583705138207005261966692996923304281586305648193997913510776664626347487977365964466857056103']]})
     >>> res.test_result
     'successful'
     >>> res = pvcit.runTest({'d_hat_i': [['10729722235944325116265925487240351218108066854272454570275986057971857440212362366387286540590242025229488950774004015883323608514429060218566527330370220337766212627504421500361939783530728713302949139931928368454826547144576626874326282472131594410286247630327282331564261574365253922044764793815526821369387502716327641478337598515846158878373256817417737368556077672274845509023292018798959766908609004182711437188847083594026377930322994611276291547370838820231537292584230330094413072421643747911593385217989636534058870393124682411414913832592733196457930724963597528512647963405757077955416910093477115445879779398469104779234126872084151022203700713382625237370790617929059595149375318182799872820822416352656165389901314440611479590788828223419876066275356606938422612279298823843774164297156463472357837879208389962048985821802465122687584615471781773574910747606692466916007985152813521822163093623945019953655', '2575203165450752312745397201322418337662420404996904691712111171548464147564941889328993977132258194891537600540304559801747881796123341269384380455473131374947298526835619311802259660622013068428168991681304173072125713955932314709602795638841916296916041243711862610211202466059353044021405944161015759539888746383768566065947139303047574011165867013638423489894877719755046795581766063473048552099547801494071463960067167430130488812739128662367043638871524596182279767968668384856430686224913969990127266806467380585568168685661842473908974450492727627455993582079388037878031437900299003250013539500540305897232603802419603361430554010924747212068308957418607513992128696263497620468010641243871868628933717647597773093956860629572288799818043303506754509966977093384172775309491843026532187383702690991762761424149233031275718549313766353945915226041150797319038449609631092899794967332042572112462940383367396620910559'], ['420298681269036825962565103431545199556875700824682900390195690293384500616093238492470333516718147009778388158618634947862954817566003095977274612118411780299515768385091416902116745375230553603188749568272336249281251680743426956152308798866332934181173831240802760856366597504795038384234636823493494248279723296141362084679950499245171973335695904746744371708952924014522282863390956588875557872170125338646893010342610918960970689090194196102197592043800211196375472653336576524129600327138547312538788874853701172205034563911792924318307616465580551761196995733529401420558867554691054456766033117035987685610697748236180306637322682922869897624742019723137632708265614931258207801495703288730948899975073423222062190612653152071746636754960440786801503522725815429600990945960251383264184766098048273458436423249027138527657398416533656136320601998939903931777923639156019537009313094075062326727712281118016686416176', '935418298427977703383712788322807185872769492711391146435618782120242952160192389418378560734199389181363483792055961756404768418966029967855519099796026869905741746183102712327039794152964040259016713555136829774080160528655133737847264965275049944286036926570091635734603695718036923015030952226152698907081670388324568947981062409132801446914019057215439212089425055532809231599974516903232144877917387698422360473780279518175667627844779975014792050018584647425903107028150898886526410743593412687916120168129438112481731042630868226246780739782068342017893885472954492319313738272792049841175147212183174417792560717689113652745611741783903919470128746345701530406623616836163122280234904000052530902374299829056159713545210358492840964484631000994692072994726530189944452521153883990792989736920187719864020834322820969237046773806072226801326232485394338348461457055491471052342796719729985387461500288674514780162708'], ['3853732774341815637505271454632876426518106856544904941581114767206486669573544954867538725261407615087537959012189192926737592514292289834370307297429260359423291776288138836837822620142233103852071864715588880544374730208386090585587288689128990469332144190411728529343036734255545116596133644660129821643915173075431432252549859966815893774213530733226162725051169221842017146481997226074078797933794764199940408117911763924510191256860904003807963383709577798259950915422903633185163290111453850037197070693234110979294669794597452542451102380808446737179146145111281529226619913535853894958983163076986786537469696377000939566014534670718462624177561044967329003068106244032241428896320683473341624369467645748806366493179837597431375730446325579013837034348810138615798962090389162172170310275922453235873767337618326546598287943784699453764077973769845111057531542125620665264257566852926775400125769472482671258147432']]})
     >>> res.test_result
     'failed'
     >>> res = pvcit.runTest({'d_hat_i': [['10729722235944325116265925487240351218108066854272454570275986057971857440212362366387286540590242025229488950774004015883323608514429060218566527330370220337766212627504421500361939783530728713302949139931928368454826547144576626874326282472131594410286247630327282331564261574365253922044764793815526821369387502716327641478337598515846158878373256817417737368556077672274845509023292018798959766908609004182711437188847083594026377930322994611276291547370838820231537292584230330094413072421643747911593385217989636534058870393124682411414913832592733196457930724963597528512647963405757077955416910093477115445879779398469104779234126872084151022203700713382625237370790617929059595149375318182799872820822416352656165389901314440611479590788828223419876066275356606938422612279298823843774164297156463472357837879208389962048985821802465122687584615471781773574910747606692466916007985152813521822163093623945019953655', '2575203165450752312745397201322418337662420404996904691712111171548464147564941889328993977132258194891537600540304559801747881796123341269384380455473131374947298526835619311802259660622013068428168991681304173072125713955932314709602795638841916296916041243711862610211202466059353044021405944161015759539888746383768566065947139303047574011165867013638423489894877719755046795581766063473048552099547801494071463960067167430130488812739128662367043638871524596182279767968668384856430686224913969990127266806467380585568168685661842473908974450492727627455993582079388037878031437900299003250013539500540305897232603802419603361430554010924747212068308957418607513992128696263497620468010641243871868628933717647597773093956860629572288799818043303506754509966977093384172775309491843026532187383702690991762761424149233031275718549313766353945915226041150797319038449609631092899794967332042572112462940383367396620910559'], ['420298681269036825962565103431545199556875700824682900390195690293384500616093238492470333516718147009778388158618634947862954817566003095977274612118411780299515768385091416902116745375230553603188749568272336249281251680743426956152308798866332934181173831240802760856366597504795038384234636823493494248279723296141362084679950499245171973335695904746744371708952924014522282863390956588875557872170125338646893010342610918960970689090194196102197592043800211196375472653336576524129600327138547312538788874853701172205034563911792924318307616465580551761196995733529401420558867554691054456766033117035987685610697748236180306637322682922869897624742019723137632708265614931258207801495703288730948899975073423222062190612653152071746636754960440786801503522725815429600990945960251383264184766098048273458436423249027138527657398416533656136320601998939903931777923639156019537009313094075062326727712281118016686416176', '935418298427977703383712788322807185872769492711391146435618782120242952160192389418378560734199389181363483792055961756404768418966029967855519099796026869905741746183102712327039794152964040259016713555136829774080160528655133737847264965275049944286036926570091635734603695718036923015030952226152698907081670388324568947981062409132801446914019057215439212089425055532809231599974516903232144877917387698422360473780279518175667627844779975014792050018584647425903107028150898886526410743593412687916120168129438112481731042630868226246780739782068342017893885472954492319313738272792049841175147212183174417792560717689113652745611741783903919470128746345701530406623616836163122280234904000052530902374299829056159713545210358492840964484631000994692072994726530189944452521153883990792989736920187719864020834322820969237046773806072226801326232485394338348461457055491471052342796719729985387461500288674514780162708']]})
     >>> res.test_result
     'failed'
     """
     try:
         vector = self.test_data
         param = self.election_data['secparams']
         rng = self.election_data['N']
         res = 'successful'
         self.test_result.addTestData('N', rng)
         self.test_result.addTestData('p_hat', param.p_hat)
         for i in range(rng):
             if not multiMathGroupeHelper(vector[i], 2, param.p_hat):
                 res = 'failed'
         return res
     except IndexError:
         return 'failed'
 def runTest(self, election_data):
     """
     Test if each element is in (G_q^2)
     >>> res = esit.runTest({'a_bold': [['1921458892249490206594745283326191260301505990342195446041626806247980482870389432992718511025356985845915787488224408207061395168577396430477475047838178513410129584754895004247150749811368258345493019430442062996448760324560566621530854849432263879215250102182728896508198612766800177267102874236241521399519031408103624309620238901319689859179642109665697967507839364957210016560012917568087076974129167392939376643359848220371360638293024995065687893659545453552103136205233679119450050036729305425502698899133996744873992348383990370495179098272127419024963261951108772265503475645588879424020141262541459325456333565324635024095629459976182711584348989148923691659390484786702344732733795075642540417213696944856794424449339281367813918523480223450976921087084107910720174347431376388407571723525537383167836421864924400451775236979918881270737381677414643490822150072954889166435266116110286862619841969204883635329646', '3875820727394460400419869633973148548608647951123787913829403322770497699306254966790073146373971506193900033969022887887003734569427486637123284046102887179802388315419427717495379362368341055079431936477343075473472358941852710718599505494414973931671999072734269158726654561854188620576208033367719350259470145292674797566989931781526005773320611839886542848262863104971305053319696466487393523232691198326769552660353309970295226402740267556667045860202051844665535162545367651130317471703289541369040261833950273354054307398742206150252885069046183935033218471895416127653733810107727003948833588143322553610148980438275317181462740829962271849232259610825122285270312448257119767176588121463594053524643885764100246592945256260269102735872280081623075830611187485783630238339727767317430223705270450510462206216020146548278302584075981454435692052714641907242336879988468649998238573661018967442181981683353350886152552']]})
     >>> res.test_result
     'successful'
     """
     a_bold = self.test_data
     param = self.election_data['secparams']
     self.test_result.addTestData('p', param.p)
     for item in a_bold:
         if not multiMathGroupeHelper(item, 2, param.p):
             return 'failed'
     return 'successful'
示例#4
0
 def runTest(self, election_data):
     """
     Test if b_bold_prime_j in G_q^N
     >>> res = decit.runTest({'b_bold_prime_j': ['1022515636834304568338530955408098580734488050967574796458735411874389526687922802845835328335744075190543736928456638151799727007605864703418872547556279136429918240013201576865596762389022684447675276563670519407067681460071594430857713668010122907255563669770462942783977365457366880825854350134317208235172253105785525533451441357412731801298449004554102585606812139732422650435098410474299459480278425710323037624798833274788102721595314645253631942813798874401143227974948435024714642029884243487714062333046123045440227738578178322246371873231539411881108851368815395989435100170163482077220265577796786045031132586872229204580972645268731026665101389862846286073710738896451423499463298529305554070480685654230198201259323220722602658593061746505861552497870606906176818584337906764485049874345074678938451206423816508415511637621571415790846730362515472362191367412627158375163479190573884313994751891217296583227981', '3637886505155529718585013062351648361340432005291634055951393670262836363520763636484078311534826865180501570408637223008333176267149150277871072677368924786832870446375979129992100097344971961577615211874891998757069758157674973315673411388530985602853116234830554146114003327544488062967801470881304418472164261075184409190263082473822446323835058095236422008894410233370096366498783966229134309367848463893335128868662101910146039281803481965132203313227659815267712101049180439945192482347495400797151429281854335451141724468921276061141359816542693092917328947127531035318998645817193076649379428799870515508752001296462899556262653327062518669668703496577377650553048162598165621693541532263187370915338454789030132587445442501711190838981868818787601455106389371657929407463780882450951347283242233282121778237451404315525054195800858114364718301317237219837653164678135964738862414911865199698197611884154402697426317', '3432609334079079612286504642415731295126107993236664400484554993439499831802379907251328211977361967446007683492475817363608114470546633530116324108709629128927323874534875257518007044997737904361749539866199074415790974443738981082845380093313796098556232187844137089471412288316089499115395285833230913532508304293472369383344107590069753333858747887809685296727831812381312318857458654855206820041047259125143598122654002789306806097969514152345058183470269458798001612254020219244797338115146597257737854850160792130183433212390979993045805425486534072787269377517978675002595875923290884150551793297690439541133357978404633635824815484398584986281321734172838518869079444464261412471276176558615065634835975087573021995641954618033771910699669521242692681866127570540765384920921303551240831143145387418323844488174604669867500855805454208610099288663318825469549064168001599922591562136784231802773314153159133170573089']})
     >>> res.test_result
     'successful'
     """
     b_bold_prime_j = self.test_data
     N = self.election_data['N']
     param = self.election_data['secparams']
     self.test_result.addTestData('p', param.p)
     self.test_result.addTestData('N', N)
     return 'successful' if multiMathGroupeHelper(b_bold_prime_j, N,
                                                  param.p) else 'failed'
 def runTest(self, election_data):
     """
     Test if pi is in (G_q_hat x G_q^2) x (Z_q_hat x G_q x Z_q)
     >>> res = bpit.runTest({'pi': [['1551518715298281810725008152186431952652911977400051971351117985322150273601237417251121755582093784435557528621373245540164963608421169237494609580055713561634568745342611843157757228409748428433968200164659328446836433417525940363339381848600720350614584637963125574619783351716667736845024454743102051074468035995135621072550122998043690239782477227863780869272025975450448776339280162207860639679369233280771742688677626249166319435630952526186668530247253151967049361579695736970861406401402489208064795535054270552842549740776895222869046132946504718334099843270330643375941420134676400063917510131423366419846167241144193576054664006996502350277175699477932184812676309960801521099489851321299848578844879878373930454649630301898298113830265184529969741036615757032385330649211476090110214812904039297983259851967722001727032097917658713204071510660714049404710709641885292611226656269018406156458326947223382538133171', '2681055189051785139496617906652251559826827232197503063672079918961707173757473380225204494481201573995033820913272938334438823578325741371489384421686468011065021310475577984113278941291618564431193845281488097409878030614267737086582286368780576436680785067601431508955843879154757246222496582926421463309140026200071546791922316406853860294910739784794178224435545352838094181309961318739385206171631432794570640347107100534527068345625823381640214129453694843694538926229779225586438298118934212975683967224301543019473446891974244199613698688817248631099058320252996568125732789846481261221158650640749512330113146889792160105953267326796129032700951017014524924813564528345426844536710165405799876483996623475334864715546712100754757931570163233455731808319709631712413856341921161696809910688089335194763177082542628847901357966953309469739903262836672867120174832028990429817597381687639370923303104561181728810362924', '2640556379654863782362294528545018790097676249690136807507681120887138581766021016569657102471671567818054202428457175640708697650588267878114314123859335239552235006323413701765203455739838297198670663100869071298619679178665430145264008823534934080882187424780009314634183513218886670879585137925694049261370094591479331780209858888470345742481696256092896369787349982890757512170441914302244839221013210573771165144570427422366088390837624657419569091520288535575226950572586961670763915766957529942903270811462970038272460857442887353419533131558514939321043831201053754375023833069831468929483938191601800387952686385562042185617131362267108312125604817626263415216582145491741210701715127111058522270020784336508553507907021826087567258674113391707532173664928542414775819325799491651618503403939936202920365414592713670357845538698809675308021708463237308931527135757823877072161423799500310691059447029301124560800271'], ['37256286110537000729878712350644938482682327329537694128360422334810436681162', '3280459856210399154422418987994983778888363609721644771110896175138332244862068207475709799065670839877390858783238895022252886975715142751989107511994280797035992212556808079537214849625178433970938228115924229719653618381320392970066730758784506647422986404275247586730402647991531840219030225038466604051554078270831008868799635459094421875734831584539186541102598064957246714193118785250276717295564945531246490028627674735947959237352774965036132798330827118258600884929751328303409515010514375939938894604032411523181161626924302397208587456091449814718107647331545597442128969521018132653001098107104033360398721782848065305453415929936939152366403498796395574664289752894663153234759484826382013371634882759095315838690005921170569376514337099722381986238306781442356500029974327038796749687747596966104538505104491870059607758197253736593800915012136681052033100768349594020334559837974454195666251721079320622546131', '1912660094654917298006472216039842576073940735380313740703266529883002432909719434721847960785725056388348307271292687683055945067419849136039117559787102358524805271284107486338284366039567657677958563207453323661071671237372357669180609277060898649966353197241991336956595932242242520379961909266546950110398556477327456250609910866495416412635915151446029781423915193791858089953883501618490233515212873767767774879012830291915576042671592359581931735557004561486530096365852622074633283705896354365211155467867325011188785365277191493849113239777870659758646015329816102642133605633582466514772914275862015749731689528363601431191322863464089664765311083092840973364477696185600322514061531076758305207251243304980672763979972286169256197787189505239085049773612252485125999911152993299770938281072383206815946783316772763620864702105632905927175704393169044232359647071658340609586160000911503283109961506325385551015058']]})
     >>> res.test_result
     'successful'
     """
     param = self.election_data['secparams']
     pi = self.test_data
     pi_s = pi[0]  #pi s as string array
     pi_t = pi[1]  #pi t as string array
     pi_s_res = IsMemberOfGroupe(mpz(
         pi_s[0]), param.p_hat) and multiMathGroupeHelper(
             [mpz(pi_s[1]), mpz(pi_s[2])], 2, param.p)
     pi_t_res = int(pi_t[0]) in range(param.q_hat) and IsMemberOfGroupe(
         mpz(pi_t[1]), param.p) and int(pi_t[0]) in range(param.q)
     self.test_result.addTestData('p_hat', param.p_hat)
     self.test_result.addTestData('p', param.p)
     self.test_result.addTestData('q_hat', param.q_hat)
     return 'successful' if pi_s_res and pi_t_res else 'failed'
 def runTest(self, election_data):
     """
     Test if beta_j is in G_q^k_i x (Beta_bold^L_M)^n*k_i x G_q
     >>> res = orit.runTest({'voterId': 0, 'beta_j': [['964544642030089042698445902050542342558108560327685534297148545195327898253053509792686279022405200614301208861175248856707000656446014850882732903130228349395831596930416338388880808014354809290512613474137099881408489775990964749120185317623421950674803684185479091743043277268697747077229770402249849355278123326033785732736433644591136051587009073346347495162835599792099287714021975282524635702991425602626239659133222816428538782096944329425735358153927032764038348447744239115993292448991413112422436071552678624471268637493040862722196199351499157968593496882662883335596430999656362000030397463013924434260456104514119577084575378001328520629867501122007197488024888387534623634553279593211725265044257473058058292830631316551286083583756048014888017411899075792728704581322473076805014550594667318384274670879228013008194128893972661335822284158407075631758633461727791392099294321516031179484185436378152502223772'], [['acaaa3e0834cf4ee044d0bd04164bef824a4e4708d357c6a0b3d8b93091b1acf273b10b95ce5d9976602695305d70496e6911d537b32ef979eefbf969a3dc8e3'], ['9ec3105183fafe6bf354feafd256351458f67fc34462b4d9a118218d5698e243b587890bf69b30a916c5b82dbf91827b00da001f9e3c36b39a7f22ffa66bbbce'], ['b463230c73ebbbae039dc6a21925af845ea1e8a96368633b02f5d6ab82ac95bf3fbfad569c243a4d820130291ddf510e7f3cbe39b127cbf9f501e704fc5a5b5b']], '182242508400083455368714174223720732507430606064574725434551012186722694637713000841983066981444915388433616661393712747020066467517327489904272661493632874641753825079181211007516843862630286811255262966599852199058747514064286077075238067623921954916952214238285776308335436032138747465680027252151759341116377526285429054242907903129177188556029093321495967468588849707501911652442780416138119633924261354114936999943056634941343988132634619339835820079334367449692502471884471299590357149968675714034286462473056317293526735522751851455101565936418119195312404770662463188415663069785711238323164792695878382640593030092491903369745852928804131736178000017628691118529917051370932383733795241242335723247241583148553500226275583921984984442698926498877252157444436680287031698071577275776186316676011730144130241323161469729375579999203259645597355543904790104428270465011855907279145169371268524621186272579382508015249']})
     >>> res.test_result
     'successful'
     """
     beta_j = self.test_data
     voterId = election_data['voterId']
     eligMatrix = self.election_data['eligibilityMatrix'][int(
         voterId)]['e_i']
     k = self.election_data['k']
     n = self.election_data['n']
     param = self.election_data['secparams']
     k_i = sum(eligMatrix) * k
     res_b = multiMathGroupeHelper(mpzList(beta_j[0]), k_i, param.p)
     res_c_bold = multiByteArrayHelper(beta_j[1], n, k_i, param.L_M)
     res_d = IsMemberOfGroupe(mpz(beta_j[2]), param.p)
     self.test_result.addTestData('p', param.p)
     self.test_result.addTestData('L_M', param.L_M)
     self.test_result.addTestData('n', n)
     self.test_result.addTestData('k_i', k_i)
     return 'successful' if res_b and res_c_bold and res_d else 'failed'