xref: /OK3568_Linux_fs/kernel/net/ceph/auth_x.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun #ifndef _FS_CEPH_AUTH_X_H
3*4882a593Smuzhiyun #define _FS_CEPH_AUTH_X_H
4*4882a593Smuzhiyun 
5*4882a593Smuzhiyun #include <linux/rbtree.h>
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun #include <linux/ceph/auth.h>
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun #include "crypto.h"
10*4882a593Smuzhiyun #include "auth_x_protocol.h"
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun /*
13*4882a593Smuzhiyun  * Handle ticket for a single service.
14*4882a593Smuzhiyun  */
15*4882a593Smuzhiyun struct ceph_x_ticket_handler {
16*4882a593Smuzhiyun 	struct rb_node node;
17*4882a593Smuzhiyun 	unsigned int service;
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun 	struct ceph_crypto_key session_key;
20*4882a593Smuzhiyun 	bool have_key;
21*4882a593Smuzhiyun 
22*4882a593Smuzhiyun 	u64 secret_id;
23*4882a593Smuzhiyun 	struct ceph_buffer *ticket_blob;
24*4882a593Smuzhiyun 
25*4882a593Smuzhiyun 	time64_t renew_after, expires;
26*4882a593Smuzhiyun };
27*4882a593Smuzhiyun 
28*4882a593Smuzhiyun #define CEPHX_AU_ENC_BUF_LEN	128  /* big enough for encrypted blob */
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun struct ceph_x_authorizer {
31*4882a593Smuzhiyun 	struct ceph_authorizer base;
32*4882a593Smuzhiyun 	struct ceph_crypto_key session_key;
33*4882a593Smuzhiyun 	struct ceph_buffer *buf;
34*4882a593Smuzhiyun 	unsigned int service;
35*4882a593Smuzhiyun 	u64 nonce;
36*4882a593Smuzhiyun 	u64 secret_id;
37*4882a593Smuzhiyun 	char enc_buf[CEPHX_AU_ENC_BUF_LEN] __aligned(8);
38*4882a593Smuzhiyun };
39*4882a593Smuzhiyun 
40*4882a593Smuzhiyun struct ceph_x_info {
41*4882a593Smuzhiyun 	struct ceph_crypto_key secret;
42*4882a593Smuzhiyun 
43*4882a593Smuzhiyun 	bool starting;
44*4882a593Smuzhiyun 	u64 server_challenge;
45*4882a593Smuzhiyun 
46*4882a593Smuzhiyun 	unsigned int have_keys;
47*4882a593Smuzhiyun 	struct rb_root ticket_handlers;
48*4882a593Smuzhiyun 
49*4882a593Smuzhiyun 	struct ceph_x_authorizer auth_authorizer;
50*4882a593Smuzhiyun };
51*4882a593Smuzhiyun 
52*4882a593Smuzhiyun int ceph_x_init(struct ceph_auth_client *ac);
53*4882a593Smuzhiyun 
54*4882a593Smuzhiyun #endif
55