From dcde774eacf859bccbd6c6c2e719a36cee867447 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Wed, 26 Feb 2020 15:07:03 +0100 Subject: [PATCH] crypto/base58: adding is_base58() string version. --- src/crypto/base58.cpp | 10 ++++++++++ src/crypto/base58.h | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/src/crypto/base58.cpp b/src/crypto/base58.cpp index 628e738..a1d112f 100644 --- a/src/crypto/base58.cpp +++ b/src/crypto/base58.cpp @@ -93,6 +93,16 @@ bool is_base58(char ch) { return false; } +size_t is_base58(const std::string& str) { + + auto p = std::find_if_not(str.begin(), str.end(), static_cast(is_base58)); + + if (p == str.end()) { + return std::string::npos; + } + return p - str.begin(); +} + 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; } diff --git a/src/crypto/base58.h b/src/crypto/base58.h index 2de18ef..4d52f31 100644 --- a/src/crypto/base58.h +++ b/src/crypto/base58.h @@ -35,6 +35,10 @@ std::string base58_encode(const unsigned char* pbegin, const unsigned char* pend bool is_base58(char ch); +// Returns std::string::npos if the string contains only base58 characters +// Otherwise the position of the first non base58 character is returned. +size_t is_base58(const std::string& str); + std::string& base58_strip(std::string& str); } //namespace eoskeygen