aboutsummaryrefslogtreecommitdiff
path: root/src/keyring.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/keyring.h')
-rw-r--r--src/keyring.h27
1 files changed, 25 insertions, 2 deletions
diff --git a/src/keyring.h b/src/keyring.h
index 81d97fc..42cf992 100644
--- a/src/keyring.h
+++ b/src/keyring.h
@@ -42,9 +42,32 @@ enum class ResponseResult
derivation_failed,
decryption_failed,
bad_curve_point,
+ hardware_fault,
+ invalid_pin,
+ hardware_lockout,
+ incompatible_arguments,
+};
+
+enum class KeyringStorageType
+{
+ invalid,
+ software,
+ hardware,
+};
+
+struct KeyringKey
+{
+ KeyringStorageType type = KeyringStorageType::invalid;
+ QByteArray id;
+ QByteArray public_key;
+ QByteArray protected_secret;
+ QString name;
};
int keyring_initialize(void);
-int generate_key(QStringView name, const QByteArray &password);
+int keyring_hardware_available(void);
+int generate_software_key(QStringView name, const QByteArray &password);
+int generate_hardware_key(QStringView name, const QByteArray &pin);
+KeyringKey acquire_keyring_key(QByteArrayView key_id);
void delete_key(const QByteArray &key_id);
-ResponseResult unlock_and_auth(QByteArrayView key_id, QByteArrayView password, QByteArrayView ephemeral_key, QByteArrayView username, AuthResponse &out);
+ResponseResult unlock_and_auth(const KeyringKey &key, QByteArrayView password, QByteArrayView ephemeral_key, QByteArrayView username, AuthResponse &out);