diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5fd9c8f..1809bbd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -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 diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml index 30106ea..ec96375 100644 --- a/.github/workflows/package.yml +++ b/.github/workflows/package.yml @@ -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 diff --git a/CMakeLists.txt b/CMakeLists.txt index 3074eea..e24e38e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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 ") set( PROJECT_LICENSE_FILE ${CMAKE_CURRENT_LIST_DIR}/LICENSE ) @@ -71,38 +71,27 @@ set( CMAKE_CXX_EXTENSIONS OFF ) # c++ flags add_compile_options( - "$<$:-Wall;-Wconversion;-Wno-sign-conversion;-Wextra>" - "$<$:/W3;-D_CRT_SECURE_NO_WARNINGS=1>" + "$<$:-Wall;-Wconversion;-Wno-sign-conversion;-Wextra>" + "$<$:/W3;-D_CRT_SECURE_NO_WARNINGS=1>" # Debug - "$<$:$<$:-O0;-g>>" - "$<$:$<$:/Od;/Zi>>" + "$<$:$<$:-O0;-g>>" + "$<$:$<$:/Od;/Zi>>" # Release - "$<$:$<$:-O3>>" - "$<$:$<$:/O2>>" + "$<$:$<$:-O3>>" + "$<$:$<$:/O2>>" # MinSizeRel - "$<$:$<$:-Os>>" - "$<$:$<$:/O1>>" + "$<$:$<$:-Os>>" + "$<$:$<$:/O1>>" ) -add_link_options( - # Release - "$<$:$<$:-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 ) diff --git a/LICENSE b/LICENSE index 635055a..81ee5da 100644 --- a/LICENSE +++ b/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 diff --git a/README.md b/README.md index 5609aa3..e4ac358 100644 --- a/README.md +++ b/README.md @@ -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 -$ sudo apt install ./libantelope-dev-.deb +$ sudo apt install ./libeosio-dev-.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. diff --git a/build.sh b/build.sh index 7a6d1d7..a58395c 100755 --- a/build.sh +++ b/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 } diff --git a/cli/CMakeLists.txt b/cli/CMakeLists.txt index ff3512f..64528ce 100644 --- a/cli/CMakeLists.txt +++ b/cli/CMakeLists.txt @@ -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} diff --git a/cli/docs/README.md.in b/cli/docs/README.md.in index 17768e5..d387386 100644 --- a/cli/docs/README.md.in +++ b/cli/docs/README.md.in @@ -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 ] [--dict ...] [--lang ...] word_list [count] +@PROJECT_NAME@ search [-m] [--l33t] [--threads=] [--dict= ...] [--lang= ...] 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 ] [--dict ...] [--lang ...] word_list [count]` +`eosio-keygen search [-m] [--l33t] [--threads=] [--dict= ...] [--lang= ...] 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. diff --git a/cli/docs/antelope-keygen-benchmark.1.in b/cli/docs/antelope-keygen-benchmark.1.in deleted file mode 100644 index cd16012..0000000 --- a/cli/docs/antelope-keygen-benchmark.1.in +++ /dev/null @@ -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 \ No newline at end of file diff --git a/cli/docs/antelope-keygen-search.1.in b/cli/docs/antelope-keygen-search.1.in deleted file mode 100644 index 1ab0af3..0000000 --- a/cli/docs/antelope-keygen-search.1.in +++ /dev/null @@ -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 -.OP \--dict ... -.OP \--lang ... -.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: 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 \ No newline at end of file diff --git a/cli/docs/antelope-keygen.1.in b/cli/docs/antelope-keygen.1.in deleted file mode 100644 index 16273cc..0000000 --- a/cli/docs/antelope-keygen.1.in +++ /dev/null @@ -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 -.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 diff --git a/cli/docs/eosio-keygen.1.in b/cli/docs/eosio-keygen.1.in new file mode 100644 index 0000000..c7ef574 --- /dev/null +++ b/cli/docs/eosio-keygen.1.in @@ -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= +.OP \--dict= ... +.OP \--lang= ... +.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 +public keys containing one or more words from +.I +(separated with ','). +Instead of a list it is possible to specify a file with words (separated with newline '\\n') using +.I file: +.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 +and find all l33tspeak combinations of that word and uses the new list for the search. +.TP 20 +.B --threads= +Use +.I +of parallel threads for searching. Default is what the operating system recommends. +.TP 20 +.B --dict= +Use words found in +.I +(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= +Same as +.B --dict +but will use +.I +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 +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 diff --git a/cli/src/benchmark.cpp b/cli/src/benchmark.cpp index 01a8bbf..9c65375 100644 --- a/cli/src/benchmark.cpp +++ b/cli/src/benchmark.cpp @@ -22,16 +22,16 @@ * SOFTWARE. */ #include -#include +#include #include "benchmark.hpp" -namespace antelopekeygen { +namespace eoskeygen { std::chrono::duration _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(num_keys) / res->sec; } -} // namespace antelopekeygen +} // namespace eoskeygen diff --git a/cli/src/benchmark.hpp b/cli/src/benchmark.hpp index 180872e..9300cc3 100644 --- a/cli/src/benchmark.hpp +++ b/cli/src/benchmark.hpp @@ -26,7 +26,7 @@ #include -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 */ diff --git a/cli/src/cli_key_search_result.cpp b/cli/src/cli_key_search_result.cpp index d70b7cb..fa3d009 100644 --- a/cli/src/cli_key_search_result.cpp +++ b/cli/src/cli_key_search_result.cpp @@ -23,12 +23,12 @@ */ #include #include -#include +#include #include #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 diff --git a/cli/src/cli_key_search_result.hpp b/cli/src/cli_key_search_result.hpp index 1428477..4f1e47b 100644 --- a/cli/src/cli_key_search_result.hpp +++ b/cli/src/cli_key_search_result.hpp @@ -25,30 +25,29 @@ #define EOSIOKEYGEN_KEY_SEARCH_HELPERS_H #include -#include -#include +#include #include #include #include -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 */ diff --git a/cli/src/console.cpp b/cli/src/console.cpp index 9b3529d..ebcfe1f 100644 --- a/cli/src/console.cpp +++ b/cli/src/console.cpp @@ -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 diff --git a/cli/src/console.hpp b/cli/src/console.hpp index 0dd2c46..f847f75 100644 --- a/cli/src/console.hpp +++ b/cli/src/console.hpp @@ -26,7 +26,7 @@ #include -namespace antelopekeygen { +namespace eoskeygen { namespace console { @@ -86,6 +86,6 @@ namespace console { } // namespace console -} // namespace antelopekeygen +} // namespace eoskeygen #endif /* EOSIOKEYGEN_CONSOLE_H */ diff --git a/cli/src/console_ansi.cpp b/cli/src/console_ansi.cpp index f49006c..5cf5850 100644 --- a/cli/src/console_ansi.cpp +++ b/cli/src/console_ansi.cpp @@ -24,7 +24,7 @@ #include #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 diff --git a/cli/src/console_win32.cpp b/cli/src/console_win32.cpp index ec3b1b1..3b13f5a 100644 --- a/cli/src/console_win32.cpp +++ b/cli/src/console_win32.cpp @@ -25,7 +25,7 @@ #include #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 diff --git a/cli/src/isatty.cpp b/cli/src/isatty.cpp index 75d0778..ea03397 100644 --- a/cli/src/isatty.cpp +++ b/cli/src/isatty.cpp @@ -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 diff --git a/cli/src/isatty.hpp b/cli/src/isatty.hpp index 54d1e00..0b724af 100644 --- a/cli/src/isatty.hpp +++ b/cli/src/isatty.hpp @@ -26,12 +26,12 @@ #include -namespace antelopekeygen { +namespace eoskeygen { bool isatty(int fd); bool isatty(FILE* fd); -} // namespace antelopekeygen +} // namespace eoskeygen #endif /* EOSIOKEYGEN_CORE_ISATTY_H */ diff --git a/cli/src/main.cpp b/cli/src/main.cpp index 0b8ca7a..ebf8789 100644 --- a/cli/src/main.cpp +++ b/cli/src/main.cpp @@ -24,9 +24,9 @@ #include #include #include -#include -#include -#include +#include +#include +#include #include #include #include @@ -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 dict_list; std::vector 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 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; } diff --git a/cmake/CPackConfig.cmake b/cmake/CPackConfig.cmake index 8f55ba5..9dd5e7a 100644 --- a/cmake/CPackConfig.cmake +++ b/cmake/CPackConfig.cmake @@ -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 # -------------------------------- diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index eb3e3a7..e268a16 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -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} ) diff --git a/common/cmake/libantelope.cmake b/common/cmake/libantelope.cmake deleted file mode 100644 index 85a0ccd..0000000 --- a/common/cmake/libantelope.cmake +++ /dev/null @@ -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() diff --git a/common/cmake/libeosio.cmake b/common/cmake/libeosio.cmake new file mode 100644 index 0000000..c45cac9 --- /dev/null +++ b/common/cmake/libeosio.cmake @@ -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() diff --git a/common/config.hpp.in b/common/config.hpp.in index 1cbe1c8..8b1d7f9 100644 --- a/common/config.hpp.in +++ b/common/config.hpp.in @@ -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 */ diff --git a/common/include/eoskeygen/core/dictionary.hpp b/common/include/eoskeygen/core/dictionary.hpp index 8008a30..4a939c0 100644 --- a/common/include/eoskeygen/core/dictionary.hpp +++ b/common/include/eoskeygen/core/dictionary.hpp @@ -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 #include #include -namespace antelopekeygen { +namespace eoskeygen { class Dictionary { @@ -70,6 +70,6 @@ protected : std::set m_words; }; -} // namespace antelopekeygen +} // namespace eoskeygen -#endif /* ANTELOPEKEYGEN_COMMON_CORE_DICTIONARY_H */ +#endif /* EOSIOKEYGEN_COMMON_CORE_DICTIONARY_H */ diff --git a/common/include/eoskeygen/core/file.hpp b/common/include/eoskeygen/core/file.hpp index 15ec64c..330c974 100644 --- a/common/include/eoskeygen/core/file.hpp +++ b/common/include/eoskeygen/core/file.hpp @@ -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 -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 */ diff --git a/common/include/eoskeygen/core/leet.hpp b/common/include/eoskeygen/core/leet.hpp index 6cc3796..29eea80 100644 --- a/common/include/eoskeygen/core/leet.hpp +++ b/common/include/eoskeygen/core/leet.hpp @@ -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 #include -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 */ diff --git a/common/include/eoskeygen/core/string.hpp b/common/include/eoskeygen/core/string.hpp index a1ef0dc..4e008c0 100644 --- a/common/include/eoskeygen/core/string.hpp +++ b/common/include/eoskeygen/core/string.hpp @@ -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 #include -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 */ diff --git a/common/include/eoskeygen/core/strlist.hpp b/common/include/eoskeygen/core/strlist.hpp index 2cc63b6..96f509e 100644 --- a/common/include/eoskeygen/core/strlist.hpp +++ b/common/include/eoskeygen/core/strlist.hpp @@ -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 #include -namespace antelopekeygen { +namespace eoskeygen { typedef std::vector 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 */ diff --git a/common/include/eoskeygen/key_search.hpp b/common/include/eoskeygen/key_search.hpp index 5e0b9ae..b7fa5af 100644 --- a/common/include/eoskeygen/key_search.hpp +++ b/common/include/eoskeygen/key_search.hpp @@ -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 #include -#include +#include #include #include #include -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 appears in 's public key. // returns true if a word was found (stored in ), 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 */ diff --git a/common/include/eoskeygen/key_search_result.hpp b/common/include/eoskeygen/key_search_result.hpp index ef598e0..e174d18 100644 --- a/common/include/eoskeygen/key_search_result.hpp +++ b/common/include/eoskeygen/key_search_result.hpp @@ -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 -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 */ diff --git a/common/src/core/dictionary.cpp b/common/src/core/dictionary.cpp index 2e5033a..806922b 100644 --- a/common/src/core/dictionary.cpp +++ b/common/src/core/dictionary.cpp @@ -29,7 +29,7 @@ #include #include -namespace antelopekeygen { +namespace eoskeygen { struct StringContains { StringContains(const std::string& str, std::vector& 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 diff --git a/common/src/core/file.cpp b/common/src/core/file.cpp index 500d86b..6cbdac5 100644 --- a/common/src/core/file.cpp +++ b/common/src/core/file.cpp @@ -25,7 +25,7 @@ #include #include -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 diff --git a/common/src/core/leet.cpp b/common/src/core/leet.cpp index 763bc11..e30e54d 100644 --- a/common/src/core/leet.cpp +++ b/common/src/core/leet.cpp @@ -24,7 +24,7 @@ #include #include -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 diff --git a/common/src/core/string.cpp b/common/src/core/string.cpp index 54acb8a..6186556 100644 --- a/common/src/core/string.cpp +++ b/common/src/core/string.cpp @@ -26,7 +26,7 @@ #include #include -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 diff --git a/common/src/core/strlist.cpp b/common/src/core/strlist.cpp index dc3e5db..8c8f874 100644 --- a/common/src/core/strlist.cpp +++ b/common/src/core/strlist.cpp @@ -25,7 +25,7 @@ #include #include -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 diff --git a/common/src/key_search.cpp b/common/src/key_search.cpp index d20597d..f7af039 100644 --- a/common/src/key_search.cpp +++ b/common/src/key_search.cpp @@ -21,17 +21,16 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#include -#include +#include +#include #include #include #include #include -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 diff --git a/common/src/key_search_mt.cpp b/common/src/key_search_mt.cpp index f73a635..b0773ba 100644 --- a/common/src/key_search_mt.cpp +++ b/common/src/key_search_mt.cpp @@ -25,11 +25,11 @@ #include #include #include -#include +#include #include #include -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 diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index fec8fec..361dfeb 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -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 diff --git a/gui/README.md b/gui/README.md index b6d88ae..cf078bf 100644 --- a/gui/README.md +++ b/gui/README.md @@ -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, diff --git a/gui/src/GenerateWindow.cpp b/gui/src/GenerateWindow.cpp index 6d5e3f0..8880ffb 100644 --- a/gui/src/GenerateWindow.cpp +++ b/gui/src/GenerateWindow.cpp @@ -26,16 +26,13 @@ #include #include #include -#include -#include -#include -#include +#include +#include #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() diff --git a/gui/src/MainWindow.cpp b/gui/src/MainWindow.cpp index 9b1a043..8000ac1 100644 --- a/gui/src/MainWindow.cpp +++ b/gui/src/MainWindow.cpp @@ -25,7 +25,6 @@ #include #include #include -#include #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); } diff --git a/gui/src/MainWindow.hpp b/gui/src/MainWindow.hpp index 3d4b172..1658195 100644 --- a/gui/src/MainWindow.hpp +++ b/gui/src/MainWindow.hpp @@ -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 m_format_fio_action; - QPointer m_format_legacy_action; - QPointer m_format_k1_action; + QPointer m_fio_action; }; #endif /* MAIN_WINDOW_H */ diff --git a/gui/src/SearchWindow.cpp b/gui/src/SearchWindow.cpp index e4661e2..23e2cf3 100644 --- a/gui/src/SearchWindow.cpp +++ b/gui/src/SearchWindow.cpp @@ -28,7 +28,7 @@ #include #include #include -#include +#include #include #include #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 += "" + pub.mid(pos, len) + ""; @@ -180,7 +178,7 @@ void SearchWindow::onResult(const struct libantelope::ec_keypair* key, const str out += pub[i++]; } - out += "
Private: " + QString::fromStdString(libantelope::wif_priv_encode(key->secret, codec.pvt)); + out += "
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("

" + out + "

"); @@ -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 future = QtConcurrent::run(&m_ksearch, &antelopekeygen::KeySearch::find, m_num_results.value()); + QFuture 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); diff --git a/gui/src/SearchWindow.hpp b/gui/src/SearchWindow.hpp index 9282ef4..a161628 100644 --- a/gui/src/SearchWindow.hpp +++ b/gui/src/SearchWindow.hpp @@ -37,13 +37,13 @@ #include #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 m_worker; - antelopekeygen::KeySearch m_ksearch; + eoskeygen::KeySearch m_ksearch; - antelopekeygen::Dictionary m_dict; + eoskeygen::Dictionary m_dict; // Widgets // ---------------- diff --git a/gui/src/Settings.cpp b/gui/src/Settings.cpp index aa8dad9..d49c408 100644 --- a/gui/src/Settings.cpp +++ b/gui/src/Settings.cpp @@ -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; } diff --git a/gui/src/Settings.hpp b/gui/src/Settings.hpp index 08a56cd..d47c26f 100644 --- a/gui/src/Settings.hpp +++ b/gui/src/Settings.hpp @@ -24,13 +24,11 @@ #ifndef SETTINGS_H #define SETTINGS_H -#include - 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 */