gss_OID GSS_EAP_AES256_CTS_HMAC_SHA1_96_MECHANISM = &gssEapConcreteMechs[2];
int
-gssEapIsMechanismOid(const gss_OID oid)
+gssEapIsConcreteMechanismOid(const gss_OID oid)
{
- if (oid == GSS_C_NO_OID) {
- return TRUE;
- } else if (oidEqual(oid, GSS_EAP_MECHANISM)) {
- return TRUE;
- } else if (oid->length > gssEapMechPrefix.length &&
- memcmp(oid->elements, gssEapMechPrefix.elements,
- gssEapMechPrefix.length) == 0) {
- return TRUE;
- }
+ return oid->length > gssEapMechPrefix.length &&
+ memcmp(oid->elements, gssEapMechPrefix.elements,
+ gssEapMechPrefix.length) == 0;
+}
- return FALSE;
+int
+gssEapIsMechanismOid(const gss_OID oid)
+{
+ return oid == GSS_C_NO_OID ||
+ oidEqual(oid, GSS_EAP_MECHANISM) ||
+ gssEapIsConcreteMechanismOid(oid);
}
OM_uint32
return GSS_S_BAD_MECH;
}
- gssEapInternalizeOid(&mechs->elements[0], oid);
- if (*oid == &mechs->elements[0]) {
+ if (!gssEapInternalizeOid(&mechs->elements[0], oid)) {
/* don't double-free if we didn't internalize it */
mechs->elements[0].length = 0;
mechs->elements[0].elements = NULL;
return GSS_S_COMPLETE;
}
-void
+int
gssEapInternalizeOid(const gss_OID oid,
gss_OID *const pInternalizedOid)
{
if (*pInternalizedOid == GSS_C_NO_OID) {
*pInternalizedOid = oid;
+ return 0;
}
+
+ return 1;
}