Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/keepassxreboot/keepassxc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/sshagent/OpenSSHKey.h')
-rw-r--r--src/sshagent/OpenSSHKey.h79
1 files changed, 79 insertions, 0 deletions
diff --git a/src/sshagent/OpenSSHKey.h b/src/sshagent/OpenSSHKey.h
new file mode 100644
index 000000000..e06af2201
--- /dev/null
+++ b/src/sshagent/OpenSSHKey.h
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2017 Toni Spets <toni.spets@iki.fi>
+ * Copyright (C) 2017 KeePassXC Team <team@keepassxc.org>
+ *
+ * This program 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 2 or (at your option)
+ * version 3 of the License.
+ *
+ * This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef OPENSSHKEY_H
+#define OPENSSHKEY_H
+
+#include <QtCore>
+#include "BinaryStream.h"
+
+class OpenSSHKey : QObject
+{
+ Q_OBJECT
+public:
+ explicit OpenSSHKey(QObject* parent = nullptr);
+ OpenSSHKey(const OpenSSHKey& other);
+ bool operator==(const OpenSSHKey& other) const;
+
+ bool parse(const QByteArray& in);
+ bool encrypted() const;
+ bool openPrivateKey(const QString& passphrase = QString());
+
+ const QString cipherName() const;
+ const QString type() const;
+ int keyLength() const;
+ const QString fingerprint() const;
+ const QString comment() const;
+ const QString publicKey() const;
+ const QString errorString() const;
+
+ void setType(const QString& type);
+ void setPublicData(const QList<QByteArray>& data);
+ void setPrivateData(const QList<QByteArray>& data);
+ void setComment(const QString& comment);
+
+ void clearPrivate();
+
+ bool readPublic(BinaryStream& stream);
+ bool readPrivate(BinaryStream& stream);
+ bool writePublic(BinaryStream& stream);
+ bool writePrivate(BinaryStream& stream);
+
+private:
+ static const QString TYPE_DSA;
+ static const QString TYPE_RSA;
+ static const QString TYPE_OPENSSH;
+
+ bool parsePEM(const QByteArray& in, QByteArray& out);
+
+ QString m_type;
+ QString m_cipherName;
+ QByteArray m_cipherIV;
+ QString m_kdfName;
+ QByteArray m_kdfOptions;
+ QByteArray m_rawPrivateData;
+ QList<QByteArray> m_publicData;
+ QList<QByteArray> m_privateData;
+ QString m_privateType;
+ QString m_comment;
+ QString m_error;
+};
+
+uint qHash(const OpenSSHKey& key);
+
+#endif // OPENSSHKEY_H