aboutsummaryrefslogtreecommitdiffstats
path: root/src/core/model/GpgKey.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/model/GpgKey.cpp')
-rw-r--r--src/core/model/GpgKey.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/core/model/GpgKey.cpp b/src/core/model/GpgKey.cpp
index a183c240..8a7f5a6e 100644
--- a/src/core/model/GpgKey.cpp
+++ b/src/core/model/GpgKey.cpp
@@ -41,6 +41,30 @@ auto GpgKey::operator=(GpgKey &&k) noexcept -> GpgKey & {
return *this;
}
+GpgKey::GpgKey(const GpgKey &key) noexcept {
+ {
+ const std::lock_guard<std::mutex> guard(gpgme_key_opera_mutex_);
+ gpgme_key_ref(key.key_ref_.get());
+ }
+ auto *new_key_ref = key_ref_.get();
+ this->key_ref_ = KeyRefHandler(std::move(new_key_ref));
+}
+
+auto GpgKey::operator=(const GpgKey &key) -> GpgKey & {
+ if (this == &key) {
+ return *this;
+ }
+
+ {
+ const std::lock_guard<std::mutex> guard(gpgme_key_opera_mutex_);
+ gpgme_key_ref(key.key_ref_.get());
+ }
+ auto *new_key_ref = key_ref_.get();
+ this->key_ref_ = KeyRefHandler(std::move(new_key_ref));
+
+ return *this;
+}
+
auto GpgKey::operator==(const GpgKey &o) const -> bool {
return o.GetId() == this->GetId();
}