113498266Sopenharmony_ci/*************************************************************************** 213498266Sopenharmony_ci * _ _ ____ _ 313498266Sopenharmony_ci * Project ___| | | | _ \| | 413498266Sopenharmony_ci * / __| | | | |_) | | 513498266Sopenharmony_ci * | (__| |_| | _ <| |___ 613498266Sopenharmony_ci * \___|\___/|_| \_\_____| 713498266Sopenharmony_ci * 813498266Sopenharmony_ci * Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al. 913498266Sopenharmony_ci * 1013498266Sopenharmony_ci * This software is licensed as described in the file COPYING, which 1113498266Sopenharmony_ci * you should have received as part of this distribution. The terms 1213498266Sopenharmony_ci * are also available at https://curl.se/docs/copyright.html. 1313498266Sopenharmony_ci * 1413498266Sopenharmony_ci * You may opt to use, copy, modify, merge, publish, distribute and/or sell 1513498266Sopenharmony_ci * copies of the Software, and permit persons to whom the Software is 1613498266Sopenharmony_ci * furnished to do so, under the terms of the COPYING file. 1713498266Sopenharmony_ci * 1813498266Sopenharmony_ci * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 1913498266Sopenharmony_ci * KIND, either express or implied. 2013498266Sopenharmony_ci * 2113498266Sopenharmony_ci * SPDX-License-Identifier: curl 2213498266Sopenharmony_ci * 2313498266Sopenharmony_ci ***************************************************************************/ 2413498266Sopenharmony_ci 2513498266Sopenharmony_ci/* Only provides the bare minimum to link with libcurl */ 2613498266Sopenharmony_ci 2713498266Sopenharmony_ci#include <stdio.h> 2813498266Sopenharmony_ci#include <stdlib.h> 2913498266Sopenharmony_ci#include <string.h> 3013498266Sopenharmony_ci 3113498266Sopenharmony_ci#include "stub_gssapi.h" 3213498266Sopenharmony_ci 3313498266Sopenharmony_ci/* !checksrc! disable SNPRINTF all */ 3413498266Sopenharmony_ci 3513498266Sopenharmony_ci#define MAX_CREDS_LENGTH 250 3613498266Sopenharmony_ci#define APPROX_TOKEN_LEN 250 3713498266Sopenharmony_ci 3813498266Sopenharmony_cienum min_err_code { 3913498266Sopenharmony_ci GSS_OK = 0, 4013498266Sopenharmony_ci GSS_NO_MEMORY, 4113498266Sopenharmony_ci GSS_INVALID_ARGS, 4213498266Sopenharmony_ci GSS_INVALID_CREDS, 4313498266Sopenharmony_ci GSS_INVALID_CTX, 4413498266Sopenharmony_ci GSS_SERVER_ERR, 4513498266Sopenharmony_ci GSS_NO_MECH, 4613498266Sopenharmony_ci GSS_LAST 4713498266Sopenharmony_ci}; 4813498266Sopenharmony_ci 4913498266Sopenharmony_cistatic const char *min_err_table[] = { 5013498266Sopenharmony_ci "stub-gss: no error", 5113498266Sopenharmony_ci "stub-gss: no memory", 5213498266Sopenharmony_ci "stub-gss: invalid arguments", 5313498266Sopenharmony_ci "stub-gss: invalid credentials", 5413498266Sopenharmony_ci "stub-gss: invalid context", 5513498266Sopenharmony_ci "stub-gss: server returned error", 5613498266Sopenharmony_ci "stub-gss: cannot find a mechanism", 5713498266Sopenharmony_ci NULL 5813498266Sopenharmony_ci}; 5913498266Sopenharmony_ci 6013498266Sopenharmony_cistruct gss_ctx_id_t_desc_struct { 6113498266Sopenharmony_ci enum { NONE, KRB5, NTLM1, NTLM3 } sent; 6213498266Sopenharmony_ci int have_krb5; 6313498266Sopenharmony_ci int have_ntlm; 6413498266Sopenharmony_ci OM_uint32 flags; 6513498266Sopenharmony_ci char creds[MAX_CREDS_LENGTH]; 6613498266Sopenharmony_ci}; 6713498266Sopenharmony_ci 6813498266Sopenharmony_ci/* simple implementation of strndup(), which isn't portable */ 6913498266Sopenharmony_cistatic char *my_strndup(const char *ptr, size_t len) 7013498266Sopenharmony_ci{ 7113498266Sopenharmony_ci char *copy = malloc(len + 1); 7213498266Sopenharmony_ci if(!copy) 7313498266Sopenharmony_ci return NULL; 7413498266Sopenharmony_ci memcpy(copy, ptr, len); 7513498266Sopenharmony_ci copy[len] = '\0'; 7613498266Sopenharmony_ci return copy; 7713498266Sopenharmony_ci} 7813498266Sopenharmony_ci 7913498266Sopenharmony_ciOM_uint32 gss_init_sec_context(OM_uint32 *min, 8013498266Sopenharmony_ci gss_const_cred_id_t initiator_cred_handle, 8113498266Sopenharmony_ci gss_ctx_id_t *context_handle, 8213498266Sopenharmony_ci gss_const_name_t target_name, 8313498266Sopenharmony_ci const gss_OID mech_type, 8413498266Sopenharmony_ci OM_uint32 req_flags, 8513498266Sopenharmony_ci OM_uint32 time_req, 8613498266Sopenharmony_ci const gss_channel_bindings_t input_chan_bindings, 8713498266Sopenharmony_ci const gss_buffer_t input_token, 8813498266Sopenharmony_ci gss_OID *actual_mech_type, 8913498266Sopenharmony_ci gss_buffer_t output_token, 9013498266Sopenharmony_ci OM_uint32 *ret_flags, 9113498266Sopenharmony_ci OM_uint32 *time_rec) 9213498266Sopenharmony_ci{ 9313498266Sopenharmony_ci /* The token will be encoded in base64 */ 9413498266Sopenharmony_ci size_t length = APPROX_TOKEN_LEN * 3 / 4; 9513498266Sopenharmony_ci size_t used = 0; 9613498266Sopenharmony_ci char *token = NULL; 9713498266Sopenharmony_ci const char *creds = NULL; 9813498266Sopenharmony_ci gss_ctx_id_t ctx = NULL; 9913498266Sopenharmony_ci 10013498266Sopenharmony_ci (void)initiator_cred_handle; 10113498266Sopenharmony_ci (void)mech_type; 10213498266Sopenharmony_ci (void)time_req; 10313498266Sopenharmony_ci (void)input_chan_bindings; 10413498266Sopenharmony_ci (void)actual_mech_type; 10513498266Sopenharmony_ci 10613498266Sopenharmony_ci if(!min) 10713498266Sopenharmony_ci return GSS_S_FAILURE; 10813498266Sopenharmony_ci 10913498266Sopenharmony_ci *min = 0; 11013498266Sopenharmony_ci 11113498266Sopenharmony_ci if(!context_handle || !target_name || !output_token) { 11213498266Sopenharmony_ci *min = GSS_INVALID_ARGS; 11313498266Sopenharmony_ci return GSS_S_FAILURE; 11413498266Sopenharmony_ci } 11513498266Sopenharmony_ci 11613498266Sopenharmony_ci creds = getenv("CURL_STUB_GSS_CREDS"); 11713498266Sopenharmony_ci if(!creds || strlen(creds) >= MAX_CREDS_LENGTH) { 11813498266Sopenharmony_ci *min = GSS_INVALID_CREDS; 11913498266Sopenharmony_ci return GSS_S_FAILURE; 12013498266Sopenharmony_ci } 12113498266Sopenharmony_ci 12213498266Sopenharmony_ci ctx = *context_handle; 12313498266Sopenharmony_ci if(ctx && strcmp(ctx->creds, creds)) { 12413498266Sopenharmony_ci *min = GSS_INVALID_CREDS; 12513498266Sopenharmony_ci return GSS_S_FAILURE; 12613498266Sopenharmony_ci } 12713498266Sopenharmony_ci 12813498266Sopenharmony_ci output_token->length = 0; 12913498266Sopenharmony_ci output_token->value = NULL; 13013498266Sopenharmony_ci 13113498266Sopenharmony_ci if(input_token && input_token->length) { 13213498266Sopenharmony_ci if(!ctx) { 13313498266Sopenharmony_ci *min = GSS_INVALID_CTX; 13413498266Sopenharmony_ci return GSS_S_FAILURE; 13513498266Sopenharmony_ci } 13613498266Sopenharmony_ci 13713498266Sopenharmony_ci /* Server response, either D (RA==) or C (Qw==) */ 13813498266Sopenharmony_ci if(((char *) input_token->value)[0] == 'D') { 13913498266Sopenharmony_ci /* Done */ 14013498266Sopenharmony_ci switch(ctx->sent) { 14113498266Sopenharmony_ci case KRB5: 14213498266Sopenharmony_ci case NTLM3: 14313498266Sopenharmony_ci if(ret_flags) 14413498266Sopenharmony_ci *ret_flags = ctx->flags; 14513498266Sopenharmony_ci if(time_rec) 14613498266Sopenharmony_ci *time_rec = GSS_C_INDEFINITE; 14713498266Sopenharmony_ci return GSS_S_COMPLETE; 14813498266Sopenharmony_ci default: 14913498266Sopenharmony_ci *min = GSS_SERVER_ERR; 15013498266Sopenharmony_ci return GSS_S_FAILURE; 15113498266Sopenharmony_ci } 15213498266Sopenharmony_ci } 15313498266Sopenharmony_ci 15413498266Sopenharmony_ci if(((char *) input_token->value)[0] != 'C') { 15513498266Sopenharmony_ci /* We only support Done or Continue */ 15613498266Sopenharmony_ci *min = GSS_SERVER_ERR; 15713498266Sopenharmony_ci return GSS_S_FAILURE; 15813498266Sopenharmony_ci } 15913498266Sopenharmony_ci 16013498266Sopenharmony_ci /* Continue */ 16113498266Sopenharmony_ci switch(ctx->sent) { 16213498266Sopenharmony_ci case KRB5: 16313498266Sopenharmony_ci /* We sent KRB5 and it failed, let's try NTLM */ 16413498266Sopenharmony_ci if(ctx->have_ntlm) { 16513498266Sopenharmony_ci ctx->sent = NTLM1; 16613498266Sopenharmony_ci break; 16713498266Sopenharmony_ci } 16813498266Sopenharmony_ci else { 16913498266Sopenharmony_ci *min = GSS_SERVER_ERR; 17013498266Sopenharmony_ci return GSS_S_FAILURE; 17113498266Sopenharmony_ci } 17213498266Sopenharmony_ci case NTLM1: 17313498266Sopenharmony_ci ctx->sent = NTLM3; 17413498266Sopenharmony_ci break; 17513498266Sopenharmony_ci default: 17613498266Sopenharmony_ci *min = GSS_SERVER_ERR; 17713498266Sopenharmony_ci return GSS_S_FAILURE; 17813498266Sopenharmony_ci } 17913498266Sopenharmony_ci } 18013498266Sopenharmony_ci else { 18113498266Sopenharmony_ci if(ctx) { 18213498266Sopenharmony_ci *min = GSS_INVALID_CTX; 18313498266Sopenharmony_ci return GSS_S_FAILURE; 18413498266Sopenharmony_ci } 18513498266Sopenharmony_ci 18613498266Sopenharmony_ci ctx = (gss_ctx_id_t) calloc(1, sizeof(*ctx)); 18713498266Sopenharmony_ci if(!ctx) { 18813498266Sopenharmony_ci *min = GSS_NO_MEMORY; 18913498266Sopenharmony_ci return GSS_S_FAILURE; 19013498266Sopenharmony_ci } 19113498266Sopenharmony_ci 19213498266Sopenharmony_ci if(strstr(creds, "KRB5")) 19313498266Sopenharmony_ci ctx->have_krb5 = 1; 19413498266Sopenharmony_ci 19513498266Sopenharmony_ci if(strstr(creds, "NTLM")) 19613498266Sopenharmony_ci ctx->have_ntlm = 1; 19713498266Sopenharmony_ci 19813498266Sopenharmony_ci if(ctx->have_krb5) 19913498266Sopenharmony_ci ctx->sent = KRB5; 20013498266Sopenharmony_ci else if(ctx->have_ntlm) 20113498266Sopenharmony_ci ctx->sent = NTLM1; 20213498266Sopenharmony_ci else { 20313498266Sopenharmony_ci free(ctx); 20413498266Sopenharmony_ci *min = GSS_NO_MECH; 20513498266Sopenharmony_ci return GSS_S_FAILURE; 20613498266Sopenharmony_ci } 20713498266Sopenharmony_ci 20813498266Sopenharmony_ci strcpy(ctx->creds, creds); 20913498266Sopenharmony_ci ctx->flags = req_flags; 21013498266Sopenharmony_ci } 21113498266Sopenharmony_ci 21213498266Sopenharmony_ci token = malloc(length); 21313498266Sopenharmony_ci if(!token) { 21413498266Sopenharmony_ci free(ctx); 21513498266Sopenharmony_ci *min = GSS_NO_MEMORY; 21613498266Sopenharmony_ci return GSS_S_FAILURE; 21713498266Sopenharmony_ci } 21813498266Sopenharmony_ci 21913498266Sopenharmony_ci /* Token format: creds:target:type:padding */ 22013498266Sopenharmony_ci /* Note: this is using the *real* snprintf() and not the curl provided 22113498266Sopenharmony_ci one */ 22213498266Sopenharmony_ci used = (size_t) snprintf(token, length, "%s:%s:%d:", creds, 22313498266Sopenharmony_ci (char *) target_name, ctx->sent); 22413498266Sopenharmony_ci 22513498266Sopenharmony_ci if(used >= length) { 22613498266Sopenharmony_ci free(token); 22713498266Sopenharmony_ci free(ctx); 22813498266Sopenharmony_ci *min = GSS_NO_MEMORY; 22913498266Sopenharmony_ci return GSS_S_FAILURE; 23013498266Sopenharmony_ci } 23113498266Sopenharmony_ci 23213498266Sopenharmony_ci /* Overwrite null terminator */ 23313498266Sopenharmony_ci memset(token + used, 'A', length - used); 23413498266Sopenharmony_ci 23513498266Sopenharmony_ci *context_handle = ctx; 23613498266Sopenharmony_ci 23713498266Sopenharmony_ci output_token->value = token; 23813498266Sopenharmony_ci output_token->length = length; 23913498266Sopenharmony_ci 24013498266Sopenharmony_ci return GSS_S_CONTINUE_NEEDED; 24113498266Sopenharmony_ci} 24213498266Sopenharmony_ci 24313498266Sopenharmony_ciOM_uint32 gss_delete_sec_context(OM_uint32 *min, 24413498266Sopenharmony_ci gss_ctx_id_t *context_handle, 24513498266Sopenharmony_ci gss_buffer_t output_token) 24613498266Sopenharmony_ci{ 24713498266Sopenharmony_ci (void)output_token; 24813498266Sopenharmony_ci 24913498266Sopenharmony_ci if(!min) 25013498266Sopenharmony_ci return GSS_S_FAILURE; 25113498266Sopenharmony_ci 25213498266Sopenharmony_ci if(!context_handle) { 25313498266Sopenharmony_ci *min = GSS_INVALID_CTX; 25413498266Sopenharmony_ci return GSS_S_FAILURE; 25513498266Sopenharmony_ci } 25613498266Sopenharmony_ci 25713498266Sopenharmony_ci free(*context_handle); 25813498266Sopenharmony_ci *context_handle = NULL; 25913498266Sopenharmony_ci *min = 0; 26013498266Sopenharmony_ci 26113498266Sopenharmony_ci return GSS_S_COMPLETE; 26213498266Sopenharmony_ci} 26313498266Sopenharmony_ci 26413498266Sopenharmony_ciOM_uint32 gss_release_buffer(OM_uint32 *min, 26513498266Sopenharmony_ci gss_buffer_t buffer) 26613498266Sopenharmony_ci{ 26713498266Sopenharmony_ci if(min) 26813498266Sopenharmony_ci *min = 0; 26913498266Sopenharmony_ci 27013498266Sopenharmony_ci if(buffer && buffer->length) { 27113498266Sopenharmony_ci free(buffer->value); 27213498266Sopenharmony_ci buffer->length = 0; 27313498266Sopenharmony_ci } 27413498266Sopenharmony_ci 27513498266Sopenharmony_ci return GSS_S_COMPLETE; 27613498266Sopenharmony_ci} 27713498266Sopenharmony_ci 27813498266Sopenharmony_ciOM_uint32 gss_import_name(OM_uint32 *min, 27913498266Sopenharmony_ci const gss_buffer_t input_name_buffer, 28013498266Sopenharmony_ci const gss_OID input_name_type, 28113498266Sopenharmony_ci gss_name_t *output_name) 28213498266Sopenharmony_ci{ 28313498266Sopenharmony_ci char *name = NULL; 28413498266Sopenharmony_ci (void)input_name_type; 28513498266Sopenharmony_ci 28613498266Sopenharmony_ci if(!min) 28713498266Sopenharmony_ci return GSS_S_FAILURE; 28813498266Sopenharmony_ci 28913498266Sopenharmony_ci if(!input_name_buffer || !output_name) { 29013498266Sopenharmony_ci *min = GSS_INVALID_ARGS; 29113498266Sopenharmony_ci return GSS_S_FAILURE; 29213498266Sopenharmony_ci } 29313498266Sopenharmony_ci 29413498266Sopenharmony_ci name = my_strndup(input_name_buffer->value, input_name_buffer->length); 29513498266Sopenharmony_ci if(!name) { 29613498266Sopenharmony_ci *min = GSS_NO_MEMORY; 29713498266Sopenharmony_ci return GSS_S_FAILURE; 29813498266Sopenharmony_ci } 29913498266Sopenharmony_ci 30013498266Sopenharmony_ci *output_name = (gss_name_t) name; 30113498266Sopenharmony_ci *min = 0; 30213498266Sopenharmony_ci 30313498266Sopenharmony_ci return GSS_S_COMPLETE; 30413498266Sopenharmony_ci} 30513498266Sopenharmony_ci 30613498266Sopenharmony_ciOM_uint32 gss_release_name(OM_uint32 *min, 30713498266Sopenharmony_ci gss_name_t *input_name) 30813498266Sopenharmony_ci{ 30913498266Sopenharmony_ci if(min) 31013498266Sopenharmony_ci *min = 0; 31113498266Sopenharmony_ci 31213498266Sopenharmony_ci if(input_name) 31313498266Sopenharmony_ci free(*input_name); 31413498266Sopenharmony_ci 31513498266Sopenharmony_ci return GSS_S_COMPLETE; 31613498266Sopenharmony_ci} 31713498266Sopenharmony_ci 31813498266Sopenharmony_ciOM_uint32 gss_display_status(OM_uint32 *min, 31913498266Sopenharmony_ci OM_uint32 status_value, 32013498266Sopenharmony_ci int status_type, 32113498266Sopenharmony_ci const gss_OID mech_type, 32213498266Sopenharmony_ci OM_uint32 *message_context, 32313498266Sopenharmony_ci gss_buffer_t status_string) 32413498266Sopenharmony_ci{ 32513498266Sopenharmony_ci const char maj_str[] = "Stub GSS error"; 32613498266Sopenharmony_ci (void)mech_type; 32713498266Sopenharmony_ci if(min) 32813498266Sopenharmony_ci *min = 0; 32913498266Sopenharmony_ci 33013498266Sopenharmony_ci if(message_context) 33113498266Sopenharmony_ci *message_context = 0; 33213498266Sopenharmony_ci 33313498266Sopenharmony_ci if(status_string) { 33413498266Sopenharmony_ci status_string->value = NULL; 33513498266Sopenharmony_ci status_string->length = 0; 33613498266Sopenharmony_ci 33713498266Sopenharmony_ci if(status_value >= GSS_LAST) 33813498266Sopenharmony_ci return GSS_S_FAILURE; 33913498266Sopenharmony_ci 34013498266Sopenharmony_ci switch(status_type) { 34113498266Sopenharmony_ci case GSS_C_GSS_CODE: 34213498266Sopenharmony_ci status_string->value = strdup(maj_str); 34313498266Sopenharmony_ci break; 34413498266Sopenharmony_ci case GSS_C_MECH_CODE: 34513498266Sopenharmony_ci status_string->value = strdup(min_err_table[status_value]); 34613498266Sopenharmony_ci break; 34713498266Sopenharmony_ci default: 34813498266Sopenharmony_ci return GSS_S_FAILURE; 34913498266Sopenharmony_ci } 35013498266Sopenharmony_ci 35113498266Sopenharmony_ci if(status_string->value) 35213498266Sopenharmony_ci status_string->length = strlen(status_string->value); 35313498266Sopenharmony_ci else 35413498266Sopenharmony_ci return GSS_S_FAILURE; 35513498266Sopenharmony_ci } 35613498266Sopenharmony_ci 35713498266Sopenharmony_ci return GSS_S_COMPLETE; 35813498266Sopenharmony_ci} 35913498266Sopenharmony_ci 36013498266Sopenharmony_ci/* Stubs returning error */ 36113498266Sopenharmony_ci 36213498266Sopenharmony_ciOM_uint32 gss_display_name(OM_uint32 *min, 36313498266Sopenharmony_ci gss_const_name_t input_name, 36413498266Sopenharmony_ci gss_buffer_t output_name_buffer, 36513498266Sopenharmony_ci gss_OID *output_name_type) 36613498266Sopenharmony_ci{ 36713498266Sopenharmony_ci (void)min; 36813498266Sopenharmony_ci (void)input_name; 36913498266Sopenharmony_ci (void)output_name_buffer; 37013498266Sopenharmony_ci (void)output_name_type; 37113498266Sopenharmony_ci return GSS_S_FAILURE; 37213498266Sopenharmony_ci} 37313498266Sopenharmony_ci 37413498266Sopenharmony_ciOM_uint32 gss_inquire_context(OM_uint32 *min, 37513498266Sopenharmony_ci gss_const_ctx_id_t context_handle, 37613498266Sopenharmony_ci gss_name_t *src_name, 37713498266Sopenharmony_ci gss_name_t *targ_name, 37813498266Sopenharmony_ci OM_uint32 *lifetime_rec, 37913498266Sopenharmony_ci gss_OID *mech_type, 38013498266Sopenharmony_ci OM_uint32 *ctx_flags, 38113498266Sopenharmony_ci int *locally_initiated, 38213498266Sopenharmony_ci int *open_context) 38313498266Sopenharmony_ci{ 38413498266Sopenharmony_ci (void)min; 38513498266Sopenharmony_ci (void)context_handle; 38613498266Sopenharmony_ci (void)src_name; 38713498266Sopenharmony_ci (void)targ_name; 38813498266Sopenharmony_ci (void)lifetime_rec; 38913498266Sopenharmony_ci (void)mech_type; 39013498266Sopenharmony_ci (void)ctx_flags; 39113498266Sopenharmony_ci (void)locally_initiated; 39213498266Sopenharmony_ci (void)open_context; 39313498266Sopenharmony_ci return GSS_S_FAILURE; 39413498266Sopenharmony_ci} 39513498266Sopenharmony_ci 39613498266Sopenharmony_ciOM_uint32 gss_wrap(OM_uint32 *min, 39713498266Sopenharmony_ci gss_const_ctx_id_t context_handle, 39813498266Sopenharmony_ci int conf_req_flag, 39913498266Sopenharmony_ci gss_qop_t qop_req, 40013498266Sopenharmony_ci const gss_buffer_t input_message_buffer, 40113498266Sopenharmony_ci int *conf_state, 40213498266Sopenharmony_ci gss_buffer_t output_message_buffer) 40313498266Sopenharmony_ci{ 40413498266Sopenharmony_ci (void)min; 40513498266Sopenharmony_ci (void)context_handle; 40613498266Sopenharmony_ci (void)conf_req_flag; 40713498266Sopenharmony_ci (void)qop_req; 40813498266Sopenharmony_ci (void)input_message_buffer; 40913498266Sopenharmony_ci (void)conf_state; 41013498266Sopenharmony_ci (void)output_message_buffer; 41113498266Sopenharmony_ci return GSS_S_FAILURE; 41213498266Sopenharmony_ci} 41313498266Sopenharmony_ci 41413498266Sopenharmony_ciOM_uint32 gss_unwrap(OM_uint32 *min, 41513498266Sopenharmony_ci gss_const_ctx_id_t context_handle, 41613498266Sopenharmony_ci const gss_buffer_t input_message_buffer, 41713498266Sopenharmony_ci gss_buffer_t output_message_buffer, 41813498266Sopenharmony_ci int *conf_state, 41913498266Sopenharmony_ci gss_qop_t *qop_state) 42013498266Sopenharmony_ci{ 42113498266Sopenharmony_ci (void)min; 42213498266Sopenharmony_ci (void)context_handle; 42313498266Sopenharmony_ci (void)input_message_buffer; 42413498266Sopenharmony_ci (void)output_message_buffer; 42513498266Sopenharmony_ci (void)conf_state; 42613498266Sopenharmony_ci (void)qop_state; 42713498266Sopenharmony_ci return GSS_S_FAILURE; 42813498266Sopenharmony_ci} 42913498266Sopenharmony_ci 43013498266Sopenharmony_ciOM_uint32 gss_seal(OM_uint32 *min, 43113498266Sopenharmony_ci gss_ctx_id_t context_handle, 43213498266Sopenharmony_ci int conf_req_flag, 43313498266Sopenharmony_ci int qop_req, 43413498266Sopenharmony_ci gss_buffer_t input_message_buffer, 43513498266Sopenharmony_ci int *conf_state, 43613498266Sopenharmony_ci gss_buffer_t output_message_buffer) 43713498266Sopenharmony_ci{ 43813498266Sopenharmony_ci (void)min; 43913498266Sopenharmony_ci (void)context_handle; 44013498266Sopenharmony_ci (void)conf_req_flag; 44113498266Sopenharmony_ci (void)qop_req; 44213498266Sopenharmony_ci (void)input_message_buffer; 44313498266Sopenharmony_ci (void)conf_state; 44413498266Sopenharmony_ci (void)output_message_buffer; 44513498266Sopenharmony_ci return GSS_S_FAILURE; 44613498266Sopenharmony_ci} 44713498266Sopenharmony_ci 44813498266Sopenharmony_ciOM_uint32 gss_unseal(OM_uint32 *min, 44913498266Sopenharmony_ci gss_ctx_id_t context_handle, 45013498266Sopenharmony_ci gss_buffer_t input_message_buffer, 45113498266Sopenharmony_ci gss_buffer_t output_message_buffer, 45213498266Sopenharmony_ci int *conf_state, 45313498266Sopenharmony_ci int *qop_state) 45413498266Sopenharmony_ci{ 45513498266Sopenharmony_ci (void)min; 45613498266Sopenharmony_ci (void)context_handle; 45713498266Sopenharmony_ci (void)input_message_buffer; 45813498266Sopenharmony_ci (void)output_message_buffer; 45913498266Sopenharmony_ci (void)conf_state; 46013498266Sopenharmony_ci (void)qop_state; 46113498266Sopenharmony_ci return GSS_S_FAILURE; 46213498266Sopenharmony_ci} 463