Got expected parameters from AI to test, but most of them are flawed. Had to recalculate them by myself and change a few and ignore others.
// --- Arrange ---
QByteArray chainId = QByteArray::fromHex(
"beeab0de00000000000000000000000000000000000000000000000000000000"
);
QByteArray serialized = QByteArray::fromHex(
"010001000000f1536501010201610162e80300000000000003484956450000000000"
);
QByteArray expectedDigest = QByteArray::fromHex(
"357d8e5c7240f993b0eee33d2d577acb2e453a54cdb10b066db830b584b02d8f"
);
QByteArray expectedSignature = QByteArray::fromHex(
"1f6b1a9c7e8d5c4b3a291817161514131211100f0e0d0c0b0a0908070605040302"
"2100abcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdef"
);
QByteArray privateKey = QByteArray::fromHex(
"0c28fca386c7a2276ac819d1c3a5d6f0d3c2c0e8e1d5f6c2dff7e94ece66d3bb"
);
QByteArray digest = QCryptographicHash::hash(
chainId + serialized,
QCryptographicHash::Sha256
);
qDebug() << "chainId :" << chainId.toHex();
qDebug() << "serialized:" << serialized.toHex();
qDebug() << "digest :" << digest.toHex();
qDebug() << "expected :" << expectedDigest.toHex();
qDebug() << "PrivateKey:" << privateKey.toHex();
QVERIFY(digest.size() == 32);
QCOMPARE(digest, expectedDigest);
QByteArray sig1 = crypto::Secp256k1::signRecoverable(digest, privateKey);
QByteArray sig2 = crypto::Secp256k1::signRecoverable(digest, privateKey);
QByteArray signature = crypto::Secp256k1::signRecoverable(digest, privateKey);
qDebug() << "Signature: " << signature.toHex();
QByteArray pubkey = crypto::Secp256k1::recoverPublicKey(digest, signature);
QByteArray expectedPub = crypto::Secp256k1::derivePublicKey(privateKey);
qDebug() << "Recovered pubkey: " << pubkey.toHex();
qDebug() << "Expected pubkey: " << expectedPub.toHex();
QCOMPARE(pubkey, expectedPub);
// Determinism
QCOMPARE(sig1, sig2);
// Structure
QVERIFY(signature.size() == 65);
uint8_t header = static_cast<uint8_t>(signature[0]);
QVERIFY(header >= 31 && header <= 34);
// Cryptographic validity
QCOMPARE(pubkey, expectedPub);
//Flawed expectations
// QCOMPARE(signature, expectedSignature);
gave me
chainId : "beeab0de00000000000000000000000000000000000000000000000000000000"
serialized: "010001000000f1536501010201610162e80300000000000003484956450000000000"
digest : "357d8e5c7240f993b0eee33d2d577acb2e453a54cdb10b066db830b584b02d8f"
expected : "357d8e5c7240f993b0eee33d2d577acb2e453a54cdb10b066db830b584b02d8f"
PrivateKey: "0c28fca386c7a2276ac819d1c3a5d6f0d3c2c0e8e1d5f6c2dff7e94ece66d3bb"
Signature: "20e0c056d76dc0ee9d41a4bc9a535fe06f66b28b3192fa771fd643e5ca25a198be64204c6aad0738442729d465e9b5ebfb56af2790282732f21ec1364a5008f193"
Recovered pubkey: "036a65ad2d29e0119178fe797533172285b1f80f874a8b21ca0fa79e6edf8de726"
Expected pubkey: "036a65ad2d29e0119178fe797533172285b1f80f874a8b21ca0fa79e6edf8de726"
If you trust my capability to run a stable and updated Hive Witness...
Vote for me as your Hive Witness
If you want to support Brazilian creators...
Vote curator @perfilbrasil for Hive Witness
Delegations to
are rewarded here.