Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
6bd4bf66
Commit
6bd4bf66
authored
Sep 01, 2008
by
Francois Gouget
Committed by
Alexandre Julliard
Sep 02, 2008
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
crypt32: Fix compilation on systems that don't support nameless unions.
parent
360c164e
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
123 additions
and
122 deletions
+123
-122
msg.c
dlls/crypt32/msg.c
+39
-38
encode.c
dlls/crypt32/tests/encode.c
+48
-48
msg.c
dlls/crypt32/tests/msg.c
+36
-36
No files found.
dlls/crypt32/msg.c
View file @
6bd4bf66
...
...
@@ -20,6 +20,7 @@
#include "wine/port.h"
#include <stdarg.h>
#define NONAMELESSUNION
#include "windef.h"
#include "winbase.h"
#include "wincrypt.h"
...
...
@@ -662,19 +663,19 @@ static BOOL CRYPT_IsValidSigner(CMSG_SIGNER_ENCODE_INFO_WITH_CMS *signer)
}
break
;
case
CERT_ID_ISSUER_SERIAL_NUMBER
:
if
(
!
signer
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
cbData
)
if
(
!
signer
->
SignerId
.
u
.
IssuerSerialNumber
.
SerialNumber
.
cbData
)
{
SetLastError
(
E_INVALIDARG
);
return
FALSE
;
}
if
(
!
signer
->
SignerId
.
IssuerSerialNumber
.
Issuer
.
cbData
)
if
(
!
signer
->
SignerId
.
u
.
IssuerSerialNumber
.
Issuer
.
cbData
)
{
SetLastError
(
E_INVALIDARG
);
return
FALSE
;
}
break
;
case
CERT_ID_KEY_IDENTIFIER
:
if
(
!
signer
->
SignerId
.
KeyId
.
cbData
)
if
(
!
signer
->
SignerId
.
u
.
KeyId
.
cbData
)
{
SetLastError
(
E_INVALIDARG
);
return
FALSE
;
...
...
@@ -808,11 +809,11 @@ static BOOL CSignerInfo_Construct(CMSG_CMS_SIGNER_INFO *info,
if
(
in
->
cbSize
==
sizeof
(
CMSG_SIGNER_ENCODE_INFO
))
{
info
->
dwVersion
=
CMSG_SIGNER_INFO_V1
;
ret
=
CRYPT_ConstructBlob
(
&
info
->
SignerId
.
IssuerSerialNumber
.
Issuer
,
ret
=
CRYPT_ConstructBlob
(
&
info
->
SignerId
.
u
.
IssuerSerialNumber
.
Issuer
,
&
in
->
pCertInfo
->
Issuer
);
if
(
ret
)
ret
=
CRYPT_ConstructBlob
(
&
info
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
,
&
info
->
SignerId
.
u
.
IssuerSerialNumber
.
SerialNumber
,
&
in
->
pCertInfo
->
SerialNumber
);
info
->
SignerId
.
dwIdChoice
=
CERT_ID_ISSUER_SERIAL_NUMBER
;
}
...
...
@@ -824,11 +825,11 @@ static BOOL CSignerInfo_Construct(CMSG_CMS_SIGNER_INFO *info,
if
(
!
in
->
SignerId
.
dwIdChoice
)
{
info
->
dwVersion
=
CMSG_SIGNER_INFO_V1
;
ret
=
CRYPT_ConstructBlob
(
&
info
->
SignerId
.
IssuerSerialNumber
.
Issuer
,
ret
=
CRYPT_ConstructBlob
(
&
info
->
SignerId
.
u
.
IssuerSerialNumber
.
Issuer
,
&
in
->
pCertInfo
->
Issuer
);
if
(
ret
)
ret
=
CRYPT_ConstructBlob
(
&
info
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
,
&
info
->
SignerId
.
u
.
IssuerSerialNumber
.
SerialNumber
,
&
in
->
pCertInfo
->
SerialNumber
);
info
->
SignerId
.
dwIdChoice
=
CERT_ID_ISSUER_SERIAL_NUMBER
;
}
...
...
@@ -836,20 +837,20 @@ static BOOL CSignerInfo_Construct(CMSG_CMS_SIGNER_INFO *info,
{
info
->
dwVersion
=
CMSG_SIGNER_INFO_V1
;
info
->
SignerId
.
dwIdChoice
=
CERT_ID_ISSUER_SERIAL_NUMBER
;
ret
=
CRYPT_ConstructBlob
(
&
info
->
SignerId
.
IssuerSerialNumber
.
Issuer
,
&
in
->
SignerId
.
IssuerSerialNumber
.
Issuer
);
ret
=
CRYPT_ConstructBlob
(
&
info
->
SignerId
.
u
.
IssuerSerialNumber
.
Issuer
,
&
in
->
SignerId
.
u
.
IssuerSerialNumber
.
Issuer
);
if
(
ret
)
ret
=
CRYPT_ConstructBlob
(
&
info
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
,
&
in
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
);
&
info
->
SignerId
.
u
.
IssuerSerialNumber
.
SerialNumber
,
&
in
->
SignerId
.
u
.
IssuerSerialNumber
.
SerialNumber
);
}
else
{
/* Implicitly dwIdChoice == CERT_ID_KEY_IDENTIFIER */
info
->
dwVersion
=
CMSG_SIGNER_INFO_V3
;
info
->
SignerId
.
dwIdChoice
=
CERT_ID_KEY_IDENTIFIER
;
ret
=
CRYPT_ConstructBlob
(
&
info
->
SignerId
.
KeyId
,
&
in
->
SignerId
.
KeyId
);
ret
=
CRYPT_ConstructBlob
(
&
info
->
SignerId
.
u
.
KeyId
,
&
in
->
SignerId
.
u
.
KeyId
);
}
}
/* Assumption: algorithm IDs will point to static strings, not
...
...
@@ -876,11 +877,11 @@ static void CSignerInfo_Free(CMSG_CMS_SIGNER_INFO *info)
if
(
info
->
SignerId
.
dwIdChoice
==
CERT_ID_ISSUER_SERIAL_NUMBER
)
{
CryptMemFree
(
info
->
SignerId
.
IssuerSerialNumber
.
Issuer
.
pbData
);
CryptMemFree
(
info
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
pbData
);
CryptMemFree
(
info
->
SignerId
.
u
.
IssuerSerialNumber
.
Issuer
.
pbData
);
CryptMemFree
(
info
->
SignerId
.
u
.
IssuerSerialNumber
.
SerialNumber
.
pbData
);
}
else
CryptMemFree
(
info
->
SignerId
.
KeyId
.
pbData
);
CryptMemFree
(
info
->
SignerId
.
u
.
KeyId
.
pbData
);
CryptMemFree
(
info
->
HashAlgorithm
.
Parameters
.
pbData
);
CryptMemFree
(
info
->
EncryptedHash
.
pbData
);
for
(
i
=
0
;
i
<
info
->
AuthAttrs
.
cAttr
;
i
++
)
...
...
@@ -2079,12 +2080,12 @@ static BOOL CRYPT_CopySignerInfo(void *pvData, DWORD *pcbData,
if
(
in
->
SignerId
.
dwIdChoice
==
CERT_ID_ISSUER_SERIAL_NUMBER
)
{
size
+=
in
->
SignerId
.
IssuerSerialNumber
.
Issuer
.
cbData
;
size
+=
in
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
cbData
;
size
+=
in
->
SignerId
.
u
.
IssuerSerialNumber
.
Issuer
.
cbData
;
size
+=
in
->
SignerId
.
u
.
IssuerSerialNumber
.
SerialNumber
.
cbData
;
}
else
{
rdnSize
=
CRYPT_SizeOfKeyIdAsIssuerAndSerial
(
&
in
->
SignerId
.
KeyId
);
rdnSize
=
CRYPT_SizeOfKeyIdAsIssuerAndSerial
(
&
in
->
SignerId
.
u
.
KeyId
);
size
+=
rdnSize
;
}
if
(
in
->
HashAlgorithm
.
pszObjId
)
...
...
@@ -2120,13 +2121,13 @@ static BOOL CRYPT_CopySignerInfo(void *pvData, DWORD *pcbData,
if
(
in
->
SignerId
.
dwIdChoice
==
CERT_ID_ISSUER_SERIAL_NUMBER
)
{
CRYPT_CopyBlob
(
&
out
->
Issuer
,
&
in
->
SignerId
.
IssuerSerialNumber
.
Issuer
,
&
nextData
);
&
in
->
SignerId
.
u
.
IssuerSerialNumber
.
Issuer
,
&
nextData
);
CRYPT_CopyBlob
(
&
out
->
SerialNumber
,
&
in
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
,
&
nextData
);
&
in
->
SignerId
.
u
.
IssuerSerialNumber
.
SerialNumber
,
&
nextData
);
}
else
ret
=
CRYPT_CopyKeyIdAsIssuerAndSerial
(
&
out
->
Issuer
,
&
out
->
SerialNumber
,
&
in
->
SignerId
.
KeyId
,
rdnSize
,
&
nextData
);
&
in
->
SignerId
.
u
.
KeyId
,
rdnSize
,
&
nextData
);
if
(
ret
)
{
CRYPT_CopyAlgorithmId
(
&
out
->
HashAlgorithm
,
&
in
->
HashAlgorithm
,
...
...
@@ -2155,11 +2156,11 @@ static BOOL CRYPT_CopyCMSSignerInfo(void *pvData, DWORD *pcbData,
if
(
in
->
SignerId
.
dwIdChoice
==
CERT_ID_ISSUER_SERIAL_NUMBER
)
{
size
+=
in
->
SignerId
.
IssuerSerialNumber
.
Issuer
.
cbData
;
size
+=
in
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
cbData
;
size
+=
in
->
SignerId
.
u
.
IssuerSerialNumber
.
Issuer
.
cbData
;
size
+=
in
->
SignerId
.
u
.
IssuerSerialNumber
.
SerialNumber
.
cbData
;
}
else
size
+=
in
->
SignerId
.
KeyId
.
cbData
;
size
+=
in
->
SignerId
.
u
.
KeyId
.
cbData
;
if
(
in
->
HashAlgorithm
.
pszObjId
)
size
+=
strlen
(
in
->
HashAlgorithm
.
pszObjId
)
+
1
;
size
+=
in
->
HashAlgorithm
.
Parameters
.
cbData
;
...
...
@@ -2192,13 +2193,13 @@ static BOOL CRYPT_CopyCMSSignerInfo(void *pvData, DWORD *pcbData,
out
->
SignerId
.
dwIdChoice
=
in
->
SignerId
.
dwIdChoice
;
if
(
in
->
SignerId
.
dwIdChoice
==
CERT_ID_ISSUER_SERIAL_NUMBER
)
{
CRYPT_CopyBlob
(
&
out
->
SignerId
.
IssuerSerialNumber
.
Issuer
,
&
in
->
SignerId
.
IssuerSerialNumber
.
Issuer
,
&
nextData
);
CRYPT_CopyBlob
(
&
out
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
,
&
in
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
,
&
nextData
);
CRYPT_CopyBlob
(
&
out
->
SignerId
.
u
.
IssuerSerialNumber
.
Issuer
,
&
in
->
SignerId
.
u
.
IssuerSerialNumber
.
Issuer
,
&
nextData
);
CRYPT_CopyBlob
(
&
out
->
SignerId
.
u
.
IssuerSerialNumber
.
SerialNumber
,
&
in
->
SignerId
.
u
.
IssuerSerialNumber
.
SerialNumber
,
&
nextData
);
}
else
CRYPT_CopyBlob
(
&
out
->
SignerId
.
KeyId
,
&
in
->
SignerId
.
KeyId
,
&
nextData
);
CRYPT_CopyBlob
(
&
out
->
SignerId
.
u
.
KeyId
,
&
in
->
SignerId
.
u
.
KeyId
,
&
nextData
);
CRYPT_CopyAlgorithmId
(
&
out
->
HashAlgorithm
,
&
in
->
HashAlgorithm
,
&
nextData
);
CRYPT_CopyAlgorithmId
(
&
out
->
HashEncryptionAlgorithm
,
...
...
@@ -2225,12 +2226,12 @@ static BOOL CRYPT_CopySignerCertInfo(void *pvData, DWORD *pcbData,
if
(
in
->
SignerId
.
dwIdChoice
==
CERT_ID_ISSUER_SERIAL_NUMBER
)
{
size
+=
in
->
SignerId
.
IssuerSerialNumber
.
Issuer
.
cbData
;
size
+=
in
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
cbData
;
size
+=
in
->
SignerId
.
u
.
IssuerSerialNumber
.
Issuer
.
cbData
;
size
+=
in
->
SignerId
.
u
.
IssuerSerialNumber
.
SerialNumber
.
cbData
;
}
else
{
rdnSize
=
CRYPT_SizeOfKeyIdAsIssuerAndSerial
(
&
in
->
SignerId
.
KeyId
);
rdnSize
=
CRYPT_SizeOfKeyIdAsIssuerAndSerial
(
&
in
->
SignerId
.
u
.
KeyId
);
size
+=
rdnSize
;
}
if
(
!
pvData
)
...
...
@@ -2253,14 +2254,14 @@ static BOOL CRYPT_CopySignerCertInfo(void *pvData, DWORD *pcbData,
if
(
in
->
SignerId
.
dwIdChoice
==
CERT_ID_ISSUER_SERIAL_NUMBER
)
{
CRYPT_CopyBlob
(
&
out
->
Issuer
,
&
in
->
SignerId
.
IssuerSerialNumber
.
Issuer
,
&
nextData
);
&
in
->
SignerId
.
u
.
IssuerSerialNumber
.
Issuer
,
&
nextData
);
CRYPT_CopyBlob
(
&
out
->
SerialNumber
,
&
in
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
,
&
nextData
);
&
in
->
SignerId
.
u
.
IssuerSerialNumber
.
SerialNumber
,
&
nextData
);
ret
=
TRUE
;
}
else
ret
=
CRYPT_CopyKeyIdAsIssuerAndSerial
(
&
out
->
Issuer
,
&
out
->
SerialNumber
,
&
in
->
SignerId
.
KeyId
,
rdnSize
,
&
nextData
);
&
in
->
SignerId
.
u
.
KeyId
,
rdnSize
,
&
nextData
);
}
TRACE
(
"returning %d
\n
"
,
ret
);
return
ret
;
...
...
@@ -2563,12 +2564,12 @@ static BOOL CDecodeSignedMsg_VerifySignature(CDecodeMsg *msg, PCERT_INFO info)
if
(
signerInfo
->
SignerId
.
dwIdChoice
==
CERT_ID_ISSUER_SERIAL_NUMBER
)
{
ret
=
CertCompareCertificateName
(
X509_ASN_ENCODING
,
&
signerInfo
->
SignerId
.
IssuerSerialNumber
.
Issuer
,
&
signerInfo
->
SignerId
.
u
.
IssuerSerialNumber
.
Issuer
,
&
info
->
Issuer
);
if
(
ret
)
{
ret
=
CertCompareIntegerBlob
(
&
signerInfo
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
,
&
signerInfo
->
SignerId
.
u
.
IssuerSerialNumber
.
SerialNumber
,
&
info
->
SerialNumber
);
if
(
ret
)
break
;
...
...
dlls/crypt32/tests/encode.c
View file @
6bd4bf66
...
...
@@ -4822,7 +4822,7 @@ static void test_encodeAuthorityInfoAccess(DWORD dwEncoding)
ok
(
!
ret
&&
GetLastError
()
==
E_INVALIDARG
,
"expected E_INVALIDARG, got %08x
\n
"
,
GetLastError
());
accessDescription
[
0
].
AccessLocation
.
dwAltNameChoice
=
CERT_ALT_NAME_URL
;
accessDescription
[
0
].
AccessLocation
.
pwszURL
=
(
LPWSTR
)
url
;
U
(
accessDescription
[
0
].
AccessLocation
)
.
pwszURL
=
(
LPWSTR
)
url
;
ret
=
CryptEncodeObjectEx
(
dwEncoding
,
X509_AUTHORITY_INFO_ACCESS
,
&
aia
,
CRYPT_ENCODE_ALLOC_FLAG
,
NULL
,
(
BYTE
*
)
&
buf
,
&
size
);
ok
(
ret
,
"CryptEncodeObjectEx failed: %08x
\n
"
,
GetLastError
());
...
...
@@ -4838,9 +4838,9 @@ static void test_encodeAuthorityInfoAccess(DWORD dwEncoding)
accessDescription
[
1
].
pszAccessMethod
=
oid2
;
accessDescription
[
1
].
AccessLocation
.
dwAltNameChoice
=
CERT_ALT_NAME_IP_ADDRESS
;
accessDescription
[
1
].
AccessLocation
.
IPAddress
.
cbData
=
U
(
accessDescription
[
1
].
AccessLocation
)
.
IPAddress
.
cbData
=
sizeof
(
encodedIPAddr
);
accessDescription
[
1
].
AccessLocation
.
IPAddress
.
pbData
=
U
(
accessDescription
[
1
].
AccessLocation
)
.
IPAddress
.
pbData
=
(
LPBYTE
)
encodedIPAddr
;
aia
.
cAccDescr
=
2
;
ret
=
CryptEncodeObjectEx
(
dwEncoding
,
X509_AUTHORITY_INFO_ACCESS
,
&
aia
,
...
...
@@ -4909,7 +4909,7 @@ static void test_decodeAuthorityInfoAccess(DWORD dwEncoding)
accessDescription
.
pszAccessMethod
=
oid1
;
accessDescription
.
AccessLocation
.
dwAltNameChoice
=
CERT_ALT_NAME_URL
;
accessDescription
.
AccessLocation
.
pwszURL
=
(
LPWSTR
)
url
;
U
(
accessDescription
.
AccessLocation
)
.
pwszURL
=
(
LPWSTR
)
url
;
aia
.
cAccDescr
=
1
;
aia
.
rgAccDescr
=
&
accessDescription
;
compareAuthorityInfoAccess
(
"AIA with URL"
,
&
aia
,
...
...
@@ -4929,13 +4929,13 @@ static void test_decodeAuthorityInfoAccess(DWORD dwEncoding)
accessDescription
[
0
].
pszAccessMethod
=
oid1
;
accessDescription
[
0
].
AccessLocation
.
dwAltNameChoice
=
CERT_ALT_NAME_URL
;
accessDescription
[
0
].
AccessLocation
.
pwszURL
=
(
LPWSTR
)
url
;
U
(
accessDescription
[
0
].
AccessLocation
)
.
pwszURL
=
(
LPWSTR
)
url
;
accessDescription
[
1
].
pszAccessMethod
=
oid2
;
accessDescription
[
1
].
AccessLocation
.
dwAltNameChoice
=
CERT_ALT_NAME_IP_ADDRESS
;
accessDescription
[
1
].
AccessLocation
.
IPAddress
.
cbData
=
U
(
accessDescription
[
1
].
AccessLocation
)
.
IPAddress
.
cbData
=
sizeof
(
encodedIPAddr
);
accessDescription
[
1
].
AccessLocation
.
IPAddress
.
pbData
=
U
(
accessDescription
[
1
].
AccessLocation
)
.
IPAddress
.
pbData
=
(
LPBYTE
)
encodedIPAddr
;
aia
.
cAccDescr
=
2
;
aia
.
rgAccDescr
=
accessDescription
;
...
...
@@ -6395,9 +6395,9 @@ static void test_encodeCMSSignerInfo(DWORD dwEncoding)
* the encoding must include PKCS_7_ASN_ENCODING.
* (That isn't enough to be decoded, see decoding tests.)
*/
info
.
SignerId
.
IssuerSerialNumber
.
Issuer
.
cbData
=
U
(
info
.
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
cbData
=
sizeof
(
encodedCommonNameNoNull
);
info
.
SignerId
.
IssuerSerialNumber
.
Issuer
.
pbData
=
encodedCommonNameNoNull
;
U
(
info
.
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
pbData
=
encodedCommonNameNoNull
;
SetLastError
(
0xdeadbeef
);
ret
=
CryptEncodeObjectEx
(
dwEncoding
,
CMS_SIGNER_INFO
,
&
info
,
CRYPT_ENCODE_ALLOC_FLAG
,
NULL
,
(
BYTE
*
)
&
buf
,
&
size
);
...
...
@@ -6414,8 +6414,8 @@ static void test_encodeCMSSignerInfo(DWORD dwEncoding)
LocalFree
(
buf
);
}
}
info
.
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
cbData
=
sizeof
(
serialNum
);
info
.
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
pbData
=
(
BYTE
*
)
serialNum
;
U
(
info
.
SignerId
)
.
IssuerSerialNumber
.
SerialNumber
.
cbData
=
sizeof
(
serialNum
);
U
(
info
.
SignerId
)
.
IssuerSerialNumber
.
SerialNumber
.
pbData
=
(
BYTE
*
)
serialNum
;
SetLastError
(
0xdeadbeef
);
ret
=
CryptEncodeObjectEx
(
dwEncoding
,
CMS_SIGNER_INFO
,
&
info
,
CRYPT_ENCODE_ALLOC_FLAG
,
NULL
,
(
BYTE
*
)
&
buf
,
&
size
);
...
...
@@ -6434,8 +6434,8 @@ static void test_encodeCMSSignerInfo(DWORD dwEncoding)
}
}
info
.
SignerId
.
dwIdChoice
=
CERT_ID_KEY_IDENTIFIER
;
info
.
SignerId
.
KeyId
.
cbData
=
sizeof
(
serialNum
);
info
.
SignerId
.
KeyId
.
pbData
=
(
BYTE
*
)
serialNum
;
U
(
info
.
SignerId
)
.
KeyId
.
cbData
=
sizeof
(
serialNum
);
U
(
info
.
SignerId
)
.
KeyId
.
pbData
=
(
BYTE
*
)
serialNum
;
SetLastError
(
0xdeadbeef
);
ret
=
CryptEncodeObjectEx
(
dwEncoding
,
CMS_SIGNER_INFO
,
&
info
,
CRYPT_ENCODE_ALLOC_FLAG
,
NULL
,
(
BYTE
*
)
&
buf
,
&
size
);
...
...
@@ -6458,8 +6458,8 @@ static void test_encodeCMSSignerInfo(DWORD dwEncoding)
* (see RFC 3852, section 5.3.)
*/
info
.
SignerId
.
dwIdChoice
=
CERT_ID_SHA1_HASH
;
info
.
SignerId
.
HashId
.
cbData
=
sizeof
(
hash
);
info
.
SignerId
.
HashId
.
pbData
=
(
BYTE
*
)
hash
;
U
(
info
.
SignerId
)
.
HashId
.
cbData
=
sizeof
(
hash
);
U
(
info
.
SignerId
)
.
HashId
.
pbData
=
(
BYTE
*
)
hash
;
SetLastError
(
0xdeadbeef
);
ret
=
CryptEncodeObjectEx
(
dwEncoding
,
CMS_SIGNER_INFO
,
&
info
,
CRYPT_ENCODE_ALLOC_FLAG
,
NULL
,
(
BYTE
*
)
&
buf
,
&
size
);
...
...
@@ -6467,9 +6467,9 @@ static void test_encodeCMSSignerInfo(DWORD dwEncoding)
"Expected E_INVALIDARG, got %08x
\n
"
,
GetLastError
());
/* Now with a hash algo */
info
.
SignerId
.
dwIdChoice
=
CERT_ID_ISSUER_SERIAL_NUMBER
;
info
.
SignerId
.
IssuerSerialNumber
.
Issuer
.
cbData
=
U
(
info
.
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
cbData
=
sizeof
(
encodedCommonNameNoNull
);
info
.
SignerId
.
IssuerSerialNumber
.
Issuer
.
pbData
=
encodedCommonNameNoNull
;
U
(
info
.
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
pbData
=
encodedCommonNameNoNull
;
info
.
HashAlgorithm
.
pszObjId
=
oid1
;
SetLastError
(
0xdeadbeef
);
ret
=
CryptEncodeObjectEx
(
dwEncoding
,
CMS_SIGNER_INFO
,
&
info
,
...
...
@@ -6556,17 +6556,17 @@ static void test_decodeCMSSignerInfo(DWORD dwEncoding)
ok
(
info
->
SignerId
.
dwIdChoice
==
CERT_ID_ISSUER_SERIAL_NUMBER
,
"Expected CERT_ID_ISSUER_SERIAL_NUMBER, got %d
\n
"
,
info
->
SignerId
.
dwIdChoice
);
ok
(
info
->
SignerId
.
IssuerSerialNumber
.
Issuer
.
cbData
==
ok
(
U
(
info
->
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
cbData
==
sizeof
(
encodedCommonNameNoNull
),
"Unexpected size %d
\n
"
,
info
->
SignerId
.
IssuerSerialNumber
.
Issuer
.
cbData
);
ok
(
!
memcmp
(
info
->
SignerId
.
IssuerSerialNumber
.
Issuer
.
pbData
,
U
(
info
->
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
cbData
);
ok
(
!
memcmp
(
U
(
info
->
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
pbData
,
encodedCommonNameNoNull
,
info
->
SignerId
.
IssuerSerialNumber
.
Issuer
.
cbData
),
U
(
info
->
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
cbData
),
"Unexpected value
\n
"
);
ok
(
info
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
cbData
==
ok
(
U
(
info
->
SignerId
)
.
IssuerSerialNumber
.
SerialNumber
.
cbData
==
sizeof
(
serialNum
),
"Unexpected size %d
\n
"
,
info
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
cbData
);
ok
(
!
memcmp
(
info
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
pbData
,
U
(
info
->
SignerId
)
.
IssuerSerialNumber
.
SerialNumber
.
cbData
);
ok
(
!
memcmp
(
U
(
info
->
SignerId
)
.
IssuerSerialNumber
.
SerialNumber
.
pbData
,
serialNum
,
sizeof
(
serialNum
)),
"Unexpected value
\n
"
);
LocalFree
(
buf
);
}
...
...
@@ -6582,17 +6582,17 @@ static void test_decodeCMSSignerInfo(DWORD dwEncoding)
ok
(
info
->
SignerId
.
dwIdChoice
==
CERT_ID_ISSUER_SERIAL_NUMBER
,
"Expected CERT_ID_ISSUER_SERIAL_NUMBER, got %d
\n
"
,
info
->
SignerId
.
dwIdChoice
);
ok
(
info
->
SignerId
.
IssuerSerialNumber
.
Issuer
.
cbData
==
ok
(
U
(
info
->
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
cbData
==
sizeof
(
encodedCommonNameNoNull
),
"Unexpected size %d
\n
"
,
info
->
SignerId
.
IssuerSerialNumber
.
Issuer
.
cbData
);
ok
(
!
memcmp
(
info
->
SignerId
.
IssuerSerialNumber
.
Issuer
.
pbData
,
U
(
info
->
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
cbData
);
ok
(
!
memcmp
(
U
(
info
->
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
pbData
,
encodedCommonNameNoNull
,
info
->
SignerId
.
IssuerSerialNumber
.
Issuer
.
cbData
),
U
(
info
->
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
cbData
),
"Unexpected value
\n
"
);
ok
(
info
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
cbData
==
ok
(
U
(
info
->
SignerId
)
.
IssuerSerialNumber
.
SerialNumber
.
cbData
==
sizeof
(
serialNum
),
"Unexpected size %d
\n
"
,
info
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
cbData
);
ok
(
!
memcmp
(
info
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
pbData
,
U
(
info
->
SignerId
)
.
IssuerSerialNumber
.
SerialNumber
.
cbData
);
ok
(
!
memcmp
(
U
(
info
->
SignerId
)
.
IssuerSerialNumber
.
SerialNumber
.
pbData
,
serialNum
,
sizeof
(
serialNum
)),
"Unexpected value
\n
"
);
ok
(
!
strcmp
(
info
->
HashAlgorithm
.
pszObjId
,
oid1
),
"Expected %s, got %s
\n
"
,
oid1
,
info
->
HashAlgorithm
.
pszObjId
);
...
...
@@ -6611,17 +6611,17 @@ static void test_decodeCMSSignerInfo(DWORD dwEncoding)
ok
(
info
->
SignerId
.
dwIdChoice
==
CERT_ID_ISSUER_SERIAL_NUMBER
,
"Expected CERT_ID_ISSUER_SERIAL_NUMBER, got %d
\n
"
,
info
->
SignerId
.
dwIdChoice
);
ok
(
info
->
SignerId
.
IssuerSerialNumber
.
Issuer
.
cbData
==
ok
(
U
(
info
->
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
cbData
==
sizeof
(
encodedCommonNameNoNull
),
"Unexpected size %d
\n
"
,
info
->
SignerId
.
IssuerSerialNumber
.
Issuer
.
cbData
);
ok
(
!
memcmp
(
info
->
SignerId
.
IssuerSerialNumber
.
Issuer
.
pbData
,
U
(
info
->
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
cbData
);
ok
(
!
memcmp
(
U
(
info
->
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
pbData
,
encodedCommonNameNoNull
,
info
->
SignerId
.
IssuerSerialNumber
.
Issuer
.
cbData
),
U
(
info
->
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
cbData
),
"Unexpected value
\n
"
);
ok
(
info
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
cbData
==
ok
(
U
(
info
->
SignerId
)
.
IssuerSerialNumber
.
SerialNumber
.
cbData
==
sizeof
(
serialNum
),
"Unexpected size %d
\n
"
,
info
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
cbData
);
ok
(
!
memcmp
(
info
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
pbData
,
U
(
info
->
SignerId
)
.
IssuerSerialNumber
.
SerialNumber
.
cbData
);
ok
(
!
memcmp
(
U
(
info
->
SignerId
)
.
IssuerSerialNumber
.
SerialNumber
.
pbData
,
serialNum
,
sizeof
(
serialNum
)),
"Unexpected value
\n
"
);
ok
(
!
strcmp
(
info
->
HashAlgorithm
.
pszObjId
,
oid1
),
"Expected %s, got %s
\n
"
,
oid1
,
info
->
HashAlgorithm
.
pszObjId
);
...
...
@@ -6641,17 +6641,17 @@ static void test_decodeCMSSignerInfo(DWORD dwEncoding)
ok
(
info
->
SignerId
.
dwIdChoice
==
CERT_ID_ISSUER_SERIAL_NUMBER
,
"Expected CERT_ID_ISSUER_SERIAL_NUMBER, got %d
\n
"
,
info
->
SignerId
.
dwIdChoice
);
ok
(
info
->
SignerId
.
IssuerSerialNumber
.
Issuer
.
cbData
==
ok
(
U
(
info
->
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
cbData
==
sizeof
(
encodedCommonNameNoNull
),
"Unexpected size %d
\n
"
,
info
->
SignerId
.
IssuerSerialNumber
.
Issuer
.
cbData
);
ok
(
!
memcmp
(
info
->
SignerId
.
IssuerSerialNumber
.
Issuer
.
pbData
,
U
(
info
->
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
cbData
);
ok
(
!
memcmp
(
U
(
info
->
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
pbData
,
encodedCommonNameNoNull
,
info
->
SignerId
.
IssuerSerialNumber
.
Issuer
.
cbData
),
U
(
info
->
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
cbData
),
"Unexpected value
\n
"
);
ok
(
info
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
cbData
==
ok
(
U
(
info
->
SignerId
)
.
IssuerSerialNumber
.
SerialNumber
.
cbData
==
sizeof
(
serialNum
),
"Unexpected size %d
\n
"
,
info
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
cbData
);
ok
(
!
memcmp
(
info
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
pbData
,
U
(
info
->
SignerId
)
.
IssuerSerialNumber
.
SerialNumber
.
cbData
);
ok
(
!
memcmp
(
U
(
info
->
SignerId
)
.
IssuerSerialNumber
.
SerialNumber
.
pbData
,
serialNum
,
sizeof
(
serialNum
)),
"Unexpected value
\n
"
);
ok
(
!
strcmp
(
info
->
HashAlgorithm
.
pszObjId
,
oid1
),
"Expected %s, got %s
\n
"
,
oid1
,
info
->
HashAlgorithm
.
pszObjId
);
...
...
@@ -6675,9 +6675,9 @@ static void test_decodeCMSSignerInfo(DWORD dwEncoding)
ok
(
info
->
SignerId
.
dwIdChoice
==
CERT_ID_KEY_IDENTIFIER
,
"Expected CERT_ID_KEY_IDENTIFIER, got %d
\n
"
,
info
->
SignerId
.
dwIdChoice
);
ok
(
info
->
SignerId
.
KeyId
.
cbData
==
sizeof
(
serialNum
),
"Unexpected size %d
\n
"
,
info
->
SignerId
.
KeyId
.
cbData
);
ok
(
!
memcmp
(
info
->
SignerId
.
KeyId
.
pbData
,
serialNum
,
sizeof
(
serialNum
)),
ok
(
U
(
info
->
SignerId
)
.
KeyId
.
cbData
==
sizeof
(
serialNum
),
"Unexpected size %d
\n
"
,
U
(
info
->
SignerId
)
.
KeyId
.
cbData
);
ok
(
!
memcmp
(
U
(
info
->
SignerId
)
.
KeyId
.
pbData
,
serialNum
,
sizeof
(
serialNum
)),
"Unexpected value
\n
"
);
LocalFree
(
buf
);
}
...
...
dlls/crypt32/tests/msg.c
View file @
6bd4bf66
...
...
@@ -1112,13 +1112,13 @@ static void test_signed_msg_open(void)
certInfo
.
Issuer
.
cbData
=
0
;
certInfo
.
SerialNumber
.
cbData
=
0
;
signer
.
SignerId
.
dwIdChoice
=
CERT_ID_ISSUER_SERIAL_NUMBER
;
signer
.
SignerId
.
IssuerSerialNumber
.
Issuer
.
cbData
=
U
(
signer
.
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
cbData
=
sizeof
(
encodedCommonName
);
signer
.
SignerId
.
IssuerSerialNumber
.
Issuer
.
pbData
=
U
(
signer
.
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
pbData
=
(
BYTE
*
)
encodedCommonName
;
signer
.
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
cbData
=
U
(
signer
.
SignerId
)
.
IssuerSerialNumber
.
SerialNumber
.
cbData
=
sizeof
(
serialNum
);
signer
.
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
pbData
=
(
BYTE
*
)
serialNum
;
U
(
signer
.
SignerId
)
.
IssuerSerialNumber
.
SerialNumber
.
pbData
=
(
BYTE
*
)
serialNum
;
msg
=
CryptMsgOpenToEncode
(
PKCS_7_ASN_ENCODING
,
0
,
CMSG_SIGNED
,
&
signInfo
,
NULL
,
NULL
);
ok
(
msg
!=
NULL
,
"CryptMsgOpenToEncode failed: %x
\n
"
,
GetLastError
());
...
...
@@ -1661,8 +1661,8 @@ static void test_signed_msg_encoding(void)
certInfo
.
SerialNumber
.
cbData
=
0
;
certInfo
.
Issuer
.
cbData
=
0
;
signer
.
SignerId
.
dwIdChoice
=
CERT_ID_KEY_IDENTIFIER
;
signer
.
SignerId
.
KeyId
.
cbData
=
sizeof
(
serialNum
);
signer
.
SignerId
.
KeyId
.
pbData
=
(
BYTE
*
)
serialNum
;
U
(
signer
.
SignerId
)
.
KeyId
.
cbData
=
sizeof
(
serialNum
);
U
(
signer
.
SignerId
)
.
KeyId
.
pbData
=
(
BYTE
*
)
serialNum
;
msg
=
CryptMsgOpenToEncode
(
PKCS_7_ASN_ENCODING
,
0
,
CMSG_SIGNED
,
&
signInfo
,
NULL
,
NULL
);
ok
(
msg
!=
NULL
,
"CryptMsgOpenToEncode failed: %x
\n
"
,
GetLastError
());
...
...
@@ -1888,13 +1888,13 @@ static void test_signed_msg_get_param(void)
certInfo
.
SerialNumber
.
cbData
=
0
;
certInfo
.
Issuer
.
cbData
=
0
;
signer
.
SignerId
.
dwIdChoice
=
CERT_ID_ISSUER_SERIAL_NUMBER
;
signer
.
SignerId
.
IssuerSerialNumber
.
Issuer
.
cbData
=
U
(
signer
.
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
cbData
=
sizeof
(
encodedCommonName
);
signer
.
SignerId
.
IssuerSerialNumber
.
Issuer
.
pbData
=
U
(
signer
.
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
pbData
=
(
BYTE
*
)
encodedCommonName
;
signer
.
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
cbData
=
U
(
signer
.
SignerId
)
.
IssuerSerialNumber
.
SerialNumber
.
cbData
=
sizeof
(
serialNum
);
signer
.
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
pbData
=
(
BYTE
*
)
serialNum
;
U
(
signer
.
SignerId
)
.
IssuerSerialNumber
.
SerialNumber
.
pbData
=
(
BYTE
*
)
serialNum
;
ret
=
pCryptAcquireContextA
(
&
signer
.
hCryptProv
,
cspNameA
,
NULL
,
PROV_RSA_FULL
,
CRYPT_NEWKEYSET
);
if
(
!
ret
&&
GetLastError
()
==
NTE_EXISTS
)
...
...
@@ -1933,8 +1933,8 @@ static void test_signed_msg_get_param(void)
* the CMS version.
*/
signer
.
SignerId
.
dwIdChoice
=
CERT_ID_KEY_IDENTIFIER
;
signer
.
SignerId
.
KeyId
.
cbData
=
sizeof
(
serialNum
);
signer
.
SignerId
.
KeyId
.
pbData
=
(
BYTE
*
)
serialNum
;
U
(
signer
.
SignerId
)
.
KeyId
.
cbData
=
sizeof
(
serialNum
);
U
(
signer
.
SignerId
)
.
KeyId
.
pbData
=
(
BYTE
*
)
serialNum
;
ret
=
pCryptAcquireContextA
(
&
signer
.
hCryptProv
,
cspNameA
,
NULL
,
PROV_RSA_FULL
,
CRYPT_NEWKEYSET
);
if
(
!
ret
&&
GetLastError
()
==
NTE_EXISTS
)
...
...
@@ -2291,32 +2291,32 @@ static void compare_cms_signer_info(const CMSG_CMS_SIGNER_INFO *got,
{
if
(
got
->
SignerId
.
dwIdChoice
==
CERT_ID_ISSUER_SERIAL_NUMBER
)
{
ok
(
got
->
SignerId
.
IssuerSerialNumber
.
Issuer
.
cbData
==
expected
->
SignerId
.
IssuerSerialNumber
.
Issuer
.
cbData
,
ok
(
U
(
got
->
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
cbData
==
U
(
expected
->
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
cbData
,
"Expected issuer size %d, got %d
\n
"
,
expected
->
SignerId
.
IssuerSerialNumber
.
Issuer
.
cbData
,
got
->
SignerId
.
IssuerSerialNumber
.
Issuer
.
cbData
);
ok
(
!
memcmp
(
got
->
SignerId
.
IssuerSerialNumber
.
Issuer
.
pbData
,
expected
->
SignerId
.
IssuerSerialNumber
.
Issuer
.
pbData
,
got
->
SignerId
.
IssuerSerialNumber
.
Issuer
.
cbData
),
U
(
expected
->
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
cbData
,
U
(
got
->
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
cbData
);
ok
(
!
memcmp
(
U
(
got
->
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
pbData
,
U
(
expected
->
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
pbData
,
U
(
got
->
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
cbData
),
"Unexpected issuer
\n
"
);
ok
(
got
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
cbData
==
expected
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
cbData
,
ok
(
U
(
got
->
SignerId
)
.
IssuerSerialNumber
.
SerialNumber
.
cbData
==
U
(
expected
->
SignerId
)
.
IssuerSerialNumber
.
SerialNumber
.
cbData
,
"Expected serial number size %d, got %d
\n
"
,
expected
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
cbData
,
got
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
cbData
);
ok
(
!
memcmp
(
got
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
pbData
,
expected
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
pbData
,
got
->
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
cbData
),
U
(
expected
->
SignerId
)
.
IssuerSerialNumber
.
SerialNumber
.
cbData
,
U
(
got
->
SignerId
)
.
IssuerSerialNumber
.
SerialNumber
.
cbData
);
ok
(
!
memcmp
(
U
(
got
->
SignerId
)
.
IssuerSerialNumber
.
SerialNumber
.
pbData
,
U
(
expected
->
SignerId
)
.
IssuerSerialNumber
.
SerialNumber
.
pbData
,
U
(
got
->
SignerId
)
.
IssuerSerialNumber
.
SerialNumber
.
cbData
),
"Unexpected serial number
\n
"
);
}
else
{
ok
(
got
->
SignerId
.
KeyId
.
cbData
==
expected
->
SignerId
.
KeyId
.
cbData
,
ok
(
U
(
got
->
SignerId
).
KeyId
.
cbData
==
U
(
expected
->
SignerId
)
.
KeyId
.
cbData
,
"expected key id size %d, got %d
\n
"
,
expected
->
SignerId
.
KeyId
.
cbData
,
got
->
SignerId
.
KeyId
.
cbData
);
ok
(
!
memcmp
(
expected
->
SignerId
.
KeyId
.
pbData
,
got
->
SignerId
.
KeyId
.
pbData
,
got
->
SignerId
.
KeyId
.
cbData
),
U
(
expected
->
SignerId
).
KeyId
.
cbData
,
U
(
got
->
SignerId
)
.
KeyId
.
cbData
);
ok
(
!
memcmp
(
U
(
expected
->
SignerId
)
.
KeyId
.
pbData
,
U
(
got
->
SignerId
).
KeyId
.
pbData
,
U
(
got
->
SignerId
)
.
KeyId
.
cbData
),
"unexpected key id
\n
"
);
}
}
...
...
@@ -2429,12 +2429,12 @@ static void test_decode_msg_get_param(void)
signer
.
dwVersion
=
1
;
signer
.
SignerId
.
dwIdChoice
=
CERT_ID_ISSUER_SERIAL_NUMBER
;
signer
.
SignerId
.
IssuerSerialNumber
.
Issuer
.
cbData
=
U
(
signer
.
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
cbData
=
sizeof
(
encodedCommonName
);
signer
.
SignerId
.
IssuerSerialNumber
.
Issuer
.
pbData
=
encodedCommonName
;
signer
.
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
cbData
=
U
(
signer
.
SignerId
)
.
IssuerSerialNumber
.
Issuer
.
pbData
=
encodedCommonName
;
U
(
signer
.
SignerId
)
.
IssuerSerialNumber
.
SerialNumber
.
cbData
=
sizeof
(
serialNum
);
signer
.
SignerId
.
IssuerSerialNumber
.
SerialNumber
.
pbData
=
serialNum
;
U
(
signer
.
SignerId
)
.
IssuerSerialNumber
.
SerialNumber
.
pbData
=
serialNum
;
signer
.
HashAlgorithm
.
pszObjId
=
oid_rsa_md5
;
CryptMsgGetParam
(
msg
,
CMSG_CMS_SIGNER_INFO_PARAM
,
0
,
buf
,
&
size
);
compare_cms_signer_info
((
CMSG_CMS_SIGNER_INFO
*
)
buf
,
&
signer
);
...
...
@@ -2521,8 +2521,8 @@ static void test_decode_msg_get_param(void)
signer
.
dwVersion
=
CMSG_SIGNED_DATA_V3
;
signer
.
SignerId
.
dwIdChoice
=
CERT_ID_KEY_IDENTIFIER
;
signer
.
SignerId
.
KeyId
.
cbData
=
sizeof
(
serialNum
);
signer
.
SignerId
.
KeyId
.
pbData
=
(
BYTE
*
)
serialNum
;
U
(
signer
.
SignerId
)
.
KeyId
.
cbData
=
sizeof
(
serialNum
);
U
(
signer
.
SignerId
)
.
KeyId
.
pbData
=
(
BYTE
*
)
serialNum
;
signer
.
HashAlgorithm
.
pszObjId
=
oid_rsa_md5
;
CryptMsgGetParam
(
msg
,
CMSG_CMS_SIGNER_INFO_PARAM
,
0
,
buf
,
&
size
);
compare_cms_signer_info
((
CMSG_CMS_SIGNER_INFO
*
)
buf
,
&
signer
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment