| /** @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.<BR> | |
| 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 |