|
|
|
@ -1013,18 +1013,15 @@ namespace client
@@ -1013,18 +1013,15 @@ namespace client
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
// if no param or valid crypto type use from identity
|
|
|
|
|
bool isSingleKey = false; |
|
|
|
|
if (encryptionKeyTypes.empty ()) |
|
|
|
|
{ |
|
|
|
|
isSingleKey = true; |
|
|
|
|
encryptionKeyTypes.insert (GetIdentity ()->GetCryptoKeyType ()); |
|
|
|
|
} |
|
|
|
|
encryptionKeyTypes.insert ( { GetIdentity ()->GetCryptoKeyType (), |
|
|
|
|
i2p::data::CRYPTO_KEY_TYPE_ECIES_X25519_AEAD }); // usually 0,4
|
|
|
|
|
|
|
|
|
|
for (auto& it: encryptionKeyTypes) |
|
|
|
|
{ |
|
|
|
|
auto encryptionKey = new EncryptionKey (it); |
|
|
|
|
if (IsPublic ()) |
|
|
|
|
PersistTemporaryKeys (encryptionKey, isSingleKey); |
|
|
|
|
PersistTemporaryKeys (encryptionKey); |
|
|
|
|
else |
|
|
|
|
encryptionKey->GenerateKeys (); |
|
|
|
|
encryptionKey->CreateDecryptor (); |
|
|
|
@ -1383,12 +1380,11 @@ namespace client
@@ -1383,12 +1380,11 @@ namespace client
|
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void ClientDestination::PersistTemporaryKeys (EncryptionKey * keys, bool isSingleKey) |
|
|
|
|
void ClientDestination::PersistTemporaryKeys (EncryptionKey * keys) |
|
|
|
|
{ |
|
|
|
|
if (!keys) return; |
|
|
|
|
std::string ident = GetIdentHash().ToBase32(); |
|
|
|
|
std::string path = i2p::fs::DataDirPath("destinations", |
|
|
|
|
isSingleKey ? (ident + ".dat") : (ident + "." + std::to_string (keys->keyType) + ".dat")); |
|
|
|
|
std::string path = i2p::fs::DataDirPath("destinations", ident + "." + std::to_string (keys->keyType) + ".dat"); |
|
|
|
|
std::ifstream f(path, std::ifstream::binary); |
|
|
|
|
|
|
|
|
|
if (f) { |
|
|
|
|