if (ctx->status < OSSL_CMP_PKISTATUS_accepted)
return 0;
- ctx->failInfoCode = 0;
- if (si->failInfo != NULL) {
- for (i = 0; i <= OSSL_CMP_PKIFAILUREINFO_MAX; i++) {
- if (ASN1_BIT_STRING_get_bit(si->failInfo, i))
- ctx->failInfoCode |= (1 << i);
- }
- }
+ ctx->failInfoCode = ossl_cmp_pkisi_get_pkifailureinfo(si);
if (!ossl_cmp_ctx_set0_statusString(ctx, sk_ASN1_UTF8STRING_new_null())
|| (ctx->statusString == NULL))
if (!ossl_assert(si != NULL))
return -1;
- for (i = 0; i <= OSSL_CMP_PKIFAILUREINFO_MAX; i++)
- if (ASN1_BIT_STRING_get_bit(si->failInfo, i))
- res |= 1 << i;
+ if (si->failInfo != NULL)
+ for (i = 0; i <= OSSL_CMP_PKIFAILUREINFO_MAX; i++)
+ if (ASN1_BIT_STRING_get_bit(si->failInfo, i))
+ res |= 1 << i;
return res;
}
* failInfo is optional and may be empty;
* if present, print failInfo before statusString because it is more concise
*/
- if (fail_info != 0) {
+ if (fail_info != -1 && fail_info != 0) {
printed_chars = BIO_snprintf(write_ptr, bufsize, "; PKIFailureInfo: ");
ADVANCE_BUFFER;
for (failure = 0; failure <= OSSL_CMP_PKIFAILUREINFO_MAX; failure++) {
CertRepMessage or Revocation Response or error message, or NULL if unset.
OSSL_CMP_CTX_get_failInfoCode() returns the error code from the failInfo field
-of the last received CertRepMessage or Revocation Response or error message.
+of the last received CertRepMessage or Revocation Response or error message,
+or -1 if no such response was received or OSSL_CMP_CTX_reinit() has been called.
This is a bit field and the flags for it are specified in the header file
F<< <openssl/cmp.h> >>.
The flags start with OSSL_CMP_CTX_FAILINFO, for example: