Added an AUTH_HELPER for revocation certificates
This commit is contained in:
@@ -131,6 +131,7 @@ static void destroy_entry_value(entry_t *entry)
|
|||||||
case AUTH_RULE_SUBJECT_CERT:
|
case AUTH_RULE_SUBJECT_CERT:
|
||||||
case AUTH_HELPER_IM_CERT:
|
case AUTH_HELPER_IM_CERT:
|
||||||
case AUTH_HELPER_SUBJECT_CERT:
|
case AUTH_HELPER_SUBJECT_CERT:
|
||||||
|
case AUTH_HELPER_REVOCATION_CERT:
|
||||||
{
|
{
|
||||||
certificate_t *cert = (certificate_t*)entry->value;
|
certificate_t *cert = (certificate_t*)entry->value;
|
||||||
cert->destroy(cert);
|
cert->destroy(cert);
|
||||||
@@ -192,6 +193,7 @@ static void replace(auth_cfg_t *this, entry_enumerator_t *enumerator,
|
|||||||
case AUTH_HELPER_SUBJECT_CERT:
|
case AUTH_HELPER_SUBJECT_CERT:
|
||||||
case AUTH_HELPER_IM_HASH_URL:
|
case AUTH_HELPER_IM_HASH_URL:
|
||||||
case AUTH_HELPER_SUBJECT_HASH_URL:
|
case AUTH_HELPER_SUBJECT_HASH_URL:
|
||||||
|
case AUTH_HELPER_REVOCATION_CERT:
|
||||||
/* pointer type */
|
/* pointer type */
|
||||||
enumerator->current->value = va_arg(args, void*);
|
enumerator->current->value = va_arg(args, void*);
|
||||||
break;
|
break;
|
||||||
@@ -261,6 +263,7 @@ static void* get(private_auth_cfg_t *this, auth_rule_t type)
|
|||||||
case AUTH_HELPER_SUBJECT_CERT:
|
case AUTH_HELPER_SUBJECT_CERT:
|
||||||
case AUTH_HELPER_IM_HASH_URL:
|
case AUTH_HELPER_IM_HASH_URL:
|
||||||
case AUTH_HELPER_SUBJECT_HASH_URL:
|
case AUTH_HELPER_SUBJECT_HASH_URL:
|
||||||
|
case AUTH_HELPER_REVOCATION_CERT:
|
||||||
default:
|
default:
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@@ -300,6 +303,7 @@ static void add(private_auth_cfg_t *this, auth_rule_t type, ...)
|
|||||||
case AUTH_HELPER_SUBJECT_CERT:
|
case AUTH_HELPER_SUBJECT_CERT:
|
||||||
case AUTH_HELPER_IM_HASH_URL:
|
case AUTH_HELPER_IM_HASH_URL:
|
||||||
case AUTH_HELPER_SUBJECT_HASH_URL:
|
case AUTH_HELPER_SUBJECT_HASH_URL:
|
||||||
|
case AUTH_HELPER_REVOCATION_CERT:
|
||||||
/* pointer type */
|
/* pointer type */
|
||||||
entry->value = va_arg(args, void*);
|
entry->value = va_arg(args, void*);
|
||||||
break;
|
break;
|
||||||
@@ -561,6 +565,7 @@ static bool complies(private_auth_cfg_t *this, auth_cfg_t *constraints,
|
|||||||
case AUTH_HELPER_SUBJECT_CERT:
|
case AUTH_HELPER_SUBJECT_CERT:
|
||||||
case AUTH_HELPER_IM_HASH_URL:
|
case AUTH_HELPER_IM_HASH_URL:
|
||||||
case AUTH_HELPER_SUBJECT_HASH_URL:
|
case AUTH_HELPER_SUBJECT_HASH_URL:
|
||||||
|
case AUTH_HELPER_REVOCATION_CERT:
|
||||||
/* skip helpers */
|
/* skip helpers */
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -607,6 +612,7 @@ static void merge(private_auth_cfg_t *this, private_auth_cfg_t *other, bool copy
|
|||||||
case AUTH_RULE_SUBJECT_CERT:
|
case AUTH_RULE_SUBJECT_CERT:
|
||||||
case AUTH_HELPER_IM_CERT:
|
case AUTH_HELPER_IM_CERT:
|
||||||
case AUTH_HELPER_SUBJECT_CERT:
|
case AUTH_HELPER_SUBJECT_CERT:
|
||||||
|
case AUTH_HELPER_REVOCATION_CERT:
|
||||||
{
|
{
|
||||||
certificate_t *cert = (certificate_t*)value;
|
certificate_t *cert = (certificate_t*)value;
|
||||||
|
|
||||||
@@ -702,6 +708,7 @@ static bool equals(private_auth_cfg_t *this, private_auth_cfg_t *other)
|
|||||||
case AUTH_RULE_SUBJECT_CERT:
|
case AUTH_RULE_SUBJECT_CERT:
|
||||||
case AUTH_HELPER_IM_CERT:
|
case AUTH_HELPER_IM_CERT:
|
||||||
case AUTH_HELPER_SUBJECT_CERT:
|
case AUTH_HELPER_SUBJECT_CERT:
|
||||||
|
case AUTH_HELPER_REVOCATION_CERT:
|
||||||
{
|
{
|
||||||
certificate_t *c1, *c2;
|
certificate_t *c1, *c2;
|
||||||
|
|
||||||
@@ -815,6 +822,7 @@ static auth_cfg_t* clone_(private_auth_cfg_t *this)
|
|||||||
case AUTH_RULE_SUBJECT_CERT:
|
case AUTH_RULE_SUBJECT_CERT:
|
||||||
case AUTH_HELPER_IM_CERT:
|
case AUTH_HELPER_IM_CERT:
|
||||||
case AUTH_HELPER_SUBJECT_CERT:
|
case AUTH_HELPER_SUBJECT_CERT:
|
||||||
|
case AUTH_HELPER_REVOCATION_CERT:
|
||||||
{
|
{
|
||||||
certificate_t *cert = (certificate_t*)entry->value;
|
certificate_t *cert = (certificate_t*)entry->value;
|
||||||
clone->add(clone, entry->type, cert->get_ref(cert));
|
clone->add(clone, entry->type, cert->get_ref(cert));
|
||||||
|
|||||||
@@ -105,6 +105,8 @@ enum auth_rule_t {
|
|||||||
AUTH_HELPER_IM_HASH_URL,
|
AUTH_HELPER_IM_HASH_URL,
|
||||||
/** Hash and URL of a end-entity certificate, char* */
|
/** Hash and URL of a end-entity certificate, char* */
|
||||||
AUTH_HELPER_SUBJECT_HASH_URL,
|
AUTH_HELPER_SUBJECT_HASH_URL,
|
||||||
|
/** revocation certificate (CRL, OCSP), certificate_t* */
|
||||||
|
AUTH_HELPER_REVOCATION_CERT,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -132,7 +132,8 @@ static bool enumerate(wrapper_enumerator_t *this, certificate_t **cert)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (rule != AUTH_HELPER_SUBJECT_CERT &&
|
else if (rule != AUTH_HELPER_SUBJECT_CERT &&
|
||||||
rule != AUTH_HELPER_IM_CERT)
|
rule != AUTH_HELPER_IM_CERT &&
|
||||||
|
rule != AUTH_HELPER_REVOCATION_CERT)
|
||||||
{ /* handle only HELPER certificates */
|
{ /* handle only HELPER certificates */
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user