summaryrefslogtreecommitdiff
path: root/mesh/keyring.h
diff options
context:
space:
mode:
authorBrian Gix <brian.gix@intel.com>2019-05-09 14:33:21 -0700
committerBrian Gix <brian.gix@intel.com>2019-05-13 12:12:20 -0700
commit3545edb6a43c3e21a48cbf2daa084eaf398dc3f8 (patch)
tree4e7bba4620bb18143566fced890b01f17312c9f0 /mesh/keyring.h
parentce3031a6b234d9d34bafa3a0cc9d9330591be0af (diff)
downloadbluez-3545edb6a43c3e21a48cbf2daa084eaf398dc3f8.tar.gz
mesh: Add key storage
This implements internal key storage add/delete/fetch for the three basic key types managed in Mesh: Network, Application and Device. This key storage is separate from keys assigned to nodes within the mesh, and are used to support Configuration Client functionality.
Diffstat (limited to 'mesh/keyring.h')
-rw-r--r--mesh/keyring.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/mesh/keyring.h b/mesh/keyring.h
new file mode 100644
index 000000000..167191013
--- /dev/null
+++ b/mesh/keyring.h
@@ -0,0 +1,49 @@
+/*
+ *
+ * BlueZ - Bluetooth protocol stack for Linux
+ *
+ * Copyright (C) 2019 Intel Corporation. All rights reserved.
+ *
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ */
+
+struct keyring_net_key {
+ uint16_t net_idx;
+ uint8_t phase;
+ uint8_t old_key[16];
+ uint8_t new_key[16];
+};
+
+struct keyring_app_key {
+ uint16_t app_idx;
+ uint16_t net_idx;
+ uint8_t old_key[16];
+ uint8_t new_key[16];
+};
+
+bool keyring_put_net_key(struct mesh_node *node, uint16_t net_idx,
+ struct keyring_net_key *key);
+bool keyring_get_net_key(struct mesh_node *node, uint16_t net_idx,
+ struct keyring_net_key *key);
+bool keyring_del_net_key(struct mesh_node *node, uint16_t net_idx);
+bool keyring_put_app_key(struct mesh_node *node, uint16_t app_idx,
+ uint16_t net_idx, struct keyring_app_key *key);
+bool keyring_get_app_key(struct mesh_node *node, uint16_t app_idx,
+ struct keyring_app_key *key);
+bool keyring_del_app_key(struct mesh_node *node, uint16_t app_idx);
+bool keyring_get_remote_dev_key(struct mesh_node *node, uint16_t unicast,
+ uint8_t dev_key[16]);
+bool keyring_put_remote_dev_key(struct mesh_node *node, uint16_t unicast,
+ uint8_t count, uint8_t dev_key[16]);
+bool keyring_del_remote_dev_key(struct mesh_node *node, uint16_t unicast,
+ uint8_t count);