mirror of
https://github.com/eosswedenorg/antelope-keygen
synced 2026-06-16 03:44:56 +02:00
Compare commits
No commits in common. "develop" and "v1.0.8" have entirely different histories.
51 changed files with 492 additions and 803 deletions
14
.github/workflows/ci.yml
vendored
14
.github/workflows/ci.yml
vendored
|
|
@ -14,7 +14,7 @@ jobs:
|
|||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [ ubuntu-20.04, ubuntu-22.04, macos-latest, windows-latest ]
|
||||
os: [ ubuntu-20.04, ubuntu-18.04, macos-latest, windows-latest ]
|
||||
build: [ cli, cli-mt, cli-ansi, cli-ansi-mt, gui, gui-mt ]
|
||||
include:
|
||||
- build: cli
|
||||
|
|
@ -34,7 +34,7 @@ jobs:
|
|||
runs-on: ${{matrix.os}}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v1
|
||||
|
||||
- name: OpenSSL OSX
|
||||
if: runner.os == 'macOS'
|
||||
|
|
@ -46,17 +46,17 @@ jobs:
|
|||
shell: bash
|
||||
run: |
|
||||
sudo apt-get update
|
||||
if [ "${{matrix.os}}" == "ubuntu-22.04" ]; then
|
||||
sudo apt-get install qtbase5-dev=5.15.3+dfsg-2ubuntu0.2
|
||||
else :
|
||||
if [ "${{matrix.os}}" == "ubuntu-20.04" ]; then
|
||||
sudo apt-get install qt5-default=5.12.8+dfsg-0ubuntu2.1
|
||||
else :
|
||||
sudo apt-get install qt5-default=5.9.5+dfsg-0ubuntu2.6
|
||||
fi
|
||||
|
||||
- name: Qt - Windows/Mac
|
||||
if: startsWith(matrix.build, 'gui') && runner.os != 'Linux'
|
||||
uses: jurplel/install-qt-action@v3
|
||||
uses: jurplel/install-qt-action@v2
|
||||
with:
|
||||
version: '5.15.2'
|
||||
version: '5.11.0'
|
||||
|
||||
- name: Configure
|
||||
shell: bash
|
||||
|
|
|
|||
99
.github/workflows/package.yml
vendored
99
.github/workflows/package.yml
vendored
|
|
@ -9,36 +9,35 @@ jobs:
|
|||
ubuntu:
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ ubuntu-20.04, ubuntu-22.04 ]
|
||||
os: [ ubuntu-18.04, ubuntu-20.04 ]
|
||||
component: [ cli, gui ]
|
||||
include:
|
||||
- os: ubuntu-20.04
|
||||
qt: qt5-default=5.12.8+dfsg-0ubuntu2.1
|
||||
- os: ubuntu-22.04
|
||||
qt: qtbase5-dev=5.15.3+dfsg-2ubuntu0.2
|
||||
- component: cli
|
||||
build-opts: --cli --no-gui -t Release --pkg-type deb
|
||||
- component: gui
|
||||
build-opts: --no-cli --gui -t Release --pkg-type deb
|
||||
name: DEB ${{matrix.os}} (${{matrix.component}})
|
||||
name: ${{matrix.os}} (${{matrix.component}})
|
||||
runs-on: ${{matrix.os}}
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v1
|
||||
|
||||
- name: Qt
|
||||
if: startsWith(matrix.component, 'gui')
|
||||
shell: bash
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install ${{matrix.qt}}
|
||||
if [ "${{matrix.os}}" == "ubuntu-20.04" ]; then
|
||||
sudo apt-get install qt5-default=5.12.8+dfsg-0ubuntu2.1
|
||||
else :
|
||||
sudo apt-get install qt5-default=5.9.5+dfsg-0ubuntu2.6
|
||||
fi
|
||||
|
||||
- name: Package
|
||||
id: package
|
||||
run: |
|
||||
./build.sh ${{matrix.build-opts}}
|
||||
FILE=$(ls build/*.deb | head -1)
|
||||
echo "filename=$FILE" >> "$GITHUB_OUTPUT"
|
||||
echo "name=$(basename $FILE)" >> "$GITHUB_OUTPUT"
|
||||
FILE=$(ls build/eosio-*.deb | head -1)
|
||||
echo "::set-output name=filename::$FILE"
|
||||
echo "::set-output name=name::$(basename $FILE)"
|
||||
|
||||
- name: Upload
|
||||
uses: actions/upload-release-asset@v1
|
||||
|
|
@ -50,74 +49,6 @@ jobs:
|
|||
asset_path: ${{ steps.package.outputs.filename }}
|
||||
asset_content_type: application/x-deb
|
||||
|
||||
# RPM package for redhat based systems.
|
||||
rpm:
|
||||
strategy:
|
||||
matrix:
|
||||
container:
|
||||
- name: "fedora:36"
|
||||
deps:
|
||||
gcc-12.2.1-4.fc36.x86_64
|
||||
gcc-c++-12.2.1-4.fc36.x86_64
|
||||
cmake-3.26.3-1.fc36.x86_64
|
||||
openssl1.1-devel-1.1.1q-1.fc36.x86_64
|
||||
qt: qt5-qtbase-devel-5.15.3-1.fc36.x86_64
|
||||
|
||||
- name: "fedora:37"
|
||||
deps:
|
||||
gcc-12.3.1-1.fc37.x86_64
|
||||
gcc-c++-12.3.1-1.fc37.x86_64
|
||||
cmake-3.27.1-1.fc37.x86_64
|
||||
openssl-devel-3.0.9-1.fc37.x86_64
|
||||
qt: qt5-qtbase-devel-5.15.9-3.fc37.x86_64
|
||||
|
||||
- name: "fedora:38"
|
||||
deps:
|
||||
gcc-13.2.1-1.fc38.x86_64
|
||||
gcc-c++-13.2.1-1.fc38.x86_64
|
||||
cmake-3.26.2-1.fc38.x86_64
|
||||
openssl-devel-1:3.0.9-2.fc38.x86_64
|
||||
qt: qt5-qtbase-devel-5.15.10-5.fc38.x86_64
|
||||
component: [ cli, gui ]
|
||||
include:
|
||||
- component: cli
|
||||
build-opts: --cli --no-gui -t Release --pkg-type rpm
|
||||
- component: gui
|
||||
build-opts: --no-cli --gui -t Release --pkg-type rpm
|
||||
name: RPM ${{matrix.container.name}} (${{matrix.component}})
|
||||
runs-on: ubuntu-latest
|
||||
container: ${{ matrix.container.name }}
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Dependancies
|
||||
run: |
|
||||
sudo dnf install -y util-linux rpmdevtools git ${{ matrix.container.deps }}
|
||||
|
||||
- name: Qt
|
||||
if: startsWith(matrix.component, 'gui')
|
||||
shell: bash
|
||||
run: |
|
||||
sudo dnf install -y ${{ matrix.container.qt }}
|
||||
|
||||
- name: Package
|
||||
id: package
|
||||
run: |
|
||||
./build.sh ${{matrix.build-opts}}
|
||||
FILE=$(ls build/*.rpm | head -1)
|
||||
echo "filename=$FILE" >> "$GITHUB_OUTPUT"
|
||||
echo "name=$(basename $FILE)" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Upload
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
upload_url: ${{ github.event.release.upload_url }}
|
||||
asset_name: ${{ steps.package.outputs.name }}
|
||||
asset_path: ${{ steps.package.outputs.filename }}
|
||||
asset_content_type: application/octet-stream
|
||||
|
||||
# Windows installer
|
||||
windows:
|
||||
strategy:
|
||||
|
|
@ -131,10 +62,10 @@ jobs:
|
|||
name: Windows (${{matrix.arch}})
|
||||
runs-on: windows-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v1
|
||||
|
||||
- name: Qt
|
||||
uses: jurplel/install-qt-action@v3
|
||||
uses: jurplel/install-qt-action@v2
|
||||
with:
|
||||
arch: ${{ matrix.qt-arch }}
|
||||
version: '5.11.0'
|
||||
|
|
@ -147,8 +78,8 @@ jobs:
|
|||
run: |
|
||||
cmake --build build --config Release --target package
|
||||
$FILE=(ls build/*.exe)
|
||||
echo "filename=$FILE" >> "$GITHUB_OUTPUT"
|
||||
echo "name=$(([io.fileinfo]"$FILE").basename)" >> "$GITHUB_OUTPUT"
|
||||
echo "::set-output name=filename::$FILE"
|
||||
echo "::set-output name=name::$(([io.fileinfo]"$FILE").basename).exe"
|
||||
|
||||
- name: Upload
|
||||
uses: actions/upload-release-asset@v1
|
||||
|
|
|
|||
|
|
@ -4,10 +4,10 @@ cmake_minimum_required(VERSION 3.15)
|
|||
# Project Info
|
||||
# --------------------------------
|
||||
|
||||
project(antelope-keygen
|
||||
VERSION 1.1.0
|
||||
DESCRIPTION "Keygenerator for Antelope based blockchain"
|
||||
HOMEPAGE_URL "https://github.com/eosswedenorg/antelope-keygen" )
|
||||
project(eosio-keygen
|
||||
VERSION 1.0.8
|
||||
DESCRIPTION "Keygenerator for EOSIO"
|
||||
HOMEPAGE_URL "https://github.com/eosswedenorg/eosio-keygen" )
|
||||
|
||||
set( PROJECT_MAINTAINER "Henrik Hautakoski <henrik@eossweden.org>")
|
||||
set( PROJECT_LICENSE_FILE ${CMAKE_CURRENT_LIST_DIR}/LICENSE )
|
||||
|
|
@ -71,38 +71,27 @@ set( CMAKE_CXX_EXTENSIONS OFF )
|
|||
|
||||
# c++ flags
|
||||
add_compile_options(
|
||||
"$<$<COMPILE_LANG_AND_ID:CXX,GNU>:-Wall;-Wconversion;-Wno-sign-conversion;-Wextra>"
|
||||
"$<$<COMPILE_LANG_AND_ID:CXX,MSVC>:/W3;-D_CRT_SECURE_NO_WARNINGS=1>"
|
||||
"$<$<CXX_COMPILER_ID:GNU>:-Wall;-Wconversion;-Wno-sign-conversion;-Wextra>"
|
||||
"$<$<CXX_COMPILER_ID:MSVC>:/W3;-D_CRT_SECURE_NO_WARNINGS=1>"
|
||||
|
||||
# Debug
|
||||
"$<$<CONFIG:Debug>:$<$<COMPILE_LANG_AND_ID:CXX,GNU>:-O0;-g>>"
|
||||
"$<$<CONFIG:Debug>:$<$<COMPILE_LANG_AND_ID:CXX,MSVC>:/Od;/Zi>>"
|
||||
"$<$<CONFIG:Debug>:$<$<CXX_COMPILER_ID:GNU>:-O0;-g>>"
|
||||
"$<$<CONFIG:Debug>:$<$<CXX_COMPILER_ID:MSVC>:/Od;/Zi>>"
|
||||
|
||||
# Release
|
||||
"$<$<CONFIG:Release>:$<$<COMPILE_LANG_AND_ID:CXX,GNU>:-O3>>"
|
||||
"$<$<CONFIG:Release>:$<$<COMPILE_LANG_AND_ID:CXX,MSVC>:/O2>>"
|
||||
"$<$<CONFIG:Release>:$<$<CXX_COMPILER_ID:GNU>:-O3>>"
|
||||
"$<$<CONFIG:Release>:$<$<CXX_COMPILER_ID:MSVC>:/O2>>"
|
||||
|
||||
# MinSizeRel
|
||||
"$<$<CONFIG:MinSizeRel>:$<$<COMPILE_LANG_AND_ID:CXX,GNU>:-Os>>"
|
||||
"$<$<CONFIG:MinSizeRel>:$<$<COMPILE_LANG_AND_ID:CXX,MSVC>:/O1>>"
|
||||
"$<$<CONFIG:MinSizeRel>:$<$<CXX_COMPILER_ID:GNU>:-Os>>"
|
||||
"$<$<CONFIG:MinSizeRel>:$<$<CXX_COMPILER_ID:MSVC>:/O1>>"
|
||||
)
|
||||
|
||||
add_link_options(
|
||||
# Release
|
||||
"$<$<CONFIG:Release>:$<$<COMPILE_LANG_AND_ID:CXX,GNU>:-s>>"
|
||||
)
|
||||
|
||||
include(CheckPIESupported)
|
||||
check_pie_supported()
|
||||
#cmake_policy(SET CMP0083 NEW)
|
||||
|
||||
set( CMAKE_POSITION_INDEPENDENT_CODE TRUE )
|
||||
|
||||
# Project config file
|
||||
configure_file(config.hpp.in "${PROJECT_BINARY_DIR}/config.hpp" @ONLY)
|
||||
include_directories(${PROJECT_BINARY_DIR})
|
||||
|
||||
# Bundle antelope-extras on windows.
|
||||
# Bundle eosio-extras on windows.
|
||||
if (WIN32)
|
||||
include(extras)
|
||||
list(APPEND components extras )
|
||||
|
|
|
|||
2
LICENSE
2
LICENSE
|
|
@ -1,6 +1,6 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2019-2023 EOS Sw/eden
|
||||
Copyright (c) 2019-2021 EOS Sw/eden
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
|
|
|||
42
README.md
42
README.md
|
|
@ -1,24 +1,24 @@
|
|||
|
||||
[](https://github.com/eosswedenorg/antelope-keygen/actions)
|
||||
[](https://github.com/eosswedenorg/antelope-keygen/releases/latest)
|
||||

|
||||
[](https://github.com/eosswedenorg/eosio-keygen/releases/latest)
|
||||
[](https://opensource.org/licenses/MIT)
|
||||
|
||||
# Antelope Keygen
|
||||
# EOSIO Keygen
|
||||
|
||||
This program generates public and private keypair for [Antelope IO](https://antelope.io)
|
||||
This program generates public and private keypair for [EOS](https://eos.io/)
|
||||
|
||||
## Compile
|
||||
|
||||
You will need `libantelope` and `cmake 3.15` or later to compile this project.
|
||||
You will need `libeosio` and `cmake 3.15` or later to compile this project.
|
||||
|
||||
`Qt 5.9.0` or later is required for the graphical program.
|
||||
|
||||
### Linux/MacOS
|
||||
|
||||
**NOTE:** Only Ubuntu 20.04 and 22.04 and Fedoora 36 is officially supported.
|
||||
**NOTE:** Only Ubuntu 18.04 is officially supported.
|
||||
|
||||
The project should compile fine on most versions/distros but it is only tested
|
||||
and distributed for those distros/versions by [Sw/eden](http://www.eossweden.org).
|
||||
and distributed for Ubuntu 18.04 by [Sw/eden](www.eossweden.org).
|
||||
|
||||
#### Dependencies
|
||||
|
||||
|
|
@ -78,7 +78,7 @@ $ brew install cmake
|
|||
|
||||
If you need a newer version of cmake, you can download the official `.dmg` file: [cmake-3.15.7-Darwin-x86_64.dmg](https://github.com/Kitware/CMake/releases/download/v3.15.7/cmake-3.15.7-Darwin-x86_64.dmg). or see https://cmake.org/download for other versions.
|
||||
|
||||
`libantelope` needs to be compiled and installed from source. [Go here](https://github.com/eosswedenorg/libantelope)
|
||||
`libeosio` needs to be compiled and installed from source. [Go here](https://github.com/eosswedenorg/libeosio)
|
||||
|
||||
**Qt (only for gui program)**
|
||||
|
||||
|
|
@ -150,30 +150,31 @@ These compile options are available:
|
|||
|
||||
For more details about options run `./build.sh -l` or `mkdir build && cmake build -LA`
|
||||
|
||||
### libantelope
|
||||
### libeosio
|
||||
|
||||
To speed up the build process, you can install `libantelope`
|
||||
To speed up the build process, you can install `libeosio`
|
||||
|
||||
#### Ubuntu
|
||||
|
||||
You can use [Sw/eden's APT Repository](https://eosswedenorg.github.io/apt) like this:
|
||||
You can use [EOS Sweden's APT Repository](https://eosswedenorg.github.io/apt) like this:
|
||||
|
||||
```sh
|
||||
$ sudo apt-get install software-properties-common
|
||||
$ curl https://apt.eossweden.org/key 2> /dev/null | sudo apt-key add -
|
||||
$ sudo apt-add-repository -y 'deb [arch=amd64] https://apt.eossweden.org/main `lsb_release -cs` stable'
|
||||
$ sudo apt-get install libantelope-dev
|
||||
$ sudo apt-get install libeosio-dev
|
||||
```
|
||||
or manually via `.deb` file from [github](https://github.com/eosswedenorg/libantelope/releases)
|
||||
|
||||
or manually via `.deb` file from [github](https://github.com/eosswedenorg/libeosio/releases)
|
||||
|
||||
```sh
|
||||
$ wget <url>
|
||||
$ sudo apt install ./libantelope-dev-<version>.deb
|
||||
$ sudo apt install ./libeosio-dev-<version>.deb
|
||||
```
|
||||
|
||||
#### Other
|
||||
|
||||
Consult [libantelope's github](https://github.com/eosswedenorg/libantelope)
|
||||
Consult [libeosio's github](https://github.com/eosswedenorg/libeosio)
|
||||
|
||||
## Install
|
||||
|
||||
|
|
@ -195,12 +196,13 @@ Run `sudo ./uninstall.sh` or remove the files listed in `build/install_manifest.
|
|||
|
||||
## Security notice
|
||||
|
||||
Keys are generated using [libantelope](https://github.com/eosswedenorg/libantelope)
|
||||
while the library does not claim to guarantee cryptographically secure keys. it
|
||||
relies on widly used open source cryptographic libraries (OpenSSL, libsecp256k1).
|
||||
Keys are generated by `OpenSSL`'s `EC_KEY_generate_key` function. The program will
|
||||
never expose your keys to anything but the computers memory and output of the
|
||||
program. You are free to inspect the source code and compile yourself to verify.
|
||||
|
||||
Use at your own risk. The author and [Sw/eden](https://eossweden.org/) does not take responsability
|
||||
for any damage caused by keys generated by the program.
|
||||
However, use this at your own risk. we cannot guarantee that the keys are
|
||||
cryptographically secure as this depends on OpenSSL's implementation (alto it is
|
||||
widely used and should be safe)
|
||||
|
||||
Please read the `LICENSE` file.
|
||||
|
||||
|
|
|
|||
3
build.sh
3
build.sh
|
|
@ -11,7 +11,6 @@ options=$(getopt -n "${0##*/}" -o "lht:" -l "help,cli,no-cli,gui,no-gui,type:,li
|
|||
|
||||
eval set -- "$options"
|
||||
|
||||
TARGET="all"
|
||||
ONLY_CONFIG=0
|
||||
ARGS=""
|
||||
BUILD_ARGS="--clean-first"
|
||||
|
|
@ -29,7 +28,7 @@ while true; do
|
|||
;;
|
||||
--pkg-type)
|
||||
shift
|
||||
[[ ! "$1" =~ ^(nsis|deb|rpm|zip|tgz)$ ]] && {
|
||||
[[ ! "$1" =~ ^(nsis|deb|zip|tgz)$ ]] && {
|
||||
echo "Incorrect package type '$1' provided"
|
||||
usage
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ cmake_minimum_required(VERSION 3.15)
|
|||
# Project Info
|
||||
# --------------------------------
|
||||
|
||||
project(antelope-keygen
|
||||
project(eosio-keygen
|
||||
VERSION ${CMAKE_PROJECT_VERSION}
|
||||
LANGUAGES CXX)
|
||||
|
||||
|
|
@ -57,7 +57,7 @@ install (FILES ${LIBCLI11_LICENSE}
|
|||
DESTINATION ${CMAKE_INSTALL_SHAREDIR}
|
||||
COMPONENT cli
|
||||
RENAME LICENSE.libcli11)
|
||||
|
||||
|
||||
|
||||
# Documentation
|
||||
|
||||
|
|
@ -67,9 +67,7 @@ install(FILES ${PROJECT_BINARY_DIR}/README.cli.md
|
|||
COMPONENT cli)
|
||||
|
||||
if (UNIX)
|
||||
configure_file( docs/antelope-keygen.1.in ${PROJECT_BINARY_DIR}/man1/antelope-keygen.1 )
|
||||
configure_file( docs/antelope-keygen-search.1.in ${PROJECT_BINARY_DIR}/man1/antelope-keygen-search.1 )
|
||||
configure_file( docs/antelope-keygen-benchmark.1.in ${PROJECT_BINARY_DIR}/man1/antelope-keygen-benchmark.1 )
|
||||
configure_file( docs/eosio-keygen.1.in ${PROJECT_BINARY_DIR}/man1/eosio-keygen.1 )
|
||||
|
||||
install(DIRECTORY ${PROJECT_BINARY_DIR}/man1
|
||||
DESTINATION ${CMAKE_INSTALL_MANDIR}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
|
||||
# @PROJECT_NAME@ (cli)
|
||||
# eosio-keygen (cli)
|
||||
|
||||
Generate public and private keypair for [Antelope IO](https://antelope.io)
|
||||
Generate public and private keypair for [EOSIO](https://eos.io/)
|
||||
|
||||
Source code is available at [github.com](https://github.com/eosswedenorg/antelope-keygen)
|
||||
Source code is available at [github.com](https://github.com/eosswedenorg/eosio-keygen)
|
||||
|
||||
## Synopsis
|
||||
|
||||
|
|
@ -12,14 +12,14 @@ Source code is available at [github.com](https://github.com/eosswedenorg/antelop
|
|||
|
||||
@PROJECT_NAME@ [-v]
|
||||
|
||||
@PROJECT_NAME@ search [-m] [--l33t] [--threads <num>] [--dict <file1> ...] [--lang <value> ...] word_list [count]
|
||||
@PROJECT_NAME@ search [-m] [--l33t] [--threads=<num>] [--dict=<file1> ...] [--lang=<value> ...] word_list [count]
|
||||
|
||||
@PROJECT_NAME@ benchmark [num_keys]
|
||||
```
|
||||
|
||||
## Description
|
||||
|
||||
Output one Antelope key pair if no arguments are given.
|
||||
Output one EOSIO key pair if no arguments are given.
|
||||
Options and subcommands are as follows:
|
||||
|
||||
### General flags
|
||||
|
|
@ -32,7 +32,7 @@ Options and subcommands are as follows:
|
|||
|
||||
### search command
|
||||
|
||||
`@PROJECT_NAME@ search [-m] [--l33t] [--threads <num>] [--dict <file1> ...] [--lang <value> ...] word_list [count]`
|
||||
`eosio-keygen search [-m] [--l33t] [--threads=<num>] [--dict=<file1> ...] [--lang=<value> ...] word_list [count]`
|
||||
|
||||
performs a search, finding `count` public keys containing one or more words from `word_list` (separated with ',').
|
||||
|
||||
|
|
@ -48,17 +48,17 @@ Monochrome, disables all color output.
|
|||
|
||||
Takes each word in `word_list` and find all l33tspeak combinations of that word and uses the new list for the search.
|
||||
|
||||
#### --threads num
|
||||
#### --threads=num
|
||||
|
||||
Use `num` of parallel threads for searching. Default is what the operating system recommends.
|
||||
|
||||
#### --dict file
|
||||
#### --dict=file
|
||||
Use words found in `file` (separated by newline) to highlight words in the keys
|
||||
found (note that the words in this file are not used for search. only for highlight output).
|
||||
|
||||
There can be more then one `--dict` flag. In that case contents of all files are merged into one dictionary.
|
||||
|
||||
#### --lang value
|
||||
#### --lang=value
|
||||
|
||||
Same as `--dict` but will use `value` to find a file in `@CMAKE_INSTALL_FULL_DATADIR@/@CMAKE_PROJECT_NAME@/dict`.
|
||||
There can be more then one `--lang` flag. In that case contents of all files are merged into one dictionary.
|
||||
|
|
@ -70,7 +70,7 @@ Number of keys to search for (default is 10)
|
|||
|
||||
### benchmark command
|
||||
|
||||
`@PROJECT_NAME@ benchmark [num_keys]`
|
||||
`eosio-keygen benchmark [num_keys]`
|
||||
|
||||
performs a benchmark test, generating `num_keys` keys and measuring the time.
|
||||
|
||||
|
|
@ -83,12 +83,13 @@ Number of keys to search for (default is 10)
|
|||
|
||||
## Security notice
|
||||
|
||||
Keys are generated using [libantelope](https://github.com/eosswedenorg/libantelope)
|
||||
while the library does not claim to guarantee cryptographically secure keys. it
|
||||
relies on widly used open source cryptographic libraries (OpenSSL, libsecp256k1).
|
||||
Keys are generated by `OpenSSL`'s `EC_KEY_generate_key` function. The program will
|
||||
never expose your keys to anything but the computers memory and output of the
|
||||
program. You are free to inspect the source code and compile yourself to verify.
|
||||
|
||||
Use at your own risk. The author and [Sw/eden](https://eossweden.org/) does not take responsability
|
||||
for any damage caused by keys generated by the program.
|
||||
However, use this at your own risk. we cannot guarantee that the keys are
|
||||
cryptographically secure as this depends on OpenSSL's implementation (alto it is
|
||||
widely used and should be safe)
|
||||
|
||||
Please read the `LICENSE.cli` file.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,67 +0,0 @@
|
|||
.TH @PROJECT_NAME@-benchmark 1 "April, 2023" "@PROJECT_NAME@-benchmark @PROJECT_VERSION@"
|
||||
|
||||
.SH NAME
|
||||
@PROJECT_NAME@ benchmark - Benchmark the performance of the @PROJECT_NAME@ key generator.
|
||||
|
||||
.SH SYNOPSIS
|
||||
|
||||
.SY @PROJECT_NAME@
|
||||
benchmark
|
||||
.OP \-h|--help
|
||||
.YS
|
||||
|
||||
.SY @PROJECT_NAME@
|
||||
benchmark
|
||||
.OP num_keys
|
||||
.YS
|
||||
|
||||
.SH DESCRIPTION
|
||||
|
||||
performs a benchmark test, generating \fInum_keys\fR (default 1000) keys and measuring the time.
|
||||
|
||||
.SH SECURITY NOTICE
|
||||
|
||||
.PP
|
||||
Keys are generated using
|
||||
.UR https://github.com/eosswedenorg/libantelope
|
||||
libantelope
|
||||
.UE .
|
||||
while the library does not claim to guarantee cryptographically secure keys. it
|
||||
relies on widly used open source cryptographic libraries (OpenSSL, libsecp256k1).
|
||||
|
||||
.PP
|
||||
Use at your own risk. The author and
|
||||
.UR https://eossweden.org
|
||||
Sw/eden
|
||||
.UE
|
||||
does not take responsability for any damage caused by keys generated by the program.
|
||||
|
||||
.P
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
||||
.br
|
||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
||||
.br
|
||||
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
.br
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
|
||||
.br
|
||||
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
||||
.br
|
||||
OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
.SH BUGS
|
||||
|
||||
Report bugs to
|
||||
.UR https://github.com/eosswedenorg/eosio-keygen/issues
|
||||
Github
|
||||
.UE . Thank you.
|
||||
|
||||
.SH AUTHOR
|
||||
|
||||
.MT henrik@eossweden.org
|
||||
Henrik Hautakoski
|
||||
.ME
|
||||
|
||||
.UR https://eossweden.org
|
||||
EOS Sw/eden
|
||||
.UE
|
||||
|
|
@ -1,112 +0,0 @@
|
|||
.TH @PROJECT_NAME@-search 1 "April, 2023" "@PROJECT_NAME@-search @PROJECT_VERSION@"
|
||||
|
||||
.SH NAME
|
||||
@PROJECT_NAME@ search - Search after
|
||||
.UR https://antelope.io
|
||||
Antelope IO
|
||||
.UE
|
||||
vanity keys.
|
||||
|
||||
.SH SYNOPSIS
|
||||
|
||||
.SY @PROJECT_NAME@
|
||||
search
|
||||
.OP \-h|--help
|
||||
.YS
|
||||
|
||||
.SY @PROJECT_NAME@
|
||||
search
|
||||
.OP -m
|
||||
.OP \--l33t
|
||||
.OP \--threads <num>
|
||||
.OP \--dict <file1> ...
|
||||
.OP \--lang <value> ...
|
||||
.B word_list
|
||||
.OP count
|
||||
.YS
|
||||
|
||||
.SH DESCRIPTION
|
||||
|
||||
.PP
|
||||
performs a search, finding \fIcount\fR public keys containing one or more words from
|
||||
\fIword_list\fR (separated with ',').
|
||||
.PP
|
||||
Instead of a list it is possible to specify a file with words (separated with newline \fB'\\n'\fR) using
|
||||
\fIfile:<filename\fR
|
||||
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Show help text.
|
||||
.TP
|
||||
\fB\-m\fR
|
||||
Monochrome, disables all color output.
|
||||
.TP
|
||||
.B --l33t
|
||||
Takes each word in <\fIword_list\fR> and find all l33tspeak combinations of that word and uses the new list for the search.
|
||||
.TP
|
||||
\fB\-\-threads\fR \fInum\fR
|
||||
Use <\fInum\fR> of parallel threads for searching. Default is what the operating system recommends.
|
||||
.TP
|
||||
\fB\-\-dict\fR \fIfile\fR
|
||||
Use words found in \fIfile\fR (separated by newline) to highlight words in the keys found.
|
||||
.br
|
||||
There can be more then one \fB\-\-dict\fR flag.
|
||||
In that case contents of all files are merged into one dictionary.
|
||||
.br
|
||||
\fBnote:\fR the words in this file are not used for search. only for highlight output.
|
||||
.TP
|
||||
\fB\-\-lang\fR \fIvalue\fR
|
||||
Same as \fB\-\-dict\fR but will use \fIvalue\fR to find a file in
|
||||
\fB@CMAKE_INSTALL_FULL_DATADIR@/@CMAKE_PROJECT_NAME@/dict\fR.
|
||||
.br
|
||||
There can be more then one \fB\-\-lang\fR flag. In that case contents of all files are merged into one dictionary.
|
||||
.TP
|
||||
\fBcount\fR
|
||||
Number of keys to search for (default is 10)
|
||||
|
||||
.SH SECURITY NOTICE
|
||||
|
||||
.PP
|
||||
Keys are generated using
|
||||
.UR https://github.com/eosswedenorg/libantelope
|
||||
libantelope
|
||||
.UE .
|
||||
while the library does not claim to guarantee cryptographically secure keys. it
|
||||
relies on widly used open source cryptographic libraries (OpenSSL, libsecp256k1).
|
||||
|
||||
.PP
|
||||
Use at your own risk. The author and
|
||||
.UR https://eossweden.org
|
||||
Sw/eden
|
||||
.UE
|
||||
does not take responsability for any damage caused by keys generated by the program.
|
||||
|
||||
.P
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
||||
.br
|
||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
||||
.br
|
||||
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
.br
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
|
||||
.br
|
||||
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
||||
.br
|
||||
OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
.SH BUGS
|
||||
|
||||
Report bugs to
|
||||
.UR https://github.com/eosswedenorg/eosio-keygen/issues
|
||||
Github
|
||||
.UE . Thank you.
|
||||
|
||||
.SH AUTHOR
|
||||
|
||||
.MT henrik@eossweden.org
|
||||
Henrik Hautakoski
|
||||
.ME
|
||||
|
||||
.UR https://eossweden.org
|
||||
EOS Sw/eden
|
||||
.UE
|
||||
|
|
@ -1,106 +0,0 @@
|
|||
.TH @PROJECT_NAME@ 1 "April, 2023" "@PROJECT_NAME@ @PROJECT_VERSION@"
|
||||
|
||||
.SH NAME
|
||||
@PROJECT_NAME@ - Generate public and private keypair for
|
||||
.UR https://antelope.io
|
||||
Antelope IO
|
||||
.UE .
|
||||
|
||||
.SH SYNOPSIS
|
||||
|
||||
.SY @PROJECT_NAME@
|
||||
.OP \-h|--help
|
||||
.YS
|
||||
|
||||
.SY @PROJECT_NAME@
|
||||
.OP \-v
|
||||
.YS
|
||||
|
||||
.SY @PROJECT_NAME@
|
||||
.OP \--format <value>
|
||||
.YS
|
||||
|
||||
.SH SUBCOMMANDS
|
||||
|
||||
.PP
|
||||
\fB@PROJECT_NAME@ search\fR
|
||||
.RS 4
|
||||
Search after
|
||||
.UR https://antelope.io
|
||||
Antelope IO
|
||||
.UE
|
||||
vanity keys.
|
||||
.br
|
||||
see \fB@PROJECT_NAME@-search\fR(1)
|
||||
.RE
|
||||
|
||||
.PP
|
||||
\fB@PROJECT_NAME@ benchmark\fR
|
||||
.RS 4
|
||||
Benchmark the performance of the @PROJECT_NAME@ key generator.
|
||||
.br
|
||||
see \fB@PROJECT_NAME@-benchmark\fR(1)
|
||||
.RE
|
||||
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
Output one Antelope key pair if no arguments are given
|
||||
.PP
|
||||
Options and subcommands are as follows:
|
||||
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Shows this help text.
|
||||
.TP
|
||||
\fB\-v\fR
|
||||
Shows version.
|
||||
.TP
|
||||
\fB\-\-format\fR \fR\fI\,value\/\fR
|
||||
What keyformat to use, valid values are: \fIK1\fR, \fIlegacy\fR, \fIfio\fR
|
||||
|
||||
.SH SECURITY NOTICE
|
||||
|
||||
.PP
|
||||
Keys are generated using
|
||||
.UR https://github.com/eosswedenorg/libantelope
|
||||
libantelope
|
||||
.UE .
|
||||
while the library does not claim to guarantee cryptographically secure keys. it
|
||||
relies on widly used open source cryptographic libraries (OpenSSL, libsecp256k1).
|
||||
|
||||
.PP
|
||||
Use at your own risk. The author and
|
||||
.UR https://eossweden.org
|
||||
Sw/eden
|
||||
.UE
|
||||
does not take responsability for any damage caused by keys generated by the program.
|
||||
|
||||
.P
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
||||
.br
|
||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
||||
.br
|
||||
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
.br
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
|
||||
.br
|
||||
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
||||
.br
|
||||
OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
.SH BUGS
|
||||
|
||||
Report bugs to
|
||||
.UR https://github.com/eosswedenorg/eosio-keygen/issues
|
||||
Github
|
||||
.UE . Thank you.
|
||||
|
||||
.SH AUTHOR
|
||||
|
||||
.MT henrik@eossweden.org
|
||||
Henrik Hautakoski
|
||||
.ME
|
||||
|
||||
.UR https://eossweden.org
|
||||
EOS Sw/eden
|
||||
.UE
|
||||
153
cli/docs/eosio-keygen.1.in
Normal file
153
cli/docs/eosio-keygen.1.in
Normal file
|
|
@ -0,0 +1,153 @@
|
|||
.TH @PROJECT_NAME@ 1 "January, 2020" "@PROJECT_NAME@ @PROJECT_VERSION@"
|
||||
|
||||
.SH NAME
|
||||
@PROJECT_NAME@ - Generate public and private keypair for
|
||||
.UR https://eos.io/
|
||||
EOS
|
||||
.UE .
|
||||
|
||||
.SH SYNOPSIS
|
||||
|
||||
.SY @PROJECT_NAME@
|
||||
.OP \-h|--help
|
||||
.YS
|
||||
|
||||
.SY @PROJECT_NAME@
|
||||
.OP \-v
|
||||
.YS
|
||||
|
||||
.SY @PROJECT_NAME@
|
||||
search
|
||||
.OP -m
|
||||
.OP \--l33t
|
||||
.OP \--threads=<num>
|
||||
.OP \--dict=<file1> ...
|
||||
.OP \--lang=<value> ...
|
||||
.B word_list
|
||||
.OP count
|
||||
.YS
|
||||
|
||||
.SY @PROJECT_NAME@
|
||||
benchmark
|
||||
.OP num_keys
|
||||
.YS
|
||||
|
||||
.SH DESCRIPTION
|
||||
.P
|
||||
Output one EOSIO key pair if no arguments are given
|
||||
.P
|
||||
Options and subcommands are as follows:
|
||||
|
||||
.TP 15
|
||||
.B -h, --help
|
||||
Shows this help text.
|
||||
.TP 15
|
||||
.B -v
|
||||
Shows version.
|
||||
.TP 15
|
||||
.B search
|
||||
performs a search, finding
|
||||
.I <count>
|
||||
public keys containing one or more words from
|
||||
.I <word_list>
|
||||
(separated with ',').
|
||||
Instead of a list it is possible to specify a file with words (separated with newline '\\n') using
|
||||
.I file:<filename>
|
||||
.RS 16
|
||||
Search specific options:
|
||||
.RS 2
|
||||
.TP 20
|
||||
.B -m
|
||||
Monochrome, disables all color output.
|
||||
.TP 20
|
||||
.B --l33t
|
||||
Takes each word in
|
||||
.I <word_list>
|
||||
and find all l33tspeak combinations of that word and uses the new list for the search.
|
||||
.TP 20
|
||||
.B --threads=<num>
|
||||
Use
|
||||
.I <num>
|
||||
of parallel threads for searching. Default is what the operating system recommends.
|
||||
.TP 20
|
||||
.B --dict=<file>
|
||||
Use words found in
|
||||
.I <file>
|
||||
(separated by newline) to highlight words in the keys found (note that the words in this
|
||||
file are not used for search. only for highlight output). There can be more then one
|
||||
.B --dict
|
||||
flag. In that case contents of all files are merged into one dictionary.
|
||||
.TP 20
|
||||
.B --lang=<value>
|
||||
Same as
|
||||
.B --dict
|
||||
but will use
|
||||
.I <value>
|
||||
to find a file in
|
||||
.B @CMAKE_INSTALL_FULL_DATADIR@/@CMAKE_PROJECT_NAME@/dict.
|
||||
There can be more then one
|
||||
.B --lang
|
||||
flag. In that case contents of all files are merged into one dictionary.
|
||||
.TP 20
|
||||
.B count
|
||||
Number of keys to search for (default is 10)
|
||||
.RE 1
|
||||
.TP 15
|
||||
.B benchmark
|
||||
performs a benchmark test, generating
|
||||
.I <num_keys>
|
||||
keys and measuring the time.
|
||||
.PP
|
||||
.RS 16
|
||||
Benchmark specific options:
|
||||
.RS 2
|
||||
.TP 15
|
||||
.B num_keys
|
||||
Number of keys to search for (default is 10)
|
||||
.RE 1
|
||||
|
||||
|
||||
.SH SECURITY NOTICE
|
||||
|
||||
Keys are generated by OpenSSL\'s
|
||||
.B EC_KEY_generate_key
|
||||
function. The program will
|
||||
never expose your keys to anything but the computers memory and output of the\
|
||||
program. You are free to inspect the source code and compile yourself to verify.
|
||||
.P
|
||||
However, use this at your own risk. we cannot guarantee that the keys are\
|
||||
cryptographically secure as this depends on OpenSSL's implementation (alto it is\
|
||||
widely used and should be safe)
|
||||
.P
|
||||
Please read the
|
||||
.I LICENSE
|
||||
file.
|
||||
.P
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
||||
.br
|
||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
||||
.br
|
||||
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
.br
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
|
||||
.br
|
||||
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
||||
.br
|
||||
OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
.SH BUGS
|
||||
|
||||
Report bugs to
|
||||
.UR https://github.com/eosswedenorg/eosio-keygen/issues
|
||||
Github
|
||||
.UE . Thank you.
|
||||
|
||||
.SH AUTHOR
|
||||
|
||||
.MT henrik@eossweden.org
|
||||
Henrik Hautakoski
|
||||
.ME
|
||||
|
||||
.UR https://eossweden.org
|
||||
EOS Sw/eden
|
||||
.UE
|
||||
|
|
@ -22,16 +22,16 @@
|
|||
* SOFTWARE.
|
||||
*/
|
||||
#include <chrono>
|
||||
#include <libantelope/ec.hpp>
|
||||
#include <libeosio/ec.hpp>
|
||||
#include "benchmark.hpp"
|
||||
|
||||
namespace antelopekeygen {
|
||||
namespace eoskeygen {
|
||||
|
||||
std::chrono::duration<float> _run_benchmark(size_t num_keys) {
|
||||
auto start = std::chrono::steady_clock::now();
|
||||
for(size_t i = 0; i < num_keys; i++) {
|
||||
struct libantelope::ec_keypair k;
|
||||
libantelope::ec_generate_key(&k);
|
||||
struct libeosio::ec_keypair k;
|
||||
libeosio::ec_generate_key(&k);
|
||||
}
|
||||
return std::chrono::steady_clock::now() - start;
|
||||
}
|
||||
|
|
@ -47,4 +47,4 @@ void benchmark(size_t num_keys, struct benchmark_result* res) {
|
|||
res->kps = static_cast<float>(num_keys) / res->sec;
|
||||
}
|
||||
|
||||
} // namespace antelopekeygen
|
||||
} // namespace eoskeygen
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
|
||||
#include <ctime>
|
||||
|
||||
namespace antelopekeygen {
|
||||
namespace eoskeygen {
|
||||
|
||||
struct benchmark_result {
|
||||
float sec; // elapsed seconds.
|
||||
|
|
@ -35,6 +35,6 @@ struct benchmark_result {
|
|||
|
||||
void benchmark(size_t num_keys, struct benchmark_result* res);
|
||||
|
||||
} // namespace antelopekeygen
|
||||
} // namespace eoskeygen
|
||||
|
||||
#endif /* EOSIOKEYGEN_BENCHMARK_H */
|
||||
|
|
|
|||
|
|
@ -23,12 +23,12 @@
|
|||
*/
|
||||
#include <string>
|
||||
#include <iostream>
|
||||
#include <libantelope/WIF.hpp>
|
||||
#include <libeosio/WIF.hpp>
|
||||
#include <eoskeygen/core/dictionary.hpp>
|
||||
#include "console.hpp"
|
||||
#include "cli_key_search_result.hpp"
|
||||
|
||||
namespace antelopekeygen {
|
||||
namespace eoskeygen {
|
||||
|
||||
static size_t highlight(console::Color color, const std::string& str, size_t pos, size_t len) {
|
||||
|
||||
|
|
@ -38,23 +38,22 @@ static size_t highlight(console::Color color, const std::string& str, size_t pos
|
|||
return len;
|
||||
}
|
||||
|
||||
CliKeySearchResult::CliKeySearchResult(const Dictionary& dict, const libantelope::wif_codec_t& codec) :
|
||||
CliKeySearchResult::CliKeySearchResult(const Dictionary& dict, const std::string& prefix) :
|
||||
m_dict (dict),
|
||||
m_codec (codec)
|
||||
m_prefix (prefix)
|
||||
{
|
||||
}
|
||||
|
||||
void CliKeySearchResult::onResult(const struct libantelope::ec_keypair* key, const struct KeySearch::result& result) {
|
||||
void CliKeySearchResult::onResult(const struct libeosio::ec_keypair* key, const struct KeySearch::result& result) {
|
||||
|
||||
std::string pub = libantelope::wif_pub_encode(key->pub, m_codec.pub);
|
||||
std::string pub = libeosio::wif_pub_encode(key->pub);
|
||||
Dictionary::search_result_t dict_res = m_dict.search(pub);
|
||||
int pub_prefix_len = (int) m_codec.pub.length();
|
||||
|
||||
std::cout << "----" << std::endl;
|
||||
std::cout << "Found: " << pub.substr(result.pos, result.len) << std::endl;
|
||||
|
||||
std::cout << "Public: " << m_codec.pub;
|
||||
for(size_t i = pub_prefix_len; i < pub.length(); ) {
|
||||
std::cout << "Public: " << m_prefix.substr(0, 3);
|
||||
for(size_t i = 3; i < pub.length(); ) {
|
||||
|
||||
if (i == result.pos) {
|
||||
i += highlight(console::red, pub, result.pos, result.len);
|
||||
|
|
@ -71,7 +70,7 @@ void CliKeySearchResult::onResult(const struct libantelope::ec_keypair* key, con
|
|||
}
|
||||
|
||||
std::cout << std::endl
|
||||
<< "Private: " << libantelope::wif_priv_encode(key->secret, m_codec.pvt) << std::endl;
|
||||
<< "Private: " << libeosio::wif_priv_encode(key->secret) << std::endl;
|
||||
}
|
||||
|
||||
} // namespace antelopekeygen
|
||||
} // namespace eoskeygen
|
||||
|
|
|
|||
|
|
@ -25,30 +25,29 @@
|
|||
#define EOSIOKEYGEN_KEY_SEARCH_HELPERS_H
|
||||
|
||||
#include <string>
|
||||
#include <libantelope/ec.hpp>
|
||||
#include <libantelope/WIF.hpp>
|
||||
#include <libeosio/types.hpp>
|
||||
#include <eoskeygen/core/string.hpp>
|
||||
#include <eoskeygen/key_search.hpp>
|
||||
#include <eoskeygen/key_search_result.hpp>
|
||||
|
||||
namespace antelopekeygen {
|
||||
namespace eoskeygen {
|
||||
|
||||
class Dictionary;
|
||||
|
||||
class CliKeySearchResult : public IKeySearchResult
|
||||
{
|
||||
public:
|
||||
CliKeySearchResult(const Dictionary& dict, const libantelope::wif_codec_t& codec);
|
||||
CliKeySearchResult(const Dictionary& dict, const std::string& prefix);
|
||||
|
||||
virtual void onResult(const struct libantelope::ec_keypair* key, const struct KeySearch::result& result);
|
||||
virtual void onResult(const struct libeosio::ec_keypair* key, const struct KeySearch::result& result);
|
||||
|
||||
protected :
|
||||
|
||||
const Dictionary& m_dict;
|
||||
|
||||
libantelope::wif_codec_t m_codec;
|
||||
std::string m_prefix;
|
||||
};
|
||||
|
||||
} // namespace antelopekeygen
|
||||
} // namespace eoskeygen
|
||||
|
||||
#endif /* EOSIOKEYGEN_KEY_SEARCH_HELPERS_H */
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
#include "isatty.hpp"
|
||||
#include "console.hpp"
|
||||
|
||||
namespace antelopekeygen { namespace console {
|
||||
namespace eoskeygen { namespace console {
|
||||
|
||||
bool disable_color = false;
|
||||
|
||||
|
|
@ -45,4 +45,4 @@ bool isColorsSupported(const std::ostream& os) {
|
|||
return disable_color == false && isatty(fd);
|
||||
}
|
||||
|
||||
} } // namespace antelopekeygen::console
|
||||
} } // namespace eoskeygen::console
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
|
||||
#include <ostream>
|
||||
|
||||
namespace antelopekeygen {
|
||||
namespace eoskeygen {
|
||||
|
||||
namespace console {
|
||||
|
||||
|
|
@ -86,6 +86,6 @@ namespace console {
|
|||
|
||||
} // namespace console
|
||||
|
||||
} // namespace antelopekeygen
|
||||
} // namespace eoskeygen
|
||||
|
||||
#endif /* EOSIOKEYGEN_CONSOLE_H */
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
#include <iostream>
|
||||
#include "console.hpp"
|
||||
|
||||
namespace antelopekeygen {
|
||||
namespace eoskeygen {
|
||||
|
||||
namespace console {
|
||||
|
||||
|
|
@ -80,4 +80,4 @@ std::ostream& operator<<(std::ostream& os, const fg& obj) {
|
|||
|
||||
} // namespace console
|
||||
|
||||
} // namespace antelopekeygen
|
||||
} // namespace eoskeygen
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
#include <iostream>
|
||||
#include "console.hpp"
|
||||
|
||||
namespace antelopekeygen {
|
||||
namespace eoskeygen {
|
||||
|
||||
// WinAPI colors
|
||||
#define FG_BLACK 0
|
||||
|
|
@ -105,4 +105,4 @@ std::ostream& operator<<(std::ostream& os, const fg& obj) {
|
|||
|
||||
} // namespace console
|
||||
|
||||
} // namespace antelopekeygen
|
||||
} // namespace eoskeygen
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
#endif
|
||||
#include "isatty.hpp"
|
||||
|
||||
namespace antelopekeygen {
|
||||
namespace eoskeygen {
|
||||
|
||||
bool isatty(int fd) {
|
||||
return ::_isatty(fd);
|
||||
|
|
@ -42,4 +42,4 @@ bool isatty(FILE* fd) {
|
|||
return fd ? isatty(_fileno(fd)) : false;
|
||||
}
|
||||
|
||||
} // namespace antelopekeygen
|
||||
} // namespace eoskeygen
|
||||
|
|
|
|||
|
|
@ -26,12 +26,12 @@
|
|||
|
||||
#include <stdio.h>
|
||||
|
||||
namespace antelopekeygen {
|
||||
namespace eoskeygen {
|
||||
|
||||
bool isatty(int fd);
|
||||
|
||||
bool isatty(FILE* fd);
|
||||
|
||||
} // namespace antelopekeygen
|
||||
} // namespace eoskeygen
|
||||
|
||||
#endif /* EOSIOKEYGEN_CORE_ISATTY_H */
|
||||
|
|
|
|||
|
|
@ -24,9 +24,9 @@
|
|||
#include <iostream>
|
||||
#include <cstring>
|
||||
#include <CLI11/CLI11.hpp>
|
||||
#include <libantelope/base58.hpp>
|
||||
#include <libantelope/ec.hpp>
|
||||
#include <libantelope/WIF.hpp>
|
||||
#include <libeosio/base58.hpp>
|
||||
#include <libeosio/ec.hpp>
|
||||
#include <libeosio/WIF.hpp>
|
||||
#include <eoskeygen/config.hpp>
|
||||
#include <eoskeygen/core/file.hpp>
|
||||
#include <eoskeygen/core/string.hpp>
|
||||
|
|
@ -40,7 +40,7 @@
|
|||
|
||||
// Command line options.
|
||||
bool option_l33t = false;
|
||||
libantelope::wif_codec_t key_codec;
|
||||
std::string key_prefix = "EOS";
|
||||
|
||||
#ifdef EOSIOKEYGEN_HAVE_THREADS
|
||||
size_t option_num_threads;
|
||||
|
|
@ -62,16 +62,15 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
int cmd_search(const antelopekeygen::strlist_t& words, const antelopekeygen::Dictionary& dict, int count) {
|
||||
int cmd_search(const eoskeygen::strlist_t& words, const eoskeygen::Dictionary& dict, int count) {
|
||||
|
||||
antelopekeygen::KeySearch ks;
|
||||
antelopekeygen::CliKeySearchResult rs(dict, key_codec);
|
||||
eoskeygen::KeySearch ks;
|
||||
eoskeygen::CliKeySearchResult rs(dict, key_prefix);
|
||||
|
||||
ks.setPrefix(key_codec.pub);
|
||||
ks.setCallback(&rs);
|
||||
|
||||
for(auto it = words.begin(); it != words.end(); it++) {
|
||||
size_t p = libantelope::is_base58(*it);
|
||||
size_t p = libeosio::is_base58(*it);
|
||||
if (p != std::string::npos) {
|
||||
std::cerr << "The word '"
|
||||
<< *it << "' contains an invalid non-base58 character '"
|
||||
|
|
@ -82,7 +81,7 @@ int cmd_search(const antelopekeygen::strlist_t& words, const antelopekeygen::Dic
|
|||
|
||||
if (option_l33t) {
|
||||
for(std::size_t i = 0; i < words.size(); i++) {
|
||||
ks.addList(antelopekeygen::l33twords(words[i]));
|
||||
ks.addList(eoskeygen::l33twords(words[i]));
|
||||
}
|
||||
} else {
|
||||
ks.addList(words);
|
||||
|
|
@ -93,7 +92,7 @@ int cmd_search(const antelopekeygen::strlist_t& words, const antelopekeygen::Dic
|
|||
#endif /* EOSIOKEYGEN_HAVE_THREADS */
|
||||
|
||||
std::cout << "Searching for " << count
|
||||
<< " keys containing: " << antelopekeygen::strlist::join(ks.getList(), ",")
|
||||
<< " keys containing: " << eoskeygen::strlist::join(ks.getList(), ",")
|
||||
#ifdef EOSIOKEYGEN_HAVE_THREADS
|
||||
<< ", Using: " << ks.getThreadCount() << " threads"
|
||||
#endif /* EOSIOKEYGEN_HAVE_THREADS */
|
||||
|
|
@ -106,12 +105,12 @@ int cmd_search(const antelopekeygen::strlist_t& words, const antelopekeygen::Dic
|
|||
|
||||
void cmd_benchmark(size_t num_keys) {
|
||||
|
||||
struct antelopekeygen::benchmark_result res;
|
||||
struct eoskeygen::benchmark_result res;
|
||||
|
||||
std::cout << "Benchmark: Generating "
|
||||
<< num_keys << " keys" << std::endl;
|
||||
|
||||
antelopekeygen::benchmark(num_keys, &res);
|
||||
eoskeygen::benchmark(num_keys, &res);
|
||||
|
||||
std::cout << "Result: Took " << res.sec << " seconds, "
|
||||
<< res.kps << " keys per second." << std::endl;
|
||||
|
|
@ -119,19 +118,15 @@ void cmd_benchmark(size_t num_keys) {
|
|||
|
||||
int main(int argc, char **argv) {
|
||||
|
||||
CLI::App cmd("Keygenerator for Antelope based blockchains", PROGRAM_NAME);
|
||||
CLI::App cmd("Keygenerator for EOSIO", PROGRAM_NAME);
|
||||
std::vector<std::string> dict_list;
|
||||
std::vector<std::string> lang_list;
|
||||
std::string search_words;
|
||||
std::string key_format;
|
||||
int search_count;
|
||||
size_t bench_count;
|
||||
int rc = 0;
|
||||
|
||||
libantelope::ec_init();
|
||||
|
||||
CLI::Option* version = cmd.add_flag("-v,--version", "Show version");
|
||||
cmd.add_option("--format", key_format, "valid values: K1, fio, legacy")->default_val("K1");
|
||||
CLI::Option* fio = cmd.add_flag("--fio", "Generate keys from FIO network instead of EOSIO.");
|
||||
|
||||
// Search
|
||||
CLI::App* search_cmd = cmd.add_subcommand("search",
|
||||
|
|
@ -146,7 +141,7 @@ int main(int argc, char **argv) {
|
|||
search_cmd->add_option("--threads", option_num_threads,
|
||||
"Use <num> of parallel threads for searching.\n"
|
||||
"Default is what the operating system recomends.")
|
||||
->default_val(antelopekeygen::KeySearch::max_threads());
|
||||
->default_val(eoskeygen::KeySearch::max_threads());
|
||||
|
||||
#endif /* EOSIOKEYGEN_HAVE_THREADS */
|
||||
|
||||
|
|
@ -170,30 +165,23 @@ int main(int argc, char **argv) {
|
|||
|
||||
if (*version) {
|
||||
std::cout << PROGRAM_NAME << ": v" << PROGRAM_VERSION << std::endl;
|
||||
goto end;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (key_format == "fio") {
|
||||
key_codec = libantelope::wif_create_legacy_codec("FIO");
|
||||
} else if (key_format == "legacy") {
|
||||
key_codec = libantelope::WIF_CODEC_LEG;
|
||||
} else if (key_format == "K1") {
|
||||
key_codec = libantelope::WIF_CODEC_K1;
|
||||
} else {
|
||||
std::cerr << "invalid key format: " << key_format << std::endl;
|
||||
goto end;
|
||||
if (*fio) {
|
||||
key_prefix = "FIO";
|
||||
}
|
||||
|
||||
if (search_cmd->parsed()) {
|
||||
antelopekeygen::strlist_t words;
|
||||
antelopekeygen::Dictionary dict;
|
||||
eoskeygen::strlist_t words;
|
||||
eoskeygen::Dictionary dict;
|
||||
|
||||
if (*monocrome) {
|
||||
antelopekeygen::console::disable_color = true;
|
||||
eoskeygen::console::disable_color = true;
|
||||
}
|
||||
|
||||
for (auto item : dict_list) {
|
||||
antelopekeygen::Dictionary d;
|
||||
eoskeygen::Dictionary d;
|
||||
|
||||
if (d.loadFromFile(item)) {
|
||||
dict.add(d);
|
||||
|
|
@ -203,7 +191,7 @@ int main(int argc, char **argv) {
|
|||
}
|
||||
|
||||
for (auto item : lang_list) {
|
||||
antelopekeygen::Dictionary d;
|
||||
eoskeygen::Dictionary d;
|
||||
std::string filename(CONFIG_SHARE_FULL_PATH "/dicts/" + item);
|
||||
|
||||
if (d.loadFromFile(filename)) {
|
||||
|
|
@ -215,33 +203,31 @@ int main(int argc, char **argv) {
|
|||
|
||||
if (search_words.rfind("file:", 0) == 0) {
|
||||
std::string filename = search_words.substr(5);
|
||||
if (!antelopekeygen::readLines(filename, words)) {
|
||||
if (!eoskeygen::readLines(filename, words)) {
|
||||
std::cerr << "Could not read file: " << filename << std::endl;
|
||||
goto end;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (words.size() < 1) {
|
||||
std::cerr << filename << " did not contain any words" << std::endl;
|
||||
goto end;
|
||||
return 0;
|
||||
}
|
||||
} else {
|
||||
words = antelopekeygen::strlist::splitw(search_words);
|
||||
words = eoskeygen::strlist::splitw(search_words);
|
||||
}
|
||||
|
||||
rc = cmd_search(words, dict, search_count);
|
||||
goto end;
|
||||
return cmd_search(words, dict, search_count);
|
||||
|
||||
} else if (bench_cmd->parsed()) {
|
||||
cmd_benchmark(bench_count);
|
||||
}
|
||||
// No subcommand given, just generate and print a keypair.
|
||||
else {
|
||||
struct libantelope::ec_keypair pair;
|
||||
libantelope::ec_generate_key(&pair);
|
||||
libantelope::wif_print_key(&pair, key_codec);
|
||||
goto end;
|
||||
struct libeosio::ec_keypair pair;
|
||||
libeosio::ec_generate_key(&pair);
|
||||
libeosio::wif_print_key(&pair, key_prefix);
|
||||
return 0;
|
||||
}
|
||||
|
||||
end: libantelope::ec_shutdown();
|
||||
return rc;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -97,19 +97,6 @@ set( CPACK_DEBIAN_PACKAGE_HOMEPAGE "${PROJECT_HOMEPAGE_URL}" )
|
|||
set( CPACK_DEB_COMPONENT_INSTALL ON )
|
||||
|
||||
|
||||
# RPM
|
||||
|
||||
# Always build components for rpm packages
|
||||
set( CPACK_RPM_COMPONENT_INSTALL ON )
|
||||
|
||||
# Same as with DEB package.
|
||||
set( CPACK_RPM_PACKAGE_HOMEPAGE "${PROJECT_HOMEPAGE_URL}" )
|
||||
|
||||
set( CPACK_RPM_PACKAGE_RELEASE_DIST ON )
|
||||
set( CPACK_RPM_PACKAGE_RELEASE "1" CACHE STRING "RPM package release version" )
|
||||
set( CPACK_RPM_PACKAGE_LICENSE "MIT" )
|
||||
set( CPACK_RPM_FILE_NAME "RPM-DEFAULT" )
|
||||
|
||||
# --------------------------------
|
||||
# Generator default
|
||||
# --------------------------------
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ set( COMMON_SOURCE
|
|||
if (USE_THREADS)
|
||||
find_package(Threads)
|
||||
if (Threads_FOUND)
|
||||
set( ANTELOPEKEYGEN_HAVE_THREADS TRUE )
|
||||
set( EOSIOKEYGEN_HAVE_THREADS TRUE )
|
||||
set( COMMON_SOURCE ${COMMON_SOURCE} src/key_search_mt.cpp )
|
||||
endif (Threads_FOUND)
|
||||
endif (USE_THREADS)
|
||||
|
|
@ -40,10 +40,10 @@ add_library( ${COMMON_NAME} STATIC ${COMMON_SOURCE} )
|
|||
|
||||
target_include_directories( ${COMMON_NAME} PUBLIC include )
|
||||
|
||||
# Link with libantelope and threads library.
|
||||
include( libantelope )
|
||||
# Link with libeosio and threads library.
|
||||
include( libeosio )
|
||||
target_link_libraries( ${COMMON_NAME}
|
||||
PUBLIC
|
||||
libantelope
|
||||
libeosio
|
||||
${CMAKE_THREAD_LIBS_INIT}
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1,53 +0,0 @@
|
|||
# --------------------------------
|
||||
# Variables
|
||||
# --------------------------------
|
||||
set( LIBANTELOPE_GIT_URL "https://github.com/eosswedenorg/libantelope.git" )
|
||||
set( LIBANTELOPE_WANTED_VERSION v0.2.2 )
|
||||
|
||||
# --------------------------------
|
||||
# Macros
|
||||
# --------------------------------
|
||||
macro(fromGit tag)
|
||||
|
||||
message ("Using libantelope from: ${LIBANTELOPE_GIT_URL}@${tag}")
|
||||
|
||||
include(FetchContent)
|
||||
FetchContent_Declare(libantelope
|
||||
GIT_REPOSITORY ${LIBANTELOPE_GIT_URL}
|
||||
GIT_TAG ${tag}
|
||||
SOURCE_DIR ${DOWNLOAD_CACHE_DIR}/libeosio/src
|
||||
STAMP_DIR ${DOWNLOAD_CACHE_DIR}/libeosio/stamp
|
||||
)
|
||||
|
||||
FetchContent_GetProperties(libantelope)
|
||||
if (NOT libantelope_POPULATED)
|
||||
FetchContent_Populate(libantelope)
|
||||
add_subdirectory(${libantelope_SOURCE_DIR} ${libantelope_BINARY_DIR} EXCLUDE_FROM_ALL)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(buildLocal src)
|
||||
message ("Using local libantelope at: ${src}")
|
||||
add_subdirectory(${src} ${src}/build EXCLUDE_FROM_ALL)
|
||||
endmacro()
|
||||
|
||||
# If we have a local libantelope
|
||||
if (LIBANTELOPE_SOURCE_DIR)
|
||||
buildLocal( ${LIBANTELOPE_SOURCE_DIR} )
|
||||
else()
|
||||
|
||||
# Check if version is in fact a version.
|
||||
if (LIBANTELOPE_WANTED_VERSION MATCHES "^[0-9]+(.[0-9]+)?(.[0-9]+)(-[a-zA-Z0-9]+)?$")
|
||||
# Try finding the package on the system.
|
||||
find_package(libantelope ${LIBANTELOPE_WANTED_VERSION} QUIET)
|
||||
if (libantelope_FOUND)
|
||||
message ("Using libeosio in: ${libantelope_DIR}")
|
||||
# Not found, download from git.
|
||||
else()
|
||||
fromGit( v${LIBANTELOPE_WANTED_VERSION} )
|
||||
endif()
|
||||
# Assume version contains a git branch.
|
||||
else()
|
||||
fromGit( ${LIBANTELOPE_WANTED_VERSION} )
|
||||
endif()
|
||||
endif()
|
||||
53
common/cmake/libeosio.cmake
Normal file
53
common/cmake/libeosio.cmake
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
# --------------------------------
|
||||
# Variables
|
||||
# --------------------------------
|
||||
set( LIBEOSIO_GIT_URL "https://github.com/eosswedenorg/libeosio.git" )
|
||||
set( LIBEOSIO_WANTED_VERSION v0.1.4 )
|
||||
|
||||
# --------------------------------
|
||||
# Macros
|
||||
# --------------------------------
|
||||
macro(fromGit tag)
|
||||
|
||||
message ("Using libeosio from: ${LIBEOSIO_GIT_URL}@${tag}")
|
||||
|
||||
include(FetchContent)
|
||||
FetchContent_Declare(libeosio
|
||||
GIT_REPOSITORY ${LIBEOSIO_GIT_URL}
|
||||
GIT_TAG ${tag}
|
||||
SOURCE_DIR ${DOWNLOAD_CACHE_DIR}/libeosio/src
|
||||
STAMP_DIR ${DOWNLOAD_CACHE_DIR}/libeosio/stamp
|
||||
)
|
||||
|
||||
FetchContent_GetProperties(libeosio)
|
||||
if (NOT libeosio_POPULATED)
|
||||
FetchContent_Populate(libeosio)
|
||||
add_subdirectory(${libeosio_SOURCE_DIR} ${libeosio_BINARY_DIR} EXCLUDE_FROM_ALL)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(buildLocal src)
|
||||
message ("Using local libeosio at: ${src}")
|
||||
add_subdirectory(${src} ${src}/build EXCLUDE_FROM_ALL)
|
||||
endmacro()
|
||||
|
||||
# If we have a locallibeosio
|
||||
if (LIBEOSIO_SOURCE_DIR)
|
||||
buildLocal( ${LIBEOSIO_SOURCE_DIR} )
|
||||
else()
|
||||
|
||||
# Check if version is in fact a version.
|
||||
if (LIBEOSIO_WANTED_VERSION MATCHES "^[0-9]+(.[0-9]+)?(.[0-9]+)(-[a-zA-Z0-9]+)?$")
|
||||
# Try finding the package on the system.
|
||||
find_package(libeosio ${LIBEOSIO_WANTED_VERSION} QUIET)
|
||||
if (libeoskeygen_FOUND)
|
||||
message ("Using libeosio in: ${libeosio_DIR}")
|
||||
# Not found, download from git.
|
||||
else()
|
||||
fromGit( v${LIBEOSIO_WANTED_VERSION} )
|
||||
endif()
|
||||
# Assume version contains a git branch.
|
||||
else()
|
||||
fromGit( ${LIBEOSIO_WANTED_VERSION} )
|
||||
endif()
|
||||
endif()
|
||||
|
|
@ -21,10 +21,10 @@
|
|||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
#ifndef ANTELOPEKEYGEN_COMMON_CONFIG_H
|
||||
#define ANTELOPEKEYGEN_COMMON_CONFIG_H
|
||||
#ifndef EOSIOKEYGEN_COMMON_CONFIG_H
|
||||
#define EOSIOKEYGEN_COMMON_CONFIG_H
|
||||
|
||||
// Defined if we have thread support.
|
||||
#cmakedefine ANTELOPEKEYGEN_HAVE_THREADS
|
||||
#cmakedefine EOSIOKEYGEN_HAVE_THREADS
|
||||
|
||||
#endif /* ANTELOPEKEYGEN_COMMON_CONFIG_H */
|
||||
#endif /* EOSIOKEYGEN_COMMON_CONFIG_H */
|
||||
|
|
|
|||
|
|
@ -21,14 +21,14 @@
|
|||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
#ifndef ANTELOPEKEYGEN_COMMON_CORE_DICTIONARY_H
|
||||
#define ANTELOPEKEYGEN_COMMON_CORE_DICTIONARY_H
|
||||
#ifndef EOSIOKEYGEN_COMMON_CORE_DICTIONARY_H
|
||||
#define EOSIOKEYGEN_COMMON_CORE_DICTIONARY_H
|
||||
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <set>
|
||||
|
||||
namespace antelopekeygen {
|
||||
namespace eoskeygen {
|
||||
|
||||
class Dictionary
|
||||
{
|
||||
|
|
@ -70,6 +70,6 @@ protected :
|
|||
std::set<std::string> m_words;
|
||||
};
|
||||
|
||||
} // namespace antelopekeygen
|
||||
} // namespace eoskeygen
|
||||
|
||||
#endif /* ANTELOPEKEYGEN_COMMON_CORE_DICTIONARY_H */
|
||||
#endif /* EOSIOKEYGEN_COMMON_CORE_DICTIONARY_H */
|
||||
|
|
|
|||
|
|
@ -21,15 +21,15 @@
|
|||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
#ifndef ANTELOPEKEYGEN_COMMON_CORE_FILE_H
|
||||
#define ANTELOPEKEYGEN_COMMON_CORE_FILE_H
|
||||
#ifndef EOSIOKEYGEN_COMMON_CORE_FILE_H
|
||||
#define EOSIOKEYGEN_COMMON_CORE_FILE_H
|
||||
|
||||
#include <eoskeygen/core/strlist.hpp>
|
||||
|
||||
namespace antelopekeygen {
|
||||
namespace eoskeygen {
|
||||
|
||||
bool readLines(const std::string& filename, strlist_t& lines);
|
||||
|
||||
} // namespace
|
||||
|
||||
#endif /* ANTELOPEKEYGEN_COMMON_CORE_FILE_H */
|
||||
#endif /* EOSIOKEYGEN_COMMON_CORE_FILE_H */
|
||||
|
|
|
|||
|
|
@ -21,16 +21,16 @@
|
|||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
#ifndef ANTELOPEKEYGEN_COMMON_CORE_LEET_H
|
||||
#define ANTELOPEKEYGEN_COMMON_CORE_LEET_H
|
||||
#ifndef EOSIOKEYGEN_COMMON_CORE_LEET_H
|
||||
#define EOSIOKEYGEN_COMMON_CORE_LEET_H
|
||||
|
||||
#include <string>
|
||||
#include <eoskeygen/core/strlist.hpp>
|
||||
|
||||
namespace antelopekeygen {
|
||||
namespace eoskeygen {
|
||||
|
||||
strlist_t l33twords(std::string str);
|
||||
|
||||
} // namespace antelopekeygen
|
||||
} // namespace eoskeygen
|
||||
|
||||
#endif /* ANTELOPEKEYGEN_COMMON_CORE_LEET_H */
|
||||
#endif /* EOSIOKEYGEN_COMMON_CORE_LEET_H */
|
||||
|
|
|
|||
|
|
@ -21,13 +21,13 @@
|
|||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
#ifndef ANTELOPEKEYGEN_COMMON_CORE_STRING_H
|
||||
#define ANTELOPEKEYGEN_COMMON_CORE_STRING_H
|
||||
#ifndef EOSIOKEYGEN_COMMON_CORE_STRING_H
|
||||
#define EOSIOKEYGEN_COMMON_CORE_STRING_H
|
||||
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
namespace antelopekeygen {
|
||||
namespace eoskeygen {
|
||||
|
||||
std::string& strtolower(std::string& str);
|
||||
|
||||
|
|
@ -35,6 +35,6 @@ std::string& rtrim(std::string& str);
|
|||
std::string& ltrim(std::string& str);
|
||||
std::string& trim(std::string& str);
|
||||
|
||||
} // namespace antelopekeygen
|
||||
} // namespace eoskeygen
|
||||
|
||||
#endif /* ANTELOPEKEYGEN_COMMON_CORE_STRING_H */
|
||||
#endif /* EOSIOKEYGEN_COMMON_CORE_STRING_H */
|
||||
|
|
|
|||
|
|
@ -21,13 +21,13 @@
|
|||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
#ifndef ANTELOPEKEYGEN_COMMON_CORE_STRLIST_H
|
||||
#define ANTELOPEKEYGEN_COMMON_CORE_STRLIST_H
|
||||
#ifndef EOSIOKEYGEN_COMMON_CORE_STRLIST_H
|
||||
#define EOSIOKEYGEN_COMMON_CORE_STRLIST_H
|
||||
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
namespace antelopekeygen {
|
||||
namespace eoskeygen {
|
||||
|
||||
typedef std::vector<std::string> strlist_t;
|
||||
|
||||
|
|
@ -45,6 +45,6 @@ strlist_t& strip(strlist_t& list, strlist_stripfunc_t fn);
|
|||
|
||||
} // namespace strlist
|
||||
|
||||
} // namespace antelopekeygen
|
||||
} // namespace eoskeygen
|
||||
|
||||
#endif /* ANTELOPEKEYGEN_COMMON_CORE_STRLIST_H */
|
||||
#endif /* EOSIOKEYGEN_COMMON_CORE_STRLIST_H */
|
||||
|
|
|
|||
|
|
@ -21,17 +21,17 @@
|
|||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
#ifndef ANTELOPEKEYGEN_COMMON_KEY_SEARCH_H
|
||||
#define ANTELOPEKEYGEN_COMMON_KEY_SEARCH_H
|
||||
#ifndef EOSIOKEYGEN_COMMON_KEY_SEARCH_H
|
||||
#define EOSIOKEYGEN_COMMON_KEY_SEARCH_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <string>
|
||||
#include <libantelope/ec.hpp>
|
||||
#include <libeosio/types.hpp>
|
||||
#include <eoskeygen/config.hpp>
|
||||
#include <eoskeygen/core/dictionary.hpp>
|
||||
#include <eoskeygen/core/strlist.hpp>
|
||||
|
||||
namespace antelopekeygen {
|
||||
namespace eoskeygen {
|
||||
|
||||
class IKeySearchResult;
|
||||
|
||||
|
|
@ -47,8 +47,6 @@ public :
|
|||
public :
|
||||
KeySearch();
|
||||
|
||||
void setPrefix(const std::string& prefix);
|
||||
|
||||
// Add a word to search for.
|
||||
void addWord(const std::string& str);
|
||||
|
||||
|
|
@ -64,7 +62,7 @@ public :
|
|||
// Set callback for search result.
|
||||
void setCallback(IKeySearchResult* callback);
|
||||
|
||||
#ifdef ANTELOPEKEYGEN_HAVE_THREADS
|
||||
#ifdef EOSIOKEYGEN_HAVE_THREADS
|
||||
// Returns the maximum number of threads
|
||||
// reported by the operating system.
|
||||
static size_t max_threads();
|
||||
|
|
@ -73,7 +71,7 @@ public :
|
|||
void setThreadCount(size_t num);
|
||||
|
||||
size_t getThreadCount() const;
|
||||
#endif /* ANTELOPEKEYGEN_HAVE_THREADS */
|
||||
#endif /* EOSIOKEYGEN_HAVE_THREADS */
|
||||
|
||||
// Aborts find() operation if started.
|
||||
// This is useful for multithreaded code (like GUI application)
|
||||
|
|
@ -88,21 +86,17 @@ protected :
|
|||
|
||||
// Check if any word in <word_list> appears in <key>'s public key.
|
||||
// returns true if a word was found (stored in <result>), false otherwise.
|
||||
bool _contains_word(const struct libantelope::ec_keypair* key, struct result& result);
|
||||
bool _contains_word(const struct libeosio::ec_keypair* key, struct result& result);
|
||||
|
||||
#ifdef ANTELOPEKEYGEN_HAVE_THREADS
|
||||
#ifdef EOSIOKEYGEN_HAVE_THREADS
|
||||
void _thr_proc();
|
||||
|
||||
void _search_mt();
|
||||
#endif /* ANTELOPEKEYGEN_HAVE_THREADS */
|
||||
#endif /* EOSIOKEYGEN_HAVE_THREADS */
|
||||
|
||||
void _search_linear();
|
||||
|
||||
protected :
|
||||
|
||||
// Public key prefix.
|
||||
std::string m_prefix;
|
||||
|
||||
// List of words to search for.
|
||||
strlist_t m_words;
|
||||
|
||||
|
|
@ -112,14 +106,14 @@ protected :
|
|||
// Current number of keys found.
|
||||
std::size_t m_count;
|
||||
|
||||
#ifdef ANTELOPEKEYGEN_HAVE_THREADS
|
||||
#ifdef EOSIOKEYGEN_HAVE_THREADS
|
||||
// Number of threads to use.
|
||||
size_t m_threads;
|
||||
#endif /* ANTELOPEKEYGEN_HAVE_THREADS */
|
||||
#endif /* EOSIOKEYGEN_HAVE_THREADS */
|
||||
|
||||
IKeySearchResult* m_callback;
|
||||
};
|
||||
|
||||
} // namespace antelopekeygen
|
||||
} // namespace eoskeygen
|
||||
|
||||
#endif /* ANTELOPEKEYGEN_COMMON_KEY_SEARCH_H */
|
||||
#endif /* EOSIOKEYGEN_COMMON_KEY_SEARCH_H */
|
||||
|
|
|
|||
|
|
@ -21,20 +21,20 @@
|
|||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
#ifndef ANTELOPEKEYGEN_COMMON_KEY_SEARCH_RESULT_H
|
||||
#define ANTELOPEKEYGEN_COMMON_KEY_SEARCH_RESULT_H
|
||||
#ifndef EOSIOKEYGEN_COMMON_KEY_SEARCH_RESULT_H
|
||||
#define EOSIOKEYGEN_COMMON_KEY_SEARCH_RESULT_H
|
||||
|
||||
#include <eoskeygen/key_search.hpp>
|
||||
|
||||
namespace antelopekeygen {
|
||||
namespace eoskeygen {
|
||||
|
||||
class IKeySearchResult
|
||||
{
|
||||
public :
|
||||
|
||||
virtual void onResult(const struct libantelope::ec_keypair* key, const struct KeySearch::result& result) = 0;
|
||||
virtual void onResult(const struct libeosio::ec_keypair* key, const struct KeySearch::result& result) = 0;
|
||||
};
|
||||
|
||||
} // namespace antelopekeygen
|
||||
} // namespace eoskeygen
|
||||
|
||||
#endif /* ANTELOPEKEYGEN_COMMON_KEY_SEARCH_RESULT_H */
|
||||
#endif /* EOSIOKEYGEN_COMMON_KEY_SEARCH_RESULT_H */
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
#include <eoskeygen/core/dictionary.hpp>
|
||||
#include <eoskeygen/core/file.hpp>
|
||||
|
||||
namespace antelopekeygen {
|
||||
namespace eoskeygen {
|
||||
|
||||
struct StringContains {
|
||||
StringContains(const std::string& str, std::vector<size_t>& pos) : m_str(str), m_pos(pos) {}
|
||||
|
|
@ -126,4 +126,4 @@ Dictionary::search_result_t Dictionary::search(const std::string& subject) const
|
|||
return res;
|
||||
}
|
||||
|
||||
} // namespace antelopekeygen
|
||||
} // namespace eoskeygen
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
#include <eoskeygen/core/string.hpp>
|
||||
#include <eoskeygen/core/file.hpp>
|
||||
|
||||
namespace antelopekeygen {
|
||||
namespace eoskeygen {
|
||||
|
||||
bool readLines(const std::string& filename, strlist_t& lines) {
|
||||
|
||||
|
|
@ -46,4 +46,4 @@ bool readLines(const std::string& filename, strlist_t& lines) {
|
|||
return true;
|
||||
}
|
||||
|
||||
} // namespace antelopekeygen
|
||||
} // namespace eoskeygen
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
#include <algorithm>
|
||||
#include <eoskeygen/core/leet.hpp>
|
||||
|
||||
namespace antelopekeygen {
|
||||
namespace eoskeygen {
|
||||
|
||||
static bool is_l33t(char ch, char& r) {
|
||||
|
||||
|
|
@ -79,4 +79,4 @@ strlist_t l33twords(std::string str) {
|
|||
return list;
|
||||
}
|
||||
|
||||
} // namespace antelopekeygen
|
||||
} // namespace eoskeygen
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
#include <algorithm>
|
||||
#include <eoskeygen/core/string.hpp>
|
||||
|
||||
namespace antelopekeygen {
|
||||
namespace eoskeygen {
|
||||
|
||||
std::string& strtolower(std::string& str) {
|
||||
std::transform(str.begin(), str.end(), str.begin(), [](unsigned char c){ return std::tolower(c); });
|
||||
|
|
@ -49,4 +49,4 @@ std::string& trim(std::string& str) {
|
|||
return ltrim(rtrim(str));
|
||||
}
|
||||
|
||||
} // namespace antelopekeygen
|
||||
} // namespace eoskeygen
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
#include <eoskeygen/core/string.hpp>
|
||||
#include <eoskeygen/core/strlist.hpp>
|
||||
|
||||
namespace antelopekeygen {
|
||||
namespace eoskeygen {
|
||||
|
||||
strlist_t strlist::splitw(const std::string& str, const std::string& delim) {
|
||||
|
||||
|
|
@ -48,7 +48,7 @@ strlist_t strlist::split(const std::string& str, const std::string& delim) {
|
|||
return r;
|
||||
}
|
||||
|
||||
std::string strlist::join(const strlist_t& list, const std::string& delim) {
|
||||
std::string strlist::join(const eoskeygen::strlist_t& list, const std::string& delim) {
|
||||
|
||||
std::string out;
|
||||
|
||||
|
|
@ -72,4 +72,4 @@ strlist_t& strlist::strip(strlist_t& list, strlist_stripfunc_t fn) {
|
|||
return list;
|
||||
}
|
||||
|
||||
} // namespace antelopekeygen
|
||||
} // namespace eoskeygen
|
||||
|
|
|
|||
|
|
@ -21,17 +21,16 @@
|
|||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
#include <libantelope/ec.hpp>
|
||||
#include <libantelope/WIF.hpp>
|
||||
#include <libeosio/ec.hpp>
|
||||
#include <libeosio/WIF.hpp>
|
||||
#include <eoskeygen/config.hpp>
|
||||
#include <eoskeygen/core/string.hpp>
|
||||
#include <eoskeygen/key_search_result.hpp>
|
||||
#include <eoskeygen/key_search.hpp>
|
||||
|
||||
namespace antelopekeygen {
|
||||
namespace eoskeygen {
|
||||
|
||||
KeySearch::KeySearch() :
|
||||
m_prefix ("EOS"),
|
||||
m_max (0),
|
||||
m_count (0),
|
||||
#ifdef EOSIOKEYGEN_HAVE_THREADS
|
||||
|
|
@ -41,11 +40,6 @@ KeySearch::KeySearch() :
|
|||
{
|
||||
}
|
||||
|
||||
void KeySearch::setPrefix(const std::string& prefix)
|
||||
{
|
||||
m_prefix = prefix;
|
||||
}
|
||||
|
||||
void KeySearch::addWord(const std::string& str)
|
||||
{
|
||||
std::string tmp = str;
|
||||
|
|
@ -77,11 +71,11 @@ void KeySearch::setCallback(IKeySearchResult* callback)
|
|||
|
||||
void KeySearch::_search_linear()
|
||||
{
|
||||
struct libantelope::ec_keypair pair;
|
||||
struct libeosio::ec_keypair pair;
|
||||
|
||||
while (m_count < m_max) {
|
||||
struct result res;
|
||||
libantelope::ec_generate_key(&pair);
|
||||
libeosio::ec_generate_key(&pair);
|
||||
if (_contains_word(&pair, res)) {
|
||||
m_callback->onResult(&pair, res);
|
||||
m_count++;
|
||||
|
|
@ -111,16 +105,16 @@ void KeySearch::find(size_t num_results)
|
|||
_search_linear();
|
||||
}
|
||||
|
||||
bool KeySearch::_contains_word(const struct libantelope::ec_keypair* key, struct result& result) {
|
||||
bool KeySearch::_contains_word(const struct libeosio::ec_keypair* key, struct result& result) {
|
||||
|
||||
size_t prefix_len = m_prefix.length();
|
||||
std::string pubstr = libantelope::wif_pub_encode(key->pub, m_prefix).substr(prefix_len);
|
||||
// skip first 3 chars, as those are always "EOS"
|
||||
std::string pubstr = libeosio::wif_pub_encode(key->pub).substr(3);
|
||||
strtolower(pubstr);
|
||||
|
||||
for(auto const& w: m_words) {
|
||||
size_t p = pubstr.find(w);
|
||||
if (p != std::string::npos) {
|
||||
result.pos = p + prefix_len;
|
||||
result.pos = p + 3;
|
||||
result.len = w.length();
|
||||
return true;
|
||||
}
|
||||
|
|
@ -128,4 +122,4 @@ bool KeySearch::_contains_word(const struct libantelope::ec_keypair* key, struct
|
|||
return false;
|
||||
}
|
||||
|
||||
} // namespace antelopekeygen
|
||||
} // namespace eoskeygen
|
||||
|
|
|
|||
|
|
@ -25,11 +25,11 @@
|
|||
#include <thread>
|
||||
#include <mutex>
|
||||
#include <vector>
|
||||
#include <libantelope/ec.hpp>
|
||||
#include <libeosio/ec.hpp>
|
||||
#include <eoskeygen/key_search_result.hpp>
|
||||
#include <eoskeygen/key_search.hpp>
|
||||
|
||||
namespace antelopekeygen {
|
||||
namespace eoskeygen {
|
||||
|
||||
// Mutex guard for m_count.
|
||||
std::mutex g_count_mtx;
|
||||
|
|
@ -37,12 +37,12 @@ std::mutex g_count_mtx;
|
|||
// Thread process.
|
||||
void KeySearch::_thr_proc()
|
||||
{
|
||||
struct libantelope::ec_keypair pair;
|
||||
struct libeosio::ec_keypair pair;
|
||||
|
||||
while (m_count < m_max) {
|
||||
struct result res;
|
||||
|
||||
libantelope::ec_generate_key(&pair);
|
||||
libeosio::ec_generate_key(&pair);
|
||||
if (_contains_word(&pair, res)) {
|
||||
|
||||
// Guard output with mutex, so we don't get
|
||||
|
|
@ -98,4 +98,4 @@ void KeySearch::_search_mt()
|
|||
}
|
||||
}
|
||||
|
||||
} // namespace antelopekeygen
|
||||
} // namespace eoskeygen
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
cmake_minimum_required(VERSION 3.15)
|
||||
|
||||
project(antelope-keygen-gui
|
||||
project(eosio-keygen-gui
|
||||
VERSION ${CMAKE_PROJECT_VERSION}
|
||||
DESCRIPTION "Keygenerator for Antelope blockchain (gui)"
|
||||
DESCRIPTION "Keygenerator for EOSIO (gui)"
|
||||
LANGUAGES CXX)
|
||||
|
||||
# Append modules dir
|
||||
|
|
|
|||
|
|
@ -1,22 +1,23 @@
|
|||
|
||||
# antelope-keygen (gui)
|
||||
# eosio-keygen (gui)
|
||||
|
||||
This is the graphical version of the [antelope-keygen](https://github.com/eosswedenorg/antelope-keygen) project.
|
||||
This is the graphical version of [eosio-keygen](https://github.com/eosswedenorg/eosio-keygen) project.
|
||||
|
||||
This program generates public and private keypair for [Antelope IO](https://antelope.io)
|
||||
The program generates public and private keypairs for [EOSIO](https://eos.io/)
|
||||
|
||||
Among the basic functionality the program can also search for keys containing specific words also know as _vanity keys_.
|
||||
|
||||
## Security notice
|
||||
|
||||
Keys are generated using [libantelope](https://github.com/eosswedenorg/libantelope)
|
||||
while the library does not claim to guarantee cryptographically secure keys. it
|
||||
relies on widly used open source cryptographic libraries (OpenSSL, libsecp256k1).
|
||||
Keys are generated by `OpenSSL`'s `EC_KEY_generate_key` function. The program will
|
||||
never expose your keys to anything but the computers memory and output of the
|
||||
program. You are free to inspect the source code and compile yourself to verify.
|
||||
|
||||
Use at your own risk. The author and [Sw/eden](https://eossweden.org/) does not take responsability
|
||||
for any damage caused by keys generated by the program.
|
||||
However, use this at your own risk. we cannot guarantee that the keys are
|
||||
cryptographically secure as this depends on OpenSSL's implementation (alto it is
|
||||
widely used and should be safe)
|
||||
|
||||
Please read the `LICENSE` file.
|
||||
Please read the `LICENSE.gui` file.
|
||||
|
||||
```
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
||||
|
|
|
|||
|
|
@ -26,16 +26,13 @@
|
|||
#include <QGridLayout>
|
||||
#include <QClipboard>
|
||||
#include <QGuiApplication>
|
||||
#include <QFont>
|
||||
#include <QFontDatabase>
|
||||
#include <libantelope/ec.hpp>
|
||||
#include <libantelope/WIF.hpp>
|
||||
#include <libeosio/ec.hpp>
|
||||
#include <libeosio/WIF.hpp>
|
||||
#include "Settings.hpp"
|
||||
#include "GenerateWindow.hpp"
|
||||
|
||||
void _initKeyWidget(QLineEdit& w, const QFont& font) {
|
||||
w.setFixedWidth(460);
|
||||
w.setFont(font);
|
||||
void _initKeyWidget(QLineEdit& w) {
|
||||
w.setFixedWidth(450);
|
||||
w.setReadOnly(true);
|
||||
}
|
||||
|
||||
|
|
@ -49,13 +46,11 @@ QWidget (parent),
|
|||
m_btn_gen ("Generate"),
|
||||
m_btn_copy_both ("Copy keys")
|
||||
{
|
||||
QFont mono = QFontDatabase::systemFont(QFontDatabase::FixedFont);
|
||||
|
||||
QIcon copy_icon = QIcon::fromTheme("edit-copy");
|
||||
QGridLayout* layout;
|
||||
|
||||
_initKeyWidget(m_pub, mono);
|
||||
_initKeyWidget(m_priv, mono);
|
||||
_initKeyWidget(m_pub);
|
||||
_initKeyWidget(m_priv);
|
||||
|
||||
_initKeyCopyButton(m_btn_copy_pub, copy_icon);
|
||||
_initKeyCopyButton(m_btn_copy_priv, copy_icon);
|
||||
|
|
@ -97,16 +92,14 @@ m_btn_copy_both ("Copy keys")
|
|||
|
||||
void GenerateWindow::generate_key()
|
||||
{
|
||||
std::string pubstr, pvtstr;
|
||||
struct libantelope::ec_keypair pair;
|
||||
const libantelope::wif_codec_t& codec = Settings::getKeyCodec();
|
||||
std::string pubstr;
|
||||
struct libeosio::ec_keypair pair;
|
||||
|
||||
libantelope::ec_generate_key(&pair);
|
||||
libeosio::ec_generate_key(&pair);
|
||||
|
||||
pubstr = libantelope::wif_pub_encode(pair.pub, codec.pub);
|
||||
pvtstr = libantelope::wif_priv_encode(pair.secret, codec.pvt);
|
||||
pubstr = libeosio::wif_pub_encode(pair.pub, Settings::shouldGenerateFioKeys() ? "FIO" : "EOS");
|
||||
m_pub.setText(QString::fromStdString(pubstr));
|
||||
m_priv.setText(QString::fromStdString(pvtstr));
|
||||
m_priv.setText(QString::fromStdString(libeosio::wif_priv_encode(pair.secret)));
|
||||
}
|
||||
|
||||
void GenerateWindow::copy_both_keys()
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@
|
|||
#include <QMenuBar>
|
||||
#include <QGridLayout>
|
||||
#include <QStackedWidget>
|
||||
#include <libantelope/WIF.hpp>
|
||||
#include "gui_text.h"
|
||||
#include "Settings.hpp"
|
||||
#include "GenerateWindow.hpp"
|
||||
|
|
@ -33,13 +32,9 @@
|
|||
#include "MainWindow.hpp"
|
||||
|
||||
MainWindow::MainWindow(QWidget *parent) :
|
||||
QMainWindow (parent),
|
||||
m_format_fio_action (nullptr),
|
||||
m_format_legacy_action (nullptr),
|
||||
m_format_k1_action (nullptr)
|
||||
QMainWindow (parent),
|
||||
m_fio_action (nullptr)
|
||||
{
|
||||
libantelope::ec_init();
|
||||
|
||||
// Create sub windows and stacked widget.
|
||||
m_stacked = new QStackedWidget();
|
||||
m_stacked->addWidget(new GenerateWindow());
|
||||
|
|
@ -54,38 +49,17 @@ m_format_k1_action (nullptr)
|
|||
|
||||
// Settings
|
||||
|
||||
QActionGroup* formatGroup = new QActionGroup(this);
|
||||
m_fio_action = new QAction("FIO Keys", this);
|
||||
m_fio_action->setCheckable(true);
|
||||
connect(m_fio_action, SIGNAL(triggered()), this, SLOT(fioKeysCheckboxChanged()));
|
||||
|
||||
m_format_fio_action = new QAction("FIO", formatGroup);
|
||||
m_format_fio_action->setCheckable(true);
|
||||
m_format_legacy_action = new QAction("Legacy", formatGroup);
|
||||
m_format_legacy_action->setCheckable(true);
|
||||
m_format_k1_action = new QAction("K1", formatGroup);
|
||||
m_format_k1_action->setCheckable(true);
|
||||
|
||||
// Set k1 and trigger the changed action so we set the codec.
|
||||
m_format_k1_action->setChecked(true);
|
||||
formatK1CheckboxChanged();
|
||||
|
||||
connect(m_format_fio_action, SIGNAL(triggered()), this, SLOT(formatFioCheckboxChanged()));
|
||||
connect(m_format_legacy_action, SIGNAL(triggered()), this, SLOT(formatLegacyCheckboxChanged()));
|
||||
connect(m_format_k1_action, SIGNAL(triggered()), this, SLOT(formatK1CheckboxChanged()));
|
||||
|
||||
QMenu *settings = menuBar()->addMenu("Settings");
|
||||
QMenu *format_menu = settings->addMenu("Key Format");
|
||||
format_menu->addAction(m_format_k1_action);
|
||||
format_menu->addAction(m_format_legacy_action);
|
||||
format_menu->addAction(m_format_fio_action);
|
||||
QMenu *settings_menu = menuBar()->addMenu("Settings");
|
||||
settings_menu->addAction(m_fio_action);
|
||||
|
||||
// About
|
||||
menuBar()->addAction("About", this, SLOT(showAbout()));
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
{
|
||||
libantelope::ec_shutdown();
|
||||
}
|
||||
|
||||
void MainWindow::switchToGenerate()
|
||||
{
|
||||
m_stacked->setCurrentIndex(0);
|
||||
|
|
@ -103,23 +77,7 @@ void MainWindow::showAbout()
|
|||
EOSIOKEYGEN_GUI_TEXT_ABOUT_BODY);
|
||||
}
|
||||
|
||||
void MainWindow::formatFioCheckboxChanged()
|
||||
void MainWindow::fioKeysCheckboxChanged()
|
||||
{
|
||||
if (m_format_fio_action->isChecked()) {
|
||||
Settings::setKeyCodec(libantelope::wif_create_legacy_codec("FIO"));
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::formatLegacyCheckboxChanged()
|
||||
{
|
||||
if (m_format_legacy_action->isChecked()) {
|
||||
Settings::setKeyCodec(libantelope::WIF_CODEC_LEG);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::formatK1CheckboxChanged()
|
||||
{
|
||||
if (m_format_k1_action->isChecked()) {
|
||||
Settings::setKeyCodec(libantelope::WIF_CODEC_K1);
|
||||
}
|
||||
Settings::setGenerateFioKeys(m_fio_action ? m_fio_action->isChecked() : false);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,8 +34,7 @@ class MainWindow : public QMainWindow
|
|||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
MainWindow(QWidget *parent = 0);
|
||||
virtual ~MainWindow();
|
||||
MainWindow(QWidget *parent = 0);
|
||||
|
||||
private slots :
|
||||
|
||||
|
|
@ -47,17 +46,13 @@ private slots :
|
|||
|
||||
void showAbout();
|
||||
|
||||
void formatFioCheckboxChanged();
|
||||
void formatLegacyCheckboxChanged();
|
||||
void formatK1CheckboxChanged();
|
||||
void fioKeysCheckboxChanged();
|
||||
|
||||
private :
|
||||
|
||||
QStackedWidget* m_stacked;
|
||||
|
||||
QPointer<QAction> m_format_fio_action;
|
||||
QPointer<QAction> m_format_legacy_action;
|
||||
QPointer<QAction> m_format_k1_action;
|
||||
QPointer<QAction> m_fio_action;
|
||||
};
|
||||
|
||||
#endif /* MAIN_WINDOW_H */
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@
|
|||
#include <QGridLayout>
|
||||
#include <QFuture>
|
||||
#include <QtConcurrent>
|
||||
#include <libantelope/WIF.hpp>
|
||||
#include <libeosio/WIF.hpp>
|
||||
#include <eoskeygen/core/leet.hpp>
|
||||
#include <eoskeygen/core/string.hpp>
|
||||
#include "Settings.hpp"
|
||||
|
|
@ -72,8 +72,8 @@ m_btn_clear ("Clear")
|
|||
m_layout.addWidget(&m_leet_cb, 0, 2);
|
||||
|
||||
#ifdef EOSIOKEYGEN_HAVE_THREADS
|
||||
m_num_threads.setValue((int) antelopekeygen::KeySearch::max_threads());
|
||||
m_num_threads.setRange(1, (int) antelopekeygen::KeySearch::max_threads());
|
||||
m_num_threads.setValue((int) eoskeygen::KeySearch::max_threads());
|
||||
m_num_threads.setRange(1, (int) eoskeygen::KeySearch::max_threads());
|
||||
m_num_threads.setSuffix(" Threads");
|
||||
m_layout.addWidget(&m_num_threads, 0, 3);
|
||||
#endif /* EOSIOKEYGEN_HAVE_THREADS */
|
||||
|
|
@ -121,7 +121,7 @@ void SearchWindow::initSignals()
|
|||
void SearchWindow::loadDictionaries()
|
||||
{
|
||||
QStringList list;
|
||||
antelopekeygen::Dictionary tmpDict;
|
||||
eoskeygen::Dictionary tmpDict;
|
||||
std::string base_path(CONFIG_DICT_FULL_PATH);
|
||||
|
||||
// Clear dictionary first.
|
||||
|
|
@ -146,20 +146,18 @@ void SearchWindow::loadDictionaries()
|
|||
}
|
||||
}
|
||||
|
||||
void SearchWindow::onResult(const struct libantelope::ec_keypair* key, const struct antelopekeygen::KeySearch::result& result)
|
||||
void SearchWindow::onResult(const struct libeosio::ec_keypair* key, const struct eoskeygen::KeySearch::result& result)
|
||||
{
|
||||
int pos = (int) result.pos;
|
||||
int len = (int) result.len;
|
||||
libantelope::wif_codec_t codec = Settings::getKeyCodec();
|
||||
QString pub = QString::fromStdString(libantelope::wif_pub_encode(key->pub, codec.pub));
|
||||
int pub_prefix_len = (int) codec.pub.length();
|
||||
QString pub = QString::fromStdString(libeosio::wif_pub_encode(key->pub, Settings::shouldGenerateFioKeys() ? "FIO" : "EOS"));
|
||||
QString mid = pub.mid(pos, len);
|
||||
QString left = pub.left(pos);
|
||||
QString right = pub.mid(pos + len, pub.size() - pos);
|
||||
antelopekeygen::Dictionary::search_result_t dict_res = m_dict.search(pub.toStdString());
|
||||
eoskeygen::Dictionary::search_result_t dict_res = m_dict.search(pub.toStdString());
|
||||
|
||||
QString out = "Public: " + pub.left(pub_prefix_len);
|
||||
for(int i = pub_prefix_len; i < pub.length(); ) {
|
||||
QString out = "Public: " + pub.left(3);
|
||||
for(int i = 3; i < pub.length(); ) {
|
||||
|
||||
if (i == pos) {
|
||||
out += "<font color=red>" + pub.mid(pos, len) + "</font>";
|
||||
|
|
@ -180,7 +178,7 @@ void SearchWindow::onResult(const struct libantelope::ec_keypair* key, const str
|
|||
out += pub[i++];
|
||||
}
|
||||
|
||||
out += "<br/>Private: " + QString::fromStdString(libantelope::wif_priv_encode(key->secret, codec.pvt));
|
||||
out += "<br/>Private: " + QString::fromStdString(libeosio::wif_priv_encode(key->secret));
|
||||
|
||||
// As this function could be called from a non-gui thread. we use signals.
|
||||
emit addOutput("<p>" + out + "</p>");
|
||||
|
|
@ -198,12 +196,12 @@ void SearchWindow::search()
|
|||
}
|
||||
|
||||
const std::string& input = m_txt_search.text().toLocal8Bit().constData();
|
||||
antelopekeygen::strlist_t list;
|
||||
eoskeygen::strlist_t list;
|
||||
|
||||
if (m_leet_cb.isChecked()) {
|
||||
list = antelopekeygen::l33twords(input);
|
||||
list = eoskeygen::l33twords(input);
|
||||
} else {
|
||||
list = antelopekeygen::strlist::splitw(input);
|
||||
list = eoskeygen::strlist::splitw(input);
|
||||
}
|
||||
|
||||
// Validate that we atleast got something to search for.
|
||||
|
|
@ -222,10 +220,10 @@ void SearchWindow::search()
|
|||
m_ksearch.setThreadCount(m_num_threads.value());
|
||||
#endif /* EOSIOKEYGEN_HAVE_THREADS */
|
||||
|
||||
QFuture<void> future = QtConcurrent::run(&m_ksearch, &antelopekeygen::KeySearch::find, m_num_results.value());
|
||||
QFuture<void> future = QtConcurrent::run(&m_ksearch, &eoskeygen::KeySearch::find, m_num_results.value());
|
||||
m_worker.setFuture(future);
|
||||
|
||||
m_status.setText("Searching for: " + QString::fromStdString(antelopekeygen::strlist::join(list, ", ")));
|
||||
m_status.setText("Searching for: " + QString::fromStdString(eoskeygen::strlist::join(list, ", ")));
|
||||
}
|
||||
|
||||
void SearchWindow::output(const std::string& html)
|
||||
|
|
@ -255,9 +253,6 @@ void SearchWindow::langFileAdd()
|
|||
|
||||
void SearchWindow::searchStarted()
|
||||
{
|
||||
// Set prefix for search
|
||||
m_ksearch.setPrefix(Settings::getKeyCodec().pub);
|
||||
|
||||
m_btn_exec.setText("Cancel");
|
||||
|
||||
m_txt_search.setEnabled(false);
|
||||
|
|
|
|||
|
|
@ -37,13 +37,13 @@
|
|||
#include <eoskeygen/key_search.hpp>
|
||||
#include "MultiSelect.hpp"
|
||||
|
||||
class SearchWindow : public QWidget, public antelopekeygen::IKeySearchResult
|
||||
class SearchWindow : public QWidget, public eoskeygen::IKeySearchResult
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit SearchWindow(QWidget *parent = 0, Qt::WindowFlags flags = Qt::WindowFlags());
|
||||
|
||||
void onResult(const struct libantelope::ec_keypair* key, const struct antelopekeygen::KeySearch::result& result);
|
||||
void onResult(const struct libeosio::ec_keypair* key, const struct eoskeygen::KeySearch::result& result);
|
||||
|
||||
private :
|
||||
void initSignals();
|
||||
|
|
@ -76,9 +76,9 @@ private:
|
|||
// Search worker thread.
|
||||
QFutureWatcher<void> m_worker;
|
||||
|
||||
antelopekeygen::KeySearch m_ksearch;
|
||||
eoskeygen::KeySearch m_ksearch;
|
||||
|
||||
antelopekeygen::Dictionary m_dict;
|
||||
eoskeygen::Dictionary m_dict;
|
||||
|
||||
// Widgets
|
||||
// ----------------
|
||||
|
|
|
|||
|
|
@ -24,14 +24,16 @@
|
|||
#include "Settings.hpp"
|
||||
|
||||
namespace priv {
|
||||
bool fio_keys = false;
|
||||
|
||||
libantelope::wif_codec_t key_format = libantelope::WIF_CODEC_K1;
|
||||
} // namespace priv
|
||||
|
||||
void Settings::setKeyCodec(const libantelope::wif_codec_t& format) {
|
||||
priv::key_format = format;
|
||||
bool Settings::shouldGenerateFioKeys()
|
||||
{
|
||||
return priv::fio_keys;
|
||||
}
|
||||
|
||||
const libantelope::wif_codec_t& Settings::getKeyCodec() {
|
||||
return priv::key_format;
|
||||
void Settings::setGenerateFioKeys(bool value)
|
||||
{
|
||||
priv::fio_keys = value;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,13 +24,11 @@
|
|||
#ifndef SETTINGS_H
|
||||
#define SETTINGS_H
|
||||
|
||||
#include <libantelope/WIF.hpp>
|
||||
|
||||
namespace Settings
|
||||
{
|
||||
void setKeyCodec(const libantelope::wif_codec_t& format);
|
||||
bool shouldGenerateFioKeys();
|
||||
|
||||
const libantelope::wif_codec_t& getKeyCodec();
|
||||
void setGenerateFioKeys(bool value);
|
||||
};
|
||||
|
||||
#endif /* SEARCH_WINDOW_H */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue