2010-02-03 08:25:35 +08:00
|
|
|
#ifndef _FS_CEPH_AUTH_X_H
|
|
|
|
#define _FS_CEPH_AUTH_X_H
|
|
|
|
|
|
|
|
#include <linux/rbtree.h>
|
|
|
|
|
2010-04-07 06:14:15 +08:00
|
|
|
#include <linux/ceph/auth.h>
|
|
|
|
|
2010-02-03 08:25:35 +08:00
|
|
|
#include "crypto.h"
|
|
|
|
#include "auth_x_protocol.h"
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Handle ticket for a single service.
|
|
|
|
*/
|
|
|
|
struct ceph_x_ticket_handler {
|
|
|
|
struct rb_node node;
|
2012-04-15 13:58:06 +08:00
|
|
|
unsigned int service;
|
2010-02-03 08:25:35 +08:00
|
|
|
|
|
|
|
struct ceph_crypto_key session_key;
|
2016-01-14 23:35:35 +08:00
|
|
|
bool have_key;
|
2010-02-03 08:25:35 +08:00
|
|
|
|
|
|
|
u64 secret_id;
|
|
|
|
struct ceph_buffer *ticket_blob;
|
|
|
|
|
|
|
|
unsigned long renew_after, expires;
|
|
|
|
};
|
|
|
|
|
2016-12-02 23:35:07 +08:00
|
|
|
#define CEPHX_AU_ENC_BUF_LEN 128 /* big enough for encrypted blob */
|
2010-02-03 08:25:35 +08:00
|
|
|
|
|
|
|
struct ceph_x_authorizer {
|
2016-04-12 01:34:49 +08:00
|
|
|
struct ceph_authorizer base;
|
2014-11-04 16:32:35 +08:00
|
|
|
struct ceph_crypto_key session_key;
|
2010-02-03 08:25:35 +08:00
|
|
|
struct ceph_buffer *buf;
|
2012-04-15 13:58:06 +08:00
|
|
|
unsigned int service;
|
2010-02-03 08:25:35 +08:00
|
|
|
u64 nonce;
|
2013-03-26 01:26:01 +08:00
|
|
|
u64 secret_id;
|
2016-12-02 23:35:07 +08:00
|
|
|
char enc_buf[CEPHX_AU_ENC_BUF_LEN] __aligned(8);
|
2010-02-03 08:25:35 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
struct ceph_x_info {
|
|
|
|
struct ceph_crypto_key secret;
|
|
|
|
|
|
|
|
bool starting;
|
|
|
|
u64 server_challenge;
|
|
|
|
|
2012-04-15 13:58:06 +08:00
|
|
|
unsigned int have_keys;
|
2010-02-03 08:25:35 +08:00
|
|
|
struct rb_root ticket_handlers;
|
|
|
|
|
|
|
|
struct ceph_x_authorizer auth_authorizer;
|
|
|
|
};
|
|
|
|
|
2013-10-19 04:48:22 +08:00
|
|
|
int ceph_x_init(struct ceph_auth_client *ac);
|
2010-02-03 08:25:35 +08:00
|
|
|
|
|
|
|
#endif
|
|
|
|
|