forked from Minki/linux
ec0994e48e
The auth_x protocol implements support for a kerberos-like mutual authentication infrastructure used by Ceph. We do not simply use vanilla kerberos because of scalability and performance issues when dealing with a large cluster of nodes providing a single logical service. Auth_x provides mutual authentication of client and server and protects against replay and man in the middle attacks. It does not encrypt the full session over the wire, however, so data payload may still be snooped. Signed-off-by: Yehuda Sadeh <yehuda@hq.newdream.net> Signed-off-by: Sage Weil <sage@newdream.net>
50 lines
835 B
C
50 lines
835 B
C
#ifndef _FS_CEPH_AUTH_X_H
|
|
#define _FS_CEPH_AUTH_X_H
|
|
|
|
#include <linux/rbtree.h>
|
|
|
|
#include "crypto.h"
|
|
#include "auth.h"
|
|
#include "auth_x_protocol.h"
|
|
|
|
/*
|
|
* Handle ticket for a single service.
|
|
*/
|
|
struct ceph_x_ticket_handler {
|
|
struct rb_node node;
|
|
unsigned service;
|
|
|
|
struct ceph_crypto_key session_key;
|
|
struct ceph_timespec validity;
|
|
|
|
u64 secret_id;
|
|
struct ceph_buffer *ticket_blob;
|
|
|
|
unsigned long renew_after, expires;
|
|
};
|
|
|
|
|
|
struct ceph_x_authorizer {
|
|
struct ceph_buffer *buf;
|
|
unsigned service;
|
|
u64 nonce;
|
|
char reply_buf[128]; /* big enough for encrypted blob */
|
|
};
|
|
|
|
struct ceph_x_info {
|
|
struct ceph_crypto_key secret;
|
|
|
|
bool starting;
|
|
u64 server_challenge;
|
|
|
|
unsigned have_keys;
|
|
struct rb_root ticket_handlers;
|
|
|
|
struct ceph_x_authorizer auth_authorizer;
|
|
};
|
|
|
|
extern int ceph_x_init(struct ceph_auth_client *ac);
|
|
|
|
#endif
|
|
|