optimized parser->success()
This commit is contained in:
@@ -275,7 +275,7 @@ static bool parse_signedData(private_pkcs7_t *this, x509_t *cacert)
|
|||||||
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;
|
||||||
bool success = TRUE;
|
bool success = FALSE;
|
||||||
|
|
||||||
chunk_t encrypted_digest = chunk_empty;
|
chunk_t encrypted_digest = chunk_empty;
|
||||||
|
|
||||||
@@ -304,13 +304,11 @@ static bool parse_signedData(private_pkcs7_t *this, x509_t *cacert)
|
|||||||
|
|
||||||
if (data == NULL)
|
if (data == NULL)
|
||||||
{
|
{
|
||||||
success = FALSE;
|
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
if (!data->parse_data(data))
|
if (!data->parse_data(data))
|
||||||
{
|
{
|
||||||
data->destroy(data);
|
data->destroy(data);
|
||||||
success = FALSE;
|
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
pureData = data->get_data(data);
|
pureData = data->get_data(data);
|
||||||
@@ -356,9 +354,9 @@ static bool parse_signedData(private_pkcs7_t *this, x509_t *cacert)
|
|||||||
encrypted_digest = object;
|
encrypted_digest = object;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
success = parser->success(parser);
|
||||||
|
|
||||||
end:
|
end:
|
||||||
success &= parser->success(parser);
|
|
||||||
parser->destroy(parser);
|
parser->destroy(parser);
|
||||||
if (!success)
|
if (!success)
|
||||||
{
|
{
|
||||||
@@ -601,10 +599,9 @@ static bool parse_envelopedData(private_pkcs7_t *this, chunk_t serialNumber,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
success = TRUE;
|
success = parser->success(parser);
|
||||||
|
|
||||||
end:
|
end:
|
||||||
success &= parser->success(parser);
|
|
||||||
parser->destroy(parser);
|
parser->destroy(parser);
|
||||||
if (!success)
|
if (!success)
|
||||||
{
|
{
|
||||||
@@ -980,7 +977,7 @@ static bool parse_contentInfo(chunk_t blob, u_int level0, private_pkcs7_t *cInfo
|
|||||||
asn1_parser_t *parser;
|
asn1_parser_t *parser;
|
||||||
chunk_t object;
|
chunk_t object;
|
||||||
int objectID;
|
int objectID;
|
||||||
bool success = TRUE;
|
bool success = FALSE;
|
||||||
|
|
||||||
parser = asn1_parser_create(contentInfoObjects, PKCS7_INFO_TYPE, blob);
|
parser = asn1_parser_create(contentInfoObjects, PKCS7_INFO_TYPE, blob);
|
||||||
parser->set_top_level(parser, level0);
|
parser->set_top_level(parser, level0);
|
||||||
@@ -994,7 +991,6 @@ static bool parse_contentInfo(chunk_t blob, u_int level0, private_pkcs7_t *cInfo
|
|||||||
|| cInfo->type > OID_PKCS7_ENCRYPTED_DATA)
|
|| cInfo->type > OID_PKCS7_ENCRYPTED_DATA)
|
||||||
{
|
{
|
||||||
DBG1("unknown pkcs7 content type");
|
DBG1("unknown pkcs7 content type");
|
||||||
success = FALSE;
|
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1003,9 +999,9 @@ static bool parse_contentInfo(chunk_t blob, u_int level0, private_pkcs7_t *cInfo
|
|||||||
cInfo->content = chunk_clone(object);
|
cInfo->content = chunk_clone(object);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
success = parser->success(parser);
|
||||||
|
|
||||||
end:
|
end:
|
||||||
success &= parser->success(parser);
|
|
||||||
parser->destroy(parser);
|
parser->destroy(parser);
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -399,7 +399,7 @@ static bool parse_attributes(chunk_t chunk, int level0, private_pkcs9_t* this)
|
|||||||
chunk_t object;
|
chunk_t object;
|
||||||
int objectID;
|
int objectID;
|
||||||
int oid = OID_UNKNOWN;
|
int oid = OID_UNKNOWN;
|
||||||
bool success = TRUE;
|
bool success = FALSE;
|
||||||
|
|
||||||
parser = asn1_parser_create(attributesObjects, ATTRIBUTE_OBJ_ROOF, chunk);
|
parser = asn1_parser_create(attributesObjects, ATTRIBUTE_OBJ_ROOF, chunk);
|
||||||
parser->set_top_level(parser, level0);
|
parser->set_top_level(parser, level0);
|
||||||
@@ -433,16 +433,15 @@ static bool parse_attributes(chunk_t chunk, int level0, private_pkcs9_t* this)
|
|||||||
parser->get_level(parser)+1,
|
parser->get_level(parser)+1,
|
||||||
oid_names[oid].name))
|
oid_names[oid].name))
|
||||||
{
|
{
|
||||||
success = FALSE;
|
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
success = parser->success(parser);
|
||||||
|
|
||||||
end:
|
end:
|
||||||
success &= parser->success(parser);
|
|
||||||
parser->destroy(parser);
|
parser->destroy(parser);
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -680,7 +680,7 @@ static gmp_rsa_private_key_t *load(chunk_t blob)
|
|||||||
asn1_parser_t *parser;
|
asn1_parser_t *parser;
|
||||||
chunk_t object;
|
chunk_t object;
|
||||||
int objectID ;
|
int objectID ;
|
||||||
bool success = TRUE;
|
bool success = FALSE;
|
||||||
|
|
||||||
private_gmp_rsa_private_key_t *this = gmp_rsa_private_key_create_empty();
|
private_gmp_rsa_private_key_t *this = gmp_rsa_private_key_create_empty();
|
||||||
|
|
||||||
@@ -732,9 +732,9 @@ static gmp_rsa_private_key_t *load(chunk_t blob)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
success = parser->success(parser);
|
||||||
|
|
||||||
end:
|
end:
|
||||||
success &= parser->success(parser);
|
|
||||||
parser->destroy(parser);
|
parser->destroy(parser);
|
||||||
chunk_clear(&blob);
|
chunk_clear(&blob);
|
||||||
|
|
||||||
|
|||||||
@@ -36,32 +36,6 @@
|
|||||||
*/
|
*/
|
||||||
extern chunk_t gmp_mpz_to_asn1(const mpz_t value);
|
extern chunk_t gmp_mpz_to_asn1(const mpz_t value);
|
||||||
|
|
||||||
/**
|
|
||||||
* ASN.1 definition of RSApublicKey
|
|
||||||
*/
|
|
||||||
static const asn1Object_t pubkeyObjects[] = {
|
|
||||||
{ 0, "RSAPublicKey", ASN1_SEQUENCE, ASN1_OBJ }, /* 0 */
|
|
||||||
{ 1, "modulus", ASN1_INTEGER, ASN1_BODY }, /* 1 */
|
|
||||||
{ 1, "publicExponent", ASN1_INTEGER, ASN1_BODY }, /* 2 */
|
|
||||||
};
|
|
||||||
#define PUB_KEY_RSA_PUBLIC_KEY 0
|
|
||||||
#define PUB_KEY_MODULUS 1
|
|
||||||
#define PUB_KEY_EXPONENT 2
|
|
||||||
#define PUB_KEY_ROOF 3
|
|
||||||
|
|
||||||
/**
|
|
||||||
* ASN.1 definition of digestInfo
|
|
||||||
*/
|
|
||||||
static const asn1Object_t digestInfoObjects[] = {
|
|
||||||
{ 0, "digestInfo", ASN1_SEQUENCE, ASN1_OBJ }, /* 0 */
|
|
||||||
{ 1, "digestAlgorithm", ASN1_EOC, ASN1_RAW }, /* 1 */
|
|
||||||
{ 1, "digest", ASN1_OCTET_STRING, ASN1_BODY }, /* 2 */
|
|
||||||
};
|
|
||||||
#define DIGEST_INFO 0
|
|
||||||
#define DIGEST_INFO_ALGORITHM 1
|
|
||||||
#define DIGEST_INFO_DIGEST 2
|
|
||||||
#define DIGEST_INFO_ROOF 3
|
|
||||||
|
|
||||||
typedef struct private_gmp_rsa_public_key_t private_gmp_rsa_public_key_t;
|
typedef struct private_gmp_rsa_public_key_t private_gmp_rsa_public_key_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -136,6 +110,19 @@ static chunk_t rsavp1(private_gmp_rsa_public_key_t *this, chunk_t data)
|
|||||||
return rsaep(this, data);
|
return rsaep(this, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ASN.1 definition of digestInfo
|
||||||
|
*/
|
||||||
|
static const asn1Object_t digestInfoObjects[] = {
|
||||||
|
{ 0, "digestInfo", ASN1_SEQUENCE, ASN1_OBJ }, /* 0 */
|
||||||
|
{ 1, "digestAlgorithm", ASN1_EOC, ASN1_RAW }, /* 1 */
|
||||||
|
{ 1, "digest", ASN1_OCTET_STRING, ASN1_BODY }, /* 2 */
|
||||||
|
};
|
||||||
|
#define DIGEST_INFO 0
|
||||||
|
#define DIGEST_INFO_ALGORITHM 1
|
||||||
|
#define DIGEST_INFO_DIGEST 2
|
||||||
|
#define DIGEST_INFO_ROOF 3
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Verification of an EMPSA PKCS1 signature described in PKCS#1
|
* Verification of an EMPSA PKCS1 signature described in PKCS#1
|
||||||
*/
|
*/
|
||||||
@@ -462,6 +449,19 @@ gmp_rsa_public_key_t *gmp_rsa_public_key_create_from_n_e(mpz_t n, mpz_t e)
|
|||||||
return &this->public;
|
return &this->public;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ASN.1 definition of RSApublicKey
|
||||||
|
*/
|
||||||
|
static const asn1Object_t pubkeyObjects[] = {
|
||||||
|
{ 0, "RSAPublicKey", ASN1_SEQUENCE, ASN1_OBJ }, /* 0 */
|
||||||
|
{ 1, "modulus", ASN1_INTEGER, ASN1_BODY }, /* 1 */
|
||||||
|
{ 1, "publicExponent", ASN1_INTEGER, ASN1_BODY }, /* 2 */
|
||||||
|
};
|
||||||
|
#define PUB_KEY_RSA_PUBLIC_KEY 0
|
||||||
|
#define PUB_KEY_MODULUS 1
|
||||||
|
#define PUB_KEY_EXPONENT 2
|
||||||
|
#define PUB_KEY_ROOF 3
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load a public key from an ASN1 encoded blob
|
* Load a public key from an ASN1 encoded blob
|
||||||
*/
|
*/
|
||||||
@@ -470,7 +470,7 @@ static gmp_rsa_public_key_t *load(chunk_t blob)
|
|||||||
asn1_parser_t *parser;
|
asn1_parser_t *parser;
|
||||||
chunk_t object;
|
chunk_t object;
|
||||||
int objectID;
|
int objectID;
|
||||||
bool success;
|
bool success = FALSE;
|
||||||
|
|
||||||
private_gmp_rsa_public_key_t *this = gmp_rsa_public_key_create_empty();
|
private_gmp_rsa_public_key_t *this = gmp_rsa_public_key_create_empty();
|
||||||
|
|
||||||
@@ -491,9 +491,8 @@ static gmp_rsa_public_key_t *load(chunk_t blob)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
free(blob.ptr);
|
|
||||||
success = parser->success(parser);
|
success = parser->success(parser);
|
||||||
|
free(blob.ptr);
|
||||||
parser->destroy(parser);
|
parser->destroy(parser);
|
||||||
|
|
||||||
if (!success)
|
if (!success)
|
||||||
|
|||||||
@@ -359,7 +359,7 @@ static bool parse_certificate(private_x509_ac_t *this)
|
|||||||
int type = OID_UNKNOWN;
|
int type = OID_UNKNOWN;
|
||||||
int extn_oid = OID_UNKNOWN;
|
int extn_oid = OID_UNKNOWN;
|
||||||
int sig_alg = OID_UNKNOWN;
|
int sig_alg = OID_UNKNOWN;
|
||||||
bool success = TRUE;
|
bool success = FALSE;
|
||||||
bool critical;
|
bool critical;
|
||||||
|
|
||||||
parser = asn1_parser_create(acObjects, AC_OBJ_ROOF, this->encoding);
|
parser = asn1_parser_create(acObjects, AC_OBJ_ROOF, this->encoding);
|
||||||
@@ -379,14 +379,12 @@ static bool parse_certificate(private_x509_ac_t *this)
|
|||||||
if (this->version != 2)
|
if (this->version != 2)
|
||||||
{
|
{
|
||||||
DBG1("v%d attribute certificates are not supported", this->version);
|
DBG1("v%d attribute certificates are not supported", this->version);
|
||||||
success = FALSE;
|
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case AC_OBJ_HOLDER_ISSUER:
|
case AC_OBJ_HOLDER_ISSUER:
|
||||||
if (!parse_directoryName(object, level, FALSE, &this->holderIssuer))
|
if (!parse_directoryName(object, level, FALSE, &this->holderIssuer))
|
||||||
{
|
{
|
||||||
success = FALSE;
|
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -396,14 +394,12 @@ static bool parse_certificate(private_x509_ac_t *this)
|
|||||||
case AC_OBJ_ENTITY_NAME:
|
case AC_OBJ_ENTITY_NAME:
|
||||||
if (!parse_directoryName(object, level, TRUE, &this->entityName))
|
if (!parse_directoryName(object, level, TRUE, &this->entityName))
|
||||||
{
|
{
|
||||||
success = FALSE;
|
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case AC_OBJ_ISSUER_NAME:
|
case AC_OBJ_ISSUER_NAME:
|
||||||
if (!parse_directoryName(object, level, FALSE, &this->issuerName))
|
if (!parse_directoryName(object, level, FALSE, &this->issuerName))
|
||||||
{
|
{
|
||||||
success = FALSE;
|
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -492,9 +488,9 @@ static bool parse_certificate(private_x509_ac_t *this)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
success = parser->success(parser);
|
||||||
|
|
||||||
end:
|
end:
|
||||||
success &= parser->success(parser);
|
|
||||||
parser->destroy(parser);
|
parser->destroy(parser);
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -231,7 +231,7 @@ static bool parse_otherName(chunk_t blob, int level0)
|
|||||||
chunk_t object;
|
chunk_t object;
|
||||||
int objectID;
|
int objectID;
|
||||||
int oid = OID_UNKNOWN;
|
int oid = OID_UNKNOWN;
|
||||||
bool success = TRUE;
|
bool success = FALSE;
|
||||||
|
|
||||||
parser = asn1_parser_create(otherNameObjects,ON_OBJ_ROOF, blob);
|
parser = asn1_parser_create(otherNameObjects,ON_OBJ_ROOF, blob);
|
||||||
parser->set_top_level(parser, level0);
|
parser->set_top_level(parser, level0);
|
||||||
@@ -249,7 +249,6 @@ static bool parse_otherName(chunk_t blob, int level0)
|
|||||||
if (!asn1_parse_simple_object(&object, ASN1_UTF8STRING,
|
if (!asn1_parse_simple_object(&object, ASN1_UTF8STRING,
|
||||||
parser->get_level(parser)+1, "xmppAddr"))
|
parser->get_level(parser)+1, "xmppAddr"))
|
||||||
{
|
{
|
||||||
success = FALSE;
|
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -258,9 +257,9 @@ static bool parse_otherName(chunk_t blob, int level0)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
success = parser->success(parser);
|
||||||
|
|
||||||
end:
|
end:
|
||||||
success &= parser->success(parser);
|
|
||||||
parser->destroy(parser);
|
parser->destroy(parser);
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
@@ -736,7 +735,7 @@ static bool parse_certificate(private_x509_cert_t *this)
|
|||||||
int extn_oid = OID_UNKNOWN;
|
int extn_oid = OID_UNKNOWN;
|
||||||
int key_alg = OID_UNKNOWN;
|
int key_alg = OID_UNKNOWN;
|
||||||
int sig_alg = OID_UNKNOWN;
|
int sig_alg = OID_UNKNOWN;
|
||||||
bool success = TRUE;
|
bool success = FALSE;
|
||||||
bool critical;
|
bool critical;
|
||||||
|
|
||||||
parser = asn1_parser_create(certObjects, X509_OBJ_ROOF, this->encoding);
|
parser = asn1_parser_create(certObjects, X509_OBJ_ROOF, this->encoding);
|
||||||
@@ -795,7 +794,6 @@ static bool parse_certificate(private_x509_cert_t *this)
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
DBG1("parsing key type %d failed", key_alg);
|
DBG1("parsing key type %d failed", key_alg);
|
||||||
success = FALSE;
|
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -845,7 +843,9 @@ static bool parse_certificate(private_x509_cert_t *this)
|
|||||||
case OID_NS_COMMENT:
|
case OID_NS_COMMENT:
|
||||||
if (!asn1_parse_simple_object(&object, ASN1_IA5STRING,
|
if (!asn1_parse_simple_object(&object, ASN1_IA5STRING,
|
||||||
level, oid_names[extn_oid].name))
|
level, oid_names[extn_oid].name))
|
||||||
return FALSE;
|
{
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -857,7 +857,6 @@ static bool parse_certificate(private_x509_cert_t *this)
|
|||||||
if (this->algorithm != sig_alg)
|
if (this->algorithm != sig_alg)
|
||||||
{
|
{
|
||||||
DBG1(" signature algorithms do not agree");
|
DBG1(" signature algorithms do not agree");
|
||||||
success = FALSE;
|
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -868,9 +867,9 @@ static bool parse_certificate(private_x509_cert_t *this)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
success = parser->success(parser);
|
||||||
|
|
||||||
end:
|
end:
|
||||||
success &= parser->success(parser);
|
|
||||||
parser->destroy(parser);
|
parser->destroy(parser);
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -200,7 +200,7 @@ static bool parse(private_x509_crl_t *this)
|
|||||||
chunk_t userCertificate = chunk_empty;
|
chunk_t userCertificate = chunk_empty;
|
||||||
int objectID;
|
int objectID;
|
||||||
int sig_alg = OID_UNKNOWN;
|
int sig_alg = OID_UNKNOWN;
|
||||||
bool success = TRUE;
|
bool success = FALSE;
|
||||||
bool critical;
|
bool critical;
|
||||||
revoked_t *revoked = NULL;
|
revoked_t *revoked = NULL;
|
||||||
|
|
||||||
@@ -276,7 +276,6 @@ static bool parse(private_x509_crl_t *this)
|
|||||||
if (!asn1_parse_simple_object(&object, ASN1_INTEGER,
|
if (!asn1_parse_simple_object(&object, ASN1_INTEGER,
|
||||||
level, "crlNumber"))
|
level, "crlNumber"))
|
||||||
{
|
{
|
||||||
success = FALSE;
|
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
this->crlNumber = object;
|
this->crlNumber = object;
|
||||||
@@ -289,7 +288,6 @@ static bool parse(private_x509_crl_t *this)
|
|||||||
if (this->algorithm != sig_alg)
|
if (this->algorithm != sig_alg)
|
||||||
{
|
{
|
||||||
DBG1(" signature algorithms do not agree");
|
DBG1(" signature algorithms do not agree");
|
||||||
success = FALSE;
|
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -301,9 +299,9 @@ static bool parse(private_x509_crl_t *this)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
success = parser->success(parser);
|
||||||
|
|
||||||
end:
|
end:
|
||||||
success &= parser->success(parser);
|
|
||||||
parser->destroy(parser);
|
parser->destroy(parser);
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -309,7 +309,7 @@ static bool parse_singleResponse(private_x509_ocsp_response_t *this,
|
|||||||
asn1_parser_t *parser;
|
asn1_parser_t *parser;
|
||||||
chunk_t object;
|
chunk_t object;
|
||||||
int objectID;
|
int objectID;
|
||||||
bool success;
|
bool success = FALSE;
|
||||||
|
|
||||||
single_response_t *response;
|
single_response_t *response;
|
||||||
|
|
||||||
@@ -378,7 +378,6 @@ static bool parse_singleResponse(private_x509_ocsp_response_t *this,
|
|||||||
}
|
}
|
||||||
success = parser->success(parser);
|
success = parser->success(parser);
|
||||||
parser->destroy(parser);
|
parser->destroy(parser);
|
||||||
|
|
||||||
if (success)
|
if (success)
|
||||||
{
|
{
|
||||||
if (this->usableUntil == UNDEFINED_TIME)
|
if (this->usableUntil == UNDEFINED_TIME)
|
||||||
@@ -410,7 +409,7 @@ static bool parse_responses(private_x509_ocsp_response_t *this,
|
|||||||
asn1_parser_t *parser;
|
asn1_parser_t *parser;
|
||||||
chunk_t object;
|
chunk_t object;
|
||||||
int objectID;
|
int objectID;
|
||||||
bool success = TRUE;
|
bool success = FALSE;
|
||||||
|
|
||||||
parser = asn1_parser_create(responsesObjects, RESPONSES_ROOF, blob);
|
parser = asn1_parser_create(responsesObjects, RESPONSES_ROOF, blob);
|
||||||
parser->set_top_level(parser, level0);
|
parser->set_top_level(parser, level0);
|
||||||
@@ -423,7 +422,6 @@ static bool parse_responses(private_x509_ocsp_response_t *this,
|
|||||||
if (!parse_singleResponse(this, object,
|
if (!parse_singleResponse(this, object,
|
||||||
parser->get_level(parser)+1))
|
parser->get_level(parser)+1))
|
||||||
{
|
{
|
||||||
success = FALSE;
|
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -431,9 +429,9 @@ static bool parse_responses(private_x509_ocsp_response_t *this,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
success = parser->success(parser);
|
||||||
|
|
||||||
end:
|
end:
|
||||||
success &= parser->success(parser);
|
|
||||||
parser->destroy(parser);
|
parser->destroy(parser);
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
@@ -499,7 +497,7 @@ static bool parse_basicOCSPResponse(private_x509_ocsp_response_t *this,
|
|||||||
int extn_oid = OID_UNKNOWN;
|
int extn_oid = OID_UNKNOWN;
|
||||||
u_int responses_level = level0;
|
u_int responses_level = level0;
|
||||||
certificate_t *cert;
|
certificate_t *cert;
|
||||||
bool success = TRUE;
|
bool success = FALSE;
|
||||||
bool critical;
|
bool critical;
|
||||||
|
|
||||||
parser = asn1_parser_create(basicResponseObjects, BASIC_RESPONSE_ROOF, blob);
|
parser = asn1_parser_create(basicResponseObjects, BASIC_RESPONSE_ROOF, blob);
|
||||||
@@ -519,7 +517,6 @@ static bool parse_basicOCSPResponse(private_x509_ocsp_response_t *this,
|
|||||||
if (version != OCSP_BASIC_RESPONSE_VERSION)
|
if (version != OCSP_BASIC_RESPONSE_VERSION)
|
||||||
{
|
{
|
||||||
DBG1(" ocsp ResponseData version %d not supported", version);
|
DBG1(" ocsp ResponseData version %d not supported", version);
|
||||||
success = FALSE;
|
|
||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -575,11 +572,10 @@ static bool parse_basicOCSPResponse(private_x509_ocsp_response_t *this,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
success = parser->success(parser);
|
||||||
|
|
||||||
end:
|
end:
|
||||||
success &= parser->success(parser);
|
|
||||||
parser->destroy(parser);
|
parser->destroy(parser);
|
||||||
|
|
||||||
if (success)
|
if (success)
|
||||||
{
|
{
|
||||||
if (!this->responderId)
|
if (!this->responderId)
|
||||||
@@ -655,9 +651,9 @@ static bool parse_OCSPResponse(private_x509_ocsp_response_t *this)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
success = parser->success(parser);
|
||||||
|
|
||||||
end:
|
end:
|
||||||
success &= parser->success(parser);
|
|
||||||
parser->destroy(parser);
|
parser->destroy(parser);
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user