/** @file PKCS#7 SignedData Sign Wrapper and PKCS#7 SignedData Verification Wrapper Implementation over mbedtls, Internal headers. RFC 2315 - PKCS #7: Cryptographic Message Syntax Version 1.5 Copyright (c) 2023-2024, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef CRYPT_PKCS7_INTERNAL_H_ #define CRYPT_PKCS7_INTERNAL_H_ #include "InternalCryptLib.h" #include "mbedtls/oid.h" #include "mbedtls/asn1.h" #include "mbedtls/asn1write.h" #include "mbedtls/x509.h" #include "mbedtls/x509_crt.h" /// /// PKCS7 OID /// #define MBEDTLS_OID_PKCS7 MBEDTLS_OID_PKCS "\x07" #define MBEDTLS_OID_PKCS7_DATA MBEDTLS_OID_PKCS7 "\x01" #define MBEDTLS_OID_PKCS7_SIGNED_DATA MBEDTLS_OID_PKCS7 "\x02" #define MBEDTLS_OID_PKCS7_ENVELOPED_DATA MBEDTLS_OID_PKCS7 "\x03" #define MBEDTLS_OID_PKCS7_SIGNED_AND_ENVELOPED_DATA MBEDTLS_OID_PKCS7 "\x04" #define MBEDTLS_OID_PKCS7_DIGESTED_DATA MBEDTLS_OID_PKCS7 "\x05" #define MBEDTLS_OID_PKCS7_ENCRYPTED_DATA MBEDTLS_OID_PKCS7 "\x06" /// /// PKCS7 SignerInfo type /// https://tools.ietf.org/html/rfc2315#section-9.2 /// typedef struct MbedtlsPkcs7SignerInfo { INT32 Version; mbedtls_x509_buf Serial; mbedtls_x509_name Issuer; mbedtls_x509_buf IssuerRaw; mbedtls_x509_buf AlgIdentifier; mbedtls_x509_buf SigAlgIdentifier; mbedtls_x509_buf AuthAttr; mbedtls_x509_buf Sig; struct MbedtlsPkcs7SignerInfo *Next; } MbedtlsPkcs7SignerInfo; /// /// PKCS7 signed data attached data format /// typedef struct MbedtlsPkcs7Data { mbedtls_asn1_buf Oid; mbedtls_asn1_buf Data; } MbedtlsPkcs7Data; /// /// Signed Data /// https://tools.ietf.org/html/rfc2315#section-9.1 /// typedef struct MbedtlsPkcs7SignedData { INT32 Version; mbedtls_asn1_buf DigestAlgorithms; struct MbedtlsPkcs7Data ContentInfo; mbedtls_x509_crt Certificates; mbedtls_x509_crl Crls; struct MbedtlsPkcs7SignerInfo SignerInfos; } MbedtlsPkcs7SignedData; /// /// PKCS7 struct, only support SignedData /// typedef struct MbedtlsPkcs7 { mbedtls_asn1_buf ContentTypeOid; struct MbedtlsPkcs7SignedData SignedData; } MbedtlsPkcs7; #define EDKII_ASN1_CHK_ADD(g, f) \ do \ { \ if( ( Ret = (f) ) < 0 ) \ return( Ret ); \ else \ (g) += Ret; \ } while( 0 ) #endif