http://bugs.winehq.org/show_bug.cgi?id=16420
--- Comment #16 from Juan Lang juan_lang@yahoo.com 2008-12-10 16:52:27 --- I had a look at a the SPC file in question. It turns out to be a base64-encoded version of the asn.1-encoded SPC file, saved as a UTF-16 string. I base64-decoded it and tried signcode.exe, but CryptQueryObject still failed to decode it.
There appear to be several bugs here: 1. CryptQueryObject isn't decoding the file properly. 1.a. It doesn't handle base64-encoded files. 1.b. It's not decoding the base64-decoded version, either. 2. wintrust:CryptSIPCreateIndirectData is unimplemented.
It's a little surprising that CryptQueryObject is expected to decode a base64-encoded file in this case, because of how it's called: trace:crypt:CryptQueryObject (00000001, 0x110486, 00000112, 00000002, 00000000, (nil), 0x32fb90, (nil), 0x32fb94, (nil), (nil))
The fourth argument, dwExpectedFormatTypeFlags, is 2, CERT_QUERY_FORMAT_FLAG_BINARY, rather than CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED. More tests for CryptQueryObject are certainly needed. CryptStringToBinaryW probably needs to implemented as well.