added and fixed debug output of version information
This commit is contained in:
+23
-7
@@ -84,10 +84,12 @@ static const asn1Object_t signedDataObjects[] = {
|
|||||||
{ 1, "end loop", ASN1_EOC, ASN1_END }, /* 25 */
|
{ 1, "end loop", ASN1_EOC, ASN1_END }, /* 25 */
|
||||||
{ 0, "exit", ASN1_EOC, ASN1_EXIT }
|
{ 0, "exit", ASN1_EOC, ASN1_EXIT }
|
||||||
};
|
};
|
||||||
|
#define PKCS7_SIGNED_VERSION 1
|
||||||
#define PKCS7_DIGEST_ALG 3
|
#define PKCS7_DIGEST_ALG 3
|
||||||
#define PKCS7_SIGNED_CONTENT_INFO 5
|
#define PKCS7_SIGNED_CONTENT_INFO 5
|
||||||
#define PKCS7_SIGNED_CERT 7
|
#define PKCS7_SIGNED_CERT 7
|
||||||
#define PKCS7_SIGNER_INFO 13
|
#define PKCS7_SIGNER_INFO 13
|
||||||
|
#define PKCS7_SIGNER_INFO_VERSION 14
|
||||||
#define PKCS7_SIGNED_ISSUER 16
|
#define PKCS7_SIGNED_ISSUER 16
|
||||||
#define PKCS7_SIGNED_SERIAL_NUMBER 17
|
#define PKCS7_SIGNED_SERIAL_NUMBER 17
|
||||||
#define PKCS7_DIGEST_ALGORITHM 18
|
#define PKCS7_DIGEST_ALGORITHM 18
|
||||||
@@ -208,6 +210,7 @@ bool pkcs7_parse_signedData(chunk_t blob, contentInfo_t *data, x509cert_t **cert
|
|||||||
int digest_alg = OID_UNKNOWN;
|
int digest_alg = OID_UNKNOWN;
|
||||||
int enc_alg = OID_UNKNOWN;
|
int enc_alg = OID_UNKNOWN;
|
||||||
int signerInfos = 0;
|
int signerInfos = 0;
|
||||||
|
int version;
|
||||||
int objectID;
|
int objectID;
|
||||||
bool success = FALSE;
|
bool success = FALSE;
|
||||||
|
|
||||||
@@ -233,6 +236,10 @@ bool pkcs7_parse_signedData(chunk_t blob, contentInfo_t *data, x509cert_t **cert
|
|||||||
|
|
||||||
switch (objectID)
|
switch (objectID)
|
||||||
{
|
{
|
||||||
|
case PKCS7_SIGNED_VERSION:
|
||||||
|
version = object.len ? (int)*object.ptr : 0;
|
||||||
|
DBG2(" v%d", version);
|
||||||
|
break;
|
||||||
case PKCS7_DIGEST_ALG:
|
case PKCS7_DIGEST_ALG:
|
||||||
digest_alg = asn1_parse_algorithmIdentifier(object, level, NULL);
|
digest_alg = asn1_parse_algorithmIdentifier(object, level, NULL);
|
||||||
break;
|
break;
|
||||||
@@ -266,6 +273,10 @@ bool pkcs7_parse_signedData(chunk_t blob, contentInfo_t *data, x509cert_t **cert
|
|||||||
signerInfos++;
|
signerInfos++;
|
||||||
DBG2(" signer #%d", signerInfos);
|
DBG2(" signer #%d", signerInfos);
|
||||||
break;
|
break;
|
||||||
|
case PKCS7_SIGNER_INFO_VERSION:
|
||||||
|
version = object.len ? (int)*object.ptr : 0;
|
||||||
|
DBG2(" v%d", version);
|
||||||
|
break;
|
||||||
case PKCS7_SIGNED_ISSUER:
|
case PKCS7_SIGNED_ISSUER:
|
||||||
dntoa(buf, BUF_LEN, object);
|
dntoa(buf, BUF_LEN, object);
|
||||||
DBG2(" '%s'",buf);
|
DBG2(" '%s'",buf);
|
||||||
@@ -359,6 +370,7 @@ bool pkcs7_parse_envelopedData(chunk_t blob, chunk_t *data,
|
|||||||
u_char buf[BUF_LEN];
|
u_char buf[BUF_LEN];
|
||||||
int enc_alg = OID_UNKNOWN;
|
int enc_alg = OID_UNKNOWN;
|
||||||
int content_enc_alg = OID_UNKNOWN;
|
int content_enc_alg = OID_UNKNOWN;
|
||||||
|
int version;
|
||||||
int objectID;
|
int objectID;
|
||||||
bool success = FALSE;
|
bool success = FALSE;
|
||||||
|
|
||||||
@@ -385,14 +397,18 @@ bool pkcs7_parse_envelopedData(chunk_t blob, chunk_t *data,
|
|||||||
switch (objectID)
|
switch (objectID)
|
||||||
{
|
{
|
||||||
case PKCS7_ENVELOPED_VERSION:
|
case PKCS7_ENVELOPED_VERSION:
|
||||||
if (*object.ptr != 0)
|
version = object.len ? (int)*object.ptr : 0;
|
||||||
{
|
DBG2(" v%d", version);
|
||||||
DBG1("envelopedData version is not 0");
|
if (version != 0)
|
||||||
goto end;
|
{
|
||||||
}
|
DBG1("envelopedData version is not 0");
|
||||||
break;
|
goto end;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case PKCS7_RECIPIENT_INFO_VERSION:
|
case PKCS7_RECIPIENT_INFO_VERSION:
|
||||||
if (*object.ptr != 0)
|
version = object.len ? (int)*object.ptr : 0;
|
||||||
|
DBG2(" v%d", version);
|
||||||
|
if (version != 0)
|
||||||
{
|
{
|
||||||
DBG1("recipient info version is not 0");
|
DBG1("recipient info version is not 0");
|
||||||
goto end;
|
goto end;
|
||||||
|
|||||||
Reference in New Issue
Block a user