mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-06-18 20:16:51 +02:00
compare LeaseSet's static keys with ratchets session it was received from
This commit is contained in:
parent
724d8bde4e
commit
a5fa4ddb4c
1 changed files with 13 additions and 1 deletions
|
@ -469,9 +469,21 @@ namespace client
|
||||||
if (buf[DATABASE_STORE_TYPE_OFFSET] == i2p::data::NETDB_STORE_TYPE_LEASESET)
|
if (buf[DATABASE_STORE_TYPE_OFFSET] == i2p::data::NETDB_STORE_TYPE_LEASESET)
|
||||||
leaseSet = std::make_shared<i2p::data::LeaseSet> (buf + offset, len - offset); // LeaseSet
|
leaseSet = std::make_shared<i2p::data::LeaseSet> (buf + offset, len - offset); // LeaseSet
|
||||||
else
|
else
|
||||||
|
{
|
||||||
leaseSet = std::make_shared<i2p::data::LeaseSet2> (buf[DATABASE_STORE_TYPE_OFFSET],
|
leaseSet = std::make_shared<i2p::data::LeaseSet2> (buf[DATABASE_STORE_TYPE_OFFSET],
|
||||||
buf + offset, len - offset, true, from ? from->GetRemoteStaticKeyType () : GetPreferredCryptoType () ); // LeaseSet2
|
buf + offset, len - offset, true, from ? from->GetRemoteStaticKeyType () : GetPreferredCryptoType () ); // LeaseSet2
|
||||||
if (leaseSet->IsValid () && leaseSet->GetIdentHash () == key && !leaseSet->IsExpired ())
|
if (from)
|
||||||
|
{
|
||||||
|
uint8_t pub[32];
|
||||||
|
leaseSet->Encrypt (nullptr, pub);
|
||||||
|
if (memcmp (from->GetRemoteStaticKey (), pub, 32))
|
||||||
|
{
|
||||||
|
LogPrint (eLogError, "Destination: Remote LeaseSet static key mismatch");
|
||||||
|
leaseSet = nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (leaseSet && leaseSet->IsValid () && leaseSet->GetIdentHash () == key && !leaseSet->IsExpired ())
|
||||||
{
|
{
|
||||||
if (leaseSet->GetIdentHash () != GetIdentHash ())
|
if (leaseSet->GetIdentHash () != GetIdentHash ())
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue