forked from ciphrex/mSIGNA
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathkeychainmodel.h
63 lines (48 loc) · 1.96 KB
/
keychainmodel.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
///////////////////////////////////////////////////////////////////////////////
//
// mSIGNA
//
// keychainmodel.h
//
// Copyright (c) 2013 Eric Lombrozo
//
// All Rights Reserved.
#pragma once
#include <QStandardItemModel>
#include <CoinDB/Vault.h>
#include <CoinQ/CoinQ_typedefs.h>
class KeychainModel : public QStandardItemModel
{
Q_OBJECT
public:
KeychainModel();
void setVault(CoinDB::Vault* vault);
void update();
void exportKeychain(const QString& keychainName, const QString& fileName, bool exportPrivate) const;
QString importKeychain(const QString& fileName, bool& importPrivate);
bool exists(const QString& keychainName) const;
bool isPrivate(const QString& keychainName) const;
bool isLocked(const QString& keychainName) const;
bool isEncrypted(const QString& keychainName) const;
bool hasSeed(const QString& keychainName) const;
bool unlockKeychain(const QString& keychainName, const secure_bytes_t& unlockKey = secure_bytes_t());
void lockKeychain(const QString& keychainName);
void lockAllKeychains();
void encryptKeychain(const QString& keychainName, const secure_bytes_t& lockKey = secure_bytes_t());
void decryptKeychain(const QString& keychainName);
QString getName(int row) const;
enum Status { PUBLIC, UNLOCKED, LOCKED };
int getStatus(int row) const;
bool isEncrypted(int row) const;
bool hasSeed(int row) const { return hasSeed(getName(row)); } // TODO: get this without requerying DB
bytes_t getExtendedKeyBytes(const QString& keychainName, bool getPrivate = false, const bytes_t& decryptionKey = bytes_t()) const;
// Overridden methods
QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const;
bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole);
Qt::ItemFlags flags(const QModelIndex& index) const;
signals:
void error(const QString& message);
void keychainChanged();
private:
CoinDB::Vault* vault;
};