From: Juan Lang Date: Wed, 28 Oct 2009 23:50:33 +0000 (-0700) Subject: crypt32: Add basic constraints to chain quality selection algorithm. X-Git-Tag: 1.0.12-alt6.8~198 X-Git-Url: http://git.etersoft.ru/projects/?a=commitdiff_plain;h=aa322be4c8f145f0c9f88e7ccacfc704ff9bb5a5;p=wine%2Feterwine.git crypt32: Add basic constraints to chain quality selection algorithm. --- diff --git a/dlls/crypt32/chain.c b/dlls/crypt32/chain.c index 3b618fa2d4..7bb72fa587 100644 --- a/dlls/crypt32/chain.c +++ b/dlls/crypt32/chain.c @@ -1704,14 +1704,16 @@ static PCertificateChain CRYPT_BuildAlternateContextFromChain( return alternate; } -#define CHAIN_QUALITY_SIGNATURE_VALID 8 -#define CHAIN_QUALITY_TIME_VALID 4 -#define CHAIN_QUALITY_COMPLETE_CHAIN 2 -#define CHAIN_QUALITY_TRUSTED_ROOT 1 +#define CHAIN_QUALITY_SIGNATURE_VALID 0x16 +#define CHAIN_QUALITY_TIME_VALID 8 +#define CHAIN_QUALITY_COMPLETE_CHAIN 4 +#define CHAIN_QUALITY_BASIC_CONSTRAINTS 2 +#define CHAIN_QUALITY_TRUSTED_ROOT 1 #define CHAIN_QUALITY_HIGHEST \ CHAIN_QUALITY_SIGNATURE_VALID | CHAIN_QUALITY_TIME_VALID | \ - CHAIN_QUALITY_COMPLETE_CHAIN | CHAIN_QUALITY_TRUSTED_ROOT + CHAIN_QUALITY_COMPLETE_CHAIN | CHAIN_QUALITY_BASIC_CONSTRAINTS | \ + CHAIN_QUALITY_TRUSTED_ROOT #define IS_TRUST_ERROR_SET(TrustStatus, bits) \ (TrustStatus)->dwErrorStatus & (bits) @@ -1723,6 +1725,9 @@ static DWORD CRYPT_ChainQuality(const CertificateChain *chain) if (IS_TRUST_ERROR_SET(&chain->context.TrustStatus, CERT_TRUST_IS_UNTRUSTED_ROOT)) quality &= ~CHAIN_QUALITY_TRUSTED_ROOT; + if (IS_TRUST_ERROR_SET(&chain->context.TrustStatus, + CERT_TRUST_INVALID_BASIC_CONSTRAINTS)) + quality &= ~CHAIN_QUALITY_BASIC_CONSTRAINTS; if (IS_TRUST_ERROR_SET(&chain->context.TrustStatus, CERT_TRUST_IS_PARTIAL_CHAIN)) quality &= ~CHAIN_QUALITY_COMPLETE_CHAIN;