mirror of
https://github.com/PurpleI2P/i2pd-tools.git
synced 2025-01-22 13:27:17 +01:00
commit
644df5b4ee
|
@ -47,7 +47,7 @@ print iptables firewall rules to allow 1 nodes in netdb through firewall includi
|
|||
|
||||
### keygen
|
||||
|
||||
Generate an i2p private key
|
||||
Generate an I2P private key
|
||||
|
||||
#### Usage
|
||||
|
||||
|
@ -76,6 +76,9 @@ or
|
|||
| EDDSA-SHA512-ED25519 | 7 |
|
||||
| GOSTR3410_CRYPTO_PRO_A-GOSTR3411-256 | 9 |
|
||||
| GOSTR3410_TC26_A_512-GOSTR3411-512 | 10 |
|
||||
| RED25519-SHA512 | 11 |
|
||||
|
||||
For more information on the types of signatures, see the [documentation](https://i2pd.readthedocs.io/en/latest/user-guide/tunnels/#signature-types).
|
||||
|
||||
### vain
|
||||
|
||||
|
@ -98,7 +101,7 @@ Vanity generation address.
|
|||
|
||||
### keyinfo
|
||||
|
||||
Prints information about an i2p private key
|
||||
Prints information about an I2P private key
|
||||
|
||||
#### Usage
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@ int main (int argc, char * argv[])
|
|||
if (argc > 2) {
|
||||
std::string str(argv[2]);
|
||||
type = NameToSigType(str);
|
||||
if (SigTypeToName(type).find("unknown") != std::string::npos) { std::cerr << "Incorrect signature type" << std::endl; return -2; }
|
||||
}
|
||||
auto keys = i2p::data::PrivateKeys::CreateRandomKeys (type);
|
||||
std::ofstream f (argv[1], std::ofstream::binary | std::ofstream::out);
|
||||
|
@ -28,6 +29,7 @@ int main (int argc, char * argv[])
|
|||
f.write ((char *)buf, len);
|
||||
delete[] buf;
|
||||
std::cout << "Destination " << keys.GetPublic ()->GetIdentHash ().ToBase32 () << " created" << std::endl;
|
||||
std::cout << "Signature type: " << SigTypeToName(type) << " (" << type << ")" << std::endl;
|
||||
}
|
||||
else
|
||||
std::cout << "Can't create file " << argv[1] << std::endl;
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include "vanity.hpp"
|
||||
#include<regex>
|
||||
#include<getopt.h>
|
||||
#include <regex>
|
||||
#include <mutex>
|
||||
#include <getopt.h>
|
||||
|
||||
|
||||
static struct
|
||||
|
@ -10,8 +11,17 @@ static struct
|
|||
i2p::data::SigningKeyType signature;
|
||||
std::string outputpath="";
|
||||
std::regex regex;
|
||||
bool sig_type = true;
|
||||
} options;
|
||||
|
||||
void check_sig_type()
|
||||
{
|
||||
if (SigTypeToName(options.signature).find("unknown") != std::string::npos)
|
||||
{
|
||||
std::cerr << "Incorrect signature type" << std::endl;
|
||||
options.sig_type = false;
|
||||
}
|
||||
}
|
||||
|
||||
static void inline CalculateW (const uint8_t block[64], uint32_t W[64])
|
||||
{
|
||||
|
@ -124,6 +134,7 @@ static inline bool NotThat(const char * a, const char *b)
|
|||
return false;
|
||||
}
|
||||
|
||||
std::mutex mtx;
|
||||
static inline bool thread_find(uint8_t * buf, const char * prefix, int id_thread, unsigned long long throughput)
|
||||
{
|
||||
/**
|
||||
|
@ -131,7 +142,9 @@ static inline bool thread_find(uint8_t * buf, const char * prefix, int id_thread
|
|||
* For idea and example ^-^
|
||||
* Orignal is sensei of crypto ;)
|
||||
*/
|
||||
mtx.lock();
|
||||
std::cout << "Thread " << id_thread << " binded" << std::endl;
|
||||
mtx.unlock();
|
||||
/*
|
||||
union
|
||||
{
|
||||
|
@ -187,7 +200,7 @@ static inline bool thread_find(uint8_t * buf, const char * prefix, int id_thread
|
|||
// if(result)
|
||||
{
|
||||
ByteStreamToBase32 ((uint8_t*)hash, 32, addr, 52);
|
||||
std::cout << "Address found " << addr << " in " << id_thread << std::endl;
|
||||
std::cout << "Address found " << addr << std::endl;
|
||||
found=true;
|
||||
FoundNonce=*nonce;
|
||||
// free(hash);
|
||||
|
@ -210,13 +223,11 @@ static inline bool thread_find(uint8_t * buf, const char * prefix, int id_thread
|
|||
|
||||
void usage(void){
|
||||
const constexpr char * help="vain [text-pattern|regex-pattern] [options]\n"
|
||||
"-h --help, help menu\n"
|
||||
"-r --reg, regexp instead just text pattern (e.g. '(one|two).*')\n"
|
||||
"--threads -t, (default count of system)\n"
|
||||
"--signature -s, (signature type)\n"
|
||||
"-h --help help menu\n"
|
||||
"-r --reg regexp instead just text pattern (e.g. '(one|two).*')\n"
|
||||
"-t --threads (default count of system)\n"
|
||||
// "--signature -s, (signature type)\n" NOT IMPLEMENTED FUCKING PLAZ!
|
||||
"-o --output output file (default private.dat)\n"
|
||||
"--usage usage\n"
|
||||
// "--prefix -p\n"
|
||||
"";
|
||||
puts(help);
|
||||
}
|
||||
|
@ -253,6 +264,7 @@ void parsing(int argc, char ** args){
|
|||
break;
|
||||
case 's':
|
||||
options.signature = NameToSigType(std::string(optarg));
|
||||
check_sig_type();
|
||||
break;
|
||||
case 'o':
|
||||
options.outputpath=optarg;
|
||||
|
@ -302,6 +314,7 @@ int main (int argc, char * argv[])
|
|||
///////////////
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
if (!options.sig_type) return -2;
|
||||
auto keys = i2p::data::PrivateKeys::CreateRandomKeys (options.signature);
|
||||
switch(options.signature)
|
||||
{
|
||||
|
@ -311,7 +324,7 @@ int main (int argc, char * argv[])
|
|||
case i2p::data::SIGNING_KEY_TYPE_RSA_SHA384_3072:
|
||||
case i2p::data::SIGNING_KEY_TYPE_RSA_SHA512_4096:
|
||||
case i2p::data::SIGNING_KEY_TYPE_GOSTR3410_TC26_A_512_GOSTR3411_512:
|
||||
std::cout << "Sorry, i don't can generate address for this signature type" << std::endl;
|
||||
std::cout << "Sorry, I don't can generate address for this signature type" << std::endl;
|
||||
return 0;
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue