| /* SPDX-License-Identifier: GPL-2.0 */ | |
| #ifndef _FS_CEPH_AUTH_X_H | |
| #define _FS_CEPH_AUTH_X_H | |
| #include <linux/rbtree.h> | |
| #include <linux/ceph/auth.h> | |
| #include "crypto.h" | |
| #include "auth_x_protocol.h" | |
| /* | |
| * Handle ticket for a single service. | |
| */ | |
| struct ceph_x_ticket_handler { | |
| struct rb_node node; | |
| unsigned int service; | |
| struct ceph_crypto_key session_key; | |
| bool have_key; | |
| u64 secret_id; | |
| struct ceph_buffer *ticket_blob; | |
| unsigned long renew_after, expires; | |
| }; | |
| #define CEPHX_AU_ENC_BUF_LEN 128 /* big enough for encrypted blob */ | |
| struct ceph_x_authorizer { | |
| struct ceph_authorizer base; | |
| struct ceph_crypto_key session_key; | |
| struct ceph_buffer *buf; | |
| unsigned int service; | |
| u64 nonce; | |
| u64 secret_id; | |
| char enc_buf[CEPHX_AU_ENC_BUF_LEN] __aligned(8); | |
| }; | |
| struct ceph_x_info { | |
| struct ceph_crypto_key secret; | |
| bool starting; | |
| u64 server_challenge; | |
| unsigned int have_keys; | |
| struct rb_root ticket_handlers; | |
| struct ceph_x_authorizer auth_authorizer; | |
| }; | |
| int ceph_x_init(struct ceph_auth_client *ac); | |
| #endif | |