26#define WIN32_NO_STATUS
73 for (
i = 0;
i <
object->num_properties;
i++)
89 ERR(
"Error allocating memory.\n");
92 property = &
object->properties[
object->num_properties++];
99 ERR(
"Error allocating memory.\n");
102 object->properties = tmp;
103 property = &
object->properties[
object->num_properties++];
109 ERR(
"Error allocating memory.\n");
126 ERR(
"Error allocating memory.\n");
128 property->key =
NULL;
132 property->
value = tmp;
149 object->key.algid =
RSA;
155 sizeof(supported_lengths));
194 if (
name)
FIXME(
"Persistent keys are not supported\n");
199 DWORD default_bitlen = 1024;
203 ERR(
"Error allocating memory\n");
210 ERR(
"Error generating key pair %#lx\n",
status);
249 FIXME(
"(%#Ix, %p, %lu, %p, %p, %lu, %p, %#lx): stub\n",
key,
input,
insize,
padding,
265 TRACE(
"(%#Ix, %p, %lu, %p, %p, %lu, %p, %#lx)\n",
key,
input,
insize,
padding,
277 FIXME(
"No padding and oaep padding not supported\n");
290 FIXME(
"(%#Ix, %#lx, %p, %p, %#lx): stub\n", provider, alg_ops, alg_count, alg_list,
flags);
297 FIXME(
"(%#Ix, %p, %p, %p, %#lx): stub\n", provider, scope,
key_name, enum_state,
flags);
317 ERR(
"Error setting key length property\n");
324 ERR(
"Error finalizing key pair\n");
373 for (
i = 0;
i <
object->num_properties;
i++)
392 TRACE(
"(%#Ix, %s, %p, %lu, %p, %#lx)\n",
handle,
wine_dbgstr_w(
name), output,
outsize,
result,
flags);
398 *
result =
property->value_size;
415 TRACE(
"(%#Ix, %#Ix, %s, %p, %p, %p, %lu, %#lx)\n", provider, decrypt_key,
wine_dbgstr_w(
type),
420 FIXME(
"Key blob decryption not implemented\n");
425 FIXME(
"Parameter information not implemented\n");
430 FIXME(
"Silent flag not implemented\n");
450 ERR(
"Error allocating memory\n");
457 WARN(
"Error importing key pair %#lx\n",
status);
467 FIXME(
"Unhandled key magic %#lx\n",
header->Magic);
481 TRACE(
"(%#Ix, %#Ix, %s, %p, %p, %lu, %p, %#lx)\n",
key, encrypt_key,
wine_dbgstr_w(
type),
params, output,
486 FIXME(
"Key blob encryption not implemented\n");
491 FIXME(
"Parameter information not implemented\n");
496 FIXME(
"Silent flag not implemented\n");
518 FIXME(
"Silent flag not implemented\n");
530 ERR(
"Error retrieving algorithm list %#lx\n",
status);
569 ERR(
"Error allocating memory.\n");
593 TRACE(
"(%#Ix, %p, %p, %lu, %p, %lu, %#lx)\n",
handle,
padding,
value, value_len, sig, sig_len,
flags);
607 TRACE(
"(%#Ix, %p, %p, %lu, %p, %lu, %#lx)\n",
handle,
padding,
hash, hash_size,
signature,
608 signature_size,
flags);
614 if (key_object->
key.algid <
RSA)
616 FIXME(
"Symmetric keys not supported.\n");
621 signature_size,
flags));
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define BCRYPT_SECRET_AGREEMENT_OPERATION
#define BCRYPT_SIGNATURE_OPERATION
#define BCRYPT_PUBLIC_KEY_LENGTH
#define BCRYPT_SIGNATURE_LENGTH
#define BCRYPT_RSA_ALGORITHM
#define BCRYPT_KEY_LENGTH
#define BCRYPT_RSA_ALG_HANDLE
#define BCRYPT_RSAFULLPRIVATE_MAGIC
#define BCRYPT_RSAPRIVATE_MAGIC
#define BCRYPT_CIPHER_OPERATION
#define BCRYPT_ECDSA_P256_ALGORITHM
#define BCRYPT_RSAPUBLIC_MAGIC
#define BCRYPT_ASYMMETRIC_ENCRYPTION_OPERATION
#define BCRYPT_RSA_SIGN_ALGORITHM
#define BCRYPT_ECDSA_P256_ALG_HANDLE
NTSTATUS WINAPI BCryptImportKeyPair(BCRYPT_ALG_HANDLE handle, BCRYPT_KEY_HANDLE decrypt_key_handle, const WCHAR *type, BCRYPT_KEY_HANDLE *ret_handle, UCHAR *input, ULONG input_len, ULONG flags)
NTSTATUS WINAPI BCryptGenerateKeyPair(BCRYPT_ALG_HANDLE handle, BCRYPT_KEY_HANDLE *ret_handle, ULONG bitlen, ULONG flags)
NTSTATUS WINAPI BCryptExportKey(BCRYPT_KEY_HANDLE export_key_handle, BCRYPT_KEY_HANDLE encrypt_key_handle, const WCHAR *type, UCHAR *output, ULONG output_len, ULONG *size, ULONG flags)
NTSTATUS WINAPI BCryptEncrypt(BCRYPT_KEY_HANDLE handle, UCHAR *input, ULONG input_len, void *padding, UCHAR *iv, ULONG iv_len, UCHAR *output, ULONG output_len, ULONG *ret_len, ULONG flags)
NTSTATUS WINAPI BCryptEnumAlgorithms(ULONG type, ULONG *ret_count, BCRYPT_ALGORITHM_IDENTIFIER **ret_list, ULONG flags)
NTSTATUS WINAPI BCryptSetProperty(BCRYPT_HANDLE handle, const WCHAR *prop, UCHAR *value, ULONG size, ULONG flags)
NTSTATUS WINAPI BCryptFinalizeKeyPair(BCRYPT_KEY_HANDLE handle, ULONG flags)
NTSTATUS WINAPI BCryptVerifySignature(BCRYPT_KEY_HANDLE handle, void *padding, UCHAR *hash, ULONG hash_len, UCHAR *signature, ULONG signature_len, ULONG flags)
NTSTATUS WINAPI BCryptSignHash(BCRYPT_KEY_HANDLE handle, void *padding, UCHAR *hash, ULONG hash_len, UCHAR *signature, ULONG signature_len, ULONG *ret_len, ULONG flags)
NTSTATUS WINAPI BCryptDestroyKey(BCRYPT_KEY_HANDLE handle)
void WINAPI BCryptFreeBuffer(void *buffer)
#define STATUS_INVALID_HANDLE
#define STATUS_NOT_SUPPORTED
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
_ACRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *)
static wchar_t * wcsdup(const wchar_t *str)
SECURITY_STATUS WINAPI NCryptFinalizeKey(NCRYPT_KEY_HANDLE handle, DWORD flags)
SECURITY_STATUS WINAPI NCryptVerifySignature(NCRYPT_KEY_HANDLE handle, void *padding, BYTE *hash, DWORD hash_size, BYTE *signature, DWORD signature_size, DWORD flags)
static void provider_addref(NCRYPT_PROV_HANDLE handle)
static struct object_property * get_object_property(struct object *object, const WCHAR *name)
static struct object * create_key_object(enum algid algid, NCRYPT_PROV_HANDLE provider)
SECURITY_STATUS WINAPI NCryptEnumAlgorithms(NCRYPT_PROV_HANDLE provider, DWORD alg_ops, DWORD *alg_count, NCryptAlgorithmName **alg_list, DWORD flags)
SECURITY_STATUS WINAPI NCryptIsAlgSupported(NCRYPT_PROV_HANDLE provider, const WCHAR *algid, DWORD flags)
SECURITY_STATUS WINAPI NCryptDecrypt(NCRYPT_KEY_HANDLE key, BYTE *input, DWORD insize, void *padding, BYTE *output, DWORD outsize, DWORD *result, DWORD flags)
SECURITY_STATUS WINAPI NCryptGetProperty(NCRYPT_HANDLE handle, const WCHAR *name, BYTE *output, DWORD outsize, DWORD *result, DWORD flags)
struct object_property * add_object_property(struct object *object, const WCHAR *name)
static SECURITY_STATUS map_ntstatus(NTSTATUS status)
static SECURITY_STATUS set_object_property(struct object *object, const WCHAR *name, BYTE *value, DWORD value_size)
SECURITY_STATUS WINAPI NCryptFreeBuffer(PVOID buf)
SECURITY_STATUS WINAPI NCryptEnumKeys(NCRYPT_PROV_HANDLE provider, const WCHAR *scope, NCryptKeyName **key_name, PVOID *enum_state, DWORD flags)
SECURITY_STATUS WINAPI NCryptImportKey(NCRYPT_PROV_HANDLE provider, NCRYPT_KEY_HANDLE decrypt_key, const WCHAR *type, NCryptBufferDesc *params, NCRYPT_KEY_HANDLE *handle, BYTE *data, DWORD datasize, DWORD flags)
BOOL WINAPI NCryptIsKeyHandle(NCRYPT_KEY_HANDLE hKey)
SECURITY_STATUS WINAPI NCryptFreeObject(NCRYPT_HANDLE handle)
static SECURITY_STATUS free_key_object(struct key *key)
SECURITY_STATUS WINAPI NCryptExportKey(NCRYPT_KEY_HANDLE key, NCRYPT_KEY_HANDLE encrypt_key, const WCHAR *type, NCryptBufferDesc *params, BYTE *output, DWORD output_len, DWORD *ret_len, DWORD flags)
SECURITY_STATUS WINAPI NCryptDeleteKey(NCRYPT_KEY_HANDLE key, DWORD flags)
SECURITY_STATUS WINAPI NCryptCreatePersistedKey(NCRYPT_PROV_HANDLE provider, NCRYPT_KEY_HANDLE *key, const WCHAR *algid, const WCHAR *name, DWORD keyspec, DWORD flags)
SECURITY_STATUS WINAPI NCryptOpenKey(NCRYPT_PROV_HANDLE provider, NCRYPT_KEY_HANDLE *key, const WCHAR *name, DWORD keyspec, DWORD flags)
static struct object * allocate_object(enum object_type type)
SECURITY_STATUS WINAPI NCryptSignHash(NCRYPT_KEY_HANDLE handle, void *padding, BYTE *value, DWORD value_len, BYTE *sig, DWORD sig_len, DWORD *ret_len, DWORD flags)
SECURITY_STATUS WINAPI NCryptSetProperty(NCRYPT_HANDLE handle, const WCHAR *name, BYTE *input, DWORD insize, DWORD flags)
SECURITY_STATUS WINAPI NCryptEncrypt(NCRYPT_KEY_HANDLE key, BYTE *input, DWORD insize, void *padding, BYTE *output, DWORD outsize, DWORD *result, DWORD flags)
SECURITY_STATUS WINAPI NCryptOpenStorageProvider(NCRYPT_PROV_HANDLE *provider, const WCHAR *name, DWORD flags)
GLuint GLuint GLsizei count
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLuint GLenum GLsizei const GLchar * buf
GLenum const GLfloat * params
GLenum GLenum GLenum input
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
const unsigned char size_t insize
unsigned char size_t * outsize
#define memcpy(s1, s2, n)
static JOBOBJECTINFOCLASS LPVOID DWORD LPDWORD ret_len
static const DWORD padding[]
#define NCRYPT_PAD_PKCS1_FLAG
#define NCRYPT_BLOCK_LENGTH_PROPERTY
#define NCRYPT_PROVIDER_HANDLE_PROPERTY
#define NCRYPT_ALGORITHM_PROPERTY
#define NCRYPT_ALGORITHM_GROUP_PROPERTY
#define NCRYPT_LENGTHS_PROPERTY
#define NCRYPT_LENGTH_PROPERTY
#define NCRYPT_EXPORT_POLICY_PROPERTY
#define NCRYPT_KEY_TYPE_PROPERTY
#define NCRYPT_NO_PADDING_FLAG
#define NCRYPT_PAD_OAEP_FLAG
#define NCRYPT_ALLOW_ALL_USAGES
#define NCRYPT_SILENT_FLAG
ULONG_PTR NCRYPT_PROV_HANDLE
ULONG_PTR NCRYPT_KEY_HANDLE
#define NCRYPT_KEY_USAGE_PROPERTY
#define STATUS_INVALID_SIGNATURE
#define STATUS_BUFFER_TOO_SMALL
BCRYPT_KEY_HANDLE bcrypt_key
struct object_property * properties
IWbemClassObject * object
#define STATUS_INVALID_PARAMETER
#define NTE_INVALID_PARAMETER
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
#define NTE_INVALID_HANDLE
#define NTE_INTERNAL_ERROR
#define NTE_NOT_SUPPORTED
#define RPC_X_NULL_REF_POINTER
#define NTE_BAD_SIGNATURE
#define NTE_BUFFER_TOO_SMALL