WINECRYPT_CERTSTORE *CRYPT_FileNameOpenStoreW(HCRYPTPROV hCryptProv,
DWORD dwFlags, const void *pvPara) DECLSPEC_HIDDEN;
WINECRYPT_CERTSTORE *CRYPT_RootOpenStore(HCRYPTPROV hCryptProv, DWORD dwFlags) DECLSPEC_HIDDEN;
+BOOL CRYPT_IsCertificateSelfSigned(PCCERT_CONTEXT cert) DECLSPEC_HIDDEN;
/* Allocates and initializes a certificate chain engine, but without creating
* the root store. Instead, it uses root, and assumes the caller has done any
TRACE("%p\n", psNewProv);
if (!psNewProv ||
- psNewProv->cbStruct != sizeof(SIP_ADD_NEWPROVIDER) ||
+ psNewProv->cbStruct < FIELD_OFFSET(SIP_ADD_NEWPROVIDER, pwszGetCapFuncName) ||
!psNewProv->pwszGetFuncName ||
!psNewProv->pwszPutFuncName ||
!psNewProv->pwszCreateFuncName ||
/* Assumes separators are characters in the 0-255 range */
static BOOL CRYPT_GetNextValueW(LPCWSTR str, DWORD dwFlags, LPCWSTR separators,
- struct X500TokenW *token, LPCWSTR *ppszError)
+ WCHAR *separator_used, struct X500TokenW *token, LPCWSTR *ppszError)
{
BOOL ret = TRUE;
TRACE("(%s, %s, %p, %p)\n", debugstr_w(str), debugstr_w(separators), token,
ppszError);
+ *separator_used = 0;
while (*str && isspaceW(*str))
str++;
if (*str)
while (*str && (*str >= 0xff || !map[*str]))
str++;
token->end = str;
+ if (map[*str]) *separator_used = *str;
}
}
else
static const WCHAR allSepsWithoutPlus[] = { ',',';','\r','\n',0 };
static const WCHAR allSeps[] = { '+',',',';','\r','\n',0 };
LPCWSTR sep;
+ WCHAR sep_used;
str++;
if (dwStrType & CERT_NAME_STR_COMMA_FLAG)
sep = allSepsWithoutPlus;
else
sep = allSeps;
- ret = CRYPT_GetNextValueW(str, dwStrType, sep, &token,
+ ret = CRYPT_GetNextValueW(str, dwStrType, sep, &sep_used, &token,
ppszError);
if (ret)
{
str = token.end;
+ /* if token.end points to the separator, skip it */
+ if (str && sep_used && *str == sep_used) str++;
+
ret = CRYPT_ValueToRDN(dwCertEncodingType, &info,
keyOID, &token, dwStrType, ppszError);
}
reactos/dll/win32/comdlg32 # Synced to Wine-1.7.27
reactos/dll/win32/compstui # Synced to Wine-1.7.17
reactos/dll/win32/credui # Synced to Wine-1.7.17
-reactos/dll/win32/crypt32 # Synced to Wine-1.7.17
+reactos/dll/win32/crypt32 # Synced to Wine-1.7.27
reactos/dll/win32/cryptdlg # Synced to Wine-1.7.17
reactos/dll/win32/cryptdll # Synced to Wine-1.7.17
reactos/dll/win32/cryptnet # Synced to Wine-1.7.17