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
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
August 2007
----- 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
1085 discussions
Start a n
N
ew thread
Francois Gouget : gdiplus: Use the gdiplus type, REAL, rather than FLOAT.
by Alexandre Julliard
03 Aug '07
03 Aug '07
Module: wine Branch: master Commit: d76b19abd994e200872e7e70d0791b56ce3a9ab7 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=d76b19abd994e200872e7e70d…
Author: Francois Gouget <fgouget(a)free.fr> Date: Fri Aug 3 00:53:23 2007 +0200 gdiplus: Use the gdiplus type, REAL, rather than FLOAT. --- dlls/gdiplus/gdiplus.c | 2 +- dlls/gdiplus/gdiplus_private.h | 2 +- dlls/gdiplus/pen.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dlls/gdiplus/gdiplus.c b/dlls/gdiplus/gdiplus.c index edbfb1c..9267b90 100644 --- a/dlls/gdiplus/gdiplus.c +++ b/dlls/gdiplus/gdiplus.c @@ -218,7 +218,7 @@ COLORREF ARGB2COLORREF(ARGB color) } /* Like atan2, but puts angle in correct quadrant if dx is 0. */ -FLOAT gdiplus_atan2(FLOAT dy, FLOAT dx) +REAL gdiplus_atan2(REAL dy, REAL dx) { if((dx == 0.0) && (dy != 0.0)) return dy > 0.0 ? M_PI_2 : -M_PI_2; diff --git a/dlls/gdiplus/gdiplus_private.h b/dlls/gdiplus/gdiplus_private.h index 3ce92a1..ee120d9 100644 --- a/dlls/gdiplus/gdiplus_private.h +++ b/dlls/gdiplus/gdiplus_private.h @@ -40,7 +40,7 @@ COLORREF ARGB2COLORREF(ARGB color); extern INT arc2polybezier(GpPointF * points, REAL x1, REAL y1, REAL x2, REAL y2, REAL startAngle, REAL sweepAngle); -extern FLOAT gdiplus_atan2(FLOAT dy, FLOAT dx); +extern REAL gdiplus_atan2(REAL dy, REAL dx); static inline INT roundr(REAL x) { diff --git a/dlls/gdiplus/pen.c b/dlls/gdiplus/pen.c index 388567a..20a44bc 100644 --- a/dlls/gdiplus/pen.c +++ b/dlls/gdiplus/pen.c @@ -84,7 +84,7 @@ GpStatus WINGDIPAPI GdipClonePen(GpPen *pen, GpPen **clonepen) return Ok; } -GpStatus WINGDIPAPI GdipCreatePen1(ARGB color, FLOAT width, GpUnit unit, +GpStatus WINGDIPAPI GdipCreatePen1(ARGB color, REAL width, GpUnit unit, GpPen **pen) { GpPen *gp_pen;
1
0
0
0
Francois Gouget : dnsapi: Add some constants.
by Alexandre Julliard
03 Aug '07
03 Aug '07
Module: wine Branch: master Commit: c3b2258eee21c27276f5eacf66e108e7877555b0 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=c3b2258eee21c27276f5eacf6…
Author: Francois Gouget <fgouget(a)free.fr> Date: Fri Aug 3 00:50:49 2007 +0200 dnsapi: Add some constants. --- include/windns.h | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) diff --git a/include/windns.h b/include/windns.h index 85f38db..1b1a4e1 100644 --- a/include/windns.h +++ b/include/windns.h @@ -163,6 +163,13 @@ typedef struct DWORD IP6Dword[4]; } IP6_ADDRESS, *PIP6_ADDRESS, DNS_IP6_ADDRESS, *PDNS_IP6_ADDRESS; +#define SIZEOF_IP4_ADDRESS 4 +#define IP4_ADDRESS_STRING_LENGTH 16 +#define IP6_ADDRESS_STRING_LENGTH 65 +#define DNS_ADDRESS_STRING_LENGTH IP6_ADDRESS_STRING_LENGTH +#define IP4_ADDRESS_STRING_BUFFER_LENGTH IP4_ADDRESS_STRING_LENGTH +#define IP6_ADDRESS_STRING_BUFFER_LENGTH IP6_ADDRESS_STRING_LENGTH + typedef struct _IP4_ARRAY { DWORD AddrCount;
1
0
0
0
Francois Gouget : dnsapi: Define DNS_STATUS as LONG instead of long to improve Win64 compatibility.
by Alexandre Julliard
03 Aug '07
03 Aug '07
Module: wine Branch: master Commit: 68953ffd7d81b7a31da1961a0ecf65b14f2d7d1a URL:
http://source.winehq.org/git/wine.git/?a=commit;h=68953ffd7d81b7a31da1961a0…
Author: Francois Gouget <fgouget(a)free.fr> Date: Fri Aug 3 00:52:59 2007 +0200 dnsapi: Define DNS_STATUS as LONG instead of long to improve Win64 compatibility. --- dlls/dnsapi/tests/name.c | 2 +- include/windns.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dlls/dnsapi/tests/name.c b/dlls/dnsapi/tests/name.c index 5d74bdd..a4a9098 100644 --- a/dlls/dnsapi/tests/name.c +++ b/dlls/dnsapi/tests/name.c @@ -161,7 +161,7 @@ static void test_DnsValidateName_A( void ) for (i = 0; i < sizeof(test_data) / sizeof(test_data[0]); i++) { status = pDnsValidateName_A( test_data[i].name, test_data[i].format ); - ok( status == test_data[i].status, "%d: \'%s\': got %ld, expected %ld\n", + ok( status == test_data[i].status, "%d: \'%s\': got %d, expected %d\n", i, test_data[i].name, status, test_data[i].status ); } } diff --git a/include/windns.h b/include/windns.h index 9b9f6ba..85f38db 100644 --- a/include/windns.h +++ b/include/windns.h @@ -155,7 +155,7 @@ typedef enum _DnsSection DnsSectionAddtional } DNS_SECTION; -typedef long DNS_STATUS; +typedef LONG DNS_STATUS, *PDNS_STATUS; typedef DWORD IP4_ADDRESS; typedef struct
1
0
0
0
Francois Gouget : d3d9: Declare the D3DPERF_Xxx() functions in d3d9.h.
by Alexandre Julliard
03 Aug '07
03 Aug '07
Module: wine Branch: master Commit: 69bc2af99042edc9f01ea0944816edde65cd840a URL:
http://source.winehq.org/git/wine.git/?a=commit;h=69bc2af99042edc9f01ea0944…
Author: Francois Gouget <fgouget(a)free.fr> Date: Fri Aug 3 00:53:44 2007 +0200 d3d9: Declare the D3DPERF_Xxx() functions in d3d9.h. --- include/d3d9.h | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-) diff --git a/include/d3d9.h b/include/d3d9.h index c6c3004..1eca362 100644 --- a/include/d3d9.h +++ b/include/d3d9.h @@ -1479,10 +1479,19 @@ DECLARE_INTERFACE_(IDirect3DDevice9,IUnknown) #define IDirect3DDevice9_CreateQuery(p,a,b) (p)->CreateQuery(a,b) #endif + #ifdef __cplusplus extern "C" { #endif /* defined(__cplusplus) */ +int WINAPI D3DPERF_BeginEvent(D3DCOLOR,LPCWSTR); +int WINAPI D3DPERF_EndEvent(void); +DWORD WINAPI D3DPERF_GetStatus(void); +BOOL WINAPI D3DPERF_QueryRepeatFrame(void); +void WINAPI D3DPERF_SetMarker(D3DCOLOR,LPCWSTR); +void WINAPI D3DPERF_SetOptions(DWORD); +void WINAPI D3DPERF_SetRegion(D3DCOLOR,LPCWSTR); + /* Define the main entrypoint as well */ IDirect3D9* WINAPI Direct3DCreate9(UINT SDKVersion);
1
0
0
0
Andrew Talbot : oleaut32: Constify some variables.
by Alexandre Julliard
03 Aug '07
03 Aug '07
Module: wine Branch: master Commit: 61fde63fcea12fe406d94958a283ea14d33ed985 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=61fde63fcea12fe406d94958a…
Author: Andrew Talbot <Andrew.Talbot(a)talbotville.com> Date: Thu Aug 2 23:13:10 2007 +0100 oleaut32: Constify some variables. --- dlls/oleaut32/ungif.c | 6 +++--- dlls/oleaut32/usrmarshal.c | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/dlls/oleaut32/ungif.c b/dlls/oleaut32/ungif.c index 415e7bf..9040632 100644 --- a/dlls/oleaut32/ungif.c +++ b/dlls/oleaut32/ungif.c @@ -107,7 +107,7 @@ typedef struct GifFilePrivateType { static int DGifGetWord(GifFileType *GifFile, GifWord *Word); static int DGifSetupDecompress(GifFileType *GifFile); static int DGifDecompressLine(GifFileType *GifFile, GifPixelType *Line, int LineLen); -static int DGifGetPrefixChar(GifPrefixType *Prefix, int Code, int ClearCode); +static int DGifGetPrefixChar(const GifPrefixType *Prefix, int Code, int ClearCode); static int DGifDecompressInput(GifFileType *GifFile, int *Code); static int DGifBufferedInput(GifFileType *GifFile, GifByteType *Buf, GifByteType *NextByte); @@ -192,7 +192,7 @@ FreeMapObject(ColorMapObject * Object) { static int AddExtensionBlock(SavedImage * New, int Len, - unsigned char ExtData[]) { + const unsigned char ExtData[]) { ExtensionBlock *ep; @@ -723,7 +723,7 @@ DGifDecompressLine(GifFileType * GifFile, * the maximum possible if image O.k. - LZ_MAX_CODE times. *****************************************************************************/ static int -DGifGetPrefixChar(GifPrefixType *Prefix, +DGifGetPrefixChar(const GifPrefixType *Prefix, int Code, int ClearCode) { diff --git a/dlls/oleaut32/usrmarshal.c b/dlls/oleaut32/usrmarshal.c index a6ef030..9976334 100644 --- a/dlls/oleaut32/usrmarshal.c +++ b/dlls/oleaut32/usrmarshal.c @@ -268,7 +268,7 @@ static unsigned int get_type_size(ULONG *pFlags, const VARIANT *pvar) } } -static unsigned int get_type_alignment(ULONG *pFlags, VARIANT *pvar) +static unsigned int get_type_alignment(ULONG *pFlags, const VARIANT *pvar) { unsigned int size = get_type_size(pFlags, pvar); if(V_VT(pvar) & VT_BYREF) return 3; @@ -333,7 +333,8 @@ static ULONG wire_extra_user_size(ULONG *pFlags, ULONG Start, VARIANT *pvar) } /* helper: called for VT_DISPATCH variants to marshal the IDispatch* into the buffer. returns Buffer on failure, new position otherwise */ -static unsigned char* interface_variant_marshal(ULONG *pFlags, unsigned char *Buffer, REFIID riid, IUnknown *punk) +static unsigned char* interface_variant_marshal(const ULONG *pFlags, unsigned char *Buffer, + REFIID riid, IUnknown *punk) { IStream *working; HGLOBAL working_mem;
1
0
0
0
Juan Lang : crypt32: Support finding certificates by cert id.
by Alexandre Julliard
03 Aug '07
03 Aug '07
Module: wine Branch: master Commit: 0cc08cccb92cf974cd50074bed2f652ad7dcce23 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=0cc08cccb92cf974cd50074be…
Author: Juan Lang <juan.lang(a)gmail.com> Date: Thu Aug 2 12:30:19 2007 -0700 crypt32: Support finding certificates by cert id. --- dlls/crypt32/cert.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 52 insertions(+), 2 deletions(-) diff --git a/dlls/crypt32/cert.c b/dlls/crypt32/cert.c index f3d5809..c208873 100644 --- a/dlls/crypt32/cert.c +++ b/dlls/crypt32/cert.c @@ -911,8 +911,55 @@ static BOOL compare_cert_by_subject_cert(PCCERT_CONTEXT pCertContext, &pCertInfo->Issuer, &pCertContext->pCertInfo->Subject); } -static BOOL compare_cert_by_issuer(PCCERT_CONTEXT pCertContext, - DWORD dwType, DWORD dwFlags, const void *pvPara) +static BOOL compare_cert_by_cert_id(PCCERT_CONTEXT pCertContext, DWORD dwType, + DWORD dwFlags, const void *pvPara) +{ + CERT_ID *id = (CERT_ID *)pvPara; + BOOL ret; + + switch (id->dwIdChoice) + { + case CERT_ID_ISSUER_SERIAL_NUMBER: + ret = CertCompareCertificateName(pCertContext->dwCertEncodingType, + &pCertContext->pCertInfo->Issuer, &id->u.IssuerSerialNumber.Issuer); + if (ret) + ret = CertCompareIntegerBlob(&pCertContext->pCertInfo->SerialNumber, + &id->u.IssuerSerialNumber.SerialNumber); + break; + case CERT_ID_SHA1_HASH: + ret = compare_cert_by_sha1_hash(pCertContext, dwType, dwFlags, + &id->u.HashId); + break; + case CERT_ID_KEY_IDENTIFIER: + { + DWORD size = 0; + + ret = CertGetCertificateContextProperty(pCertContext, + CERT_KEY_IDENTIFIER_PROP_ID, NULL, &size); + if (ret && size == id->u.KeyId.cbData) + { + LPBYTE buf = CryptMemAlloc(size); + + if (buf) + { + CertGetCertificateContextProperty(pCertContext, + CERT_KEY_IDENTIFIER_PROP_ID, buf, &size); + ret = !memcmp(buf, id->u.KeyId.pbData, size); + CryptMemFree(buf); + } + } + else + ret = FALSE; + } + default: + ret = FALSE; + break; + } + return ret; +} + +static BOOL compare_cert_by_issuer(PCCERT_CONTEXT pCertContext, DWORD dwType, + DWORD dwFlags, const void *pvPara) { return compare_cert_by_subject_cert(pCertContext, dwType, dwFlags, ((PCCERT_CONTEXT)pvPara)->pCertInfo); @@ -945,6 +992,9 @@ PCCERT_CONTEXT WINAPI CertFindCertificateInStore(HCERTSTORE hCertStore, case CERT_COMPARE_SUBJECT_CERT: compare = compare_cert_by_subject_cert; break; + case CERT_COMPARE_CERT_ID: + compare = compare_cert_by_cert_id; + break; case CERT_COMPARE_ISSUER_OF: compare = compare_cert_by_issuer; break;
1
0
0
0
Juan Lang : crypt32: Test encoding a cert with a subject key identifier extension.
by Alexandre Julliard
03 Aug '07
03 Aug '07
Module: wine Branch: master Commit: c98f605b0e472a0cd7b19728326abe488e402f26 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=c98f605b0e472a0cd7b197283…
Author: Juan Lang <juan.lang(a)gmail.com> Date: Thu Aug 2 12:23:14 2007 -0700 crypt32: Test encoding a cert with a subject key identifier extension. --- dlls/crypt32/tests/encode.c | 33 ++++++++++++++++++++++++++++++--- 1 files changed, 30 insertions(+), 3 deletions(-) diff --git a/dlls/crypt32/tests/encode.c b/dlls/crypt32/tests/encode.c index a9efd22..9b63455 100644 --- a/dlls/crypt32/tests/encode.c +++ b/dlls/crypt32/tests/encode.c @@ -2736,6 +2736,16 @@ static const BYTE v1CertWithPubKeyNoNull[] = { 0x01,0x01,0x03,0x11,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09, 0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0xa3,0x16,0x30,0x14,0x30,0x12,0x06,0x03,0x55, 0x1d,0x13,0x01,0x01,0xff,0x04,0x08,0x30,0x06,0x01,0x01,0xff,0x02,0x01,0x01 }; +static const BYTE v1CertWithSubjectKeyId[] = { +0x30,0x7b,0x02,0x01,0x01,0x30,0x02,0x06,0x00,0x30,0x15,0x31,0x13,0x30,0x11, +0x06,0x03,0x55,0x04,0x03,0x13,0x0a,0x4a,0x75,0x61,0x6e,0x20,0x4c,0x61,0x6e, +0x67,0x00,0x30,0x22,0x18,0x0f,0x31,0x36,0x30,0x31,0x30,0x31,0x30,0x31,0x30, +0x30,0x30,0x30,0x30,0x30,0x5a,0x18,0x0f,0x31,0x36,0x30,0x31,0x30,0x31,0x30, +0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x5a,0x30,0x15,0x31,0x13,0x30,0x11,0x06, +0x03,0x55,0x04,0x03,0x13,0x0a,0x4a,0x75,0x61,0x6e,0x20,0x4c,0x61,0x6e,0x67, +0x00,0x30,0x07,0x30,0x02,0x06,0x00,0x03,0x01,0x00,0xa3,0x17,0x30,0x15,0x30, +0x13,0x06,0x03,0x55,0x1d,0x0e,0x04,0x0c,0x04,0x0a,0x4a,0x75,0x61,0x6e,0x20, +0x4c,0x61,0x6e,0x67,0x00 }; static const BYTE serialNum[] = { 0x01 }; @@ -2746,6 +2756,8 @@ static void test_encodeCertToBeSigned(DWORD dwEncoding) DWORD size = 0; CERT_INFO info = { 0 }; static char oid_rsa_rsa[] = szOID_RSA_RSA; + static char oid_subject_key_identifier[] = szOID_SUBJECT_KEY_IDENTIFIER; + CERT_EXTENSION ext; /* Test with NULL pvStructInfo */ ret = CryptEncodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, NULL, @@ -2841,9 +2853,24 @@ static void test_encodeCertToBeSigned(DWORD dwEncoding) "Got unexpected value\n"); LocalFree(buf); } - /* for now, I let more interesting tests be done for each subcomponent, - * rather than retesting them all here. - */ + /* Remove the public key, and add a subject key identifier extension */ + info.SubjectPublicKeyInfo.Algorithm.pszObjId = NULL; + info.SubjectPublicKeyInfo.PublicKey.cbData = 0; + info.SubjectPublicKeyInfo.PublicKey.pbData = NULL; + ext.pszObjId = oid_subject_key_identifier; + ext.fCritical = FALSE; + ext.Value.cbData = sizeof(octetCommonNameValue); + ext.Value.pbData = (BYTE *)octetCommonNameValue; + info.cExtension = 1; + info.rgExtension = &ext; + ret = CryptEncodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, &info, + CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); + if (buf) + { + ok(size == sizeof(v1CertWithSubjectKeyId), "Wrong size %d\n", size); + ok(!memcmp(buf, v1CertWithSubjectKeyId, size), "Unexpected value\n"); + LocalFree(buf); + } } static void test_decodeCertToBeSigned(DWORD dwEncoding)
1
0
0
0
Juan Lang : crypt32: Test and fix getting a certificate context' s key identifier property.
by Alexandre Julliard
03 Aug '07
03 Aug '07
Module: wine Branch: master Commit: ac28066b487f5f167f3a26fbced82bf15c6f4d2a URL:
http://source.winehq.org/git/wine.git/?a=commit;h=ac28066b487f5f167f3a26fbc…
Author: Juan Lang <juan.lang(a)gmail.com> Date: Thu Aug 2 12:29:49 2007 -0700 crypt32: Test and fix getting a certificate context's key identifier property. --- dlls/crypt32/cert.c | 33 +++++++++++++++++++---- dlls/crypt32/tests/cert.c | 64 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+), 6 deletions(-) diff --git a/dlls/crypt32/cert.c b/dlls/crypt32/cert.c index a74e5e4..f3d5809 100644 --- a/dlls/crypt32/cert.c +++ b/dlls/crypt32/cert.c @@ -242,6 +242,33 @@ static BOOL WINAPI CertContext_GetProperty(void *context, DWORD dwPropId, FIXME("CERT_SIGNATURE_HASH_PROP_ID unimplemented\n"); SetLastError(CRYPT_E_NOT_FOUND); break; + case CERT_KEY_IDENTIFIER_PROP_ID: + { + PCERT_EXTENSION ext = CertFindExtension( + szOID_SUBJECT_KEY_IDENTIFIER, pCertContext->pCertInfo->cExtension, + pCertContext->pCertInfo->rgExtension); + + if (ext) + { + CRYPT_DATA_BLOB *value; + DWORD size; + + ret = CryptDecodeObjectEx(X509_ASN_ENCODING, + szOID_SUBJECT_KEY_IDENTIFIER, ext->Value.pbData, + ext->Value.cbData, CRYPT_DECODE_ALLOC_FLAG, NULL, &value, + &size); + if (ret) + { + ret = CertContext_CopyParam(pvData, pcbData, value->pbData, + value->cbData); + CertContext_SetProperty(context, dwPropId, 0, value); + LocalFree(value); + } + } + else + SetLastError(ERROR_INVALID_DATA); + break; + } default: SetLastError(CRYPT_E_NOT_FOUND); } @@ -300,12 +327,6 @@ BOOL WINAPI CertGetCertificateContextProperty(PCCERT_CONTEXT pCertContext, ret = CertContext_CopyParam(pvData, pcbData, &state, sizeof(state)); } break; - case CERT_KEY_IDENTIFIER_PROP_ID: - ret = CertContext_GetProperty((void *)pCertContext, dwPropId, - pvData, pcbData); - if (!ret) - SetLastError(ERROR_INVALID_DATA); - break; case CERT_KEY_PROV_HANDLE_PROP_ID: { CERT_KEY_CONTEXT keyContext; diff --git a/dlls/crypt32/tests/cert.c b/dlls/crypt32/tests/cert.c index 4231a1e..ab668ae 100644 --- a/dlls/crypt32/tests/cert.c +++ b/dlls/crypt32/tests/cert.c @@ -324,6 +324,30 @@ static void checkHash(const BYTE *data, DWORD dataLen, ALG_ID algID, } static WCHAR cspNameW[] = { 'W','i','n','e','C','r','y','p','t','T','e','m','p',0 }; +static const BYTE v1CertWithPubKey[] = { +0x30,0x81,0x95,0x02,0x01,0x01,0x30,0x02,0x06,0x00,0x30,0x15,0x31,0x13,0x30, +0x11,0x06,0x03,0x55,0x04,0x03,0x13,0x0a,0x4a,0x75,0x61,0x6e,0x20,0x4c,0x61, +0x6e,0x67,0x00,0x30,0x22,0x18,0x0f,0x31,0x36,0x30,0x31,0x30,0x31,0x30,0x31, +0x30,0x30,0x30,0x30,0x30,0x30,0x5a,0x18,0x0f,0x31,0x36,0x30,0x31,0x30,0x31, +0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x5a,0x30,0x15,0x31,0x13,0x30,0x11, +0x06,0x03,0x55,0x04,0x03,0x13,0x0a,0x4a,0x75,0x61,0x6e,0x20,0x4c,0x61,0x6e, +0x67,0x00,0x30,0x22,0x30,0x0d,0x06,0x09,0x2a,0x86,0x48,0x86,0xf7,0x0d,0x01, +0x01,0x01,0x05,0x00,0x03,0x11,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, +0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0xa3,0x16,0x30,0x14,0x30,0x12,0x06, +0x03,0x55,0x1d,0x13,0x01,0x01,0xff,0x04,0x08,0x30,0x06,0x01,0x01,0xff,0x02, +0x01,0x01 }; +static const BYTE v1CertWithSubjectKeyId[] = { +0x30,0x7b,0x02,0x01,0x01,0x30,0x02,0x06,0x00,0x30,0x15,0x31,0x13,0x30,0x11, +0x06,0x03,0x55,0x04,0x03,0x13,0x0a,0x4a,0x75,0x61,0x6e,0x20,0x4c,0x61,0x6e, +0x67,0x00,0x30,0x22,0x18,0x0f,0x31,0x36,0x30,0x31,0x30,0x31,0x30,0x31,0x30, +0x30,0x30,0x30,0x30,0x30,0x5a,0x18,0x0f,0x31,0x36,0x30,0x31,0x30,0x31,0x30, +0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x5a,0x30,0x15,0x31,0x13,0x30,0x11,0x06, +0x03,0x55,0x04,0x03,0x13,0x0a,0x4a,0x75,0x61,0x6e,0x20,0x4c,0x61,0x6e,0x67, +0x00,0x30,0x07,0x30,0x02,0x06,0x00,0x03,0x01,0x00,0xa3,0x17,0x30,0x15,0x30, +0x13,0x06,0x03,0x55,0x1d,0x0e,0x04,0x0c,0x04,0x0a,0x4a,0x75,0x61,0x6e,0x20, +0x4c,0x61,0x6e,0x67,0x00 }; +static const BYTE subjectKeyId[] = { +0x4a,0x75,0x61,0x6e,0x20,0x4c,0x61,0x6e,0x67,0x00 }; static void testCertProperties(void) { @@ -493,6 +517,46 @@ static void testCertProperties(void) GetLastError()); ok(keyContext.hCryptProv == 0, "Expected no hCryptProv\n"); + /* According to MSDN the subject key id can be stored as a property, + * as a subject key extension, or as the SHA1 hash of the public key, + * but this cert has none of them: + */ + ret = CertGetCertificateContextProperty(context, + CERT_KEY_IDENTIFIER_PROP_ID, NULL, &size); + ok(!ret && GetLastError() == ERROR_INVALID_DATA, + "Expected ERROR_INVALID_DATA, got %08x\n", GetLastError()); + CertFreeCertificateContext(context); + /* This cert does have a public key, but its subject key identifier still + * isn't available: */ + context = CertCreateCertificateContext(X509_ASN_ENCODING, + v1CertWithPubKey, sizeof(v1CertWithPubKey)); + ret = CertGetCertificateContextProperty(context, + CERT_KEY_IDENTIFIER_PROP_ID, NULL, &size); + ok(!ret && GetLastError() == ERROR_INVALID_DATA, + "Expected ERROR_INVALID_DATA, got %08x\n", GetLastError()); + CertFreeCertificateContext(context); + /* This cert with a subject key extension can have its key identifier + * property retrieved: + */ + context = CertCreateCertificateContext(X509_ASN_ENCODING, + v1CertWithSubjectKeyId, sizeof(v1CertWithSubjectKeyId)); + ret = CertGetCertificateContextProperty(context, + CERT_KEY_IDENTIFIER_PROP_ID, NULL, &size); + ok(ret, "CertGetCertificateContextProperty failed: %08x\n", GetLastError()); + if (ret) + { + LPBYTE buf = HeapAlloc(GetProcessHeap(), 0, size); + + if (buf) + { + ret = CertGetCertificateContextProperty(context, + CERT_KEY_IDENTIFIER_PROP_ID, buf, &size); + ok(ret, "CertGetCertificateContextProperty failed: %08x\n", + GetLastError()); + ok(!memcmp(buf, subjectKeyId, size), "Unexpected subject key id\n"); + HeapFree(GetProcessHeap(), 0, buf); + } + } CertFreeCertificateContext(context); }
1
0
0
0
Juan Lang : crypt32: Test encoding a cert with a public key.
by Alexandre Julliard
03 Aug '07
03 Aug '07
Module: wine Branch: master Commit: 0c5772dc0a72c8b3e20a60a8d3348c300e83552d URL:
http://source.winehq.org/git/wine.git/?a=commit;h=0c5772dc0a72c8b3e20a60a8d…
Author: Juan Lang <juan.lang(a)gmail.com> Date: Thu Aug 2 12:22:17 2007 -0700 crypt32: Test encoding a cert with a public key. --- dlls/crypt32/tests/encode.c | 73 +++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 73 insertions(+), 0 deletions(-) diff --git a/dlls/crypt32/tests/encode.c b/dlls/crypt32/tests/encode.c index 75dd321..a9efd22 100644 --- a/dlls/crypt32/tests/encode.c +++ b/dlls/crypt32/tests/encode.c @@ -2713,6 +2713,29 @@ static const BYTE bigCert[] = { 0x30, 0x7a, 0x02, 0x01, 0x01, 0x30, 0x02, 0x06, 0x4c, 0x61, 0x6e, 0x67, 0x00, 0x30, 0x07, 0x30, 0x02, 0x06, 0x00, 0x03, 0x01, 0x00, 0xa3, 0x16, 0x30, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x01 }; +static const BYTE v1CertWithPubKey[] = { +0x30,0x81,0x95,0x02,0x01,0x01,0x30,0x02,0x06,0x00,0x30,0x15,0x31,0x13,0x30, +0x11,0x06,0x03,0x55,0x04,0x03,0x13,0x0a,0x4a,0x75,0x61,0x6e,0x20,0x4c,0x61, +0x6e,0x67,0x00,0x30,0x22,0x18,0x0f,0x31,0x36,0x30,0x31,0x30,0x31,0x30,0x31, +0x30,0x30,0x30,0x30,0x30,0x30,0x5a,0x18,0x0f,0x31,0x36,0x30,0x31,0x30,0x31, +0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x5a,0x30,0x15,0x31,0x13,0x30,0x11, +0x06,0x03,0x55,0x04,0x03,0x13,0x0a,0x4a,0x75,0x61,0x6e,0x20,0x4c,0x61,0x6e, +0x67,0x00,0x30,0x22,0x30,0x0d,0x06,0x09,0x2a,0x86,0x48,0x86,0xf7,0x0d,0x01, +0x01,0x01,0x05,0x00,0x03,0x11,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, +0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0xa3,0x16,0x30,0x14,0x30,0x12,0x06, +0x03,0x55,0x1d,0x13,0x01,0x01,0xff,0x04,0x08,0x30,0x06,0x01,0x01,0xff,0x02, +0x01,0x01 }; +static const BYTE v1CertWithPubKeyNoNull[] = { +0x30,0x81,0x93,0x02,0x01,0x01,0x30,0x02,0x06,0x00,0x30,0x15,0x31,0x13,0x30, +0x11,0x06,0x03,0x55,0x04,0x03,0x13,0x0a,0x4a,0x75,0x61,0x6e,0x20,0x4c,0x61, +0x6e,0x67,0x00,0x30,0x22,0x18,0x0f,0x31,0x36,0x30,0x31,0x30,0x31,0x30,0x31, +0x30,0x30,0x30,0x30,0x30,0x30,0x5a,0x18,0x0f,0x31,0x36,0x30,0x31,0x30,0x31, +0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x5a,0x30,0x15,0x31,0x13,0x30,0x11, +0x06,0x03,0x55,0x04,0x03,0x13,0x0a,0x4a,0x75,0x61,0x6e,0x20,0x4c,0x61,0x6e, +0x67,0x00,0x30,0x20,0x30,0x0b,0x06,0x09,0x2a,0x86,0x48,0x86,0xf7,0x0d,0x01, +0x01,0x01,0x03,0x11,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09, +0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0xa3,0x16,0x30,0x14,0x30,0x12,0x06,0x03,0x55, +0x1d,0x13,0x01,0x01,0xff,0x04,0x08,0x30,0x06,0x01,0x01,0xff,0x02,0x01,0x01 }; static const BYTE serialNum[] = { 0x01 }; @@ -2722,6 +2745,7 @@ static void test_encodeCertToBeSigned(DWORD dwEncoding) BYTE *buf = NULL; DWORD size = 0; CERT_INFO info = { 0 }; + static char oid_rsa_rsa[] = szOID_RSA_RSA; /* Test with NULL pvStructInfo */ ret = CryptEncodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, NULL, @@ -2800,6 +2824,23 @@ static void test_encodeCertToBeSigned(DWORD dwEncoding) ok(!memcmp(buf, bigCert, size), "Got unexpected value\n"); LocalFree(buf); } + /* Add a public key */ + info.SubjectPublicKeyInfo.Algorithm.pszObjId = oid_rsa_rsa; + info.SubjectPublicKeyInfo.PublicKey.cbData = sizeof(aKey); + info.SubjectPublicKeyInfo.PublicKey.pbData = (LPBYTE)aKey; + ret = CryptEncodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, &info, + CRYPT_ENCODE_ALLOC_FLAG, NULL, (BYTE *)&buf, &size); + if (buf) + { + ok(size == sizeof(v1CertWithPubKey) || + size == sizeof(v1CertWithPubKeyNoNull), "Wrong size %d\n", size); + if (size == sizeof(v1CertWithPubKey)) + ok(!memcmp(buf, v1CertWithPubKey, size), "Got unexpected value\n"); + else if (size == sizeof(v1CertWithPubKeyNoNull)) + ok(!memcmp(buf, v1CertWithPubKeyNoNull, size), + "Got unexpected value\n"); + LocalFree(buf); + } /* for now, I let more interesting tests be done for each subcomponent, * rather than retesting them all here. */ @@ -2857,6 +2898,38 @@ static void test_decodeCertToBeSigned(DWORD dwEncoding) info->Subject.cbData), "Unexpected subject\n"); LocalFree(buf); } + /* Check again with pub key specified */ + ret = CryptDecodeObjectEx(dwEncoding, X509_CERT_TO_BE_SIGNED, + v1CertWithPubKey, sizeof(v1CertWithPubKey), CRYPT_DECODE_ALLOC_FLAG, NULL, + (BYTE *)&buf, &size); + ok(ret, "CryptDecodeObjectEx failed: %08x\n", GetLastError()); + if (buf) + { + CERT_INFO *info = (CERT_INFO *)buf; + + ok(size >= sizeof(CERT_INFO), "Wrong size %d\n", size); + ok(info->SerialNumber.cbData == 1, + "Expected serial number size 1, got %d\n", info->SerialNumber.cbData); + ok(*info->SerialNumber.pbData == *serialNum, + "Expected serial number %d, got %d\n", *serialNum, + *info->SerialNumber.pbData); + ok(info->Issuer.cbData == sizeof(encodedCommonName), + "Wrong size %d\n", info->Issuer.cbData); + ok(!memcmp(info->Issuer.pbData, encodedCommonName, info->Issuer.cbData), + "Unexpected issuer\n"); + ok(info->Subject.cbData == sizeof(encodedCommonName), + "Wrong size %d\n", info->Subject.cbData); + ok(!memcmp(info->Subject.pbData, encodedCommonName, + info->Subject.cbData), "Unexpected subject\n"); + ok(!strcmp(info->SubjectPublicKeyInfo.Algorithm.pszObjId, + szOID_RSA_RSA), "Expected szOID_RSA_RSA, got %s\n", + info->SubjectPublicKeyInfo.Algorithm.pszObjId); + ok(info->SubjectPublicKeyInfo.PublicKey.cbData == sizeof(aKey), + "Wrong size %d\n", info->SubjectPublicKeyInfo.PublicKey.cbData); + ok(!memcmp(info->SubjectPublicKeyInfo.PublicKey.pbData, aKey, + sizeof(aKey)), "Unexpected public key\n"); + LocalFree(buf); + } } static const BYTE hash[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0xa, 0xb, 0xc, 0xd,
1
0
0
0
Juan Lang : crypt32: Fix typo in key context property test, and the problems it hid.
by Alexandre Julliard
03 Aug '07
03 Aug '07
Module: wine Branch: master Commit: 5885eb3cc3dc38e7933bd5b10ce849c24b238766 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=5885eb3cc3dc38e7933bd5b10…
Author: Juan Lang <juan.lang(a)gmail.com> Date: Thu Aug 2 12:21:46 2007 -0700 crypt32: Fix typo in key context property test, and the problems it hid. --- dlls/crypt32/cert.c | 10 +++++- dlls/crypt32/tests/cert.c | 63 +++++++++++++++++--------------------------- 2 files changed, 32 insertions(+), 41 deletions(-) diff --git a/dlls/crypt32/cert.c b/dlls/crypt32/cert.c index b630f3d..a74e5e4 100644 --- a/dlls/crypt32/cert.c +++ b/dlls/crypt32/cert.c @@ -476,8 +476,14 @@ static BOOL WINAPI CertContext_SetProperty(void *context, DWORD dwPropId, { const CERT_KEY_CONTEXT *keyContext = (const CERT_KEY_CONTEXT *)pvData; - ret = ContextPropertyList_SetProperty(properties, dwPropId, - (const BYTE *)keyContext, keyContext->cbSize); + if (keyContext->cbSize != sizeof(CERT_KEY_CONTEXT)) + { + SetLastError(E_INVALIDARG); + ret = FALSE; + } + else + ret = ContextPropertyList_SetProperty(properties, dwPropId, + (const BYTE *)keyContext, keyContext->cbSize); } else { diff --git a/dlls/crypt32/tests/cert.c b/dlls/crypt32/tests/cert.c index a14137c..4231a1e 100644 --- a/dlls/crypt32/tests/cert.c +++ b/dlls/crypt32/tests/cert.c @@ -334,7 +334,6 @@ static void testCertProperties(void) BYTE hash[20] = { 0 }, hashProperty[20]; CRYPT_DATA_BLOB blob; CERT_KEY_CONTEXT keyContext; - HCRYPTPROV csp; ok(context != NULL, "CertCreateCertificateContext failed: %08x\n", GetLastError()); @@ -442,50 +441,38 @@ static void testCertProperties(void) context->pCertInfo->SubjectPublicKeyInfo.PublicKey.cbData, CALG_MD5, context, CERT_SUBJECT_PUBLIC_KEY_MD5_HASH_PROP_ID); - /* Test key identifiers and handles and such */ + /* Test key contexts and handles and such */ size = 0; - ret = CertGetCertificateContextProperty(context, - CERT_KEY_IDENTIFIER_PROP_ID, NULL, &size); - ok(!ret && GetLastError() == ERROR_INVALID_DATA, - "Expected ERROR_INVALID_DATA, got %08x\n", GetLastError()); + ret = CertGetCertificateContextProperty(context, CERT_KEY_CONTEXT_PROP_ID, + NULL, &size); + ok(!ret && GetLastError() == CRYPT_E_NOT_FOUND, + "Expected CRYPT_E_NOT_FOUND, got %08x\n", GetLastError()); size = sizeof(CERT_KEY_CONTEXT); - ret = CertGetCertificateContextProperty(context, - CERT_KEY_IDENTIFIER_PROP_ID, NULL, &size); - ok(!ret && GetLastError() == ERROR_INVALID_DATA, - "Expected ERROR_INVALID_DATA, got %08x\n", GetLastError()); - ret = CertGetCertificateContextProperty(context, - CERT_KEY_IDENTIFIER_PROP_ID, &keyContext, &size); - ok(!ret && GetLastError() == ERROR_INVALID_DATA, - "Expected ERROR_INVALID_DATA, got %08x\n", GetLastError()); + ret = CertGetCertificateContextProperty(context, CERT_KEY_CONTEXT_PROP_ID, + NULL, &size); + ok(!ret && GetLastError() == CRYPT_E_NOT_FOUND, + "Expected CRYPT_E_NOT_FOUND, got %08x\n", GetLastError()); + ret = CertGetCertificateContextProperty(context, CERT_KEY_CONTEXT_PROP_ID, + &keyContext, &size); + ok(!ret && GetLastError() == CRYPT_E_NOT_FOUND, + "Expected CRYPT_E_NOT_FOUND, got %08x\n", GetLastError()); /* Key context with an invalid size */ keyContext.cbSize = 0; - ret = CertSetCertificateContextProperty(context, - CERT_KEY_IDENTIFIER_PROP_ID, 0, &keyContext); - ok(ret, "CertSetCertificateContextProperty failed: %08x\n", - GetLastError()); + ret = CertSetCertificateContextProperty(context, CERT_KEY_CONTEXT_PROP_ID, + 0, &keyContext); + ok(!ret && GetLastError() == E_INVALIDARG, + "Expected E_INVALIDARG, got %08x\n", GetLastError()); size = sizeof(keyContext); - ret = CertGetCertificateContextProperty(context, - CERT_KEY_IDENTIFIER_PROP_ID, &keyContext, &size); - ok(ret, "CertGetCertificateContextProperty failed: %08x\n", - GetLastError()); + ret = CertGetCertificateContextProperty(context, CERT_KEY_CONTEXT_PROP_ID, + &keyContext, &size); + ok(!ret && GetLastError() == CRYPT_E_NOT_FOUND, + "Expected CRYPT_E_NOT_FOUND, got %08x\n", GetLastError()); keyContext.cbSize = sizeof(keyContext); keyContext.hCryptProv = 0; keyContext.dwKeySpec = AT_SIGNATURE; - /* Crash - ret = CertSetCertificateContextProperty(context, - CERT_KEY_IDENTIFIER_PROP_ID, 0, &keyContext); - ret = CertSetCertificateContextProperty(context, - CERT_KEY_IDENTIFIER_PROP_ID, CERT_STORE_NO_CRYPT_RELEASE_FLAG, - &keyContext); - */ - ret = CryptAcquireContextW(&csp, cspNameW, - MS_DEF_PROV_W, PROV_RSA_FULL, CRYPT_NEWKEYSET); - ok(ret, "CryptAcquireContextW failed: %08x\n", GetLastError()); - keyContext.hCryptProv = csp; - ret = CertSetCertificateContextProperty(context, - CERT_KEY_CONTEXT_PROP_ID, 0, &keyContext); - ok(ret, "CertSetCertificateContextProperty failed: %08x\n", - GetLastError()); + ret = CertSetCertificateContextProperty(context, CERT_KEY_CONTEXT_PROP_ID, + 0, &keyContext); + ok(ret, "CertSetCertificateContextProperty failed: %08x\n", GetLastError()); /* Now that that's set, the key prov handle property is also gettable. */ size = sizeof(DWORD); @@ -506,8 +493,6 @@ static void testCertProperties(void) GetLastError()); ok(keyContext.hCryptProv == 0, "Expected no hCryptProv\n"); - CryptReleaseContext(csp, 0); - CertFreeCertificateContext(context); }
1
0
0
0
← Newer
1
...
95
96
97
98
99
100
101
...
109
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
Results per page:
10
25
50
100
200