|
|
|
@ -35,11 +35,12 @@ namespace data
@@ -35,11 +35,12 @@ namespace data
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
IdentityEx::IdentityEx (): |
|
|
|
|
m_ExtendedLen (0), m_ExtendedBuffer (nullptr) |
|
|
|
|
m_IsVerifierCreated (false), m_ExtendedLen (0), m_ExtendedBuffer (nullptr) |
|
|
|
|
{ |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
IdentityEx::IdentityEx(const uint8_t * publicKey, const uint8_t * signingKey, SigningKeyType type) |
|
|
|
|
IdentityEx::IdentityEx(const uint8_t * publicKey, const uint8_t * signingKey, SigningKeyType type): |
|
|
|
|
m_IsVerifierCreated (false) |
|
|
|
|
{ |
|
|
|
|
memcpy (m_StandardIdentity.publicKey, publicKey, sizeof (m_StandardIdentity.publicKey)); |
|
|
|
|
if (type != SIGNING_KEY_TYPE_DSA_SHA1) |
|
|
|
@ -135,19 +136,19 @@ namespace data
@@ -135,19 +136,19 @@ namespace data
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
IdentityEx::IdentityEx (const uint8_t * buf, size_t len): |
|
|
|
|
m_ExtendedLen (0), m_ExtendedBuffer (nullptr) |
|
|
|
|
m_IsVerifierCreated (false), m_ExtendedLen (0), m_ExtendedBuffer (nullptr) |
|
|
|
|
{ |
|
|
|
|
FromBuffer (buf, len); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
IdentityEx::IdentityEx (const IdentityEx& other): |
|
|
|
|
m_ExtendedLen (0), m_ExtendedBuffer (nullptr) |
|
|
|
|
m_IsVerifierCreated (false), m_ExtendedLen (0), m_ExtendedBuffer (nullptr) |
|
|
|
|
{ |
|
|
|
|
*this = other; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
IdentityEx::IdentityEx (const Identity& standard): |
|
|
|
|
m_ExtendedLen (0), m_ExtendedBuffer (nullptr) |
|
|
|
|
m_IsVerifierCreated (false), m_ExtendedLen (0), m_ExtendedBuffer (nullptr) |
|
|
|
|
{ |
|
|
|
|
*this = standard; |
|
|
|
|
} |
|
|
|
@ -173,6 +174,7 @@ namespace data
@@ -173,6 +174,7 @@ namespace data
|
|
|
|
|
m_ExtendedBuffer = nullptr; |
|
|
|
|
|
|
|
|
|
m_Verifier = nullptr; |
|
|
|
|
m_IsVerifierCreated = false; |
|
|
|
|
|
|
|
|
|
return *this; |
|
|
|
|
} |
|
|
|
@ -187,6 +189,7 @@ namespace data
@@ -187,6 +189,7 @@ namespace data
|
|
|
|
|
m_ExtendedLen = 0; |
|
|
|
|
|
|
|
|
|
m_Verifier = nullptr; |
|
|
|
|
m_IsVerifierCreated = false; |
|
|
|
|
|
|
|
|
|
return *this; |
|
|
|
|
} |
|
|
|
@ -374,7 +377,13 @@ namespace data
@@ -374,7 +377,13 @@ namespace data
|
|
|
|
|
void IdentityEx::UpdateVerifier (i2p::crypto::Verifier * verifier) const |
|
|
|
|
{ |
|
|
|
|
if (!m_Verifier || !verifier) |
|
|
|
|
m_Verifier.reset (verifier); |
|
|
|
|
{ |
|
|
|
|
auto created = m_IsVerifierCreated.exchange (true); |
|
|
|
|
if (!created) |
|
|
|
|
m_Verifier.reset (verifier); |
|
|
|
|
else |
|
|
|
|
delete verifier; |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
delete verifier; |
|
|
|
|
} |
|
|
|
@ -457,8 +466,8 @@ namespace data
@@ -457,8 +466,8 @@ namespace data
|
|
|
|
|
void PrivateKeys::Sign (const uint8_t * buf, int len, uint8_t * signature) const |
|
|
|
|
{ |
|
|
|
|
if (!m_Signer) |
|
|
|
|
CreateSigner(); |
|
|
|
|
m_Signer->Sign (buf, len, signature); |
|
|
|
|
CreateSigner(); |
|
|
|
|
m_Signer->Sign (buf, len, signature); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void PrivateKeys::CreateSigner () const |
|
|
|
|