/*
- * Copyright 2002
- Mike McCormack for CodeWeavers
+ * Copyright 2002 Mike McCormack for CodeWeavers
* Copyright 2004,2005 Juan Lang
*
* This library is free software; you can redistribute it and/or
* registering and enumerating physical stores and locations.)
* - Many flags, options and whatnot are unimplemented.
*/
-
-#include "precomp.h"
-
-#define NONAMELESSUNION
-
-static _SEH_FILTER(page_fault)
-{
- if (_SEH_GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION)
- return _SEH_EXECUTE_HANDLER;
- return _SEH_CONTINUE_SEARCH;
-}
+#include <assert.h>
+#include <stdarg.h>
+#include "windef.h"
+#include "winbase.h"
+#include "winnls.h"
+#include "winreg.h"
+#include "winuser.h"
+#include "wincrypt.h"
+#include "wine/debug.h"
+#include "wine/list.h"
+#include "excpt.h"
+#include "wine/exception.h"
+#include "crypt32_private.h"
WINE_DEFAULT_DEBUG_CHANNEL(crypt);
DWORD cbElement, DWORD dwContextTypeFlags, DWORD *pdwContentType);
/* filter for page-fault exceptions */
-/*
static WINE_EXCEPTION_FILTER(page_fault)
{
if (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION)
return EXCEPTION_EXECUTE_HANDLER;
return EXCEPTION_CONTINUE_SEARCH;
}
-*/
static void CRYPT_InitStore(WINECRYPT_CERTSTORE *store, HCRYPTPROV hCryptProv,
DWORD dwFlags, CertStoreType type)
* be a PWINE_CERT_CONTEXT, and increments pCertContext's reference count.
* Also sets the hCertStore member of the reference to store.
*/
-
static void CRYPT_InitCertRef(PWINE_CERT_CONTEXT_REF ref,
PWINE_CERT_CONTEXT context, HCERTSTORE store)
{
return NULL;
}
- _SEH_TRY
+ __TRY
{
const WINE_CONTEXT_INTERFACE *contextInterface = NULL;
const WINE_CERT_PROP_HEADER *hdr = NULL;
}
}
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
context = NULL;
}
- _SEH_END
+ __ENDTRY
return context;
}
return ret;
}
-BOOL WINAPI CryptEncryptMessage( PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptMessagePara,
- DWORD dwCert, PCCERT_CONTEXT pccertCert[],
- const BYTE* pbEncrypted, DWORD dwEncrypted,
- BYTE* pbBlob, DWORD* dwEncryptedBlob)
-{
- UNIMPLEMENTED;
- return FALSE;
-}
-
HCRYPTOIDFUNCSET WINAPI CryptInitOIDFunctionSet(LPCSTR pszFuncName, DWORD dwFlags)
{
FIXME("stub: %s %lx\n", debugstr_a(pszFuncName), dwFlags);
FIXME("stub: %lx %s %s\n", dwEncodingType, debugstr_a(pszFuncName), debugstr_w(pwszDll));
return FALSE;
}
-
-DWORD WINAPI CertGetNameStringW(PCCERT_CONTEXT pCertContext,
- DWORD dwType, DWORD dwFlags,
- LPVOID pvType, LPWSTR pszName,
- DWORD dwName)
-{
- UNIMPLEMENTED;
- return ERROR_CALL_NOT_IMPLEMENTED;
-}
-
-DWORD WINAPI CertGetNameStringA(PCCERT_CONTEXT pCertContext,
- DWORD dwType, DWORD dwFlags,
- LPVOID pvType, LPSTR pszName,
- DWORD dwName)
-{
- UNIMPLEMENTED;
- return ERROR_CALL_NOT_IMPLEMENTED;
-}
-
-
-DWORD WINAPI CertNameToStrA(DWORD dwCertEncoding,
- PCERT_NAME_BLOB pCertName,
- DWORD dwType, LPSTR psz,
- DWORD dwSZ)
-{
- UNIMPLEMENTED;
- return ERROR_CALL_NOT_IMPLEMENTED;
-}
-
-DWORD WINAPI CertNameToStrW(DWORD dwCertEncoding,
- PCERT_NAME_BLOB pCertName,
- DWORD dwType, LPWSTR psz,
- DWORD dwSZ)
-{
- UNIMPLEMENTED;
- return ERROR_CALL_NOT_IMPLEMENTED;
-}
-
-
* MSDN, especially:
* http://msdn.microsoft.com/library/en-us/seccrypto/security/constants_for_cryptencodeobject_and_cryptdecodeobject.asp
*/
-
-#include "precomp.h"
-
-static _SEH_FILTER(page_fault)
-{
- if (_SEH_GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION)
- return _SEH_EXECUTE_HANDLER;
- return _SEH_CONTINUE_SEARCH;
-}
+#include <assert.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#define NONAMELESSUNION
+
+#include "windef.h"
+#include "winbase.h"
+#include "excpt.h"
+#include "wincrypt.h"
+#include "winreg.h"
+#include "snmp.h"
+#include "wine/debug.h"
+#include "wine/exception.h"
/* This is a bit arbitrary, but to set some limit: */
#define MAX_ENCODED_LEN 0x02000000
/* a few asn.1 tags we need */
#define ASN_BOOL (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x01)
#define ASN_BITSTRING (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x03)
-//#define ASN_OCTETSTRING (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x04)
#define ASN_ENUMERATED (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x0a)
#define ASN_SETOF (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x11)
#define ASN_NUMERICSTRING (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x12)
DWORD cbEncoded, DWORD dwFlags, PCRYPT_DECODE_PARA pDecodePara,
void *pvStructInfo, DWORD *pcbStructInfo);
+/* filter for page-fault exceptions */
+static WINE_EXCEPTION_FILTER(page_fault)
+{
+ if (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION)
+ return EXCEPTION_EXECUTE_HANDLER;
+ return EXCEPTION_CONTINUE_SEARCH;
+}
+
static char *CRYPT_GetKeyName(DWORD dwEncodingType, LPCSTR pszFuncName,
LPCSTR pszOID)
{
{
BOOL ret;
- _SEH_TRY
+ __TRY
{
const CERT_PUBLIC_KEY_INFO *info =
(const CERT_PUBLIC_KEY_INFO *)pvStructInfo;
sizeof(items) / sizeof(items[0]), dwFlags, pEncodePara, pbEncoded,
pcbEncoded);
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
{
BOOL ret;
- _SEH_TRY
+ __TRY
{
const CERT_SIGNED_CONTENT_INFO *info =
(const CERT_SIGNED_CONTENT_INFO *)pvStructInfo;
sizeof(items) / sizeof(items[0]), dwFlags, pEncodePara, pbEncoded,
pcbEncoded);
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
{
BOOL ret;
- _SEH_TRY
+ __TRY
{
const CERT_INFO *info = (const CERT_INFO *)pvStructInfo;
struct AsnEncodeSequenceItem items[10] = {
ret = CRYPT_AsnEncodeSequence(dwCertEncodingType, items, cItem,
dwFlags, pEncodePara, pbEncoded, pcbEncoded);
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
{
BOOL ret;
- _SEH_TRY
+ __TRY
{
const CRL_INFO *info = (const CRL_INFO *)pvStructInfo;
struct AsnEncodeSequenceItem items[7] = {
ret = CRYPT_AsnEncodeSequence(dwCertEncodingType, items, cItem,
dwFlags, pEncodePara, pbEncoded, pcbEncoded);
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
{
BOOL ret;
- _SEH_TRY
+ __TRY
{
DWORD bytesNeeded, dataLen, lenBytes, i;
const CERT_EXTENSIONS *exts = (const CERT_EXTENSIONS *)pvStructInfo;
}
}
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
BOOL ret;
CRYPT_DER_BLOB *blobs = NULL;
- _SEH_TRY
+ __TRY
{
DWORD bytesNeeded = 0, lenBytes, i;
CryptMemFree(blobs[i].pbData);
}
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
return FALSE;
}
- _SEH_END
+ __ENDTRY
CryptMemFree(blobs);
return ret;
}
{
BOOL ret;
- _SEH_TRY
+ __TRY
{
const CERT_NAME_INFO *info = (const CERT_NAME_INFO *)pvStructInfo;
DWORD bytesNeeded = 0, lenBytes, size, i;
}
}
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
case CERT_ALT_NAME_RFC822_NAME:
case CERT_ALT_NAME_DNS_NAME:
case CERT_ALT_NAME_URL:
- if (entry->pwszURL)
+ if (entry->u.pwszURL)
{
DWORD i;
/* Not + 1: don't encode the NULL-terminator */
- dataLen = lstrlenW(entry->pwszURL);
+ dataLen = lstrlenW(entry->u.pwszURL);
for (i = 0; ret && i < dataLen; i++)
{
- if (entry->pwszURL[i] > 0x7f)
+ if (entry->u.pwszURL[i] > 0x7f)
{
SetLastError(CRYPT_E_INVALID_IA5_STRING);
ret = FALSE;
dataLen = 0;
break;
case CERT_ALT_NAME_IP_ADDRESS:
- dataLen = entry->IPAddress.cbData;
+ dataLen = entry->u.IPAddress.cbData;
break;
case CERT_ALT_NAME_REGISTERED_ID:
/* FIXME: encode OID */
DWORD i;
for (i = 0; i < dataLen; i++)
- *pbEncoded++ = (BYTE)entry->pwszURL[i];
+ *pbEncoded++ = (BYTE)entry->u.pwszURL[i];
break;
}
case CERT_ALT_NAME_IP_ADDRESS:
- memcpy(pbEncoded, entry->IPAddress.pbData, dataLen);
+ memcpy(pbEncoded, entry->u.IPAddress.pbData, dataLen);
break;
}
if (ret)
{
BOOL ret;
- _SEH_TRY
+ __TRY
{
const CERT_ALT_NAME_INFO *info =
(const CERT_ALT_NAME_INFO *)pvStructInfo;
}
}
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
{
BOOL ret;
- _SEH_TRY
+ __TRY
{
const CERT_BASIC_CONSTRAINTS2_INFO *info =
(const CERT_BASIC_CONSTRAINTS2_INFO *)pvStructInfo;
ret = CRYPT_AsnEncodeSequence(dwCertEncodingType, items, cItem,
dwFlags, pEncodePara, pbEncoded, pcbEncoded);
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
{
BOOL ret;
- _SEH_TRY
+ __TRY
{
const BLOBHEADER *hdr =
(const BLOBHEADER *)pvStructInfo;
pcbEncoded);
}
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
{
BOOL ret;
- _SEH_TRY
+ __TRY
{
const CRYPT_DATA_BLOB *blob = (const CRYPT_DATA_BLOB *)pvStructInfo;
DWORD bytesNeeded, lenBytes;
}
}
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
TRACE("returning %d (%08lx)\n", ret, GetLastError());
return ret;
}
{
BOOL ret;
- _SEH_TRY
+ __TRY
{
const CRYPT_BIT_BLOB *blob = (const CRYPT_BIT_BLOB *)pvStructInfo;
DWORD bytesNeeded, lenBytes, dataBytes;
}
}
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
{
BOOL ret;
- _SEH_TRY
+ __TRY
{
const CRYPT_BIT_BLOB *blob = (const CRYPT_BIT_BLOB *)pvStructInfo;
CRYPT_BIT_BLOB newBlob = { blob->cbData, NULL, blob->cUnusedBits };
&newBlob, dwFlags, pEncodePara, pbEncoded, pcbEncoded);
CryptMemFree(newBlob.pbData);
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
{
BOOL ret;
- _SEH_TRY
+ __TRY
{
DWORD significantBytes, lenBytes;
BYTE padByte = 0, bytesNeeded;
}
}
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
{
BOOL ret;
- _SEH_TRY
+ __TRY
{
DWORD significantBytes, lenBytes;
BYTE bytesNeeded;
}
}
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
{
BOOL ret;
- _SEH_TRY
+ __TRY
{
SYSTEMTIME sysTime;
/* sorry, magic number: enough for tag, len, YYMMDDHHMMSSZ\0. I use a
}
}
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
{
BOOL ret;
- _SEH_TRY
+ __TRY
{
SYSTEMTIME sysTime;
/* sorry, magic number: enough for tag, len, YYYYMMDDHHMMSSZ\0. I use a
}
}
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
{
BOOL ret;
- _SEH_TRY
+ __TRY
{
SYSTEMTIME sysTime;
lpszStructType, pvStructInfo, dwFlags, pEncodePara, pbEncoded,
pcbEncoded);
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
{
BOOL ret;
- _SEH_TRY
+ __TRY
{
DWORD bytesNeeded, dataLen, lenBytes, i;
const CRYPT_SEQUENCE_OF_ANY *seq =
}
}
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
TRACE("%p, %ld, %08lx, %p, %p, %ld\n", pbEncoded, cbEncoded, dwFlags,
pDecodePara, pvStructInfo, *pcbStructInfo);
- _SEH_TRY
+ __TRY
{
struct AsnDecodeSequenceItem items[] = {
{ offsetof(CERT_SIGNED_CONTENT_INFO, ToBeSigned),
sizeof(items) / sizeof(items[0]), pbEncoded, cbEncoded, dwFlags,
pDecodePara, pvStructInfo, pcbStructInfo, NULL);
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
TRACE("%p, %ld, %08lx, %p, %p, %ld\n", pbEncoded, cbEncoded, dwFlags,
pDecodePara, pvStructInfo, *pcbStructInfo);
- _SEH_TRY
+ __TRY
{
struct AsnDecodeSequenceItem items[] = {
{ offsetof(CERT_INFO, dwVersion), CRYPT_AsnDecodeCertVersion,
sizeof(items) / sizeof(items[0]), pbEncoded, cbEncoded, dwFlags,
pDecodePara, pvStructInfo, pcbStructInfo, NULL);
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
TRACE("%p, %ld, %08lx, %p, %p, %ld\n", pbEncoded, cbEncoded, dwFlags,
pDecodePara, pvStructInfo, *pcbStructInfo);
- _SEH_TRY
+ __TRY
{
struct AsnDecodeSequenceItem items[] = {
{ offsetof(CRL_INFO, dwVersion), CRYPT_AsnDecodeCertVersion,
sizeof(items) / sizeof(items[0]), pbEncoded, cbEncoded, dwFlags,
pDecodePara, pvStructInfo, pcbStructInfo, NULL);
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
TRACE("Returning %d (%08lx)\n", ret, GetLastError());
return ret;
{
BOOL ret = TRUE;
- _SEH_TRY
+ __TRY
{
ret = CRYPT_AsnDecodeExtensionsInternal(dwCertEncodingType,
lpszStructType, pbEncoded, cbEncoded,
}
}
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
TRACE("%p, %ld, %08lx, %p, %ld\n", pbEncoded, cbEncoded, dwFlags, pszObjId,
*pcbObjId);
- _SEH_TRY
+ __TRY
{
if (pbEncoded[0] == ASN_OBJECTIDENTIFIER)
{
ret = FALSE;
}
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
{
BOOL ret = TRUE;
- _SEH_TRY
+ __TRY
{
DWORD dataLen;
}
}
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
{
BOOL ret;
- _SEH_TRY
+ __TRY
{
if (pbEncoded[0] == (ASN_CONSTRUCTOR | ASN_SEQUENCE))
{
ret = FALSE;
}
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
{
BOOL ret = TRUE;
- _SEH_TRY
+ __TRY
{
if (pbEncoded[0] == (ASN_CONSTRUCTOR | ASN_SETOF))
{
ret = FALSE;
}
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
{
BOOL ret = TRUE;
- _SEH_TRY
+ __TRY
{
if (pbEncoded[0] == (ASN_CONSTRUCTOR | ASN_SEQUENCEOF))
{
ret = FALSE;
}
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
{
BOOL ret = TRUE;
- _SEH_TRY
+ __TRY
{
struct AsnDecodeSequenceItem items[] = {
{ offsetof(CERT_PUBLIC_KEY_INFO, Algorithm),
sizeof(items) / sizeof(items[0]), pbEncoded, cbEncoded, dwFlags,
pDecodePara, pvStructInfo, pcbStructInfo, NULL);
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
DWORD i;
for (i = 0; i < dataLen; i++)
- entry->pwszURL[i] =
+ entry->u.pwszURL[i] =
(WCHAR)pbEncoded[1 + lenBytes + i];
- entry->pwszURL[i] = 0;
+ entry->u.pwszURL[i] = 0;
break;
}
case 7: /* iPAddress */
/* The next data pointer is in the pwszURL spot, that is,
* the first 4 bytes. Need to move it to the next spot.
*/
- entry->IPAddress.pbData = (LPBYTE)entry->pwszURL;
- entry->IPAddress.cbData = dataLen;
- memcpy(entry->IPAddress.pbData, pbEncoded + 1 + lenBytes,
+ entry->u.IPAddress.pbData = (LPBYTE)entry->u.pwszURL;
+ entry->u.IPAddress.cbData = dataLen;
+ memcpy(entry->u.IPAddress.pbData, pbEncoded + 1 + lenBytes,
dataLen);
break;
}
{
BOOL ret = TRUE;
- _SEH_TRY
+ __TRY
{
if (pbEncoded[0] == ASN_SEQUENCEOF)
{
i < cEntry && ptr - pbEncoded - 1 - lenBytes <
dataLen; i++)
{
- info->rgAltEntry[i].pwszURL =
+ info->rgAltEntry[i].u.pwszURL =
(LPWSTR)nextData;
size = bytesNeeded;
ret = CRYPT_AsnDecodeAltNameEntry(ptr,
ret = FALSE;
}
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
{
BOOL ret;
- _SEH_TRY
+ __TRY
{
struct AsnDecodeSequenceItem items[] = {
{ offsetof(CERT_BASIC_CONSTRAINTS2_INFO, fCA), CRYPT_AsnDecodeBool,
sizeof(items) / sizeof(items[0]), pbEncoded, cbEncoded, dwFlags,
pDecodePara, pvStructInfo, pcbStructInfo, NULL);
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
{
BOOL ret;
- _SEH_TRY
+ __TRY
{
struct AsnDecodeSequenceItem items[] = {
{ offsetof(struct DECODED_RSA_PUB_KEY, modulus),
LocalFree(decodedKey);
}
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
TRACE("%p, %ld, %08lx, %p, %p, %ld\n", pbEncoded, cbEncoded, dwFlags,
pDecodePara, pvStructInfo, *pcbStructInfo);
- _SEH_TRY
+ __TRY
{
DWORD bytesNeeded;
ret = FALSE;
}
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
TRACE("(%p, %ld, 0x%08lx, %p, %p, %p)\n", pbEncoded, cbEncoded, dwFlags,
pDecodePara, pvStructInfo, pcbStructInfo);
- _SEH_TRY
+ __TRY
{
DWORD bytesNeeded;
}
}
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
TRACE("returning %d (%08lx)\n", ret, GetLastError());
return ret;
}
*pcbStructInfo = sizeof(int);
return TRUE;
}
- _SEH_TRY
+ __TRY
{
BYTE buf[sizeof(CRYPT_INTEGER_BLOB) + sizeof(int)];
CRYPT_INTEGER_BLOB *blob = (CRYPT_INTEGER_BLOB *)buf;
else if (GetLastError() == ERROR_MORE_DATA)
SetLastError(CRYPT_E_ASN1_LARGE);
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
{
BOOL ret;
- _SEH_TRY
+ __TRY
{
DWORD bytesNeeded;
}
}
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
{
BOOL ret;
- _SEH_TRY
+ __TRY
{
DWORD bytesNeeded;
}
}
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
*pcbStructInfo = sizeof(int);
return TRUE;
}
- _SEH_TRY
+ __TRY
{
if (pbEncoded[0] == ASN_ENUMERATED)
{
ret = FALSE;
}
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
{
BOOL ret;
- _SEH_TRY
+ __TRY
{
ret = TRUE;
if (len >= 3 && (*pbEncoded == '+' || *pbEncoded == '-'))
}
}
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
*pcbStructInfo = sizeof(FILETIME);
return TRUE;
}
- _SEH_TRY
+ __TRY
{
ret = TRUE;
if (pbEncoded[0] == ASN_UTCTIME)
ret = FALSE;
}
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
*pcbStructInfo = sizeof(FILETIME);
return TRUE;
}
- _SEH_TRY
+ __TRY
{
ret = TRUE;
if (pbEncoded[0] == ASN_GENERALTIME)
ret = FALSE;
}
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
{
BOOL ret;
- _SEH_TRY
+ __TRY
{
if (pbEncoded[0] == ASN_UTCTIME)
ret = CRYPT_AsnDecodeUtcTime(dwCertEncodingType, lpszStructType,
ret = FALSE;
}
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
{
BOOL ret = TRUE;
- _SEH_TRY
+ __TRY
{
if (pbEncoded[0] == ASN_SEQUENCEOF)
{
return FALSE;
}
}
- _SEH_EXCEPT(page_fault)
+ __EXCEPT(page_fault)
{
SetLastError(STATUS_ACCESS_VIOLATION);
ret = FALSE;
}
- _SEH_END
+ __ENDTRY
return ret;
}
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-#include "precomp.h"
+#include "config.h"
+#include <stdarg.h>
+#include <stdio.h>
+
+#include "windef.h"
+#include "winbase.h"
+#include "wincrypt.h"
+#include "winreg.h"
+#include "winnls.h"
+#include "mssip.h"
+#include "crypt32_private.h"
+#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(crypt);
static HCRYPTPROV hDefProv;
-struct OIDToAlgID
-{
- LPCSTR oid;
- DWORD algID;
-};
-
-static const struct OIDToAlgID oidToAlgID[] = {
- { szOID_RSA_RSA, CALG_RSA_KEYX },
- { szOID_RSA_MD2RSA, CALG_MD2 },
- { szOID_RSA_MD4RSA, CALG_MD4 },
- { szOID_RSA_MD5RSA, CALG_MD5 },
- { szOID_RSA_SHA1RSA, CALG_SHA },
- { szOID_RSA_DH, CALG_DH_SF },
- { szOID_RSA_SMIMEalgESDH, CALG_DH_EPHEM },
- { szOID_RSA_SMIMEalgCMS3DESwrap, CALG_3DES },
- { szOID_RSA_SMIMEalgCMSRC2wrap, CALG_RC2 },
- { szOID_RSA_MD2, CALG_MD2 },
- { szOID_RSA_MD4, CALG_MD4 },
- { szOID_RSA_MD5, CALG_MD5 },
- { szOID_RSA_RC2CBC, CALG_RC2 },
- { szOID_RSA_RC4, CALG_RC4 },
- { szOID_RSA_DES_EDE3_CBC, CALG_3DES },
- { szOID_ANSI_X942_DH, CALG_DH_SF },
- { szOID_X957_DSA, CALG_DSS_SIGN },
- { szOID_X957_SHA1DSA, CALG_SHA },
- { szOID_OIWSEC_md4RSA, CALG_MD4 },
- { szOID_OIWSEC_md5RSA, CALG_MD5 },
- { szOID_OIWSEC_md4RSA2, CALG_MD4 },
- { szOID_OIWSEC_desCBC, CALG_DES },
- { szOID_OIWSEC_dsa, CALG_DSS_SIGN },
- { szOID_OIWSEC_shaDSA, CALG_SHA },
- { szOID_OIWSEC_shaRSA, CALG_SHA },
- { szOID_OIWSEC_sha, CALG_SHA },
- { szOID_OIWSEC_rsaXchg, CALG_RSA_KEYX },
- { szOID_OIWSEC_sha1, CALG_SHA },
- { szOID_OIWSEC_dsaSHA1, CALG_SHA },
- { szOID_OIWSEC_sha1RSASign, CALG_SHA },
- { szOID_OIWDIR_md2RSA, CALG_MD2 },
- { szOID_INFOSEC_mosaicUpdatedSig, CALG_SHA },
- { szOID_INFOSEC_mosaicKMandUpdSig, CALG_DSS_SIGN },
-};
-
BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved)
{
switch (fdwReason)
return FALSE;
}
+struct OIDToAlgID
+{
+ LPCSTR oid;
+ DWORD algID;
+};
+
+static const struct OIDToAlgID oidToAlgID[] = {
+ { szOID_RSA_RSA, CALG_RSA_KEYX },
+ { szOID_RSA_MD2RSA, CALG_MD2 },
+ { szOID_RSA_MD4RSA, CALG_MD4 },
+ { szOID_RSA_MD5RSA, CALG_MD5 },
+ { szOID_RSA_SHA1RSA, CALG_SHA },
+ { szOID_RSA_DH, CALG_DH_SF },
+ { szOID_RSA_SMIMEalgESDH, CALG_DH_EPHEM },
+ { szOID_RSA_SMIMEalgCMS3DESwrap, CALG_3DES },
+ { szOID_RSA_SMIMEalgCMSRC2wrap, CALG_RC2 },
+ { szOID_RSA_MD2, CALG_MD2 },
+ { szOID_RSA_MD4, CALG_MD4 },
+ { szOID_RSA_MD5, CALG_MD5 },
+ { szOID_RSA_RC2CBC, CALG_RC2 },
+ { szOID_RSA_RC4, CALG_RC4 },
+ { szOID_RSA_DES_EDE3_CBC, CALG_3DES },
+ { szOID_ANSI_X942_DH, CALG_DH_SF },
+ { szOID_X957_DSA, CALG_DSS_SIGN },
+ { szOID_X957_SHA1DSA, CALG_SHA },
+ { szOID_OIWSEC_md4RSA, CALG_MD4 },
+ { szOID_OIWSEC_md5RSA, CALG_MD5 },
+ { szOID_OIWSEC_md4RSA2, CALG_MD4 },
+ { szOID_OIWSEC_desCBC, CALG_DES },
+ { szOID_OIWSEC_dsa, CALG_DSS_SIGN },
+ { szOID_OIWSEC_shaDSA, CALG_SHA },
+ { szOID_OIWSEC_shaRSA, CALG_SHA },
+ { szOID_OIWSEC_sha, CALG_SHA },
+ { szOID_OIWSEC_rsaXchg, CALG_RSA_KEYX },
+ { szOID_OIWSEC_sha1, CALG_SHA },
+ { szOID_OIWSEC_dsaSHA1, CALG_SHA },
+ { szOID_OIWSEC_sha1RSASign, CALG_SHA },
+ { szOID_OIWDIR_md2RSA, CALG_MD2 },
+ { szOID_INFOSEC_mosaicUpdatedSig, CALG_SHA },
+ { szOID_INFOSEC_mosaicKMandUpdSig, CALG_DSS_SIGN },
+};
+
LPCSTR WINAPI CertAlgIdToOID(DWORD dwAlgId)
{
switch (dwAlgId)
LPVOID ret;
ret = TlsGetValue(dwTlsIndex);
-
- TlsSetValue(dwTlsIndex, NULL);
+ TlsSetValue(dwTlsIndex, NULL);
return ret;
}