Пример #1
0
  bool Round::Verify(const Id &from, const QByteArray &data, QByteArray &msg)
  {
    QSharedPointer<AsymmetricKey> key = GetGroup().GetKey(from);
    if(key.isNull()) {
      qDebug() << "Received malsigned data block, no such peer";
      return false;
    }

    int sig_size = key->GetKeySize() / 8;
    if(data.size() < sig_size) {
      qDebug() << "Received malsigned data block, not enough data blocks." <<
       "Expected at least:" << sig_size << "got" << data.size();
      return false;
    }

    msg = data.left(data.size() - sig_size);
    QByteArray sig = QByteArray::fromRawData(data.data() + msg.size(), sig_size);
    return key->Verify(msg, sig);
  }