crypt32: Trace cert policies extension.
diff --git a/dlls/crypt32/chain.c b/dlls/crypt32/chain.c
index c4250dc..0380687 100644
--- a/dlls/crypt32/chain.c
+++ b/dlls/crypt32/chain.c
@@ -782,6 +782,33 @@
     }
 }
 
+static void dump_cert_policies(const CERT_EXTENSION *ext)
+{
+    CERT_POLICIES_INFO *policies;
+    DWORD size;
+
+    if (CryptDecodeObjectEx(X509_ASN_ENCODING, X509_CERT_POLICIES,
+     ext->Value.pbData, ext->Value.cbData, CRYPT_DECODE_ALLOC_FLAG, NULL,
+     &policies, &size))
+    {
+        DWORD i, j;
+
+        TRACE_(chain)("%d policies:\n", policies->cPolicyInfo);
+        for (i = 0; i < policies->cPolicyInfo; i++)
+        {
+            TRACE_(chain)("policy identifier: %s\n",
+             debugstr_a(policies->rgPolicyInfo[i].pszPolicyIdentifier));
+            TRACE_(chain)("%d policy qualifiers:\n",
+             policies->rgPolicyInfo[i].cPolicyQualifier);
+            for (j = 0; j < policies->rgPolicyInfo[i].cPolicyQualifier; j++)
+                TRACE_(chain)("%s\n", debugstr_a(
+                 policies->rgPolicyInfo[i].rgPolicyQualifier[j].
+                 pszPolicyQualifierId));
+        }
+        LocalFree(policies);
+    }
+}
+
 static void dump_enhanced_key_usage(const CERT_EXTENSION *ext)
 {
     CERT_ENHKEY_USAGE *usage;
@@ -810,6 +837,8 @@
         dump_key_usage(ext);
     else if (!strcmp(ext->pszObjId, szOID_BASIC_CONSTRAINTS2))
         dump_basic_constraints2(ext);
+    else if (!strcmp(ext->pszObjId, szOID_CERT_POLICIES))
+        dump_cert_policies(ext);
     else if (!strcmp(ext->pszObjId, szOID_ENHANCED_KEY_USAGE))
         dump_enhanced_key_usage(ext);
 }