Latest update.
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2007-2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright Nokia 2007-2019
|
||||
* Copyright Siemens AG 2015-2019
|
||||
*
|
||||
@@ -17,6 +17,8 @@
|
||||
#include <openssl/cmp.h>
|
||||
#include <openssl/crmf.h>
|
||||
|
||||
DEFINE_STACK_OF(OSSL_CMP_ITAV)
|
||||
|
||||
/* ASN.1 declarations from RFC4210 */
|
||||
ASN1_SEQUENCE(OSSL_CMP_REVANNCONTENT) = {
|
||||
/* OSSL_CMP_PKISTATUS is effectively ASN1_INTEGER so it is used directly */
|
||||
@@ -396,11 +398,11 @@ ASN1_SEQUENCE(OSSL_CMP_PKIHEADER) = {
|
||||
} ASN1_SEQUENCE_END(OSSL_CMP_PKIHEADER)
|
||||
IMPLEMENT_ASN1_FUNCTIONS(OSSL_CMP_PKIHEADER)
|
||||
|
||||
ASN1_SEQUENCE(CMP_PROTECTEDPART) = {
|
||||
ASN1_SEQUENCE(OSSL_CMP_PROTECTEDPART) = {
|
||||
ASN1_SIMPLE(OSSL_CMP_MSG, header, OSSL_CMP_PKIHEADER),
|
||||
ASN1_SIMPLE(OSSL_CMP_MSG, body, OSSL_CMP_PKIBODY)
|
||||
} ASN1_SEQUENCE_END(CMP_PROTECTEDPART)
|
||||
IMPLEMENT_ASN1_FUNCTIONS(CMP_PROTECTEDPART)
|
||||
} ASN1_SEQUENCE_END(OSSL_CMP_PROTECTEDPART)
|
||||
IMPLEMENT_ASN1_FUNCTIONS(OSSL_CMP_PROTECTEDPART)
|
||||
|
||||
ASN1_SEQUENCE(OSSL_CMP_MSG) = {
|
||||
ASN1_SIMPLE(OSSL_CMP_MSG, header, OSSL_CMP_PKIHEADER),
|
||||
|
||||
+22
-1
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2007-2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright Nokia 2007-2019
|
||||
* Copyright Siemens AG 2015-2019
|
||||
*
|
||||
@@ -21,6 +21,12 @@
|
||||
|
||||
#include "openssl/cmp_util.h"
|
||||
|
||||
DEFINE_STACK_OF(ASN1_UTF8STRING)
|
||||
DEFINE_STACK_OF(X509_CRL)
|
||||
DEFINE_STACK_OF(OSSL_CMP_CERTRESPONSE)
|
||||
DEFINE_STACK_OF(OSSL_CMP_PKISI)
|
||||
DEFINE_STACK_OF(OSSL_CRMF_CERTID)
|
||||
|
||||
#define IS_CREP(t) ((t) == OSSL_CMP_PKIBODY_IP || (t) == OSSL_CMP_PKIBODY_CP \
|
||||
|| (t) == OSSL_CMP_PKIBODY_KUP)
|
||||
|
||||
@@ -754,6 +760,10 @@ X509 *OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx)
|
||||
CMPerr(0, CMP_R_INVALID_ARGS);
|
||||
return 0;
|
||||
}
|
||||
if (ctx->oldCert == NULL) {
|
||||
CMPerr(0, CMP_R_MISSING_REFERENCE_CERT);
|
||||
return 0;
|
||||
}
|
||||
ctx->status = -1;
|
||||
|
||||
/* OSSL_CMP_rr_new() also checks if all necessary options are set */
|
||||
@@ -764,10 +774,17 @@ X509 *OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx)
|
||||
goto end;
|
||||
|
||||
rrep = rp->body->value.rp;
|
||||
#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
|
||||
if (sk_OSSL_CMP_PKISI_num(rrep->status) != num_RevDetails) {
|
||||
CMPerr(0, CMP_R_WRONG_RP_COMPONENT_COUNT);
|
||||
goto end;
|
||||
}
|
||||
#else
|
||||
if (sk_OSSL_CMP_PKISI_num(rrep->status) < 1) {
|
||||
CMPerr(0, CMP_R_WRONG_RP_COMPONENT_COUNT);
|
||||
goto end;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* evaluate PKIStatus field */
|
||||
si = ossl_cmp_revrepcontent_get_pkisi(rrep, rsid);
|
||||
@@ -822,15 +839,19 @@ X509 *OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx)
|
||||
goto err;
|
||||
}
|
||||
if (X509_NAME_cmp(issuer, OSSL_CRMF_CERTID_get0_issuer(cid)) != 0) {
|
||||
#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
|
||||
CMPerr(0, CMP_R_WRONG_CERTID_IN_RP);
|
||||
result = NULL;
|
||||
goto err;
|
||||
#endif
|
||||
}
|
||||
if (ASN1_INTEGER_cmp(serial,
|
||||
OSSL_CRMF_CERTID_get0_serialNumber(cid)) != 0) {
|
||||
#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
|
||||
CMPerr(0, CMP_R_WRONG_SERIAL_IN_RP);
|
||||
result = NULL;
|
||||
goto err;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+11
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2007-2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright Nokia 2007-2019
|
||||
* Copyright Siemens AG 2015-2019
|
||||
*
|
||||
@@ -20,7 +20,16 @@
|
||||
#include <openssl/crmf.h>
|
||||
#include <openssl/err.h>
|
||||
|
||||
/* Get current certificate store containing trusted root CA certs */
|
||||
DEFINE_STACK_OF(X509)
|
||||
DEFINE_STACK_OF(X509_EXTENSION)
|
||||
DEFINE_STACK_OF(POLICYINFO)
|
||||
DEFINE_STACK_OF(ASN1_UTF8STRING)
|
||||
DEFINE_STACK_OF(GENERAL_NAME)
|
||||
DEFINE_STACK_OF(OSSL_CMP_ITAV)
|
||||
|
||||
/*
|
||||
* Get current certificate store containing trusted root CA certs
|
||||
*/
|
||||
X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx)
|
||||
{
|
||||
if (ctx == NULL) {
|
||||
|
||||
@@ -90,6 +90,8 @@ static const ERR_STRING_DATA CMP_str_reasons[] = {
|
||||
{ERR_PACK(ERR_LIB_CMP, 0, CMP_R_MISSING_PRIVATE_KEY),
|
||||
"missing private key"},
|
||||
{ERR_PACK(ERR_LIB_CMP, 0, CMP_R_MISSING_PROTECTION), "missing protection"},
|
||||
{ERR_PACK(ERR_LIB_CMP, 0, CMP_R_MISSING_REFERENCE_CERT),
|
||||
"missing reference cert"},
|
||||
{ERR_PACK(ERR_LIB_CMP, 0, CMP_R_MISSING_SENDER_IDENTIFICATION),
|
||||
"missing sender identification"},
|
||||
{ERR_PACK(ERR_LIB_CMP, 0, CMP_R_MISSING_TRUST_STORE),
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2007-2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright Nokia 2007-2019
|
||||
* Copyright Siemens AG 2015-2019
|
||||
*
|
||||
@@ -20,6 +20,9 @@
|
||||
#include <openssl/cmp.h>
|
||||
#include <openssl/err.h>
|
||||
|
||||
DEFINE_STACK_OF(ASN1_UTF8STRING)
|
||||
DEFINE_STACK_OF(OSSL_CMP_ITAV)
|
||||
|
||||
int ossl_cmp_hdr_set_pvno(OSSL_CMP_PKIHEADER *hdr, int pvno)
|
||||
{
|
||||
if (!ossl_assert(hdr != NULL))
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2007-2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright Nokia 2007-2019
|
||||
* Copyright Siemens AG 2015-2019
|
||||
*
|
||||
@@ -28,6 +28,8 @@
|
||||
#include <openssl/cmp.h>
|
||||
#include <openssl/err.h>
|
||||
|
||||
DEFINE_STACK_OF(CONF_VALUE)
|
||||
|
||||
/*
|
||||
* Send the PKIMessage req and on success return the response, else NULL.
|
||||
* Any previous error queue entries will likely be removed by ERR_clear_error().
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2007-2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright Nokia 2007-2019
|
||||
* Copyright Siemens AG 2015-2019
|
||||
*
|
||||
@@ -674,11 +674,11 @@ DECLARE_ASN1_FUNCTIONS(OSSL_CMP_MSG)
|
||||
* body PKIBody
|
||||
* }
|
||||
*/
|
||||
typedef struct cmp_protectedpart_st {
|
||||
typedef struct ossl_cmp_protectedpart_st {
|
||||
OSSL_CMP_PKIHEADER *header;
|
||||
OSSL_CMP_PKIBODY *body;
|
||||
} CMP_PROTECTEDPART;
|
||||
DECLARE_ASN1_FUNCTIONS(CMP_PROTECTEDPART)
|
||||
} OSSL_CMP_PROTECTEDPART;
|
||||
DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PROTECTEDPART)
|
||||
|
||||
/*-
|
||||
* this is not defined here as it is already in CRMF:
|
||||
|
||||
+19
-4
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2007-2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright Nokia 2007-2019
|
||||
* Copyright Siemens AG 2015-2019
|
||||
*
|
||||
@@ -20,6 +20,16 @@
|
||||
#include <openssl/err.h>
|
||||
#include <openssl/x509.h>
|
||||
|
||||
DEFINE_STACK_OF(OSSL_CMP_CERTSTATUS)
|
||||
DEFINE_STACK_OF(OSSL_CMP_ITAV)
|
||||
DEFINE_STACK_OF(GENERAL_NAME)
|
||||
DEFINE_STACK_OF(X509_EXTENSION)
|
||||
DEFINE_STACK_OF(OSSL_CMP_PKISI)
|
||||
DEFINE_STACK_OF(OSSL_CRMF_MSG)
|
||||
DEFINE_STACK_OF(OSSL_CMP_CERTRESPONSE)
|
||||
DEFINE_STACK_OF(OSSL_CRMF_CERTID)
|
||||
DEFINE_STACK_OF(ASN1_UTF8STRING)
|
||||
|
||||
OSSL_CMP_PKIHEADER *OSSL_CMP_MSG_get0_header(const OSSL_CMP_MSG *msg)
|
||||
{
|
||||
if (msg == NULL) {
|
||||
@@ -219,9 +229,14 @@ static OSSL_CRMF_MSG *crm_new(OSSL_CMP_CTX *ctx, int bodytype, int rid)
|
||||
|
||||
if (rkey == NULL)
|
||||
rkey = ctx->pkey; /* default is independent of ctx->oldClCert */
|
||||
if (rkey == NULL
|
||||
|| (bodytype == OSSL_CMP_PKIBODY_KUR && refcert == NULL)) {
|
||||
CMPerr(0, CMP_R_INVALID_ARGS);
|
||||
if (rkey == NULL) {
|
||||
#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
|
||||
CMPerr(0, CMP_R_NULL_ARGUMENT);
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
if (bodytype == OSSL_CMP_PKIBODY_KUR && refcert == NULL) {
|
||||
CMPerr(0, CMP_R_MISSING_REFERENCE_CERT);
|
||||
return NULL;
|
||||
}
|
||||
if ((crm = OSSL_CRMF_MSG_new()) == NULL)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2007-2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright Nokia 2007-2019
|
||||
* Copyright Siemens AG 2015-2019
|
||||
*
|
||||
@@ -18,6 +18,8 @@
|
||||
#include <openssl/err.h>
|
||||
#include <openssl/x509.h>
|
||||
|
||||
DEFINE_STACK_OF(X509)
|
||||
|
||||
/*
|
||||
* This function is also used for verification from cmp_vfy.
|
||||
*
|
||||
@@ -35,7 +37,7 @@ ASN1_BIT_STRING *ossl_cmp_calc_protection(const OSSL_CMP_MSG *msg,
|
||||
EVP_PKEY *pkey)
|
||||
{
|
||||
ASN1_BIT_STRING *prot = NULL;
|
||||
CMP_PROTECTEDPART prot_part;
|
||||
OSSL_CMP_PROTECTEDPART prot_part;
|
||||
const ASN1_OBJECT *algorOID = NULL;
|
||||
int len;
|
||||
size_t prot_part_der_len;
|
||||
@@ -58,7 +60,7 @@ ASN1_BIT_STRING *ossl_cmp_calc_protection(const OSSL_CMP_MSG *msg,
|
||||
prot_part.header = msg->header;
|
||||
prot_part.body = msg->body;
|
||||
|
||||
len = i2d_CMP_PROTECTEDPART(&prot_part, &prot_part_der);
|
||||
len = i2d_OSSL_CMP_PROTECTEDPART(&prot_part, &prot_part_der);
|
||||
if (len < 0 || prot_part_der == NULL) {
|
||||
CMPerr(0, CMP_R_ERROR_CALCULATING_PROTECTION);
|
||||
goto end;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2007-2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright Nokia 2007-2019
|
||||
* Copyright Siemens AG 2015-2019
|
||||
*
|
||||
@@ -19,6 +19,11 @@
|
||||
#include <openssl/cmp.h>
|
||||
#include <openssl/err.h>
|
||||
|
||||
DEFINE_STACK_OF(OSSL_CRMF_MSG)
|
||||
DEFINE_STACK_OF(X509)
|
||||
DEFINE_STACK_OF(OSSL_CMP_ITAV)
|
||||
DEFINE_STACK_OF(OSSL_CMP_CERTSTATUS)
|
||||
|
||||
/* the context for the generic CMP server */
|
||||
struct ossl_cmp_srv_ctx_st
|
||||
{
|
||||
@@ -492,11 +497,13 @@ OSSL_CMP_MSG *OSSL_CMP_SRV_process_request(OSSL_CMP_SRV_CTX *srv_ctx,
|
||||
default:
|
||||
/* transactionID should be already initialized */
|
||||
if (ctx->transactionID == NULL) {
|
||||
#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
|
||||
CMPerr(0, CMP_R_UNEXPECTED_PKIBODY);
|
||||
/* ignore any (extra) error in next two function calls: */
|
||||
(void)OSSL_CMP_CTX_set1_transactionID(ctx, hdr->transactionID);
|
||||
(void)ossl_cmp_ctx_set1_recipNonce(ctx, hdr->senderNonce);
|
||||
goto err;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -547,6 +554,7 @@ OSSL_CMP_MSG *OSSL_CMP_SRV_process_request(OSSL_CMP_SRV_CTX *srv_ctx,
|
||||
default:
|
||||
/* TODO possibly support further request message types */
|
||||
CMPerr(0, CMP_R_UNEXPECTED_PKIBODY);
|
||||
break;
|
||||
}
|
||||
|
||||
err:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2007-2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright Nokia 2007-2019
|
||||
* Copyright Siemens AG 2015-2019
|
||||
*
|
||||
@@ -26,6 +26,8 @@
|
||||
#include <openssl/x509.h>
|
||||
#include <openssl/asn1err.h> /* for ASN1_R_TOO_SMALL and ASN1_R_TOO_LARGE */
|
||||
|
||||
DEFINE_STACK_OF(ASN1_UTF8STRING)
|
||||
|
||||
/* CMP functions related to PKIStatus */
|
||||
|
||||
int ossl_cmp_pkisi_get_status(const OSSL_CMP_PKISI *si)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2007-2019 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright 2007-2020 The OpenSSL Project Authors. All Rights Reserved.
|
||||
* Copyright Nokia 2007-2019
|
||||
* Copyright Siemens AG 2015-2019
|
||||
*
|
||||
@@ -16,6 +16,10 @@
|
||||
#include <openssl/err.h> /* should be implied by cmperr.h */
|
||||
#include <openssl/x509v3.h>
|
||||
|
||||
DEFINE_STACK_OF(X509)
|
||||
DEFINE_STACK_OF(X509_OBJECT)
|
||||
DEFINE_STACK_OF(ASN1_UTF8STRING)
|
||||
|
||||
/*
|
||||
* use trace API for CMP-specific logging, prefixed by "CMP " and severity
|
||||
*/
|
||||
@@ -114,8 +118,9 @@ const char *ossl_cmp_log_parse_metadata(const char *buf,
|
||||
*/
|
||||
static const char *improve_location_name(const char *func, const char *fallback)
|
||||
{
|
||||
if (!ossl_assert(fallback != NULL))
|
||||
return NULL;
|
||||
if (fallback == NULL)
|
||||
return func == NULL ? UNKNOWN_FUNC : func;
|
||||
|
||||
return func == NULL || *func == '\0' || strcmp(func, UNKNOWN_FUNC) == 0
|
||||
? fallback : func;
|
||||
}
|
||||
|
||||
+31
-9
@@ -22,6 +22,8 @@
|
||||
#include <openssl/x509.h>
|
||||
#include "crypto/x509.h"
|
||||
|
||||
DEFINE_STACK_OF(X509)
|
||||
|
||||
/*
|
||||
* Verify a message protected by signature according to section 5.1.3.3
|
||||
* (sha1+RSA/DSA or any other algorithm supported by OpenSSL).
|
||||
@@ -32,7 +34,7 @@ static int verify_signature(const OSSL_CMP_CTX *cmp_ctx,
|
||||
const OSSL_CMP_MSG *msg, X509 *cert)
|
||||
{
|
||||
EVP_MD_CTX *ctx = NULL;
|
||||
CMP_PROTECTEDPART prot_part;
|
||||
OSSL_CMP_PROTECTEDPART prot_part;
|
||||
int digest_nid, pk_nid;
|
||||
const EVP_MD *digest = NULL;
|
||||
EVP_PKEY *pubkey = NULL;
|
||||
@@ -62,7 +64,7 @@ static int verify_signature(const OSSL_CMP_CTX *cmp_ctx,
|
||||
prot_part.header = msg->header;
|
||||
prot_part.body = msg->body;
|
||||
|
||||
len = i2d_CMP_PROTECTEDPART(&prot_part, &prot_part_der);
|
||||
len = i2d_OSSL_CMP_PROTECTEDPART(&prot_part, &prot_part_der);
|
||||
if (len < 0 || prot_part_der == NULL)
|
||||
goto end;
|
||||
prot_part_der_len = (size_t) len;
|
||||
@@ -700,26 +702,34 @@ int ossl_cmp_msg_check_received(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *msg,
|
||||
/* detect explicitly permitted exceptions for invalid protection */
|
||||
if (!OSSL_CMP_validate_msg(ctx, msg)
|
||||
&& (cb == NULL || (*cb)(ctx, msg, 1, cb_arg) <= 0)) {
|
||||
#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
|
||||
CMPerr(0, CMP_R_ERROR_VALIDATING_PROTECTION);
|
||||
return -1;
|
||||
#endif
|
||||
}
|
||||
} else {
|
||||
/* detect explicitly permitted exceptions for missing protection */
|
||||
if (cb == NULL || (*cb)(ctx, msg, 0, cb_arg) <= 0) {
|
||||
#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
|
||||
CMPerr(0, CMP_R_MISSING_PROTECTION);
|
||||
return -1;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
/* check CMP version number in header */
|
||||
if (ossl_cmp_hdr_get_pvno(OSSL_CMP_MSG_get0_header(msg)) != OSSL_CMP_PVNO) {
|
||||
#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
|
||||
CMPerr(0, CMP_R_UNEXPECTED_PVNO);
|
||||
return -1;
|
||||
#endif
|
||||
}
|
||||
|
||||
if ((rcvd_type = ossl_cmp_msg_get_bodytype(msg)) < 0) {
|
||||
#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
|
||||
CMPerr(0, CMP_R_PKIBODY_ERROR);
|
||||
return -1;
|
||||
#endif
|
||||
}
|
||||
|
||||
/* compare received transactionID with the expected one in previous msg */
|
||||
@@ -727,8 +737,10 @@ int ossl_cmp_msg_check_received(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *msg,
|
||||
&& (msg->header->transactionID == NULL
|
||||
|| ASN1_OCTET_STRING_cmp(ctx->transactionID,
|
||||
msg->header->transactionID) != 0)) {
|
||||
#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
|
||||
CMPerr(0, CMP_R_TRANSACTIONID_UNMATCHED);
|
||||
return -1;
|
||||
#endif
|
||||
}
|
||||
|
||||
/* compare received nonce with the one we sent */
|
||||
@@ -736,8 +748,10 @@ int ossl_cmp_msg_check_received(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *msg,
|
||||
&& (msg->header->recipNonce == NULL
|
||||
|| ASN1_OCTET_STRING_cmp(ctx->senderNonce,
|
||||
msg->header->recipNonce) != 0)) {
|
||||
#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
|
||||
CMPerr(0, CMP_R_RECIPNONCE_UNMATCHED);
|
||||
return -1;
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -776,19 +790,27 @@ int ossl_cmp_verify_popo(const OSSL_CMP_MSG *msg, int accept_RAVerified)
|
||||
{
|
||||
X509_REQ *req = msg->body->value.p10cr;
|
||||
|
||||
if (X509_REQ_verify(req, X509_REQ_get0_pubkey(req)) > 0)
|
||||
return 1;
|
||||
CMPerr(0, CMP_R_REQUEST_NOT_ACCEPTED);
|
||||
return 0;
|
||||
if (X509_REQ_verify(req, X509_REQ_get0_pubkey(req)) <= 0) {
|
||||
#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
|
||||
CMPerr(0, CMP_R_REQUEST_NOT_ACCEPTED);
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
break;
|
||||
case OSSL_CMP_PKIBODY_IR:
|
||||
case OSSL_CMP_PKIBODY_CR:
|
||||
case OSSL_CMP_PKIBODY_KUR:
|
||||
return OSSL_CRMF_MSGS_verify_popo(msg->body->value.ir,
|
||||
OSSL_CMP_CERTREQID,
|
||||
accept_RAVerified);
|
||||
if (!OSSL_CRMF_MSGS_verify_popo(msg->body->value.ir, OSSL_CMP_CERTREQID,
|
||||
accept_RAVerified)) {
|
||||
#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
default:
|
||||
CMPerr(0, CMP_R_PKIBODY_ERROR);
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
Reference in New Issue
Block a user