These changes make the Carbon Poker (www.carbonpoker.com) client work.
Run the Carbon Poker installer; then Run c:/windows/system32/Macromed/Flash/GetFlash.exe; then Run c:/windows/CarbonPoker/Poker.exe
Screenshot: http://rtfm.insomnia.org/~qg/CarbonPoker-Ubuntu-wine.png
If someone would like to implement PKCS7 support in crypt32, this patch could be much cleaner.
--- ChangeLog | 15 +++++++++++++++ dlls/crypt32/cert.c | 16 ++++++++++++++++ dlls/crypt32/crypt32.spec | 2 +- dlls/crypt32/main.c | 12 +++++++++++- dlls/crypt32/store.c | 4 ++++ dlls/usp10/usp10.c | 33 +++++++++++++++++++++++++++++++++ dlls/usp10/usp10.spec | 2 +- dlls/wininet/http.c | 4 ++-- 8 files changed, 83 insertions(+), 5 deletions(-)
diff --git a/ChangeLog b/ChangeLog index 658036c..297fb08 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2007-02-06 Trent Waddington trent.waddington@gmail.com + + * dlls/crypt32/cert.c: + dlls/crypt32/main.c: + dlls/crypt32/store.c: + dlls/crypt32/crypt32.spec: + crypt32: Hacks to make Macromedia's GetFlash.exe not complain about the lack of PKCS7 support. + + * dlls/usp10/usp10.c: + dlls/usp10/usp10.spec: + usp10: Implemented ScriptGetLogicalWidths. + + * dlls/wininet/http.c: + wininet: Implement a feature of HttpOpenRequestA where lpszAcceptTypes can be terminated with an empty string instead of a NULL. + 2007-01-24 Vitaliy Margolen wine-patches@kievinfo.com
* server/token.c: diff --git a/dlls/crypt32/cert.c b/dlls/crypt32/cert.c index b39c3ca..e3ed7e0 100644 --- a/dlls/crypt32/cert.c +++ b/dlls/crypt32/cert.c @@ -130,6 +130,10 @@ BOOL WINAPI CertFreeCertificateContext(PCCERT_CONTEXT pCertContext) { TRACE("(%p)\n", pCertContext);
+ // HACK for GetFlash.exe + if (pCertContext == 0xdeadbeef) + return TRUE; + if (pCertContext) Context_Release((void *)pCertContext, sizeof(CERT_CONTEXT), CertDataContext_Free); @@ -921,6 +925,12 @@ PCCERT_CONTEXT WINAPI CertFindCertificateInStore(HCERTSTORE hCertStore, TRACE("(%p, %d, %d, %d, %p, %p)\n", hCertStore, dwCertEncodingType, dwFlags, dwType, pvPara, pPrevCertContext);
+ // HACK for GetFlash.exe + if (hCertStore == 0xdeadbeef) { + ret = 0xdeadbeef; + return ret; + } + switch (dwType >> CERT_COMPARE_SHIFT) { case CERT_COMPARE_ANY: @@ -987,6 +997,12 @@ BOOL WINAPI CertVerifySubjectCertificateContext(PCCERT_CONTEXT pSubject, static const DWORD supportedFlags = CERT_STORE_REVOCATION_FLAG | CERT_STORE_SIGNATURE_FLAG | CERT_STORE_TIME_VALIDITY_FLAG;
+ // HACK for GetFlash.exe + if (pSubject == 0xdeadbeef || pIssuer == 0xdeadbeef) { + *pdwFlags = 0; + return TRUE; + } + if (*pdwFlags & ~supportedFlags) { SetLastError(E_INVALIDARG); diff --git a/dlls/crypt32/crypt32.spec b/dlls/crypt32/crypt32.spec index 7ee23f4..705fb8f 100644 --- a/dlls/crypt32/crypt32.spec +++ b/dlls/crypt32/crypt32.spec @@ -118,7 +118,7 @@ @ stub CryptGetAsyncParam @ stdcall CryptGetDefaultOIDDllList(long long ptr ptr) @ stdcall CryptGetDefaultOIDFunctionAddress(long long wstr long ptr ptr) -@ stub CryptGetMessageCertificates +@ stdcall CryptGetMessageCertificates(long long long ptr long) @ stub CryptGetMessageSignerCount @ stdcall CryptGetOIDFunctionAddress(long long str long ptr ptr) @ stdcall CryptGetOIDFunctionValue(long str str wstr ptr ptr ptr) diff --git a/dlls/crypt32/main.c b/dlls/crypt32/main.c index dd9e1fb..80567ab 100644 --- a/dlls/crypt32/main.c +++ b/dlls/crypt32/main.c @@ -238,5 +238,15 @@ BOOL WINAPI CryptVerifyMessageSignature(PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara, FIXME("stub: %p, %d, %p, %d, %p, %p, %p\n", pVerifyPara, dwSignerIndex, pbSignedBlob, cbSignedBlob, pbDecoded, pcbDecoded, ppSignerCert); - return FALSE; + return TRUE; +} + +HCERTSTORE WINAPI CryptGetMessageCertificates(DWORD dwMsgAndCertEncodingType, + HCRYPTPROV hCryptProv, DWORD dwFlags, const BYTE* pbSignedBlob, + DWORD cbSignedBlob) +{ + FIXME("stub: %d, %p, %d, %p, %d\n", + dwMsgAndCertEncodingType, hCryptProv, dwFlags, pbSignedBlob, + cbSignedBlob); + return 0xdeadbeef; // HACK for GetFlash.exe } diff --git a/dlls/crypt32/store.c b/dlls/crypt32/store.c index 8c8cda5..c82fcbc 100644 --- a/dlls/crypt32/store.c +++ b/dlls/crypt32/store.c @@ -2431,6 +2431,10 @@ BOOL WINAPI CertCloseStore(HCERTSTORE hCertStore, DWORD dwFlags)
TRACE("(%p, %08x)\n", hCertStore, dwFlags);
+ // HACK for GetFlash.exe + if (hCertStore == 0xdeadbeef) + return TRUE; + if( ! hCertStore ) return TRUE;
diff --git a/dlls/usp10/usp10.c b/dlls/usp10/usp10.c index c3b0a17..6f860e0 100644 --- a/dlls/usp10/usp10.c +++ b/dlls/usp10/usp10.c @@ -1553,6 +1553,39 @@ HRESULT WINAPI ScriptStringGetLogicalWidths(SCRIPT_STRING_ANALYSIS ssa, int *piD }
/*********************************************************************** + * ScriptGetLogicalWidths (USP10.@) + * + * Returns logical widths from an analysis. + * + * PARAMS + * psa [I] analysis. + * cChars [I] count of logical code points in the run. + * cGlyphs [I] count of glyphs in the run. + * piGlyphWidth [I] array of glyph advance widths. + * pwLogClust [I] array of logical clusters. + * psva [I] visual attributes. + * piDx [O] logical widths returned. + * + * RETURNS + * Success: S_OK + * Failure: a non-zero HRESULT. + */ +HRESULT WINAPI ScriptGetLogicalWidths(const SCRIPT_ANALYSIS *psa, int cChars, + int cGlyphs, const int *piGlyphWidth, const WORD *pwLogClust, + const SCRIPT_VISATTR *psva, int *piDx) +{ + int i; + + TRACE("%p, %d, %d, %p %p, %p, %p\n", psa, cChars, cGlyphs, piGlyphWidth, pwLogClust, psva, piDx); + + for (i = 0; i < cGlyphs; i++) + { + piDx[i] = piGlyphWidth[i]; + } + return S_OK; +} + +/*********************************************************************** * ScriptStringValidate (USP10.@) * * Validate a string analysis. diff --git a/dlls/usp10/usp10.spec b/dlls/usp10/usp10.spec index df07f43..ac1506e 100644 --- a/dlls/usp10/usp10.spec +++ b/dlls/usp10/usp10.spec @@ -8,7 +8,7 @@ @ stdcall ScriptGetCMap(ptr ptr ptr long long ptr) @ stdcall ScriptGetFontProperties(long ptr ptr) @ stdcall ScriptGetGlyphABCWidth(ptr ptr long ptr) -@ stub ScriptGetLogicalWidths +@ stdcall ScriptGetLogicalWidths(ptr long long ptr ptr ptr ptr) @ stdcall ScriptGetProperties(ptr long) @ stdcall ScriptIsComplex(wstr long long) @ stdcall ScriptItemize(wstr long long ptr ptr ptr ptr) diff --git a/dlls/wininet/http.c b/dlls/wininet/http.c index 8a34749..379b03e 100644 --- a/dlls/wininet/http.c +++ b/dlls/wininet/http.c @@ -803,11 +803,11 @@ HINTERNET WINAPI HttpOpenRequestA(HINTERNET hHttpSession, if (lpszAcceptTypes) { /* find out how many there are */ - while (lpszAcceptTypes[acceptTypesCount]) + while (lpszAcceptTypes[acceptTypesCount] && *lpszAcceptTypes[acceptTypesCount]) acceptTypesCount++; szAcceptTypes = HeapAlloc(GetProcessHeap(), 0, sizeof(WCHAR *) * (acceptTypesCount+1)); acceptTypesCount = 0; - while (lpszAcceptTypes[acceptTypesCount]) + while (lpszAcceptTypes[acceptTypesCount] && *lpszAcceptTypes[acceptTypesCount]) { len = MultiByteToWideChar(CP_ACP, 0, lpszAcceptTypes[acceptTypesCount], -1, NULL, 0 );
On 2/6/07, Trent Waddington trent.waddington@gmail.com wrote:
These changes make the Carbon Poker (www.carbonpoker.com) client work.
Run the Carbon Poker installer; then Run c:/windows/system32/Macromed/Flash/GetFlash.exe; then Run c:/windows/CarbonPoker/Poker.exe
That should be c:/Program Files/CarbonPoker/Poker.exe
Sorry,
Trent
"Trent Waddington" trent.waddington@gmail.com wrote:
These changes make the Carbon Poker (www.carbonpoker.com) client work.
Please break your patch into logical pieces per dll and submit them separately. There is no need to patch ChangeLog, just provide a comment what your patch is doing.
On 2/6/07, Dmitry Timoshkov dmitry@codeweavers.com wrote:
Please break your patch into logical pieces per dll and submit them separately. There is no need to patch ChangeLog, just provide a comment what your patch is doing.
Ok. Seperate patches are attached, comment at the top of each.
Thanks,
Trent
Is the GPL w/ library exception compatible with LGPL? Seems like they could be similair. If so we could utilize the gnu PKCS7 code. Does any one know?
John
On 2/5/07, Trent Waddington trent.waddington@gmail.com wrote:
On 2/6/07, Dmitry Timoshkov dmitry@codeweavers.com wrote:
Please break your patch into logical pieces per dll and submit them separately. There is no need to patch ChangeLog, just provide a comment what your patch is doing.
Ok. Seperate patches are attached, comment at the top of each.
Thanks,
Trent
On Mon, Feb 05, 2007 at 11:15:15PM -0600, John Smith wrote:
Is the GPL w/ library exception compatible with LGPL? Seems like they could be similair. If so we could utilize the gnu PKCS7 code. Does any one know?
IANAL but AFAIK, Yes, GPL w/ library exception like on http://www.gnu.org/software/gnu-crypto/ is compatible with LGPL.
Jan