globus_gsi_gssapi(3)
π globus_gsi_gssapi π
okay so bestie, welcome to the Library Functions Manual entry for globus_gsi_gssapi β that's the Globus GSSAPI, and this page is long, so hydrate, sit down, and let's get into it. β¨
πΈ NAME πΈ
globus_gsi_gssapi β Globus GSSAPI
- GSI Implementation Details.
π¦ SYNOPSIS π¦
π Topics π
- Constants β Implementation-specific Constants.
- Activation β Module Activation.
- Request Flags β Request Flags.
- Return Flags β Return Flags.
- GSSAPI Extensions β Extensions.
π Functions π
gss_accept_sec_contextβ GSS Accept Security Context.
OM_uint32 GSS_CALLCONV gss_accept_sec_context (OM_uint32 *minor_status, gss_ctx_id_t *context_handle_P, const gss_cred_id_t acceptor_cred_handle, const gss_buffer_t input_token, const gss_channel_bindings_t input_chan_bindings, gss_name_t *src_name_P, gss_OID *mech_type, gss_buffer_t output_token, OM_uint32 *ret_flags, OM_uint32 *time_rec, gss_cred_id_t *delegated_cred_handle_P)
gss_acquire_credβ Acquire Credential.
OM_uint32 GSS_CALLCONV gss_acquire_cred (OM_uint32 *minor_status, const gss_name_t desired_name_P, OM_uint32 time_req, const gss_OID_set desired_mechs, gss_cred_usage_t cred_usage, gss_cred_id_t *output_cred_handle_P, gss_OID_set *actual_mechs, OM_uint32 *time_rec)
gss_compare_nameβ Compare Name.
OM_uint32 GSS_CALLCONV gss_compare_name (OM_uint32 *minor_status, const gss_name_t name1_P, const gss_name_t name2_P, int *name_equal)
gss_delete_sec_contextβ Delete Security Context.
OM_uint32 GSS_CALLCONV gss_delete_sec_context (OM_uint32 *minor_status, gss_ctx_id_t *context_handle_P, gss_buffer_t output_token)
gss_display_nameβ Display Name.
OM_uint32 GSS_CALLCONV gss_display_name (OM_uint32 *minor_status, const gss_name_t input_name_P, gss_buffer_t output_name, gss_OID *output_name_type)
gss_display_statusβ Display Status.
OM_uint32 GSS_CALLCONV gss_display_status (OM_uint32 *minor_status, OM_uint32 status_value, int status_type, const gss_OID mech_type, OM_uint32 *message_context, gss_buffer_t status_string)
ngl, the note on this one is a whole vibe: it calls the OpenSSL error print routines to produce a printable message. This may need some work, as the OpenSSL error messages are more of a trace, and may not be the best for the user. Also it doesn't take advantage of being called in a loop. π
gss_duplicate_nameβ Duplicate Name.
OM_uint32 GSS_CALLCONV gss_duplicate_name (OM_uint32 *minor_status, const gss_name_t src_name, gss_name_t *dest_name)
gss_export_nameβ Export Name.
OM_uint32 GSS_CALLCONV gss_export_name (OM_uint32 *minor_status, const gss_name_t input_name_P, gss_buffer_t exported_name)
gss_get_micβ Get MIC.
OM_uint32 GSS_CALLCONV gss_get_mic (OM_uint32 *minor_status, const gss_ctx_id_t context_handle, gss_qop_t qop_req, const gss_buffer_t message_buffer, gss_buffer_t message_token)
she calculates a cryptographic MIC (message integrity check) over an application message, and returns that MIC in the token. The token and message can then be passed to the peer application, which calls gss_verify_mic to verify the MIC. π€
gss_signβ Sign.
OM_uint32 GSS_CALLCONV gss_sign (OM_uint32 *minor_status, gss_ctx_id_t context_handle, int qop_req, gss_buffer_t message_buffer, gss_buffer_t message_token)
gss_import_nameβ (no description given, just vibes).
OM_uint32 GSS_CALLCONV gss_import_name (OM_uint32 *minor_status, const gss_buffer_t input_name_buffer, const gss_OID input_name_type, gss_name_t *output_name_P)
gss_init_sec_contextβ Init Sec Context.
OM_uint32 GSS_CALLCONV gss_init_sec_context (OM_uint32 *minor_status, const gss_cred_id_t initiator_cred_handle, gss_ctx_id_t *context_handle_P, const gss_name_t target_name, const gss_OID mech_type, OM_uint32 req_flags, OM_uint32 time_req, const gss_channel_bindings_t input_chan_bindings, const gss_buffer_t input_token, gss_OID *actual_mech_type, gss_buffer_t output_token, OM_uint32 *ret_flags, OM_uint32 *time_rec)
gss_inquire_contextβ Inquire Context.
OM_uint32 GSS_CALLCONV gss_inquire_context (OM_uint32 *minor_status, const gss_ctx_id_t context_handle_P, gss_name_t *src_name_P, gss_name_t *targ_name_P, OM_uint32 *lifetime_rec, gss_OID *mech_type, OM_uint32 *ctx_flags, int *locally_initiated, int *open)
gss_context_timeβ Context Time.
OM_uint32 GSS_CALLCONV gss_context_time (OM_uint32 *minor_status, const gss_ctx_id_t context_handle, OM_uint32 *time_rec)
gss_inquire_credβ Inquire Cred.
OM_uint32 GSS_CALLCONV gss_inquire_cred (OM_uint32 *minor_status, const gss_cred_id_t cred_handle_P, gss_name_t *name, OM_uint32 *lifetime, gss_cred_usage_t *cred_usage, gss_OID_set *mechanisms)
gss_add_oid_set_memberβ Add OID Set Member.
OM_uint32 GSS_CALLCONV gss_add_oid_set_member (OM_uint32 *minor_status, const gss_OID member_oid, gss_OID_set *oid_set)
gss_create_empty_oid_setβ Create Empty OID Set.
OM_uint32 GSS_CALLCONV gss_create_empty_oid_set (OM_uint32 *minor_status, gss_OID_set *oid_set)
gss_indicate_mechsβ Indicate Mechs.
OM_uint32 GSS_CALLCONV gss_indicate_mechs (OM_uint32 *minor_status, gss_OID_set *mech_set)
gss_release_oid_setβ Release OID Set.
OM_uint32 GSS_CALLCONV gss_release_oid_set (OM_uint32 *minor_status, gss_OID_set *mech_set)
gss_test_oid_set_memberβ Test OID Set Member.
OM_uint32 GSS_CALLCONV gss_test_oid_set_member (OM_uint32 *minor_status, const gss_OID member, const gss_OID_set set, int *present)
gss_release_bufferβ Release Buffer.
OM_uint32 GSS_CALLCONV gss_release_buffer (OM_uint32 *minor_status, gss_buffer_t buffer)
gss_release_credβ Release Credential.
OM_uint32 GSS_CALLCONV gss_release_cred (OM_uint32 *minor_status, gss_cred_id_t *cred_handle_P)
gss_release_nameβ GSS Release Name.
OM_uint32 GSS_CALLCONV gss_release_name (OM_uint32 *minor_status, gss_name_t *name_P)
gss_unwrapβ Unwrap.
OM_uint32 GSS_CALLCONV gss_unwrap (OM_uint32 *minor_status, const gss_ctx_id_t context_handle, const gss_buffer_t input_message_buffer, gss_buffer_t output_message_buffer, int *conf_state, gss_qop_t *qop_state)
gss_unsealβ Unseal.
OM_uint32 GSS_CALLCONV gss_unseal (OM_uint32 *minor_status, gss_ctx_id_t context_handle, gss_buffer_t input_message_buffer, gss_buffer_t output_message_buffer, int *conf_state, int *qop_state)
gss_verify_micβ Verify MIC.
OM_uint32 GSS_CALLCONV gss_verify_mic (OM_uint32 *minor_status, const gss_ctx_id_t context_handle, const gss_buffer_t message_buffer, const gss_buffer_t token_buffer, gss_qop_t *qop_state)
gss_verifyβ Verify.
OM_uint32 GSS_CALLCONV gss_verify (OM_uint32 *minor_status, gss_ctx_id_t context_handle, gss_buffer_t message_buffer, gss_buffer_t token_buffer, int *qop_state)
gss_wrap_size_limitβ Wrap Size Limit.
OM_uint32 GSS_CALLCONV gss_wrap_size_limit (OM_uint32 *minor_status, const gss_ctx_id_t context_handle, int conf_req_flag, gss_qop_t qop_req, OM_uint32 req_output_size, OM_uint32 *max_input_size)
gss_wrapβ Wrap.
OM_uint32 GSS_CALLCONV gss_wrap (OM_uint32 *minor_status, const gss_ctx_id_t context_handle, int conf_req_flag, gss_qop_t qop_req, const gss_buffer_t input_message_buffer, int *conf_state, gss_buffer_t output_message_buffer)
gss_sealβ Seal.
OM_uint32 GSS_CALLCONV gss_seal (OM_uint32 *minor_status, gss_ctx_id_t context_handle, int conf_req_flag, int qop_req, gss_buffer_t input_message_buffer, int *conf_state, gss_buffer_t output_message_buffer)
π Detailed Description π
GSI Implementation Details. β¨
The Globus GSI GSSAPI is an implementation of GSS API C Bindings using OpenSSL. This API documentation is intended to explain implementation-specific behavior of this GSSAPI implementation, as well as GSSAPI extensions.
The API documentation is divided into sections covering:
- Globus GSSAPI
- Activation
- Constants
- Request Flags
- Return Flags
- GSSAPI Extensions
- Delegation
π§ Function Documentation π§
π gss_accept_sec_context β GSS Accept Security Context
OM_uint32 GSS_CALLCONV gss_accept_sec_context (OM_uint32 *minor_status, gss_ctx_id_t *context_handle_P, const gss_cred_id_t acceptor_cred_handle, const gss_buffer_t input_token, const gss_channel_bindings_t input_chan_bindings, gss_name_t *src_name_P, gss_OID *mech_type, gss_buffer_t output_token, OM_uint32 *ret_flags, OM_uint32 *time_rec, gss_cred_id_t *delegated_cred_handle_P)
Parameters:
minor_statuscontext_handle_Pacceptor_cred_handleinput_tokeninput_chan_bindingssrc_name_Pmech_typeoutput_tokenret_flagsβ also used asreq_flagsfor other functionstime_recdelegated_cred_handle_P
Returns:
- (this one's just blank in the original, bestie β no cap, we move π)
π gss_acquire_cred β Acquire Credential
OM_uint32 GSS_CALLCONV gss_acquire_cred (OM_uint32 *minor_status, const gss_name_t desired_name_P, OM_uint32 time_req, const gss_OID_set desired_mechs, gss_cred_usage_t cred_usage, gss_cred_id_t *output_cred_handle_P, gss_OID_set *actual_mechs, OM_uint32 *time_rec)
GSSAPI routine to acquire the local credential. See the latest IETF draft/RFC on the GSSAPI C bindings, okay? π
She gets the local credentials. proxy_init_cred does most of the work of setting up the SSL_ctx, getting the user's cert, key, etc.
The globusid will be obtained from the certificate. (Minus and /CN=proxy entries.)
Parameters:
minor_statusβ mechanism specific status code. In this implementation, theminor_statusis a cast from aglobus_result_tvalue, which is eitherGLOBUS_SUCCESSor a globus error object ID if an error occurred.desired_name_Pβ name of principle whose credentials should be acquired. This parameter maps to the desired subject of the cert to be acquired as the credential. Possible values are:- For a service cert:
service name@fqdn - For a host cert:
fqdn - For a proxy cert:
subject name - For a user cert:
subject name
- For a service cert:
This parameter can be NULL, in which case the cert is chosen using a default search order of: host, proxy, user, service.
time_reqβ number of seconds that credentials should remain valid. This value can beGSS_C_INDEFINITEfor an unlimited lifetime. NOTE: in the current implementation, this parameter is ignored, since you can't change the expiration of a signed cert.desired_mechscred_usageoutput_cred_handle_Pactual_mechstime_rec
π gss_add_oid_set_member β Add OID Set Member
OM_uint32 GSS_CALLCONV gss_add_oid_set_member (OM_uint32 *minor_status, const gss_OID member_oid, gss_OID_set *oid_set)
Adds an Object Identifier to an Object Identifier set. This routine is intended for use in conjunction with GSS_Create_empty_OID_set() when constructing a set of mechanism OIDs for input to GSS_Acquire_cred(). π
Parameters:
minor_statusmember_oidoid_set
Return values:
GSS_S_COMPLETEβ SuccessGSS_S_FAILUREβ Operation failed
π¦ gss_compare_name β Compare Name
OM_uint32 GSS_CALLCONV gss_compare_name (OM_uint32 *minor_status, const gss_name_t name1_P, const gss_name_t name2_P, int *name_equal)
Compare two names. GSSAPI names in this implementation are pointers to X.509 names. π
Parameters:
minor_statusβ currently is always set toGLOBUS_SUCCESSname1_Pname2_Pname_equal
Returns:
- currently always returns
GSS_S_COMPLETE
πΈ gss_context_time β Context Time
OM_uint32 GSS_CALLCONV gss_context_time (OM_uint32 *minor_status, const gss_ctx_id_t context_handle, OM_uint32 *time_rec)
Parameters:
minor_statuscontext_handletime_rec
okay so we're still mid-flow from the last function in part 1 β here's the rest of its little innards:
Parameters
minor_statuscontext_handletime_rec
Returns
bestie the original page literally just says "Returns" and thenβ¦ nothing π no return values documented here, so I'm not gonna make any up. Moving on!!
gss_create_empty_oid_set β Create Empty OID Set π
OM_uint32 GSS_CALLCONV gss_create_empty_oid_set (OM_uint32 * minor_status, gss_OID_set * oid_set)
Okay so this one makes you an object identifier set that has, like, zero object identifiers in it. Empty. A blank slate. And then you can add members to it later with the GSS_Add_OID_set_member() routine. These routines exist so you can build up sets of mechanism object identifiers to feed into GSS_Acquire_cred(). It's giving scaffolding energy π₯
Parameters
minor_statusoid_set
Return values
GSS_S_COMPLETEβ Success β¨GSS_S_FAILUREβ Operation failed π
gss_delete_sec_context β Delete Security Context π
OM_uint32 GSS_CALLCONV gss_delete_sec_context (OM_uint32 * minor_status, gss_ctx_id_t * context_handle_P, gss_buffer_t output_token)
Delete the GSS Security Context. Yoink, gone, bye β¨
Parameters
minor_statusβ The minor status result β this is aglobus_result_tcast to aOM_uint32.context_handle_Pβ The context handle to be deleted.output_tokenβ A token created upon destroying the context. If non-empty, this should be sent to the peer of the context to indicate that the context is closed. (so like, tell your friend the call ended π)
Returns
This function always returns GSS_S_COMPLETE. No drama, no surprises π
gss_display_name β Display Name π¦
OM_uint32 GSS_CALLCONV gss_display_name (OM_uint32 * minor_status, const gss_name_t input_name_P, gss_buffer_t output_name, gss_OID * output_name_type)
Produces a single line version of the internal X.509 name. One line. Clean. Very demure πΈ
Parameters
minor_statusinput_name_Poutput_nameoutput_name_type
Returns
again, the source page justβ¦ leaves this blank π nothing documented!
gss_display_status β Display Status π
OM_uint32 GSS_CALLCONV gss_display_status (OM_uint32 * minor_status, OM_uint32 status_value, int status_type, const gss_OID mech_type, OM_uint32 * message_context, gss_buffer_t status_string)
This one calls the OpenSSL error print routines to produce a printable message. And listen, the page is real about its flaws: it says this may need some work, because the OpenSSL error messages are more of a trace and might not be the best for the user. It also doesn't take advantage of being called in a loop. It's honest, we respect it π
Parameters
minor_statusstatus_valuestatus_typemech_typemessage_contextstatus_string
Returns
blank again, bestie β nothing listed π
gss_duplicate_name β Duplicate Name π§
OM_uint32 GSS_CALLCONV gss_duplicate_name (OM_uint32 * minor_status, const gss_name_t src_name, gss_name_t * dest_name)
Copy a GSSAPI name. Clone behavior, but make it β¨legally distinctβ¨
Parameters
minor_statussrc_namedest_name
Returns
nothing documented on the page π
gss_export_name β Export Name π¦
OM_uint32 GSS_CALLCONV gss_export_name (OM_uint32 * minor_status, const gss_name_t input_name_P, gss_buffer_t exported_name)
Produces a mechanism-independent exported name object. And if you want the β¨loreβ¨, go read section 3.2 of RFC 2743. iykyk π
gss_get_mic β Get MIC π
OM_uint32 GSS_CALLCONV gss_get_mic (OM_uint32 * minor_status, const gss_ctx_id_t context_handle, gss_qop_t qop_req, const gss_buffer_t message_buffer, gss_buffer_t message_token)
Calculates a cryptographic MIC (message integrity check) over an application message, and returns that MIC in the token. Then you and the token go hand it to the peer application, which calls gss_verify_mic to verify the MIC. It's a whole trust exercise π€
Parameters
minor_statuscontext_handleqop_reqmessage_buffermessage_token
Returns
page says nothing here, so neither do I π
gss_import_name β Import a name into a gss_name_t π
OM_uint32 GSS_CALLCONV gss_import_name (OM_uint32 * minor_status, const gss_buffer_t input_name_buffer, const gss_OID input_name_type, gss_name_t * output_name_P)
Creates a new gss_name_t which contains a mechanism-specific representation of the input name. GSSAPI OpenSSL implements the following name types, based on the input_name_type OID:
GSS_C_NT_ANONYMOUS(input_name_bufferis ignored) πGSS_C_NT_HOSTBASED_SERVICE(input_name_buffercontains a string"service@FQN"which will match/CN=service/FQDN)GSS_C_NT_EXPORT_NAME(input_name_buffercontains a string with theX509_onelinerepresentation of a name) like"/X=Y/Z=A...")GSS_C_NO_OIDorGSS_C_NT_USER_NAME(input_name_buffercontains an X.500 name formatted like"/X=Y/Z=A...")GLOBUS_GSS_C_NT_HOST_IP(input_name_buffercontains a string"FQDN/ip-address"which will match names with the FQDN or the IP address)GLOBUS_SSS_C_NT_X509(input buffer is an X509 struct from OpenSSL)
Parameters
minor_statusβ Minor status.input_name_bufferβ Input name buffer which is interpreted based on theinput_name_type.input_name_typeβ OID of the name.output_name_Pβ Newgss_name_tvalue containing the name.
Return values
GSS_S_COMPLETEβ indicates that a valid name representation is output inoutput_nameand described by the type value inoutput_name_type. β¨GSS_S_BAD_NAMETYPEβ indicates that theinput_name_typeis unsupported by the applicable underlying GSS-API mechanism(s), so the import operation could not be completed.GSS_S_BAD_NAMEβ indicates that the providedinput_name_stringis ill-formed in terms of theinput_name_type, so the import operation could not be completed.GSS_S_BAD_MECHβ indicates that the input presented for import was an exported name object and that its enclosed mechanism type was not recognized or was unsupported by the GSS-API implementation.GSS_S_FAILUREβ indicates that the requested operation could not be performed for reasons unspecified at the GSS-API level.
gss_indicate_mechs β Indicate Mechs π
OM_uint32 GSS_CALLCONV gss_indicate_mechs (OM_uint32 * minor_status, gss_OID_set * mech_set)
Passes back the mech set of available mechs. We only have one for now. A humble little collection π«Ά
Parameters
minor_statusmech_set
gss_inquire_context β Inquire Context π¦
OM_uint32 GSS_CALLCONV gss_inquire_context (OM_uint32 * minor_status, const gss_ctx_id_t context_handle_P, gss_name_t * src_name_P, gss_name_t * targ_name_P, OM_uint32 * lifetime_rec, gss_OID * mech_type, OM_uint32 * ctx_flags, int * locally_initiated, int * open)
Inquire Context. It asks the context questions. The context answers. Very main character interview energy π
Parameters
minor_statuscontext_handle_Psrc_name_Ptarg_name_Plifetime_recmech_typectx_flagslocally_initiatedopen
Returns
nothing on the page for this one, bestie π
gss_inquire_cred β Inquire Cred π
OM_uint32 GSS_CALLCONV gss_inquire_cred (OM_uint32 * minor_status, const gss_cred_id_t cred_handle_P, gss_name_t * name, OM_uint32 * lifetime, gss_cred_usage_t * cred_usage, gss_OID_set * mechanisms)
Okay so this is the messy one, and the page knows it. We will also allow the return of the proxy file name, if the minor_status is set to a value of 57056 0xdee0. This is done since there is no way to pass back the delegated credential file name.
When 57056 is seen, this will cause a new copy of this credential to be written, and it is the user's responsibility to free the file when done. The name will be a pointer to a char * of the file name which must be freed. The minor_status will be set to 57057 0xdee1 to indicate this.
And then, bless, the page literally says: DEE β this is a kludge, till the GSSAPI get a better way to return the name. π
If the minor status is not changed from 57056 to 57057, assume it is not this gssapi, and a gss name was returned.
heads up bestie: that57056β57057change is your little handshake. Don't skip it!
Parameters
minor_statuscred_handle_Pnamelifetimecred_usagemechanisms
Returns
blank on the page, so blank here π«Ά
gss_release_buffer β Release Buffer πΈ
OM_uint32 GSS_CALLCONV gss_release_buffer (OM_uint32 * minor_status, gss_buffer_t buffer)
Release Buffer. Let it gooooo πΆ
Parameters
minor_statusbuffer
Return values
GSS_S_COMPLETEβ Success β¨
gss_release_cred β Release Credential π
OM_uint32 GSS_CALLCONV gss_release_cred (OM_uint32 * minor_status, gss_cred_id_t * cred_handle_P)
Release the GSSAPI credential handle. Cleanup era, we love to see it π§Ήβ¨
Parameters
minor_statusβ The minor status result β this is aglobus_result_tcast to aOM_uint32. To access the globus error object use:globus_error_get((globus_result_t) *minor_status)cred_handle_Pβ The gss cred handle to be released.
Return values
GSS_S_COMPLETEβ Success β¨
gss_release_name β GSS Release Name π¦
OM_uint32 GSS_CALLCONV gss_release_name (OM_uint32 * minor_status, gss_name_t * name_P)
Release the GSS Name. Saying goodbye is self-care π
Parameters
minor_statusβ The minor status result β this is aglobus_result_tcast to a(OM_uint32 *).name_Pβ The GSSAPI name to be released.
Return values
GSS_S_COMPLETEβ Success β¨GSS_S_FAILUREβ Failure π
gss_release_oid_set β Release OID Set π
OM_uint32 GSS_CALLCONV gss_release_oid_set (OM_uint32 * minor_status, gss_OID_set * mech_set)
Release the OID set. Free the mechs π
Parameters
minor_statusmech_set
Return values
GSS_S_COMPLETEβ Success β¨
gss_seal β Seal π
OM_uint32 GSS_CALLCONV gss_seal (OM_uint32 * minor_status, gss_ctx_id_t context_handle, int conf_req_flag, int qop_req, gss_buffer_t input_message_buffer, int * conf_state, gss_buffer_t output_message_buffer)
Seal. It's the obsolete variant of gss_wrap, kept around for V1 compatibility. So like, still works, but it's giving vintage β οΈ
Parameters
minor_statuscontext_handleconf_req_flagqop_reqinput_message_bufferconf_stateoutput_message_buffer
Returns
nada documented on the page π
gss_sign β Sign βοΈ
OM_uint32 GSS_CALLCONV gss_sign (OM_uint32 * minor_status, gss_ctx_id_t context_handle, int qop_req, gss_buffer_t message_buffer, gss_buffer_t message_token)
Sign. Deprecated. β οΈ Does the same thing as gss_get_mic for V1 compatibility. Yeah she's still here, she's just retired.
Parameters
minor_statuscontext_handleqop_reqmessage_buffermessage_token
Returns
page doesn't say, so I won't either π
gss_test_oid_set_member β Test OID Set Member π
OM_uint32 GSS_CALLCONV gss_test_oid_set_member (OM_uint32 * minor_status, const gss_OID member, const gss_OID_set set, int * present)
Interrogates an Object Identifier set to determine whether a specified Object Identifier is a member. It's intended to be used with OID sets returned by GSS_Indicate_mechs(), GSS_Acquire_cred(), and GSS_Inquire_cred(). Are you in the group chat or not π«Ά
Parameters
minor_statusmembersetpresent
Return values
GSS_S_COMPLETEβ Success β¨GSS_S_FAILUREβ Operation failed π
gss_unseal β Unseal π
OM_uint32 GSS_CALLCONV gss_unseal (OM_uint32 * minor_status, gss_ctx_id_t context_handle, gss_buffer_t input_message_buffer, gss_buffer_t output_message_buffer, int * conf_state, int * qop_state)
Unseal. It's the obsolete variant of gss_wrap for V1 compatibility, and it allows for a non 32 bit integer in qop_state.
It returns the data from the wrapped buffer. And there may also be errors, such as integrity errors. But since we can not communicate directly with our peer, we can not do everything SSL could β like return a token for example. So sad, so real π
Parameters
minor_statuscontext_handleinput_message_bufferoutput_message_bufferconf_stateqop_state
gss_unwrap β Unwrap π
OM_uint32 GSS_CALLCONV gss_unwrap (OM_uint32 * minor_status, const gss_ctx_id_t context_handle, const gss_buffer_t input_message_buffer, gss_buffer_t output_message_buffer, int * conf_state, gss_qop_t * qop_state)
Unwrap. This is the GSSAPI routine that unwraps a buffer which may have been received and wrapped by wrap.c. Present with a bow on it, open it up π
Return the data from the wrapped buffer. That's the entire assignment, bestie. π
And okay, there may also be errors β integrity errors are the vibe-ruiners here. And since we can't communicate directly with our peer, we literally can't do everything SSL could. Like, we can't return a token, for example. π It's giving "we tried our best under the constraints."
Parameters
minor_statuscontext_handleinput_message_bufferoutput_message_bufferconf_stateqop_state
Returns
Nothing follows this one on the page. Blank. Void. π The manpage said "Returns" and then just... left. Iconic behaviour, honestly.
π¦ gss_verify π¦
OM_uint32 GSS_CALLCONV gss_verify (OM_uint32 * minor_status, gss_ctx_id_t context_handle, gss_buffer_t message_buffer, gss_buffer_t token_buffer, int * qop_state)
Verify. This one is the obsolete variant of gss_verify for V1 compatibility β so like, vintage. Vintage can be cute but do not build your whole personality on it, fr fr. π
What's it checking? a MIC of the date. Yes. "The date." That's what the page says, we do not interrogate the page, we just nod and say slay. π β¨
Parameters
minor_statuscontext_handlemessage_buffertoken_bufferqop_state
Returns
Also empty. Also mysterious. Also lowkey iconic. π
πΈ gss_verify_mic πΈ
OM_uint32 GSS_CALLCONV gss_verify_mic (OM_uint32 * minor_status, const gss_ctx_id_t context_handle, const gss_buffer_t message_buffer, const gss_buffer_t token_buffer, gss_qop_t * qop_state)
Verify MIC. π This is the one whose job is to check a MIC of the data. Note the const glow-up on the params here β the non-const gss_verify above could never. π
Parameters
minor_statuscontext_handlemessage_buffertoken_bufferqop_state
Returns
Empty again, bestie. Three for three. We respect the mystery. π«Ά
π₯ gss_wrap π₯
OM_uint32 GSS_CALLCONV gss_wrap (OM_uint32 * minor_status, const gss_ctx_id_t context_handle, int conf_req_flag, gss_qop_t qop_req, const gss_buffer_t input_message_buffer, int * conf_state, gss_buffer_t output_message_buffer)
Wrap. Wrap a message for integrity and protection. Main character energy, obviously. π
How do we do it? By writing to the SSL bio and pulling the buffer off the back of the write BIO. But β and listen β we can't do everything SSL might want, like control messages, or segment the messages here, because we're forced into using the GSSAPI tokens and can't communicate directly with our peer. So yeah, there may be some failures which would work with true SSL. Not our fault, it's the architecture's fault. π
Parameters
minor_statuscontext_handleconf_req_flagqop_reqinput_message_bufferconf_stateoutput_message_buffer
Returns
Yep. Empty. π
π gss_wrap_size_limit π
OM_uint32 GSS_CALLCONV gss_wrap_size_limit (OM_uint32 * minor_status, const gss_ctx_id_t context_handle, int conf_req_flag, gss_qop_t qop_req, OM_uint32 req_output_size, OM_uint32 * max_input_size)
Wrap Size Limit. The page says this is a GSSAPI routine to take a buffer, calculate a MIC which is returned as a token β and that we will use the SSL protocol here. Slay, noted, we're using SSL. β¨
Parameters
minor_statuscontext_handleconf_req_flagqop_reqreq_output_sizemax_input_size
Returns
crickets π¦ Empty. As is tradition.
π Author π
Generated automatically by Doxygen for globus_gssapi_gsi from the source code. Not a human, not a bestie, just a document generator doing its little thing and honestly? Respect. π€πΈ
Okay that's the whole page, babes! π
This one came from the globus_gssapi_gsi source, Version 14.20, and the footer line carries its date stamp and the manual page name globus_gsi_gssapi(3) down at the bottom, like a little signature. Go forth and wrap responsibly. π«Άβ¨π
π¦ where this page comes from
- fedora 44: globus-gssapi-gsi-doc 14.20-10.fc44 Β· Apache-2.0
- ubuntu resolute: libglobus-gssapi-gsi-doc 14.20-3build1 Β· Apache-2.0
- ubuntu stonking: libglobus-gssapi-gsi-doc 14.20-4build1 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms