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