diff --git a/src/utils.cpp b/src/utils.cpp index f67a87724..52bbd43cc 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -69,7 +69,7 @@ void DH_der_gen_hex(std::string& strDer, int iKeyLength) DH_der_gen(strBuf, iKeyLength); - strHex(strDer, strBuf); + strDer = strHex(strBuf); } DH* DH_der_load(const std::string& strDer) diff --git a/src/utils.h b/src/utils.h index 986b059f6..1d7ace235 100644 --- a/src/utils.h +++ b/src/utils.h @@ -36,8 +36,10 @@ std::string strJoin(Iterator first, Iterator last, std::string strSeperator) char charHex(int iDigit); template -void strHex(std::string& strDst, Iterator first, int iSize) +std::string strHex(Iterator first, int iSize) { + std::string strDst; + strDst.resize(iSize*2); for (int i = 0; i < iSize; i++) { @@ -46,14 +48,16 @@ void strHex(std::string& strDst, Iterator first, int iSize) strDst[i*2] = charHex(c >> 4); strDst[i*2+1] = charHex(c & 15); } + + return strDst; } -inline void strHex(std::string& strDst, const std::string& strSrc) { - strHex(strDst, strSrc.begin(), strSrc.size()); +inline const std::string strHex(const std::string& strSrc) { + return strHex(strSrc.begin(), strSrc.size()); } -inline void strHex(std::string& strDst, const std::vector vchData) { - strHex(strDst, vchData.begin(), vchData.size()); +inline std::string strHex(const std::vector vchData) { + return strHex(vchData.begin(), vchData.size()); } int charUnHex(char cDigit);