/* vim: set expandtab ts=4 sw=4: */
/*
* You may redistribute this program and/or modify it under the terms of
* the GNU General Public License as published by the Free Software Foundation,
* either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
#include "crypto/random/Random.h"
#include "memory/MallocAllocator.h"
#include "crypto/AddressCalc.h"
#include "util/AddrTools.h"
#include "util/Base32.h"
#include "util/Hex.h"
#include "crypto_scalarmult_curve25519.h"
#include
#include
int main(int argc, char** argv)
{
struct Allocator* alloc = MallocAllocator_new(1<<22);
struct Random* rand = Random_new(alloc, NULL, NULL);
uint8_t privateKey[32];
uint8_t publicKey[32];
uint8_t publicKeyBase32[53];
uint8_t ip[16];
uint8_t hexPrivateKey[65];
uint8_t printedIp[40];
#ifndef win32
signal(SIGPIPE,SIG_DFL);
#endif
for (;;) {
Random_bytes(rand, privateKey, 32);
crypto_scalarmult_curve25519_base(publicKey, privateKey);
if (AddressCalc_addressForPublicKey(ip, publicKey)) {
Hex_encode(hexPrivateKey, 65, privateKey, 32);
Base32_encode(publicKeyBase32, 53, publicKey, 32);
AddrTools_printIp(printedIp, ip);
printf("%s %s %s.k\n", hexPrivateKey, printedIp, publicKeyBase32);
fflush(stdout);
}
}
return 0;
}