MCPcopy Create free account
hub / github.com/ClickHouse/ClickHouse / processToken

Method processToken

src/Access/GSSAcceptor.cpp:333–444  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

331}
332
333String GSSAcceptorContext::processToken(const String & input_token, LoggerPtr log)
334{
335 std::lock_guard lock(gss_global_mutex);
336
337 String output_token;
338
339 try
340 {
341 if (is_ready || is_failed || context_handle == GSS_C_NO_CONTEXT)
342 reset();
343
344 gss_buffer_desc input_token_buf;
345 input_token_buf.length = input_token.size();
346 input_token_buf.value = const_cast<char *>(input_token.c_str());
347
348 gss_buffer_desc output_token_buf;
349 output_token_buf.length = 0;
350 output_token_buf.value = nullptr;
351
352 gss_name_t initiator_name = GSS_C_NO_NAME;
353 gss_OID mech_type = GSS_C_NO_OID;
354 OM_uint32 flags = 0;
355
356 SCOPE_EXIT({
357 if (initiator_name != GSS_C_NO_NAME)
358 {
359 OM_uint32 minor_status = 0;
360 [[maybe_unused]] OM_uint32 major_status = gss_release_name(
361 &minor_status,
362 &initiator_name
363 );
364 initiator_name = GSS_C_NO_NAME;
365 }
366
367 OM_uint32 minor_status = 0;
368 [[maybe_unused]] OM_uint32 major_status = gss_release_buffer(
369 &minor_status,
370 &output_token_buf
371 );
372 });
373
374 OM_uint32 minor_status = 0;
375 OM_uint32 major_status = gss_accept_sec_context(
376 &minor_status,
377 &context_handle,
378 acceptor_credentials_handle,
379 &input_token_buf,
380 GSS_C_NO_CHANNEL_BINDINGS,
381 &initiator_name,
382 &mech_type,
383 &output_token_buf,
384 &flags,
385 nullptr,
386 nullptr
387 );
388
389 if (major_status == GSS_S_COMPLETE)
390 {

Callers 1

authenticateUserByHTTPFunction · 0.80

Calls 8

equalMechanismsFunction · 0.85
extractNameAndRealmFunction · 0.85
bufferToStringFunction · 0.85
extractStatusMessagesFunction · 0.85
ExceptionClass · 0.50
tryLogCurrentExceptionFunction · 0.50
sizeMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected