You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
2.3 KiB
86 lines
2.3 KiB
#pragma once |
|
#include <iostream> |
|
#include <fstream> |
|
#include <stdlib.h> |
|
#include <openssl/rand.h> |
|
#include "Crypto.h" |
|
#include "Identity.h" |
|
#include "I2PEndian.h" |
|
#include "common/key.hpp" |
|
#include <thread> |
|
#include <unistd.h> |
|
#include <vector> |
|
|
|
#ifdef _WIN32 |
|
#include <windows.h> |
|
#endif |
|
|
|
// sha256 |
|
#define Ch(x, y, z) ((x & (y ^ z)) ^ z) |
|
#define Maj(x, y, z) ((x & (y | z)) | (y & z)) |
|
#define SHR(x, n) (x >> n) |
|
#define ROTR(x, n) ((x >> n) | (x << (32 - n))) |
|
#define S0(x) (ROTR(x, 2) ^ ROTR(x, 13) ^ ROTR(x, 22)) |
|
#define S1(x) (ROTR(x, 6) ^ ROTR(x, 11) ^ ROTR(x, 25)) |
|
#define s0(x) (ROTR(x, 7) ^ ROTR(x, 18) ^ SHR(x, 3)) |
|
#define s1(x) (ROTR(x, 17) ^ ROTR(x, 19) ^ SHR(x, 10)) |
|
|
|
#define RND(a, b, c, d, e, f, g, h, k) \ |
|
t0 = h + S1(e) + Ch(e, f, g) + k; \ |
|
t1 = S0(a) + Maj(a, b, c); \ |
|
d += t0; \ |
|
h = t0 + t1; |
|
|
|
#define RNDr(S, W, i, k) \ |
|
RND(S[(64 - i) % 8], S[(65 - i) % 8], \ |
|
S[(66 - i) % 8], S[(67 - i) % 8], \ |
|
S[(68 - i) % 8], S[(69 - i) % 8], \ |
|
S[(70 - i) % 8], S[(71 - i) % 8], \ |
|
W[i] + k) |
|
|
|
|
|
//static i2p::data::SigningKeyType type; |
|
//static i2p::data::PrivateKeys keys; |
|
|
|
|
|
// for InitCrypto. TODO: to makefile/another place get the macro |
|
#ifndef PRECOMPUTATION_CRYPTO |
|
#define PRECOMPUTATION_CRYPTO false |
|
#endif |
|
#ifndef AESNI_CRYPTO |
|
#define AESNI_CRYPTO false |
|
#endif |
|
#ifndef AVX_CRYPTO |
|
#define AVX_CRYPTO false |
|
#endif |
|
#ifndef FORCE_CRYPTO |
|
#define FORCE_CRYPTO false |
|
#endif |
|
// def out file name |
|
#define DEF_OUT_FILE "private" |
|
// Global vars |
|
static bool found=false; |
|
static bool multipleSearchMode = false; |
|
//TODO: an another variable for file count and found keys as found keys by one runs |
|
static unsigned int foundKeys = 0; |
|
static size_t MutateByte; |
|
|
|
static uint32_t FoundNonce=0; |
|
|
|
//static uint8_t ** KeyBufs; |
|
|
|
//static uint8_t * PaddingBuf; |
|
static unsigned long long hashescounter; |
|
unsigned int count_cpu; |
|
|
|
const uint8_t lastBlock[64] = |
|
{ |
|
0x05, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x80, // 7 bytes EdDSA certificate |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, |
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x38 // 3128 bits (391 bytes) |
|
};
|
|
|