make CBase58Data class use zero_after_free_allocator

- this way there is no need for an explicit destructor, who does the same
  thing anyway
This commit is contained in:
Philip Kaufmann 2012-11-09 12:50:59 +01:00
parent 0f8a647782
commit d0b0925be9

View file

@ -17,11 +17,11 @@
#include <string>
#include <vector>
#include <openssl/crypto.h> // for OPENSSL_cleanse()
#include "bignum.h"
#include "key.h"
#include "script.h"
#include "allocators.h"
static const char* pszBase58 = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
@ -180,7 +180,8 @@ protected:
unsigned char nVersion;
// the actually encoded data
std::vector<unsigned char> vchData;
typedef std::vector<unsigned char, zero_after_free_allocator<unsigned char> > vector_uchar;
vector_uchar vchData;
CBase58Data()
{
@ -188,13 +189,6 @@ protected:
vchData.clear();
}
~CBase58Data()
{
// zero the memory, as it may contain sensitive data
if (!vchData.empty())
OPENSSL_cleanse(&vchData[0], vchData.size());
}
void SetData(int nVersionIn, const void* pdata, size_t nSize)
{
nVersion = nVersionIn;
@ -459,4 +453,4 @@ public:
}
};
#endif
#endif // BITCOIN_BASE58_H