::encode(ticket_req, request);
}
+
/*
* AUTH SERVER: authenticate
*
AuthServiceTicket msg_a;
+ bufferptr& s1 = principal_secret.get_secret();
+ if (s1.length()) {
+ hexdump("encoding, using key", s1.c_str(), s1.length());
+ }
+
msg_a.session_key = info.session_key;
if (encode_encrypt(msg_a, principal_secret, reply) < 0)
return false;
AuthServiceTicket msg_a;
bufferptr& s1 = secret.get_secret();
- hexdump("decoding, session key", s1.c_str(), s1.length());
+ hexdump("decoding, using key", s1.c_str(), s1.length());
if (decode_decrypt(msg_a, secret, indata) < 0)
return false;
/* FIXME: decode into relevant ticket */
#include "AuthProtocol.h"
#include "AuthClientHandler.h"
+#include "KeyRing.h"
#include "messages/MAuth.h"
#include "messages/MAuthReply.h"
+
AuthClientProtocolHandler::AuthClientProtocolHandler(AuthClientHandler *client) :
msg(NULL), got_response(false), got_timeout(false),
timeout_event(NULL), lock("AuthClientProtocolHandler")
header.request_type = CEPHX_GET_PRINCIPAL_SESSION_KEY;
::encode(header, bl);
-#if 0
- build_service_ticket_request(client->name, client->addr, want,
- ticket_handler.session_key, ticket_handler.ticket, bl);
-#endif
+
if (!ticket_handler.build_authorizer(bl, ctx))
return -EINVAL;
build_service_ticket_request(want, bl);
-
return 0;
}
cephx_response_state = 1;
dout(0) << "CEPHX_GET_AUTH_SESSION_KEY" << dendl;
-#define PRINCIPAL_SECRET "123456789ABCDEF0"
{
- bufferptr p(PRINCIPAL_SECRET, sizeof(PRINCIPAL_SECRET) - 1);
- client->secret.set_secret(CEPH_SECRET_AES, p);
- // AuthTicketHandler& ticket_handler = tickets.get_handler(CEPHX_PRINCIPAL_AUTH);
-
- if (!client->tickets.verify_service_ticket_reply(client->secret, indata)) {
+ CryptoKey secret;
+ g_keyring.get_master(secret);
+
+ if (!client->tickets.verify_service_ticket_reply(secret, indata)) {
dout(0) << "could not verify service_ticket reply" << dendl;
return -EPERM;
}
KeyRing g_keyring;
-static void hexdump(string msg, const char *s, int len)
-{
- int buf_len = len*4;
- char buf[buf_len];
- int pos = 0;
- for (int i=0; i<len && pos<buf_len - 8; i++) {
- if (i && !(i%8))
- pos += snprintf(&buf[pos], buf_len-pos, " ");
- if (i && !(i%16))
- pos += snprintf(&buf[pos], buf_len-pos, "\n");
- pos += snprintf(&buf[pos], buf_len-pos, "%.2x ", (int)(unsigned char)s[i]);
- }
- dout(0) << msg << ":\n" << buf << dendl;
-}
-
-
-
bool KeyRing::load_master(const char *filename)
{
int fd = open(filename, O_RDONLY);
dout(0) << "KeyRing::set_rotating max_ver=" << secrets.max_ver << dendl;
map<uint64_t, ExpiringCryptoKey>::iterator iter = secrets.secrets.begin();
- version_t max_ver;
for (; iter != secrets.secrets.end(); ++iter) {
ExpiringCryptoKey& key = iter->second;