aboutsummaryrefslogtreecommitdiffstats
path: root/include/gpg/GpgKey.h
diff options
context:
space:
mode:
authorSaturneric <[email protected]>2021-05-21 16:15:54 +0000
committerSaturneric <[email protected]>2021-05-21 16:15:54 +0000
commit21f4730e92d088c06dea01684f3f736f3f9beff0 (patch)
treec1dc4dc6836903adc688b03cafabc06fc845743f /include/gpg/GpgKey.h
parentModified KeyList and Add Usage Support; (diff)
downloadGpgFrontend-21f4730e92d088c06dea01684f3f736f3f9beff0.tar.gz
GpgFrontend-21f4730e92d088c06dea01684f3f736f3f9beff0.zip
Expand Key Details Dialog;
Expand and Improve GpgKey and GpgSubKey; Change Interface getKeyDetails(); Code Modified; Signed-off-by: Saturneric <[email protected]>
Diffstat (limited to 'include/gpg/GpgKey.h')
-rw-r--r--include/gpg/GpgKey.h140
1 files changed, 100 insertions, 40 deletions
diff --git a/include/gpg/GpgKey.h b/include/gpg/GpgKey.h
index d33bd71d..2dc4f8c8 100644
--- a/include/gpg/GpgKey.h
+++ b/include/gpg/GpgKey.h
@@ -1,6 +1,26 @@
-//
-// Created by eric on 2021/5/21.
-//
+/**
+ * This file is part of GPGFrontend.
+ *
+ * GPGFrontend is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Foobar is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Foobar. If not, see <https://www.gnu.org/licenses/>.
+ *
+ * The initial version of the source code is inherited from gpg4usb-team.
+ * Their source code version also complies with GNU General Public License.
+ *
+ * The source code version of this software was modified and released
+ * by Saturneric<[email protected]> starting on May 12, 2021.
+ *
+ */
#ifndef GPGFRONTEND_GPGKEY_H
#define GPGFRONTEND_GPGKEY_H
@@ -11,17 +31,20 @@
class GpgKey {
public:
- GpgKey() {
- is_private_key = false;
- }
QString id;
QString name;
QString email;
+ QString comment;
QString fpr;
QString protocol;
- int owner_trust;
+ QString owner_trust;
+ QString pubkey_algo;
QDateTime last_update;
+ QDateTime expires;
+ QDateTime create_time;
+
+ int length;
bool can_encrypt{};
bool can_sign{};
@@ -34,44 +57,81 @@ public:
bool revoked{};
bool disabled{};
- QVector<GpgSubKey> subKeys;
-
- GpgKey(gpgme_key_t key) {
- is_private_key = key->secret;
- fpr = key->fpr;
- protocol = key->protocol;
- expired = (key->expired != 0u);
- revoked = (key->revoked != 0u);
-
- disabled = key->disabled;
-
- can_authenticate = key->can_authenticate;
- can_certify = key->can_certify;
- can_encrypt = key->can_encrypt;
- can_sign = key->can_sign;
-
- last_update = QDateTime(QDateTime::fromTime_t(key->last_update));
- owner_trust = key->owner_trust;
+ bool good = false;
- if (key->uids) {
- name = QString::fromUtf8(key->uids->name);
- email = QString::fromUtf8(key->uids->email);
- }
+ QVector<GpgSubKey> subKeys;
- gpgme_subkey_t next = key->subkeys;
+ explicit GpgKey(gpgme_key_t key) {
+ parse(key);
+ }
- while(next != nullptr) {
- subKeys.push_back(GpgSubKey(next));
- next = next->next;
- }
+ GpgKey() {
+ is_private_key = false;
+ }
- if(!subKeys.isEmpty()) {
- id = subKeys.first().id;
- } else {
- id = "";
+ void parse(gpgme_key_t key) {
+ if(key != nullptr) {
+ good = true;
+ is_private_key = key->secret;
+ fpr = key->fpr;
+ protocol = key->protocol;
+ expired = (key->expired != 0u);
+ revoked = (key->revoked != 0u);
+
+ disabled = key->disabled;
+
+ can_authenticate = key->can_authenticate;
+ can_certify = key->can_certify;
+ can_encrypt = key->can_encrypt;
+ can_sign = key->can_sign;
+
+ last_update = QDateTime(QDateTime::fromTime_t(key->last_update));
+
+ switch (key->owner_trust) {
+ case GPGME_VALIDITY_UNKNOWN:
+ owner_trust = "Unknown";
+ break;
+ case GPGME_VALIDITY_UNDEFINED:
+ owner_trust = "Undefined";
+ break;
+ case GPGME_VALIDITY_NEVER:
+ owner_trust = "Never";
+ break;
+ case GPGME_VALIDITY_MARGINAL:
+ owner_trust = "Marginal";
+ break;
+ case GPGME_VALIDITY_FULL:
+ owner_trust = "FULL";
+ break;
+ case GPGME_VALIDITY_ULTIMATE:
+ owner_trust = "Ultimate";
+ break;
+ }
+
+
+ if (key->uids) {
+ name = QString::fromUtf8(key->uids->name);
+ email = QString::fromUtf8(key->uids->email);
+ comment = QString::fromUtf8(key->uids->comment);
+ }
+
+ gpgme_subkey_t next = key->subkeys;
+
+ while (next != nullptr) {
+ subKeys.push_back(GpgSubKey(next));
+ next = next->next;
+ }
+
+ if (!subKeys.isEmpty()) {
+ id = subKeys.first().id;
+ expires = subKeys.first().expires;
+ pubkey_algo = subKeys.first().pubkey_algo;
+ create_time = subKeys.first().timestamp;
+ length = subKeys.first().length;
+ } else {
+ id = "";
+ }
}
-
-
}
};