const bufferlists in, pointers for output args.
Signed-off-by: Sage Weil <sage@redhat.com>
virtual bool verify_authorizer(
CephContext *cct,
KeyStore *keys,
- bufferlist& authorizer_data,
- bufferlist& authorizer_reply,
- EntityName& entity_name,
- uint64_t& global_id,
- AuthCapsInfo& caps_info,
- CryptoKey& session_key,
+ const bufferlist& authorizer_data,
+ bufferlist *authorizer_reply,
+ EntityName *entity_name,
+ uint64_t *global_id,
+ AuthCapsInfo *caps_info,
+ CryptoKey *session_key,
CryptoKey *connection_secret,
std::unique_ptr<AuthAuthorizerChallenge> *challenge) = 0;
virtual int authorizer_session_crypto() = 0;
bool CephxAuthorizeHandler::verify_authorizer(
CephContext *cct,
KeyStore *keys,
- bufferlist& authorizer_data,
- bufferlist& authorizer_reply,
- EntityName& entity_name,
- uint64_t& global_id,
- AuthCapsInfo& caps_info,
- CryptoKey& session_key,
+ const bufferlist& authorizer_data,
+ bufferlist *authorizer_reply,
+ EntityName *entity_name,
+ uint64_t *global_id,
+ AuthCapsInfo *caps_info,
+ CryptoKey *session_key,
CryptoKey *connection_secret,
std::unique_ptr<AuthAuthorizerChallenge> *challenge)
{
authorizer_reply);
if (isvalid) {
- caps_info = auth_ticket_info.ticket.caps;
- entity_name = auth_ticket_info.ticket.name;
- global_id = auth_ticket_info.ticket.global_id;
- session_key = auth_ticket_info.session_key;
+ *caps_info = auth_ticket_info.ticket.caps;
+ *entity_name = auth_ticket_info.ticket.name;
+ *global_id = auth_ticket_info.ticket.global_id;
+ *session_key = auth_ticket_info.session_key;
}
return isvalid;
bool verify_authorizer(
CephContext *cct,
KeyStore *keys,
- bufferlist& authorizer_data,
- bufferlist& authorizer_reply,
- EntityName& entity_name,
- uint64_t& global_id,
- AuthCapsInfo& caps_info,
- CryptoKey& session_key,
+ const bufferlist& authorizer_data,
+ bufferlist *authorizer_reply,
+ EntityName *entity_name,
+ uint64_t *global_id,
+ AuthCapsInfo *caps_info,
+ CryptoKey *session_key,
CryptoKey *connection_secret,
std::unique_ptr<AuthAuthorizerChallenge> *challenge) override;
int authorizer_session_crypto() override;
CephXServiceTicketInfo& ticket_info,
std::unique_ptr<AuthAuthorizerChallenge> *challenge,
CryptoKey *connection_secret,
- bufferlist& reply_bl)
+ bufferlist *reply_bl)
{
__u8 authorizer_v;
uint32_t service_id;
ldout(cct,10) << __func__ << " adding server_challenge " << c->server_challenge
<< dendl;
- encode_encrypt_enc_bl(cct, *c, ticket_info.session_key, reply_bl, error);
+ encode_encrypt_enc_bl(cct, *c, ticket_info.session_key, *reply_bl, error);
if (!error.empty()) {
ldout(cct, 10) << "verify_authorizer: encode_encrypt error: " << error << dendl;
return false;
reply.connection_secret = *connection_secret;
}
#endif
- if (encode_encrypt(cct, reply, ticket_info.session_key, reply_bl, error)) {
+ if (encode_encrypt(cct, reply, ticket_info.session_key, *reply_bl, error)) {
ldout(cct, 10) << "verify_authorizer: encode_encrypt error: " << error << dendl;
return false;
}
ldout(cct, 10) << "verify_authorizer ok nonce " << hex << auth_msg.nonce << dec
- << " reply_bl.length()=" << reply_bl.length() << dendl;
+ << " reply_bl.length()=" << reply_bl->length() << dendl;
return true;
}
CephXServiceTicketInfo& ticket_info,
std::unique_ptr<AuthAuthorizerChallenge> *challenge,
CryptoKey *connection_secret,
- bufferlist& reply_bl);
+ bufferlist *reply_bl);
if (!cephx_verify_authorizer(
cct, key_server, indata, auth_ticket_info, nullptr,
nullptr,
- tmp_bl)) {
+ &tmp_bl)) {
ret = -EPERM;
break;
}
#define dout_subsys ceph_subsys_auth
-bool KrbAuthorizeHandler::verify_authorizer(CephContext* ceph_ctx,
- KeyStore* keys,
- bufferlist& authorizer_data,
- bufferlist& authorizer_reply,
- EntityName& entity_name,
- uint64_t& global_id,
- AuthCapsInfo& caps_info,
- CryptoKey& session_key,
- CryptoKey *connection_secret,
- std::unique_ptr<
- AuthAuthorizerChallenge>* challenge)
+bool KrbAuthorizeHandler::verify_authorizer(
+ CephContext* ceph_ctx,
+ KeyStore* keys,
+ const bufferlist& authorizer_data,
+ bufferlist *authorizer_reply,
+ EntityName *entity_name,
+ uint64_t *global_id,
+ AuthCapsInfo *caps_info,
+ CryptoKey *session_key,
+ CryptoKey *connection_secret,
+ std::unique_ptr<AuthAuthorizerChallenge>* challenge)
{
auto itr(authorizer_data.cbegin());
using ceph::decode;
decode(value, itr);
- decode(entity_name, itr);
- decode(global_id, itr);
+ decode(*entity_name, itr);
+ decode(*global_id, itr);
} catch (const buffer::error& err) {
ldout(ceph_ctx, 0)
<< "Error: KrbAuthorizeHandler::verify_authorizer() failed!" << dendl;
return false;
}
- caps_info.allow_all = true;
+ caps_info->allow_all = true;
return true;
}
#include "auth/AuthAuthorizeHandler.h"
class KrbAuthorizeHandler : public AuthAuthorizeHandler {
- bool verify_authorizer(CephContext*, KeyStore*,
- bufferlist&, bufferlist&,
- EntityName&, uint64_t&,
- AuthCapsInfo&, CryptoKey&,
- CryptoKey *connection_secret,
- std::unique_ptr<
- AuthAuthorizerChallenge>* = nullptr) override;
+ bool verify_authorizer(
+ CephContext*,
+ KeyStore*,
+ const bufferlist&,
+ bufferlist *,
+ EntityName *,
+ uint64_t *,
+ AuthCapsInfo *,
+ CryptoKey *,
+ CryptoKey *connection_secret,
+ std::unique_ptr<
+ AuthAuthorizerChallenge>* = nullptr) override;
int authorizer_session_crypto() override {
return SESSION_SYMMETRIC_AUTHENTICATE;
#define dout_subsys ceph_subsys_auth
bool AuthNoneAuthorizeHandler::verify_authorizer(
- CephContext *cct, KeyStore *keys,
- bufferlist& authorizer_data, bufferlist& authorizer_reply,
- EntityName& entity_name, uint64_t& global_id, AuthCapsInfo& caps_info,
- CryptoKey& session_key,
+ CephContext *cct,
+ KeyStore *keys,
+ const bufferlist& authorizer_data,
+ bufferlist *authorizer_reply,
+ EntityName *entity_name,
+ uint64_t *global_id,
+ AuthCapsInfo *caps_info,
+ CryptoKey *session_key,
CryptoKey *connection_secret,
std::unique_ptr<AuthAuthorizerChallenge> *challenge)
{
try {
__u8 struct_v = 1;
decode(struct_v, iter);
- decode(entity_name, iter);
- decode(global_id, iter);
+ decode(*entity_name, iter);
+ decode(*global_id, iter);
} catch (const buffer::error &err) {
ldout(cct, 0) << "AuthNoneAuthorizeHandle::verify_authorizer() failed to decode" << dendl;
return false;
}
- caps_info.allow_all = true;
+ caps_info->allow_all = true;
return true;
}
struct AuthNoneAuthorizeHandler : public AuthAuthorizeHandler {
bool verify_authorizer(
- CephContext *cct, KeyStore *keys,
- bufferlist& authorizer_data, bufferlist& authorizer_reply,
- EntityName& entity_name, uint64_t& global_id,
- AuthCapsInfo& caps_info, CryptoKey& session_key,
+ CephContext *cct,
+ KeyStore *keys,
+ const bufferlist& authorizer_data,
+ bufferlist *authorizer_reply,
+ EntityName *entity_name,
+ uint64_t *global_id,
+ AuthCapsInfo *caps_info,
+ CryptoKey *session_key,
CryptoKey *connection_secret,
std::unique_ptr<AuthAuthorizerChallenge> *challenge) override;
int authorizer_session_crypto() override;
#include "AuthUnknownAuthorizeHandler.h"
bool AuthUnknownAuthorizeHandler::verify_authorizer(
- CephContext *cct, KeyStore *keys,
- bufferlist& authorizer_data, bufferlist& authorizer_reply,
- EntityName& entity_name, uint64_t& global_id, AuthCapsInfo& caps_info,
- CryptoKey& session_key,
+ CephContext *cct,
+ KeyStore *keys,
+ const bufferlist& authorizer_data,
+ bufferlist * authorizer_reply,
+ EntityName *entity_name,
+ uint64_t *global_id,
+ AuthCapsInfo *caps_info,
+ CryptoKey *session_key,
CryptoKey *connection_secret,
std::unique_ptr<AuthAuthorizerChallenge> *challenge)
{
class CephContext;
struct AuthUnknownAuthorizeHandler : public AuthAuthorizeHandler {
- bool verify_authorizer(CephContext *cct, KeyStore *keys,
- bufferlist& authorizer_data, bufferlist& authorizer_reply,
- EntityName& entity_name, uint64_t& global_id,
- AuthCapsInfo& caps_info, CryptoKey& session_key,
- CryptoKey *connection_secret,
- std::unique_ptr<AuthAuthorizerChallenge> *challenge) override;
+ bool verify_authorizer(
+ CephContext *cct,
+ KeyStore *keys,
+ const bufferlist& authorizer_data,
+ bufferlist *authorizer_reply,
+ EntityName *entity_name,
+ uint64_t *global_id,
+ AuthCapsInfo *caps_info,
+ CryptoKey *session_key,
+ CryptoKey *connection_secret,
+ std::unique_ptr<AuthAuthorizerChallenge> *challenge) override;
int authorizer_session_crypto() override;
};
cct,
ks,
authorizer,
- authorizer_reply,
- con->peer_name,
- con->peer_global_id,
- con->peer_caps_info,
- session_key,
+ &authorizer_reply,
+ &con->peer_name,
+ &con->peer_global_id,
+ &con->peer_caps_info,
+ &session_key,
connection_secret,
challenge);
if (isvalid) {