CephXAuthorizeReply reply;
// reply.trans_id = auth_msg.trans_id;
reply.nonce_plus_one = auth_msg.nonce + 1;
+#ifndef WITH_SEASTAR
if (connection_secret) {
// generate a connection secret
bufferptr bp;
connection_secret->set_secret(CEPH_CRYPTO_AES, bp, ceph_clock_now());
reply.connection_secret = *connection_secret;
}
+#endif
if (encode_encrypt(cct, reply, ticket_info.session_key, reply_bl, error)) {
ldout(cct, 10) << "verify_authorizer: encode_encrypt error: " << error << dendl;
return false;
h.backoff = 0ms;
set_features(h.reply.features & h.connect.features);
if (h.authorizer) {
+ CryptoKey connection_secret; // this is not used here, we just need
+ // to make get_auth_session_handler
+ // call happy
session_security.reset(
get_auth_session_handler(nullptr,
h.authorizer->protocol,
h.authorizer->session_key,
+ connection_secret,
features));
}
h.authorizer.reset();
}).then([this] (bufferlist bl) {
if (h.authorizer) {
auto reply = bl.cbegin();
- if (!h.authorizer->verify_reply(reply)) {
+ if (!h.authorizer->verify_reply(reply, nullptr)) {
logger().error("{} authorizer failed to verify reply", __func__);
throw std::system_error(make_error_code(error::negotiation_failure));
}