KRBDecodeNegTokenInit.c   [plain text]



#include <KerberosHelper/KerberosHelper.h>
#include <CoreFoundation/CoreFoundation.h>
#include <GSS/gssapi.h>
#include <err.h>

int
main(int argc, char **argv)
{
    gss_buffer_desc empty = { 0, NULL }, out;
    OM_uint32 maj_stat, min_stat;
    gss_ctx_id_t ctx = GSS_C_NO_CONTEXT;

    maj_stat = gss_accept_sec_context(&min_stat, &ctx, GSS_C_NO_CREDENTIAL,
				      &empty, GSS_C_NO_CHANNEL_BINDINGS,
				      NULL, NULL, &out, NULL, NULL, NULL);
    if (maj_stat != GSS_S_CONTINUE_NEEDED)
	errx(1, "gss_accept_sec_context");

    CFDataRef data = CFDataCreateWithBytesNoCopy(NULL, out.value, out.length, kCFAllocatorNull);

    CFDictionaryRef dict = KRBDecodeNegTokenInit(NULL, data);
    if (dict == NULL)
	errx(1, "KRBDecodeNegTokenInit");

    CFShow(dict);
    CFRelease(dict);

    CFRelease(data);
    
    gss_release_buffer(&min_stat, &out);
    gss_delete_sec_context(&min_stat, &ctx, NULL);

    return 0;
}