crypt32: Implement decoding of X509_ECC_SIGNATURE.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
d791d36a9b
commit
718e9dce9c
|
@ -6013,6 +6013,35 @@ static BOOL WINAPI CRYPT_AsnDecodeObjectIdentifier(DWORD dwCertEncodingType,
|
|||
return ret;
|
||||
}
|
||||
|
||||
static BOOL WINAPI CRYPT_AsnDecodeEccSignature(DWORD dwCertEncodingType,
|
||||
LPCSTR lpszStructType, const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags,
|
||||
CRYPT_DECODE_PARA *pDecodePara, void *pvStructInfo, DWORD *pcbStructInfo)
|
||||
{
|
||||
BOOL ret;
|
||||
struct AsnDecodeSequenceItem items[] = {
|
||||
{ ASN_INTEGER, offsetof(CERT_ECC_SIGNATURE, r),
|
||||
CRYPT_AsnDecodeUnsignedIntegerInternal, sizeof(CRYPT_UINT_BLOB), FALSE,
|
||||
TRUE, offsetof(CERT_ECC_SIGNATURE, r.pbData), 0 },
|
||||
{ ASN_INTEGER, offsetof(CERT_ECC_SIGNATURE, s),
|
||||
CRYPT_AsnDecodeUnsignedIntegerInternal, sizeof(CRYPT_UINT_BLOB), FALSE,
|
||||
TRUE, offsetof(CERT_ECC_SIGNATURE, s.pbData), 0 },
|
||||
};
|
||||
|
||||
__TRY
|
||||
{
|
||||
ret = CRYPT_AsnDecodeSequence(items, ARRAY_SIZE(items),
|
||||
pbEncoded, cbEncoded, dwFlags, pDecodePara, pvStructInfo,
|
||||
pcbStructInfo, NULL, NULL);
|
||||
}
|
||||
__EXCEPT_PAGE_FAULT
|
||||
{
|
||||
SetLastError(STATUS_ACCESS_VIOLATION);
|
||||
ret = FALSE;
|
||||
}
|
||||
__ENDTRY
|
||||
return ret;
|
||||
}
|
||||
|
||||
static CryptDecodeObjectExFunc CRYPT_GetBuiltinDecoder(DWORD dwCertEncodingType,
|
||||
LPCSTR lpszStructType)
|
||||
{
|
||||
|
@ -6155,6 +6184,9 @@ static CryptDecodeObjectExFunc CRYPT_GetBuiltinDecoder(DWORD dwCertEncodingType,
|
|||
case LOWORD(X509_OBJECT_IDENTIFIER):
|
||||
decodeFunc = CRYPT_AsnDecodeObjectIdentifier;
|
||||
break;
|
||||
case LOWORD(X509_ECC_SIGNATURE):
|
||||
decodeFunc = CRYPT_AsnDecodeEccSignature;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (!strcmp(lpszStructType, szOID_CERT_EXTENSIONS))
|
||||
|
|
Loading…
Reference in New Issue