提交 aea61161 编写于 作者: V Viktor Dukhovni

Make it possible to check for explicit auxiliary trust

By default X509_check_trust() trusts self-signed certificates from
the trust store that have no explicit local trust/reject oids
encapsulated as a "TRUSTED CERTIFICATE" object.  (See the -addtrust
and -trustout options of x509(1)).

This commit adds a flag that makes it possible to distinguish between
that implicit trust, and explicit auxiliary settings.

With flags |= X509_TRUST_NO_SS_COMPAT, a certificate is only trusted
via explicit trust settings.
Reviewed-by: NDr. Stephen Henson <steve@openssl.org>
上级 d8ca44ba
......@@ -285,7 +285,7 @@ static int trust_compat(X509_TRUST *trust, X509 *x, int flags)
{
/* Call for side-effect of computing hash and caching extensions */
X509_check_purpose(x, -1, 0);
if (x->ex_flags & EXFLAG_SS)
if ((flags & X509_TRUST_NO_SS_COMPAT) == 0 && x->ex_flags & EXFLAG_SS)
return X509_TRUST_TRUSTED;
else
return X509_TRUST_UNTRUSTED;
......
......@@ -199,8 +199,9 @@ DEFINE_STACK_OF(X509_TRUST)
# define X509_TRUST_MAX 8
/* trust_flags values */
# define X509_TRUST_DYNAMIC 1
# define X509_TRUST_DYNAMIC_NAME 2
# define X509_TRUST_DYNAMIC (1U << 0)
# define X509_TRUST_DYNAMIC_NAME (1U << 1)
# define X509_TRUST_NO_SS_COMPAT (1U << 2)
/* check_trust return codes */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册