58 error(
"rdssl_rc4_info_create no memory\n");
81 error(
"CryptAcquireContext failed with %lx\n",
dwErr);
106 error(
"CryptDestroyKey failed with %lx\n",
dwErr);
109 if (
info->hCryptProv)
115 error(
"CryptReleaseContext failed with %lx\n",
dwErr);
132 if (!rc4_info || !
key || !
len || !
info->hCryptProv)
134 error(
"rdssl_rc4_set_key %p %p %d\n", rc4_info,
key,
len);
140 error(
"rdssl_rc4_set_key no memory\n");
167 error(
"CryptImportKey failed with %lx\n",
dwErr);
178 BYTE * intermediate_data;
180 if (!rc4_info || !in_data || !out_data || !
len || !
info->hKey)
182 error(
"rdssl_rc4_crypt %p %p %p %d\n", rc4_info, in_data, out_data,
len);
186 if (!intermediate_data)
188 error(
"rdssl_rc4_set_key no memory\n");
202 g_free(intermediate_data);
203 error(
"CryptEncrypt failed with %lx\n",
dwErr);
206 memcpy(out_data, intermediate_data,
len);
207 g_free(intermediate_data);
225 error(
"rdssl_hash_info_create %d no memory\n",
id);
249 error(
"CryptAcquireContext failed with %lx\n",
dwErr);
262 error(
"CryptCreateHash failed with %lx\n",
dwErr);
282 if (
info->hCryptProv)
305 error(
"CryptDestroyHash failed with %lx\n",
dwErr);
316 error(
"CryptCreateHash failed with %lx\n",
dwErr);
328 error(
"rdssl_hash_transform %p %p %d\n", hash_info,
data,
len);
338 error(
"CryptHashData failed with %lx\n",
dwErr);
351 error(
"rdssl_hash_complete %p %p\n", hash_info,
data);
362 error(
"CryptGetHashParam failed with %lx\n",
dwErr);
373 error(
"CryptGetHashParam failed with %lx\n",
dwErr);
463 if (!
key || !keylen || !
data || !
len ||!output)
465 error(
"rdssl_hmac_md5 %p %d %p %d %p\n",
key, keylen,
data,
len, output);
474 error(
"rdssl_hmac_md5 %d no memory\n");
498 error(
"CryptAcquireContext failed with %lx\n",
dwErr);
517 error(
"CryptCreateHash failed with %lx\n",
dwErr);
528 error(
"CryptHashData failed with %lx\n",
dwErr);
540 error(
"CryptGetHashParam failed with %lx\n",
dwErr);
552 error(
"CryptGetHashParam failed with %lx\n",
dwErr);
570 error(
"CryptImportKey failed with %lx\n",
dwErr);
581 error(
"CryptCreateHash failed with %lx\n",
dwErr);
585 info.cbInnerString = 0;
586 info.cbOuterString = 0;
594 error(
"CryptSetHashParam failed with %lx\n",
dwErr);
604 error(
"CryptHashData failed with %lx\n",
dwErr);
615 error(
"CryptGetHashParam failed with %lx\n",
dwErr);
626 error(
"CryptGetHashParam failed with %lx\n",
dwErr);
674#define HIBITMASK 0x80000000
675#define MAX_DIG_LEN 51
676#define MAX_DIGIT 0xffffffff
677#define BITS_PER_DIGIT 32
678#define MAX_HALF_DIGIT 0xffff
679#define B_J (MAX_HALF_DIGIT + 1)
680#define LOHALF(x) ((DIGIT_T)((x) & 0xffff))
681#define HIHALF(x) ((DIGIT_T)((x) >> 16 & 0xffff))
682#define TOHIGH(x) ((DIGIT_T)((x) << 16))
684#define mpNEXTBITMASK(mask, n) \
824 for (
i = 1;
i <
x;
i++)
836 nextcarry = (
b[
i] &
mask) >>
y;
837 a[
i] =
b[
i] <<
x | carry;
860 for (
i = 1;
i <
x;
i++)
873 nextcarry = (
b[
i] &
mask) <<
y;
874 a[
i] =
b[
i] >>
x | carry;
1027 rhat =
u3 - qhat *
v1;
1053 rhat =
t - qhat *
v1;
1056 if ((qhat ==
B_J) || (qhat *
v0 >
t))
1061 if ((rhat <
B_J) && (qhat *
v0 >
t))
1084 rhat =
t - qhat *
v1;
1087 if ((qhat ==
B_J) || (qhat *
v0 >
t))
1092 if ((rhat <
B_J) && (qhat *
v0 >
t))
1127 else if (
t[1] > rhat)
1131 else if (
t[0] > ujn2)
1212 for (
i = 0;
i <
n;
i++)
1316 if (
v[
n - 1] & bitmask)
1329 for (
j =
m;
j >= 0;
j--)
1340 rhat = uu[
j +
n - 1];
1342 if (rhat <
v[
n - 1])
1351 if (!(rhat <
v[
n - 1]))
1361 overflow =
mpMultSub(
t[1], ww,
v, qhat, (
unsigned int)
n);
1367 overflow =
mpAdd(ww, ww,
v, (
unsigned int)
n);
1369 t[0] = uu[
j +
n - 1];
1372 for (
j =
n;
j <
m+
n;
j++)
1427 for (
i = 0;
i < 2 *
m;
i++)
1431 for (
j = 0;
j <
n;
j++)
1442 for (
i = 0;
i <
m;
i++)
1486 char*
mod,
int mod_len,
char*
exp,
int exp_len)
1502 if (in_len > out_len || in_len == 0 ||
1503 out_len == 0 || mod_len == 0 || exp_len == 0)
1564 0x3D, 0x3A, 0x5E, 0xBD, 0x72, 0x43, 0x3E, 0xC9,
1565 0x4D, 0xBB, 0xC1, 0x1E, 0x4A, 0xBA, 0x5F, 0xCB,
1566 0x3E, 0x88, 0x20, 0x87, 0xEF, 0xF5, 0xC1, 0xE2,
1567 0xD7, 0xB7, 0x6B, 0x9A, 0xF2, 0x52, 0x45, 0x95,
1568 0xCE, 0x63, 0x65, 0x6B, 0x58, 0x3A, 0xFE, 0xEF,
1569 0x7C, 0xE7, 0xBF, 0xFE, 0x3D, 0xF6, 0x5C, 0x7D,
1570 0x6C, 0x5E, 0x06, 0x09, 0x1A, 0xF5, 0x61, 0xBB,
1571 0x20, 0x93, 0x09, 0x5F, 0x05, 0x6D, 0xEA, 0x87,
1572 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1577 0x87, 0xA7, 0x19, 0x32, 0xDA, 0x11, 0x87, 0x55,
1578 0x58, 0x00, 0x16, 0x16, 0x25, 0x65, 0x68, 0xF8,
1579 0x24, 0x3E, 0xE6, 0xFA, 0xE9, 0x67, 0x49, 0x94,
1580 0xCF, 0x92, 0xCC, 0x33, 0x99, 0xE8, 0x08, 0x60,
1581 0x17, 0x9A, 0x12, 0x9F, 0x24, 0xDD, 0xB1, 0x24,
1582 0x99, 0xC7, 0x3A, 0xB8, 0x0A, 0x7B, 0x0D, 0xDD,
1583 0x35, 0x07, 0x79, 0x17, 0x0B, 0x51, 0x9B, 0xB3,
1584 0xC7, 0x10, 0x01, 0x13, 0xE7, 0x3F, 0xF3, 0x5F,
1585 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1586 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1587 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1588 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1589 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1590 0x00, 0x00, 0x00, 0x00
1595 char* sign_data,
int sign_len,
char* sign_data2,
int sign_len2,
char* testkey)
1601 if ((e_len != 4) || (n_len != 64) || (sign_len != 64) || (sign_len2 != 64))
1611 md5_final = (
char*)
xmalloc(64);
1621 memset(md5_final, 0xff, 64);
1635 return memcmp(sign_data, sign_data2, sign_len2);
1690 error(
"CryptAcquireContext call failed with %lx\n",
dwErr);
1695 &(
cert->pCertInfo->SubjectPublicKeyInfo),
1704 error(
"CryptImportPublicKeyInfoEx call failed with %lx\n",
dwErr);
1718 error(
"CryptExportKey call failed with %lx\n",
dwErr);
1734 error(
"CryptExportKey call failed with %lx\n",
dwErr);
1752 error(
"CertVerifySubjectCertificateContext call failed with %lx\n",
GetLastError());
1756 error(
"CertVerifySubjectCertificateContext check failed %lx\n",
dwFlags);
1766 if (!rkey || !exponent || !max_exp_len || !
modulus || !max_mod_len)
1768 error(
"rdssl_rkey_get_exp_mod %p %p %ld %p %ld\n", rkey, exponent, max_exp_len,
modulus, max_mod_len);
1771 memcpy (exponent, &
desc->pubexp, max_exp_len);
1781 error(
"rdssl_rkey_free rkey is null\n");
std::map< E_MODULE, HMODULE > mod
static FN_RtlMultipleFreeHeap g_free
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
BOOL WINAPI CryptExportKey(HCRYPTKEY hKey, HCRYPTKEY hExpKey, DWORD dwBlobType, DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen)
BOOL WINAPI CryptCreateHash(HCRYPTPROV hProv, ALG_ID Algid, HCRYPTKEY hKey, DWORD dwFlags, HCRYPTHASH *phHash)
BOOL WINAPI CryptGetHashParam(HCRYPTHASH hHash, DWORD dwParam, BYTE *pbData, DWORD *pdwDataLen, DWORD dwFlags)
BOOL WINAPI CryptDestroyKey(HCRYPTKEY hKey)
BOOL WINAPI CryptDestroyHash(HCRYPTHASH hHash)
BOOL WINAPI CryptReleaseContext(HCRYPTPROV hProv, DWORD dwFlags)
BOOL WINAPI CryptHashData(HCRYPTHASH hHash, const BYTE *pbData, DWORD dwDataLen, DWORD dwFlags)
BOOL WINAPI CryptSetHashParam(HCRYPTHASH hHash, DWORD dwParam, const BYTE *pbData, DWORD dwFlags)
BOOL WINAPI CryptEncrypt(HCRYPTKEY hKey, HCRYPTHASH hHash, BOOL Final, DWORD dwFlags, BYTE *pbData, DWORD *pdwDataLen, DWORD dwBufLen)
BOOL WINAPI CryptImportKey(HCRYPTPROV hProv, const BYTE *pbData, DWORD dwDataLen, HCRYPTKEY hPubKey, DWORD dwFlags, HCRYPTKEY *phKey)
BOOL WINAPI CertFreeCertificateContext(PCCERT_CONTEXT pCertContext)
PCCERT_CONTEXT WINAPI CertCreateCertificateContext(DWORD dwCertEncodingType, const BYTE *pbCertEncoded, DWORD cbCertEncoded)
BOOL WINAPI CertVerifySubjectCertificateContext(PCCERT_CONTEXT pSubject, PCCERT_CONTEXT pIssuer, DWORD *pdwFlags)
BOOL WINAPI CryptImportPublicKeyInfoEx(HCRYPTPROV hCryptProv, DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, ALG_ID aiKeyAlg, DWORD dwFlags, void *pvAuxInfo, HCRYPTKEY *phKey)
LPVOID WINAPI CryptMemAlloc(ULONG cbSize)
VOID WINAPI CryptMemFree(LPVOID pv)
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
GLint GLint GLint GLint GLint x
GLint GLint GLint GLint GLint GLint y
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLdouble GLdouble GLdouble r
GLdouble GLdouble GLdouble GLdouble q
GLboolean GLboolean GLboolean b
GLboolean GLboolean GLboolean GLboolean a
GLubyte GLubyte GLubyte GLubyte w
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
#define memcpy(s1, s2, n)
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
static const WCHAR desc[]
static size_t double int ndigits
#define cmp(status, error)
static int sum(int x_, int y_)
static void mpSetDigit(DIGIT_T *a, DIGIT_T d, unsigned int ndigits)
static DIGIT_T mpShiftLeft(DIGIT_T *a, DIGIT_T *b, unsigned int x, unsigned int ndigits)
void rdssl_rc4_crypt(void *rc4_info, char *in_data, char *out_data, int len)
int rdssl_sign_ok(char *e_data, int e_len, char *n_data, int n_len, char *sign_data, int sign_len, char *sign_data2, int sign_len2, char *testkey)
void rdssl_rkey_free(uint8 *rkey)
void * rdssl_rc4_info_create(void)
static DIGIT_T mpShiftRight(DIGIT_T *a, DIGIT_T *b, unsigned int x, unsigned int ndigits)
int rdssl_rkey_get_exp_mod(uint8 *rkey, uint8 *exponent, uint32 max_exp_len, uint8 *modulus, uint32 max_mod_len)
void rdssl_sha1_clear(void *sha1_info)
static int QhatTooBig(DIGIT_T qhat, DIGIT_T rhat, DIGIT_T vn2, DIGIT_T ujn2)
static DIGIT_T mpAdd(DIGIT_T *w, DIGIT_T *u, DIGIT_T *v, unsigned int ndigits)
void rdssl_sha1_transform(void *sha1_info, char *data, int len)
void rdssl_rc4_set_key(void *rc4_info, char *key, int len)
static void * g_malloc(int size, int zero)
void rdssl_hmac_md5(char *key, int keylen, char *data, int len, char *output)
#define mpNEXTBITMASK(mask, n)
PCCERT_CONTEXT rdssl_cert_read(uint8 *data, uint32 len)
void rdssl_md5_clear(void *md5_info)
static int mpModulo(DIGIT_T *r, DIGIT_T *u, unsigned int udigits, DIGIT_T *v, unsigned int vdigits)
static uint8 g_ppk_d[108]
static int spMultiply(DIGIT_T *p, DIGIT_T x, DIGIT_T y)
void rdssl_cert_free(PCCERT_CONTEXT context)
void rdssl_hash_clear(void *hash_info, ALG_ID id)
void rdssl_sha1_info_delete(void *sha1_info)
void rdssl_md5_transform(void *md5_info, char *data, int len)
static unsigned int mpSizeof(DIGIT_T *a, unsigned int ndigits)
static void mpSetZero(DIGIT_T *a, unsigned int ndigits)
void rdssl_hash_transform(void *hash_info, char *data, int len)
void rdssl_hash_info_delete(void *hash_info)
static int mpModMult(DIGIT_T *a, DIGIT_T *x, DIGIT_T *y, DIGIT_T *m, unsigned int ndigits)
static void spMultSub(DIGIT_T *uu, DIGIT_T qhat, DIGIT_T v1, DIGIT_T v0)
static DIGIT_T mpMultSub(DIGIT_T wn, DIGIT_T *w, DIGIT_T *v, DIGIT_T q, unsigned int n)
static DIGIT_T mpShortDiv(DIGIT_T *q, DIGIT_T *u, DIGIT_T v, unsigned int ndigits)
void rdssl_sha1_complete(void *sha1_info, char *data)
void * rdssl_sha1_info_create(void)
void rdssl_hash_complete(void *hash_info, char *data)
void rdssl_md5_complete(void *md5_info, char *data)
static void mpSetEqual(DIGIT_T *a, DIGIT_T *b, unsigned int ndigits)
static DIGIT_T spDivide(DIGIT_T *q, DIGIT_T *r, DIGIT_T *u, DIGIT_T v)
RD_BOOL rdssl_certs_ok(PCCERT_CONTEXT server_cert, PCCERT_CONTEXT cacert)
uint8 * rdssl_cert_to_rkey(PCCERT_CONTEXT cert, uint32 *key_len)
void rdssl_md5_info_delete(void *md5_info)
void * rdssl_hash_info_create(ALG_ID id)
static int mpDivide(DIGIT_T *q, DIGIT_T *r, DIGIT_T *u, unsigned int udigits, DIGIT_T *v, unsigned int vdigits)
void * rdssl_md5_info_create(void)
static int mpMultiply(DIGIT_T *w, DIGIT_T *u, DIGIT_T *v, unsigned int ndigits)
void rdssl_rc4_info_delete(void *rc4_info)
int rdssl_mod_exp(char *out, int out_len, char *in, int in_len, char *mod, int mod_len, char *exp, int exp_len)
static int mpCompare(DIGIT_T *a, DIGIT_T *b, unsigned int ndigits)
DWORD WINAPI GetLastError(void)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define X509_ASN_ENCODING
struct _PUBLICKEYSTRUC PUBLICKEYSTRUC
#define CERT_STORE_SIGNATURE_FLAG
#define CryptAcquireContext
#define PKCS_7_ASN_ENCODING
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG _In_ LONG y1
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG x1