예제 #1
0
파일: util.c 프로젝트: kapilash/dc
int listMechanisms(int argc, char* argv[])
{
    OM_uint32 major, minor;
    gss_OID_set mechanisms;
    int index,i;
    gss_OID currElem = NULL;
    printf("\tListing available mechanisms\n");

    major = gss_indicate_mechs(&minor, &mechanisms);
    checkError(major, minor, "gss_indicate_mechs");
    printf("\tFound %zu elements:\n", mechanisms->count);
    for(index = 0; index < mechanisms->count; index++) {
        currElem = &(mechanisms->elements[index]);
        printf("\t{ %d,", currElem->length);
        for(i = 0; i < currElem->length; i++)
            printf("\\x%x", ((char *)currElem->elements)[i]);
        printf("}\n");
        printOid(currElem);
    }

    if (major != GSS_S_COMPLETE) {
        fprintf(stderr, "failed to get the mechanisms ");
        return 1;
    }

    printf("\tfreeing the oidset..\n");
    major = gss_release_oid_set(&minor, &mechanisms);
    checkError(major, minor, "gss_release_oid_set");
    return 0;
}
void printData(
	const char *label,
	CFDataRef data,
	PrintDataType whichType,
	OidParser &parser)
{
	const unsigned char *buf = CFDataGetBytePtr(data);
	unsigned len = CFDataGetLength(data);
	
	printf("%s: ", label);
	switch(whichType) {
		case PD_Hex:
			printHex(buf, len, 16);
			break;
		case PD_ASCII:
			printAscii((const char *)buf, len, 50);
			break;
		case PD_OID:
			printOid(buf, len, parser);
	}
	putchar('\n');
}