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'); }