mirror of
https://github.com/qTox/qTox.git
synced 2024-03-22 14:00:36 +08:00
1350fbbaf9
qtox-updater-sign takes data from stdin or as argument, signs it with the updater's private key, and output the signature + the data qtox-updater-genflist generates a flist, a serialized list of AutoUpdater::UpdateFileMeta for the qTox updater
44 lines
972 B
C++
44 lines
972 B
C++
#include <sodium.h>
|
|
#include <QByteArray>
|
|
#include <QFile>
|
|
|
|
using namespace std;
|
|
|
|
int main(int argc, char* argv[])
|
|
{
|
|
QFile io;
|
|
QByteArray msg;
|
|
if (argc > 1)
|
|
{
|
|
msg = QByteArray(argv[1]);
|
|
}
|
|
else
|
|
{
|
|
io.open(stdin, QIODevice::ReadOnly);
|
|
msg = io.readAll();
|
|
io.close();
|
|
}
|
|
io.open(stdout, QIODevice::WriteOnly);
|
|
|
|
QFile skeyFile("qtox-updater-skey");
|
|
if (!skeyFile.open(QIODevice::ReadOnly))
|
|
{
|
|
io.write("ERROR: qtox-updater-sign can't open the secret (private) key file\n");
|
|
io.close();
|
|
return 1;
|
|
}
|
|
QByteArray skeyData = skeyFile.readAll();
|
|
skeyData = QByteArray::fromHex(skeyData);
|
|
skeyFile.close();
|
|
|
|
unsigned char sig[crypto_sign_BYTES];
|
|
crypto_sign_detached(sig, nullptr, (unsigned char*)msg.data(), msg.size(), (unsigned char*)skeyData.data());
|
|
|
|
io.write((char*)sig, crypto_sign_BYTES);
|
|
io.write(msg);
|
|
io.close();
|
|
|
|
return 0;
|
|
}
|
|
|