void partition_table::partition(MonomialIdeal * &I, array<MonomialIdeal *> &result) // consumes and frees I { int k; reset(I->topvar()+1); // Create the sets for (Index<MonomialIdeal> i = I->first(); i.valid(); i++) if (n_sets > 1) merge_in((*I)[i]->monom().raw()); else break; if (n_sets == 1) { result.append(I); return; } int this_label = -1; n_sets = 0; for (k=0; k<n_vars; k++) if (occurs[k] && dad[k] < 0) { dad[k] = this_label--; n_sets++; } if (n_sets == 1) { result.append(I); return; } int first = result.length(); for (k=0; k<n_sets; k++) result.append(new MonomialIdeal(I->get_ring(), mi_stash)); // Now partition the monomials Bag *b; while (I->remove(b)) { const intarray &m = b->monom(); int v = varpower::topvar(m.raw()); int loc = -1-dad[representative(v)]; result[first+loc]->insert_minimal(b); } delete I; }
unsigned int TF_SignerBase::SignAndRestart(RandomNumberGenerator &rng, PK_MessageAccumulator &messageAccumulator, byte *signature, bool restart) const { PK_MessageAccumulatorBase &ma = static_cast<PK_MessageAccumulatorBase &>(messageAccumulator); SecByteBlock representative(MessageRepresentativeLength()); GetMessageEncodingInterface().ComputeMessageRepresentative(rng, ma.m_recoverableMessage, ma.m_recoverableMessage.size(), ma.AccessHash(), GetHashIdentifier(), ma.m_empty, representative, MessageRepresentativeBitLength()); ma.m_empty = true; Integer r(representative, representative.size()); unsigned int signatureLength = SignatureLength(); GetTrapdoorFunctionInterface().CalculateRandomizedInverse(rng, r).Encode(signature, signatureLength); return signatureLength; }
size_t TF_SignerBase::SignAndRestart(RandomNumberGenerator &rng, PK_MessageAccumulator &messageAccumulator, byte *signature, bool restart) const { PK_MessageAccumulatorBase &ma = static_cast<PK_MessageAccumulatorBase &>(messageAccumulator); HashIdentifier id = GetHashIdentifier(); const MessageEncodingInterface &encoding = GetMessageEncodingInterface(); if (MessageRepresentativeBitLength() < encoding.MinRepresentativeBitLength(id.second, ma.AccessHash().DigestSize())) throw PK_SignatureScheme::KeyTooShort(); SecByteBlock representative(MessageRepresentativeLength()); encoding.ComputeMessageRepresentative(rng, ma.m_recoverableMessage, ma.m_recoverableMessage.size(), ma.AccessHash(), id, ma.m_empty, representative, MessageRepresentativeBitLength()); ma.m_empty = true; Integer r(representative, representative.size()); size_t signatureLength = SignatureLength(); GetTrapdoorFunctionInterface().CalculateRandomizedInverse(rng, r).Encode(signature, signatureLength); return signatureLength; }
bool KAction::isPlugged( const QWidget *container, const QWidget *_representative ) const { int i = findContainer( container ); return ( i > -1 && representative( i ) == _representative ); }