Ref<ByteArray> keyExpansion(ByteArray *key, int Nr) { if (Nr <= 0) Nr = numRounds(key->count() / 4); Ref<ByteArray> w = ByteArray::create(Ns * (Nr + 1)); const int Nk = key->count() / 4; int i = 0; for (; i < Nk; ++i) { w->wordAt(i) = word( key->at(4 * i), key->at(4 * i + 1), key->at(4 * i + 2), key->at(4 * i + 3) ); } for (; i < w->count() / 4; ++i) { uint32_t h = w->wordAt(i - 1); if (i % Nk == 0) h = subWord(rotWord(h)) ^ rCon(i / Nk); else if (Nk > 6 && i % Nk == 4) h = subWord(h); w->wordAt(i) = w->wordAt(i - Nk) ^ h; } return w; }
const CMTSumCheckResults CMTSumCheckVerifier:: run() { MPZVector expected(trueSums); MPZVector poly(conf.batchSize() * polySize); CMTSumCheckResults results(numRounds(), conf.batchSize()); results.success = true; for (int i = 0; i < numRounds(); i++) { results.success = results.success && doRound(expected, results, i, poly, expected); } results.success = results.success && doFinalCheck(results, expected); return results; }
BehaviorTreeNode* CNormalMode::roundsSequence(){ BehaviorTreeInternalNode* sequence = new SequentialNode(); for(int r=0; r<numRounds(); ++r){ sequence->addChild(new CCleanHud); sequence->addChild(getPlayerHudVisbility(true)); for(int p=0; p<numPlayers(); ++p) { sequence->addChild(new CResetTimeNode((CModeBT*)this)); sequence->addChild(askQuestionToPlayerSequence(p, r)); sequence->addChild(answerSequence()); sequence->addChild(new CSetButtonStatus(_bColorAnswers[0], CButton::NORMAL)); /// Limpio las respuestas sequence->addChild(new CSetButtonStatus(_bColorAnswers[1], CButton::NORMAL)); sequence->addChild(new CSetButtonStatus(_bColorAnswers[2], CButton::NORMAL)); sequence->addChild(new CSetButtonStatus(_bColorAnswers[3], CButton::NORMAL)); sequence->addChild(new CRandomIdleNode(1000)); sequence->addChild(new CAnimateAvatarNode(_players[p], "LEGS_SWINGING", "TORSO_SWINGING", "HEAD_IDLE")); sequence->addChild(new CSetButtonStatus(_bPlayerName[p], CButton::NORMAL)); sequence->addChild(new CNextQuestionNode(this)); sequence->addChild(new CNextPlayerNode(this)); //std::cout<<"Jugador: "<<p<<" Pregunta: "<<p+(numPlayers()*r)<<" en ronda: "<<r<<"\n"; } sequence->addChild(new CNextRoundNode(this)); sequence->addChild((new CConditionNode(new CEndModeCondition)) /// Compruebo si quedan rondas ->addChild((new SequentialNode()) ->addChild(new CClearCameraQueue) ->addChild(new COrientAvatarNode(_host,180.0f)) ->addChild(new CChangeStateNode("intro_ganadores")) ) ); sequence->addChild((new CInvertedConditionNode(new CEndModeCondition)) ->addChild(scoreReviewSequence()) ); sequence->addChild(new CClearCameraQueue); } return sequence; }