1
0
Fork 0
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

View file

@ -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

View file

@ -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

View file

@ -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 )

View file

@ -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

View file

@ -1,24 +1,24 @@
[![CI Test](https://github.com/eosswedenorg/antelope-keygen/workflows/CI/badge.svg)](https://github.com/eosswedenorg/antelope-keygen/actions)
[![GitHub release](https://img.shields.io/github/v/release/eosswedenorg/antelope-keygen?include_prereleases)](https://github.com/eosswedenorg/antelope-keygen/releases/latest)
![](https://github.com/eosswedenorg/eosio-keygen/workflows/CI/badge.svg)
[![GitHub release](https://img.shields.io/github/v/release/eosswedenorg/eosio-keygen?include_prereleases)](https://github.com/eosswedenorg/eosio-keygen/releases/latest)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](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.

View file

@ -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
}

View file

@ -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}

View file

@ -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.

View 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

View file

@ -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

View file

@ -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
View 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

View file

@ -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

View file

@ -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 */

View file

@ -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

View file

@ -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 */

View file

@ -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

View file

@ -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 */

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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 */

View file

@ -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;
}

View file

@ -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
# --------------------------------

View file

@ -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}
)

View file

@ -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()

View 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()

View file

@ -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 */

View file

@ -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 */

View file

@ -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 */

View file

@ -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 */

View file

@ -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 */

View file

@ -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 */

View file

@ -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 */

View file

@ -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 */

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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,

View file

@ -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()

View file

@ -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);
}

View file

@ -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 */

View file

@ -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);

View file

@ -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
// ----------------

View file

@ -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;
}

View file

@ -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 */