From 4a64da310b67d111224b07a8ecc7cab1e15a788e Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 26 Feb 2020 12:23:53 +0100 Subject: [PATCH] core/string.h: move base58 functions to crypto/base58.h --- src/core/string.cpp | 13 +------------ src/core/string.h | 1 - src/crypto/base58.cpp | 17 +++++++++++++++++ src/crypto/base58.h | 4 ++++ src/key_search.cpp | 1 + 5 files changed, 23 insertions(+), 13 deletions(-) diff --git a/src/core/string.cpp b/src/core/string.cpp index 477311c..f9f0da6 100644 --- a/src/core/string.cpp +++ b/src/core/string.cpp @@ -24,6 +24,7 @@ #include #include #include +#include "../crypto/base58.h" #include "string.h" namespace eoskeygen { @@ -88,18 +89,6 @@ std::string& trim(std::string& str) { return ltrim(rtrim(str)); } -static bool _is_base58(char ch) { - static std::string alphabet = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"; - return alphabet.find(ch) != std::string::npos; -} - -std::string& base58_strip(std::string &str) { - str.erase(std::remove_if(str.begin(), str.end(), [] (std::string::value_type ch) - { return !_is_base58(ch); } - ), str.end()); - return str; -} - strlist_t& base58_strip(strlist_t& list) { std::transform(list.begin(), list.end(), list.begin(), [](std::string& str){ return base58_strip(str); }); diff --git a/src/core/string.h b/src/core/string.h index 2548625..1662c7b 100644 --- a/src/core/string.h +++ b/src/core/string.h @@ -43,7 +43,6 @@ std::string& rtrim(std::string& str); std::string& ltrim(std::string& str); std::string& trim(std::string& str); -std::string& base58_strip(std::string &str); strlist_t& base58_strip(strlist_t& list); strlist_t l33twords(std::string str); diff --git a/src/crypto/base58.cpp b/src/crypto/base58.cpp index ad00911..628e738 100644 --- a/src/crypto/base58.cpp +++ b/src/crypto/base58.cpp @@ -24,6 +24,7 @@ * * Based on code from https://github.com/bitcoin/bitcoin/blob/f1e2f2a85962c1664e4e55471061af0eaa798d40/src/base58.cpp */ +#include #include #include #include "base58.h" @@ -83,4 +84,20 @@ std::string base58_encode(const std::vector& vch) { return base58_encode(vch.data(), vch.data() + vch.size()); } +bool is_base58(char ch) { + for(unsigned int i=0; i < sizeof(charmap); i++) { + if (ch == charmap[i]) { + return true; + } + } + return false; +} + +std::string& base58_strip(std::string &str) { + str.erase(std::remove_if(str.begin(), str.end(), [] (std::string::value_type ch) + { return is_base58(ch) == false; } + ), str.end()); + return str; +} + } // namespace eoskeygen diff --git a/src/crypto/base58.h b/src/crypto/base58.h index 656969e..2de18ef 100644 --- a/src/crypto/base58.h +++ b/src/crypto/base58.h @@ -33,6 +33,10 @@ std::string base58_encode(const std::string& str); std::string base58_encode(const std::vector& vch); std::string base58_encode(const unsigned char* pbegin, const unsigned char* pend); +bool is_base58(char ch); + +std::string& base58_strip(std::string& str); + } //namespace eoskeygen #endif /* EOSIOKEYGEN_CRYPTO_BASE58_H */ diff --git a/src/key_search.cpp b/src/key_search.cpp index a67209a..48e0567 100644 --- a/src/key_search.cpp +++ b/src/key_search.cpp @@ -23,6 +23,7 @@ */ #include #include "crypto/ec.h" +#include "crypto/base58.h" #include "key_search_helpers.h" #include "key_search.h"