winehq.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
June
May
April
March
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
January
2003
December
November
October
September
August
July
June
May
April
March
February
January
2002
December
November
October
September
August
July
June
May
April
March
February
January
2001
December
November
October
September
August
July
June
May
April
March
February
List overview
wine-commits
October 2009
----- 2025 -----
June 2025
May 2025
April 2025
March 2025
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
----- 2003 -----
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
----- 2002 -----
December 2002
November 2002
October 2002
September 2002
August 2002
July 2002
June 2002
May 2002
April 2002
March 2002
February 2002
January 2002
----- 2001 -----
December 2001
November 2001
October 2001
September 2001
August 2001
July 2001
June 2001
May 2001
April 2001
March 2001
February 2001
wine-commits@winehq.org
3 participants
1207 discussions
Start a n
N
ew thread
Juan Lang : crypt32: Add some tests of the SSL policy.
by Alexandre Julliard
29 Oct '09
29 Oct '09
Module: wine Branch: master Commit: 2fbb736e010067b017368aac85dc34e1766347cb URL:
http://source.winehq.org/git/wine.git/?a=commit;h=2fbb736e010067b017368aac8…
Author: Juan Lang <juan.lang(a)gmail.com> Date: Wed Oct 28 09:10:29 2009 -0700 crypt32: Add some tests of the SSL policy. --- dlls/crypt32/tests/chain.c | 136 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 136 insertions(+), 0 deletions(-) diff --git a/dlls/crypt32/tests/chain.c b/dlls/crypt32/tests/chain.c index ddc9ac5..10cea4d 100644 --- a/dlls/crypt32/tests/chain.c +++ b/dlls/crypt32/tests/chain.c @@ -1973,6 +1973,8 @@ static ChainCheck chainCheckNoStore[] = { /* Wednesday, Oct 1, 2007 */ static SYSTEMTIME oct2007 = { 2007, 10, 1, 1, 0, 0, 0, 0 }; +/* Wednesday, Oct 28, 2009 */ +static SYSTEMTIME oct2009 = { 2009, 10, 3, 28, 0, 0, 0, 0 }; static void testGetCertChain(void) { @@ -2139,6 +2141,52 @@ static const ChainPolicyCheck basePolicyCheck[] = { { 0, CERT_E_UNTRUSTEDROOT, 0, 0, NULL }, NULL, 0 }, }; +static const ChainPolicyCheck sslPolicyCheck[] = { + { { sizeof(chain0) / sizeof(chain0[0]), chain0 }, + { 0, CERT_E_UNTRUSTEDROOT, 0, 1, NULL }, NULL, 0 }, + { { sizeof(chain1) / sizeof(chain1[0]), chain1 }, + { 0, TRUST_E_CERT_SIGNATURE, 0, 0, NULL }, NULL, 0 }, + { { sizeof(chain2) / sizeof(chain2[0]), chain2 }, + { 0, CERT_E_UNTRUSTEDROOT, 0, 1, NULL }, NULL, 0 }, + { { sizeof(chain3) / sizeof(chain3[0]), chain3 }, + { 0, CERT_E_UNTRUSTEDROOT, 0, 1, NULL }, NULL, 0 }, + { { sizeof(chain4) / sizeof(chain4[0]), chain4 }, + { 0, CERT_E_UNTRUSTEDROOT, 0, 2, NULL }, NULL, 0 }, + { { sizeof(chain5) / sizeof(chain5[0]), chain5 }, + { 0, CERT_E_UNTRUSTEDROOT, 0, 1, NULL }, NULL, 0 }, + { { sizeof(chain6) / sizeof(chain6[0]), chain6 }, + { 0, CERT_E_UNTRUSTEDROOT, 0, 1, NULL }, NULL, 0 }, + { { sizeof(chain7) / sizeof(chain7[0]), chain7 }, + { 0, CERT_E_UNTRUSTEDROOT, 0, 1, NULL }, NULL, 0 }, + { { sizeof(chain8) / sizeof(chain8[0]), chain8 }, + { 0, CERT_E_UNTRUSTEDROOT, 0, 2, NULL }, NULL, 0 }, + { { sizeof(chain9) / sizeof(chain9[0]), chain9 }, + { 0, CERT_E_UNTRUSTEDROOT, 0, -1, NULL }, NULL, 0 }, + { { sizeof(chain10) / sizeof(chain10[0]), chain10 }, + { 0, CERT_E_UNTRUSTEDROOT, 0, 1, NULL }, NULL, 0 }, + { { sizeof(chain11) / sizeof(chain11[0]), chain11 }, + { 0, CERT_E_UNTRUSTEDROOT, 0, 1, NULL }, NULL, 0 }, + { { sizeof(chain12) / sizeof(chain12[0]), chain12 }, + { 0, TRUST_E_CERT_SIGNATURE, 0, 1, NULL }, NULL, 0 }, + { { sizeof(selfSignedChain) / sizeof(selfSignedChain[0]), selfSignedChain }, + { 0, CERT_E_UNTRUSTEDROOT, 0, 0, NULL }, NULL, 0 }, +}; + +static const ChainPolicyCheck sslPolicyCheckWithMatchingNameExpired = { + { sizeof(googleChain) / sizeof(googleChain[0]), googleChain }, + { 0, CERT_E_EXPIRED, 0, 0, NULL}, NULL, 0 +}; + +static const ChainPolicyCheck sslPolicyCheckWithMatchingName = { + { sizeof(googleChain) / sizeof(googleChain[0]), googleChain }, + { 0, 0, -1, -1, NULL}, NULL, 0 +}; + +static const ChainPolicyCheck sslPolicyCheckWithoutMatchingName = { + { sizeof(iTunesChain) / sizeof(iTunesChain[0]), iTunesChain }, + { 0, CERT_E_CN_NO_MATCH, 0, 0, NULL}, NULL, 0 +}; + static const ChainPolicyCheck authenticodePolicyCheck[] = { { { sizeof(chain0) / sizeof(chain0[0]), chain0 }, { 0, CERT_E_UNTRUSTEDROOT, 0, 1, NULL }, NULL, 0 }, @@ -2312,6 +2360,93 @@ static void checkChainPolicyStatus(LPCSTR policy, const ChainPolicyCheck *check, } } +static void check_ssl_policy(void) +{ + DWORD i; + CERT_CHAIN_POLICY_PARA policyPara = { 0 }; + SSL_EXTRA_CERT_CHAIN_POLICY_PARA sslPolicyPara = { { 0 } }; + WCHAR winehq[] = { 'w','i','n','e','h','q','.','o','r','g',0 }; + WCHAR google_dot_com[] = { 'w','w','w','.','g','o','o','g','l','e','.', + 'c','o','m',0 }; + + /* Check ssl policy with no parameter */ + for (i = 0; + i < sizeof(sslPolicyCheck) / sizeof(sslPolicyCheck[0]); i++) + checkChainPolicyStatus(CERT_CHAIN_POLICY_SSL, &sslPolicyCheck[i], i, + &oct2007, NULL); + /* Check again with a policy parameter that specifies nothing */ + for (i = 0; + i < sizeof(sslPolicyCheck) / sizeof(sslPolicyCheck[0]); i++) + checkChainPolicyStatus(CERT_CHAIN_POLICY_SSL, &sslPolicyCheck[i], i, + &oct2007, &policyPara); + /* Check yet again, but specify an empty SSL_EXTRA_CERT_CHAIN_POLICY_PARA + * argument. + */ + policyPara.pvExtraPolicyPara = &sslPolicyPara; + for (i = 0; + i < sizeof(sslPolicyCheck) / sizeof(sslPolicyCheck[0]); i++) + checkChainPolicyStatus(CERT_CHAIN_POLICY_SSL, &sslPolicyCheck[i], i, + &oct2007, &policyPara); + /* And again, but specify the auth type as a client */ + sslPolicyPara.dwAuthType = AUTHTYPE_CLIENT; + for (i = 0; + i < sizeof(sslPolicyCheck) / sizeof(sslPolicyCheck[0]); i++) + checkChainPolicyStatus(CERT_CHAIN_POLICY_SSL, &sslPolicyCheck[i], i, + &oct2007, &policyPara); + /* And again, but specify the auth type as a server */ + sslPolicyPara.dwAuthType = AUTHTYPE_SERVER; + for (i = 0; + i < sizeof(sslPolicyCheck) / sizeof(sslPolicyCheck[0]); i++) + checkChainPolicyStatus(CERT_CHAIN_POLICY_SSL, &sslPolicyCheck[i], i, + &oct2007, &policyPara); + /* And again authenticating a client, but specify the size of the policy + * parameter. + */ + sslPolicyPara.cbSize = sizeof(sslPolicyCheck); + sslPolicyPara.dwAuthType = AUTHTYPE_CLIENT; + for (i = 0; + i < sizeof(sslPolicyCheck) / sizeof(sslPolicyCheck[0]); i++) + checkChainPolicyStatus(CERT_CHAIN_POLICY_SSL, &sslPolicyCheck[i], i, + &oct2007, &policyPara); + /* One more time authenticating a client, but specify
winehq.org
as the + * server name. + */ + sslPolicyPara.pwszServerName = winehq; + for (i = 0; + i < sizeof(sslPolicyCheck) / sizeof(sslPolicyCheck[0]); i++) + checkChainPolicyStatus(CERT_CHAIN_POLICY_SSL, &sslPolicyCheck[i], i, + &oct2007, &policyPara); + /* And again authenticating a server, still specifying
winehq.org
as the + * server name. + */ + sslPolicyPara.dwAuthType = AUTHTYPE_SERVER; + for (i = 0; + i < sizeof(sslPolicyCheck) / sizeof(sslPolicyCheck[0]); i++) + checkChainPolicyStatus(CERT_CHAIN_POLICY_SSL, &sslPolicyCheck[i], i, + &oct2007, &policyPara); + /* And again authenticating a server, this time specifying the size of the + * policy param. + */ + policyPara.cbSize = sizeof(policyPara); + for (i = 0; + i < sizeof(sslPolicyCheck) / sizeof(sslPolicyCheck[0]); i++) + checkChainPolicyStatus(CERT_CHAIN_POLICY_SSL, &sslPolicyCheck[i], i, + &oct2007, &policyPara); + /* Yet again, but checking the iTunes chain, which contains a name + * extension. + */ + checkChainPolicyStatus(CERT_CHAIN_POLICY_SSL, + &sslPolicyCheckWithoutMatchingName, 0, &oct2007, &policyPara); + /* And again, but checking the Google chain at a bad date */ + sslPolicyPara.pwszServerName = google_dot_com; + checkChainPolicyStatus(CERT_CHAIN_POLICY_SSL, + &sslPolicyCheckWithMatchingNameExpired, 0, &oct2007, &policyPara); + /* And again, but checking the Google chain at a good date */ + sslPolicyPara.pwszServerName = google_dot_com; + checkChainPolicyStatus(CERT_CHAIN_POLICY_SSL, + &sslPolicyCheckWithMatchingName, 0, &oct2009, &policyPara); +} + static void testVerifyCertChainPolicy(void) { BOOL ret; @@ -2378,6 +2513,7 @@ static void testVerifyCertChainPolicy(void) i < sizeof(basePolicyCheck) / sizeof(basePolicyCheck[0]); i++) checkChainPolicyStatus(CERT_CHAIN_POLICY_BASE, &basePolicyCheck[i], i, &oct2007, NULL); + check_ssl_policy(); /* The authenticode policy doesn't seem to check anything beyond the base * policy. It might check for chains signed by the MS test cert, but none * of these chains is.
1
0
0
0
Juan Lang : crypt32: Allow the caller of checkChainPolicyStatus to specify the date to test with and additional policy parameters .
by Alexandre Julliard
29 Oct '09
29 Oct '09
Module: wine Branch: master Commit: facd2e975a897addca4c6d07d290b85da11ff0b5 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=facd2e975a897addca4c6d07d…
Author: Juan Lang <juan.lang(a)gmail.com> Date: Wed Oct 28 09:07:39 2009 -0700 crypt32: Allow the caller of checkChainPolicyStatus to specify the date to test with and additional policy parameters. --- dlls/crypt32/tests/chain.c | 14 ++++++++------ 1 files changed, 8 insertions(+), 6 deletions(-) diff --git a/dlls/crypt32/tests/chain.c b/dlls/crypt32/tests/chain.c index 94debf4..ddc9ac5 100644 --- a/dlls/crypt32/tests/chain.c +++ b/dlls/crypt32/tests/chain.c @@ -2217,15 +2217,16 @@ static const char *num_to_str(WORD num) } static void checkChainPolicyStatus(LPCSTR policy, const ChainPolicyCheck *check, - DWORD testIndex) + DWORD testIndex, SYSTEMTIME *sysTime, PCERT_CHAIN_POLICY_PARA para) + { - PCCERT_CHAIN_CONTEXT chain = getChain(&check->certs, 0, TRUE, &oct2007, + PCCERT_CHAIN_CONTEXT chain = getChain(&check->certs, 0, TRUE, sysTime, check->todo, testIndex); if (chain) { CERT_CHAIN_POLICY_STATUS policyStatus = { 0 }; - BOOL ret = pCertVerifyCertificateChainPolicy(policy, chain, NULL, + BOOL ret = pCertVerifyCertificateChainPolicy(policy, chain, para, &policyStatus); if (check->todo & TODO_POLICY) @@ -2375,7 +2376,8 @@ static void testVerifyCertChainPolicy(void) for (i = 0; i < sizeof(basePolicyCheck) / sizeof(basePolicyCheck[0]); i++) - checkChainPolicyStatus(CERT_CHAIN_POLICY_BASE, &basePolicyCheck[i], i); + checkChainPolicyStatus(CERT_CHAIN_POLICY_BASE, &basePolicyCheck[i], i, + &oct2007, NULL); /* The authenticode policy doesn't seem to check anything beyond the base * policy. It might check for chains signed by the MS test cert, but none * of these chains is. @@ -2383,12 +2385,12 @@ static void testVerifyCertChainPolicy(void) for (i = 0; i < sizeof(authenticodePolicyCheck) / sizeof(authenticodePolicyCheck[0]); i++) checkChainPolicyStatus(CERT_CHAIN_POLICY_AUTHENTICODE, - &authenticodePolicyCheck[i], i); + &authenticodePolicyCheck[i], i, &oct2007, NULL); for (i = 0; i < sizeof(basicConstraintsPolicyCheck) / sizeof(basicConstraintsPolicyCheck[0]); i++) checkChainPolicyStatus(CERT_CHAIN_POLICY_BASIC_CONSTRAINTS, - &basicConstraintsPolicyCheck[i], i); + &basicConstraintsPolicyCheck[i], i, &oct2007, NULL); } START_TEST(chain)
1
0
0
0
Juan Lang : crypt32: Add the Google website's cert to tests.
by Alexandre Julliard
29 Oct '09
29 Oct '09
Module: wine Branch: master Commit: 3669be9550048bd7aa35934ebf875d88d651884c URL:
http://source.winehq.org/git/wine.git/?a=commit;h=3669be9550048bd7aa35934eb…
Author: Juan Lang <juan.lang(a)gmail.com> Date: Tue Oct 27 15:11:22 2009 -0700 crypt32: Add the Google website's cert to tests. --- dlls/crypt32/tests/chain.c | 135 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 135 insertions(+), 0 deletions(-) Diff:
http://source.winehq.org/git/wine.git/?a=commitdiff;h=3669be9550048bd7aa359…
1
0
0
0
Juan Lang : crypt32: Support IPv6 addresses in name constraint comparison.
by Alexandre Julliard
29 Oct '09
29 Oct '09
Module: wine Branch: master Commit: 24399bd3599101bc8f1600cf0c13a54483662bcc URL:
http://source.winehq.org/git/wine.git/?a=commit;h=24399bd3599101bc8f1600cf0…
Author: Juan Lang <juan.lang(a)gmail.com> Date: Fri Oct 23 14:38:47 2009 -0700 crypt32: Support IPv6 addresses in name constraint comparison. --- dlls/crypt32/chain.c | 21 +++++++++++++++++++-- 1 files changed, 19 insertions(+), 2 deletions(-) diff --git a/dlls/crypt32/chain.c b/dlls/crypt32/chain.c index 1b26bf3..e8f9de3 100644 --- a/dlls/crypt32/chain.c +++ b/dlls/crypt32/chain.c @@ -548,9 +548,13 @@ static BOOL ip_address_matches(const CRYPT_DATA_BLOB *constraint, TRACE("(%d, %p), (%d, %p)\n", constraint->cbData, constraint->pbData, name->cbData, name->pbData); - if (constraint->cbData != sizeof(DWORD) * 2) + /* RFC5280, section 4.2.1.10, iPAddress syntax: either 8 or 32 bytes, for + * IPv4 or IPv6 addresses, respectively. + */ + if (constraint->cbData != sizeof(DWORD) * 2 && constraint->cbData != 32) *trustErrorStatus |= CERT_TRUST_INVALID_NAME_CONSTRAINTS; - else if (name->cbData == sizeof(DWORD)) + else if (name->cbData == sizeof(DWORD) && + constraint->cbData == sizeof(DWORD) * 2) { DWORD subnet, mask, addr; @@ -562,6 +566,19 @@ static BOOL ip_address_matches(const CRYPT_DATA_BLOB *constraint, */ match = (subnet & mask) == (addr & mask); } + else if (name->cbData == 16 && constraint->cbData == 32) + { + const BYTE *subnet, *mask, *addr; + DWORD i; + + subnet = constraint->pbData; + mask = constraint->pbData + 16; + addr = name->pbData; + match = TRUE; + for (i = 0; match && i < 16; i++) + if ((subnet[i] & mask[i]) != (addr[i] & mask[i])) + match = FALSE; + } /* else: name is wrong size, no match */ return match;
1
0
0
0
Juan Lang : crypt32: Trace netscape cert type extension.
by Alexandre Julliard
29 Oct '09
29 Oct '09
Module: wine Branch: master Commit: bcb4bc6be3ca1b1245dc4e4750179f04f4b9ef26 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=bcb4bc6be3ca1b1245dc4e475…
Author: Juan Lang <juan.lang(a)gmail.com> Date: Fri Oct 23 14:11:27 2009 -0700 crypt32: Trace netscape cert type extension. --- dlls/crypt32/chain.c | 28 ++++++++++++++++++++++++++++ 1 files changed, 28 insertions(+), 0 deletions(-) diff --git a/dlls/crypt32/chain.c b/dlls/crypt32/chain.c index 5e09cd7..1b26bf3 100644 --- a/dlls/crypt32/chain.c +++ b/dlls/crypt32/chain.c @@ -936,6 +936,32 @@ static void dump_enhanced_key_usage(const CERT_EXTENSION *ext) } } +static void dump_netscape_cert_type(const CERT_EXTENSION *ext) +{ + CRYPT_BIT_BLOB usage; + DWORD size = sizeof(usage); + + if (CryptDecodeObjectEx(X509_ASN_ENCODING, X509_BITS, ext->Value.pbData, + ext->Value.cbData, CRYPT_DECODE_NOCOPY_FLAG, NULL, &usage, &size)) + { +#define trace_cert_type_bit(bits, bit) \ + if ((bits) & (bit)) TRACE_(chain)("%s\n", #bit) + if (usage.cbData) + { + trace_cert_type_bit(usage.pbData[0], + NETSCAPE_SSL_CLIENT_AUTH_CERT_TYPE); + trace_cert_type_bit(usage.pbData[0], + NETSCAPE_SSL_SERVER_AUTH_CERT_TYPE); + trace_cert_type_bit(usage.pbData[0], NETSCAPE_SMIME_CERT_TYPE); + trace_cert_type_bit(usage.pbData[0], NETSCAPE_SIGN_CERT_TYPE); + trace_cert_type_bit(usage.pbData[0], NETSCAPE_SSL_CA_CERT_TYPE); + trace_cert_type_bit(usage.pbData[0], NETSCAPE_SMIME_CA_CERT_TYPE); + trace_cert_type_bit(usage.pbData[0], NETSCAPE_SIGN_CA_CERT_TYPE); + } +#undef trace_cert_type_bit + } +} + static void dump_extension(const CERT_EXTENSION *ext) { TRACE_(chain)("%s (%scritical)\n", debugstr_a(ext->pszObjId), @@ -960,6 +986,8 @@ static void dump_extension(const CERT_EXTENSION *ext) dump_cert_policies(ext); else if (!strcmp(ext->pszObjId, szOID_ENHANCED_KEY_USAGE)) dump_enhanced_key_usage(ext); + else if (!strcmp(ext->pszObjId, szOID_NETSCAPE_CERT_TYPE)) + dump_netscape_cert_type(ext); } static LPCWSTR filetime_to_str(const FILETIME *time)
1
0
0
0
Juan Lang : crypt32: Trace directory name of alt name entries.
by Alexandre Julliard
29 Oct '09
29 Oct '09
Module: wine Branch: master Commit: d664edb3221f6a42f9261861addd7582cbb371e0 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=d664edb3221f6a42f9261861a…
Author: Juan Lang <juan.lang(a)gmail.com> Date: Fri Oct 23 13:53:26 2009 -0700 crypt32: Trace directory name of alt name entries. --- dlls/crypt32/chain.c | 23 +++++++++++++++++++++-- 1 files changed, 21 insertions(+), 2 deletions(-) diff --git a/dlls/crypt32/chain.c b/dlls/crypt32/chain.c index 160bcec..5e09cd7 100644 --- a/dlls/crypt32/chain.c +++ b/dlls/crypt32/chain.c @@ -725,8 +725,26 @@ static void CRYPT_CheckChainNameConstraints(PCERT_SIMPLE_CHAIN chain) } } +static LPWSTR name_value_to_str(const CERT_NAME_BLOB *name) +{ + DWORD len = cert_name_to_str_with_indent(X509_ASN_ENCODING, 0, name, + CERT_SIMPLE_NAME_STR, NULL, 0); + LPWSTR str = NULL; + + if (len) + { + str = CryptMemAlloc(len * sizeof(WCHAR)); + if (str) + cert_name_to_str_with_indent(X509_ASN_ENCODING, 0, name, + CERT_SIMPLE_NAME_STR, str, len); + } + return str; +} + static void dump_alt_name_entry(const CERT_ALT_NAME_ENTRY *entry) { + LPWSTR str; + switch (entry->dwAltNameChoice) { case CERT_ALT_NAME_OTHER_NAME: @@ -742,8 +760,9 @@ static void dump_alt_name_entry(const CERT_ALT_NAME_ENTRY *entry) debugstr_w(entry->u.pwszDNSName)); break; case CERT_ALT_NAME_DIRECTORY_NAME: - TRACE_(chain)("CERT_ALT_NAME_DIRECTORY_NAME: %d bytes\n", - entry->u.DirectoryName.cbData); + str = name_value_to_str(&entry->u.DirectoryName); + TRACE_(chain)("CERT_ALT_NAME_DIRECTORY_NAME: %s\n", debugstr_w(str)); + CryptMemFree(str); break; case CERT_ALT_NAME_URL: TRACE_(chain)("CERT_ALT_NAME_URL: %s\n", debugstr_w(entry->u.pwszURL));
1
0
0
0
Juan Lang : crypt32: Correct a prototype.
by Alexandre Julliard
29 Oct '09
29 Oct '09
Module: wine Branch: master Commit: 1a194449ccb033b35bc9a62fc719aa73dee5f722 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=1a194449ccb033b35bc9a62fc…
Author: Juan Lang <juan.lang(a)gmail.com> Date: Fri Oct 23 13:51:02 2009 -0700 crypt32: Correct a prototype. --- dlls/crypt32/crypt32_private.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/dlls/crypt32/crypt32_private.h b/dlls/crypt32/crypt32_private.h index a5759a2..5e5b540 100644 --- a/dlls/crypt32/crypt32_private.h +++ b/dlls/crypt32/crypt32_private.h @@ -295,7 +295,7 @@ void CRYPT_FixKeyProvInfoPointers(PCRYPT_KEY_PROV_INFO info); */ DWORD cert_name_to_str_with_indent(DWORD dwCertEncodingType, DWORD indent, - PCERT_NAME_BLOB pName, DWORD dwStrType, LPWSTR psz, DWORD csz); + const CERT_NAME_BLOB *pName, DWORD dwStrType, LPWSTR psz, DWORD csz); /** * Context functions
1
0
0
0
Juan Lang : crypt32: Accept either the subject alt name 2 or subject alt name extensions, and prefer the former when both are present.
by Alexandre Julliard
29 Oct '09
29 Oct '09
Module: wine Branch: master Commit: 6a575d697e3fcfc4ec6a2deae1b9d20bcb2aaadb URL:
http://source.winehq.org/git/wine.git/?a=commit;h=6a575d697e3fcfc4ec6a2deae…
Author: Juan Lang <juan.lang(a)gmail.com> Date: Fri Oct 23 11:54:05 2009 -0700 crypt32: Accept either the subject alt name 2 or subject alt name extensions, and prefer the former when both are present. --- dlls/crypt32/chain.c | 10 ++++++++-- 1 files changed, 8 insertions(+), 2 deletions(-) diff --git a/dlls/crypt32/chain.c b/dlls/crypt32/chain.c index 547c74c..160bcec 100644 --- a/dlls/crypt32/chain.c +++ b/dlls/crypt32/chain.c @@ -618,8 +618,12 @@ static void CRYPT_CheckNameConstraints( { CERT_EXTENSION *ext; - if ((ext = CertFindExtension(szOID_SUBJECT_ALT_NAME, cert->cExtension, - cert->rgExtension))) + ext = CertFindExtension(szOID_SUBJECT_ALT_NAME2, cert->cExtension, + cert->rgExtension); + if (!ext) + ext = CertFindExtension(szOID_SUBJECT_ALT_NAME, cert->cExtension, + cert->rgExtension); + if (ext) { CERT_ALT_NAME_INFO *subjectName; DWORD size; @@ -1088,6 +1092,8 @@ static BOOL CRYPT_CriticalExtensionsSupported(PCCERT_CONTEXT cert) ret = TRUE; else if (!strcmp(oid, szOID_SUBJECT_ALT_NAME)) ret = TRUE; + else if (!strcmp(oid, szOID_SUBJECT_ALT_NAME2)) + ret = TRUE; else { FIXME("unsupported critical extension %s\n",
1
0
0
0
Juan Lang : crypt32: Trace the alt name extensions.
by Alexandre Julliard
29 Oct '09
29 Oct '09
Module: wine Branch: master Commit: 1e953ef12ef30510e8387067a795fbc1ce055da3 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=1e953ef12ef30510e8387067a…
Author: Juan Lang <juan.lang(a)gmail.com> Date: Fri Oct 23 11:51:40 2009 -0700 crypt32: Trace the alt name extensions. --- dlls/crypt32/chain.c | 101 +++++++++++++++++++++++++++++++------------------ 1 files changed, 64 insertions(+), 37 deletions(-) diff --git a/dlls/crypt32/chain.c b/dlls/crypt32/chain.c index cbbd677..547c74c 100644 --- a/dlls/crypt32/chain.c +++ b/dlls/crypt32/chain.c @@ -721,6 +721,61 @@ static void CRYPT_CheckChainNameConstraints(PCERT_SIMPLE_CHAIN chain) } } +static void dump_alt_name_entry(const CERT_ALT_NAME_ENTRY *entry) +{ + switch (entry->dwAltNameChoice) + { + case CERT_ALT_NAME_OTHER_NAME: + TRACE_(chain)("CERT_ALT_NAME_OTHER_NAME, oid = %s\n", + debugstr_a(entry->u.pOtherName->pszObjId)); + break; + case CERT_ALT_NAME_RFC822_NAME: + TRACE_(chain)("CERT_ALT_NAME_RFC822_NAME: %s\n", + debugstr_w(entry->u.pwszRfc822Name)); + break; + case CERT_ALT_NAME_DNS_NAME: + TRACE_(chain)("CERT_ALT_NAME_DNS_NAME: %s\n", + debugstr_w(entry->u.pwszDNSName)); + break; + case CERT_ALT_NAME_DIRECTORY_NAME: + TRACE_(chain)("CERT_ALT_NAME_DIRECTORY_NAME: %d bytes\n", + entry->u.DirectoryName.cbData); + break; + case CERT_ALT_NAME_URL: + TRACE_(chain)("CERT_ALT_NAME_URL: %s\n", debugstr_w(entry->u.pwszURL)); + break; + case CERT_ALT_NAME_IP_ADDRESS: + TRACE_(chain)("CERT_ALT_NAME_IP_ADDRESS: %d bytes\n", + entry->u.IPAddress.cbData); + break; + case CERT_ALT_NAME_REGISTERED_ID: + TRACE_(chain)("CERT_ALT_NAME_REGISTERED_ID: %s\n", + debugstr_a(entry->u.pszRegisteredID)); + break; + default: + TRACE_(chain)("dwAltNameChoice = %d\n", entry->dwAltNameChoice); + } +} + +static void dump_alt_name(LPCSTR type, const CERT_EXTENSION *ext) +{ + CERT_ALT_NAME_INFO *name; + DWORD size; + + TRACE_(chain)("%s:\n", type); + if (CryptDecodeObjectEx(X509_ASN_ENCODING, X509_ALTERNATE_NAME, + ext->Value.pbData, ext->Value.cbData, + CRYPT_DECODE_ALLOC_FLAG | CRYPT_DECODE_NOCOPY_FLAG, NULL, &name, &size)) + { + DWORD i; + + TRACE_(chain)("%d alt name entries:\n", name->cAltEntry); + for (i = 0; i < name->cAltEntry; i++) + dump_alt_name_entry(&name->rgAltEntry[i]); + LocalFree(name); + } +} + static void dump_basic_constraints(const CERT_EXTENSION *ext) { CERT_BASIC_CONSTRAINTS_INFO *info; @@ -782,42 +837,6 @@ static void dump_key_usage(const CERT_EXTENSION *ext) } } -static void dump_alt_name_entry(const CERT_ALT_NAME_ENTRY *entry) -{ - switch (entry->dwAltNameChoice) - { - case CERT_ALT_NAME_OTHER_NAME: - TRACE_(chain)("CERT_ALT_NAME_OTHER_NAME, oid = %s\n", - debugstr_a(entry->u.pOtherName->pszObjId)); - break; - case CERT_ALT_NAME_RFC822_NAME: - TRACE_(chain)("CERT_ALT_NAME_RFC822_NAME: %s\n", - debugstr_w(entry->u.pwszRfc822Name)); - break; - case CERT_ALT_NAME_DNS_NAME: - TRACE_(chain)("CERT_ALT_NAME_DNS_NAME: %s\n", - debugstr_w(entry->u.pwszDNSName)); - break; - case CERT_ALT_NAME_DIRECTORY_NAME: - TRACE_(chain)("CERT_ALT_NAME_DIRECTORY_NAME: %d bytes\n", - entry->u.DirectoryName.cbData); - break; - case CERT_ALT_NAME_URL: - TRACE_(chain)("CERT_ALT_NAME_URL: %s\n", debugstr_w(entry->u.pwszURL)); - break; - case CERT_ALT_NAME_IP_ADDRESS: - TRACE_(chain)("CERT_ALT_NAME_IP_ADDRESS: %d bytes\n", - entry->u.IPAddress.cbData); - break; - case CERT_ALT_NAME_REGISTERED_ID: - TRACE_(chain)("CERT_ALT_NAME_REGISTERED_ID: %s\n", - debugstr_a(entry->u.pszRegisteredID)); - break; - default: - TRACE_(chain)("dwAltNameChoice = %d\n", entry->dwAltNameChoice); - } -} - static void dump_general_subtree(const CERT_GENERAL_SUBTREE *subtree) { dump_alt_name_entry(&subtree->Base); @@ -898,10 +917,18 @@ static void dump_extension(const CERT_EXTENSION *ext) { TRACE_(chain)("%s (%scritical)\n", debugstr_a(ext->pszObjId), ext->fCritical ? "" : "not "); - if (!strcmp(ext->pszObjId, szOID_BASIC_CONSTRAINTS)) + if (!strcmp(ext->pszObjId, szOID_SUBJECT_ALT_NAME)) + dump_alt_name("subject alt name", ext); + else if (!strcmp(ext->pszObjId, szOID_ISSUER_ALT_NAME)) + dump_alt_name("issuer alt name", ext); + else if (!strcmp(ext->pszObjId, szOID_BASIC_CONSTRAINTS)) dump_basic_constraints(ext); else if (!strcmp(ext->pszObjId, szOID_KEY_USAGE)) dump_key_usage(ext); + else if (!strcmp(ext->pszObjId, szOID_SUBJECT_ALT_NAME2)) + dump_alt_name("subject alt name 2", ext); + else if (!strcmp(ext->pszObjId, szOID_ISSUER_ALT_NAME2)) + dump_alt_name("issuer alt name 2", ext); else if (!strcmp(ext->pszObjId, szOID_BASIC_CONSTRAINTS2)) dump_basic_constraints2(ext); else if (!strcmp(ext->pszObjId, szOID_NAME_CONSTRAINTS))
1
0
0
0
Juan Lang : crypt32: Trace name constraints extension.
by Alexandre Julliard
29 Oct '09
29 Oct '09
Module: wine Branch: master Commit: bf42ce9c904c9551f89835630052983b8c09799c URL:
http://source.winehq.org/git/wine.git/?a=commit;h=bf42ce9c904c9551f89835630…
Author: Juan Lang <juan.lang(a)gmail.com> Date: Fri Oct 23 11:38:03 2009 -0700 crypt32: Trace name constraints extension. --- dlls/crypt32/chain.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 69 insertions(+), 0 deletions(-) diff --git a/dlls/crypt32/chain.c b/dlls/crypt32/chain.c index 0380687..cbbd677 100644 --- a/dlls/crypt32/chain.c +++ b/dlls/crypt32/chain.c @@ -782,6 +782,73 @@ static void dump_key_usage(const CERT_EXTENSION *ext) } } +static void dump_alt_name_entry(const CERT_ALT_NAME_ENTRY *entry) +{ + switch (entry->dwAltNameChoice) + { + case CERT_ALT_NAME_OTHER_NAME: + TRACE_(chain)("CERT_ALT_NAME_OTHER_NAME, oid = %s\n", + debugstr_a(entry->u.pOtherName->pszObjId)); + break; + case CERT_ALT_NAME_RFC822_NAME: + TRACE_(chain)("CERT_ALT_NAME_RFC822_NAME: %s\n", + debugstr_w(entry->u.pwszRfc822Name)); + break; + case CERT_ALT_NAME_DNS_NAME: + TRACE_(chain)("CERT_ALT_NAME_DNS_NAME: %s\n", + debugstr_w(entry->u.pwszDNSName)); + break; + case CERT_ALT_NAME_DIRECTORY_NAME: + TRACE_(chain)("CERT_ALT_NAME_DIRECTORY_NAME: %d bytes\n", + entry->u.DirectoryName.cbData); + break; + case CERT_ALT_NAME_URL: + TRACE_(chain)("CERT_ALT_NAME_URL: %s\n", debugstr_w(entry->u.pwszURL)); + break; + case CERT_ALT_NAME_IP_ADDRESS: + TRACE_(chain)("CERT_ALT_NAME_IP_ADDRESS: %d bytes\n", + entry->u.IPAddress.cbData); + break; + case CERT_ALT_NAME_REGISTERED_ID: + TRACE_(chain)("CERT_ALT_NAME_REGISTERED_ID: %s\n", + debugstr_a(entry->u.pszRegisteredID)); + break; + default: + TRACE_(chain)("dwAltNameChoice = %d\n", entry->dwAltNameChoice); + } +} + +static void dump_general_subtree(const CERT_GENERAL_SUBTREE *subtree) +{ + dump_alt_name_entry(&subtree->Base); + TRACE_(chain)("dwMinimum = %d, fMaximum = %d, dwMaximum = %d\n", + subtree->dwMinimum, subtree->fMaximum, subtree->dwMaximum); +} + +static void dump_name_constraints(const CERT_EXTENSION *ext) +{ + CERT_NAME_CONSTRAINTS_INFO *nameConstraints; + DWORD size; + + if (CryptDecodeObjectEx(X509_ASN_ENCODING, X509_NAME_CONSTRAINTS, + ext->Value.pbData, ext->Value.cbData, + CRYPT_DECODE_ALLOC_FLAG | CRYPT_DECODE_NOCOPY_FLAG, NULL, &nameConstraints, + &size)) + { + DWORD i; + + TRACE_(chain)("%d permitted subtrees:\n", + nameConstraints->cPermittedSubtree); + for (i = 0; i < nameConstraints->cPermittedSubtree; i++) + dump_general_subtree(&nameConstraints->rgPermittedSubtree[i]); + TRACE_(chain)("%d excluded subtrees:\n", + nameConstraints->cExcludedSubtree); + for (i = 0; i < nameConstraints->cExcludedSubtree; i++) + dump_general_subtree(&nameConstraints->rgExcludedSubtree[i]); + LocalFree(nameConstraints); + } +} + static void dump_cert_policies(const CERT_EXTENSION *ext) { CERT_POLICIES_INFO *policies; @@ -837,6 +904,8 @@ static void dump_extension(const CERT_EXTENSION *ext) dump_key_usage(ext); else if (!strcmp(ext->pszObjId, szOID_BASIC_CONSTRAINTS2)) dump_basic_constraints2(ext); + else if (!strcmp(ext->pszObjId, szOID_NAME_CONSTRAINTS)) + dump_name_constraints(ext); else if (!strcmp(ext->pszObjId, szOID_CERT_POLICIES)) dump_cert_policies(ext); else if (!strcmp(ext->pszObjId, szOID_ENHANCED_KEY_USAGE))
1
0
0
0
← Newer
1
...
6
7
8
9
10
11
12
...
121
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
Results per page:
10
25
50
100
200