55 lines
		
	
	
		
			1013 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1013 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /* 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;
 | |
| 
 | |
| 	time64_t 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
 |