xref: /openbmc/linux/net/ceph/auth_x.h (revision 3eb66e91a25497065c5322b1268cbc3953642227)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
23d14c5d2SYehuda Sadeh #ifndef _FS_CEPH_AUTH_X_H
33d14c5d2SYehuda Sadeh #define _FS_CEPH_AUTH_X_H
43d14c5d2SYehuda Sadeh 
53d14c5d2SYehuda Sadeh #include <linux/rbtree.h>
63d14c5d2SYehuda Sadeh 
73d14c5d2SYehuda Sadeh #include <linux/ceph/auth.h>
83d14c5d2SYehuda Sadeh 
93d14c5d2SYehuda Sadeh #include "crypto.h"
103d14c5d2SYehuda Sadeh #include "auth_x_protocol.h"
113d14c5d2SYehuda Sadeh 
123d14c5d2SYehuda Sadeh /*
133d14c5d2SYehuda Sadeh  * Handle ticket for a single service.
143d14c5d2SYehuda Sadeh  */
153d14c5d2SYehuda Sadeh struct ceph_x_ticket_handler {
163d14c5d2SYehuda Sadeh 	struct rb_node node;
1795c96174SEric Dumazet 	unsigned int service;
183d14c5d2SYehuda Sadeh 
193d14c5d2SYehuda Sadeh 	struct ceph_crypto_key session_key;
206abe097dSIlya Dryomov 	bool have_key;
213d14c5d2SYehuda Sadeh 
223d14c5d2SYehuda Sadeh 	u64 secret_id;
233d14c5d2SYehuda Sadeh 	struct ceph_buffer *ticket_blob;
243d14c5d2SYehuda Sadeh 
25*473bd2d7SArnd Bergmann 	time64_t renew_after, expires;
263d14c5d2SYehuda Sadeh };
273d14c5d2SYehuda Sadeh 
287882a26dSIlya Dryomov #define CEPHX_AU_ENC_BUF_LEN	128  /* big enough for encrypted blob */
293d14c5d2SYehuda Sadeh 
303d14c5d2SYehuda Sadeh struct ceph_x_authorizer {
316c1ea260SIlya Dryomov 	struct ceph_authorizer base;
32ae385eafSYan, Zheng 	struct ceph_crypto_key session_key;
333d14c5d2SYehuda Sadeh 	struct ceph_buffer *buf;
3495c96174SEric Dumazet 	unsigned int service;
353d14c5d2SYehuda Sadeh 	u64 nonce;
360bed9b5cSSage Weil 	u64 secret_id;
377882a26dSIlya Dryomov 	char enc_buf[CEPHX_AU_ENC_BUF_LEN] __aligned(8);
383d14c5d2SYehuda Sadeh };
393d14c5d2SYehuda Sadeh 
403d14c5d2SYehuda Sadeh struct ceph_x_info {
413d14c5d2SYehuda Sadeh 	struct ceph_crypto_key secret;
423d14c5d2SYehuda Sadeh 
433d14c5d2SYehuda Sadeh 	bool starting;
443d14c5d2SYehuda Sadeh 	u64 server_challenge;
453d14c5d2SYehuda Sadeh 
4695c96174SEric Dumazet 	unsigned int have_keys;
473d14c5d2SYehuda Sadeh 	struct rb_root ticket_handlers;
483d14c5d2SYehuda Sadeh 
493d14c5d2SYehuda Sadeh 	struct ceph_x_authorizer auth_authorizer;
503d14c5d2SYehuda Sadeh };
513d14c5d2SYehuda Sadeh 
52348662a1SJoe Perches int ceph_x_init(struct ceph_auth_client *ac);
533d14c5d2SYehuda Sadeh 
543d14c5d2SYehuda Sadeh #endif
55