1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
4 * Ceph - scalable distributed file system
6 * Copyright (C) 2004-2009 Sage Weil <sage@newdream.net>
8 * This is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License version 2.1, as published by the Free Software
11 * Foundation. See file COPYING.
15 #ifndef CEPH_CEPHXCLIENTHANDLER_H
16 #define CEPH_CEPHXCLIENTHANDLER_H
18 #include "auth/AuthClientHandler.h"
19 #include "CephxProtocol.h"
20 #include "auth/RotatingKeyRing.h"
21 #include "include/common_fwd.h"
25 class CephxClientHandler
: public AuthClientHandler
{
28 /* envelope protocol parameters */
29 uint64_t server_challenge
;
31 CephXTicketManager tickets
;
32 CephXTicketHandler
* ticket_handler
;
34 RotatingKeyRing
* rotating_secrets
;
38 CephxClientHandler(CephContext
*cct_
,
39 RotatingKeyRing
*rsecrets
)
40 : AuthClientHandler(cct_
),
45 rotating_secrets(rsecrets
),
46 keyring(rsecrets
->get_keyring())
51 CephxClientHandler
* clone() const override
{
52 return new CephxClientHandler(*this);
55 void reset() override
;
56 void prepare_build_request() override
;
57 int build_request(bufferlist
& bl
) const override
;
58 int handle_response(int ret
, bufferlist::const_iterator
& iter
,
59 CryptoKey
*session_key
,
60 std::string
*connection_secret
) override
;
61 bool build_rotating_request(bufferlist
& bl
) const override
;
63 int get_protocol() const override
{ return CEPH_AUTH_CEPHX
; }
65 AuthAuthorizer
*build_authorizer(uint32_t service_id
) const override
;
67 bool need_tickets() override
;
69 void set_global_id(uint64_t id
) override
{
71 tickets
.global_id
= id
;
74 void validate_tickets() override
;
75 bool _need_tickets() const;