]> git.proxmox.com Git - mirror_edk2.git/blobdiff - CryptoPkg/Include/Library/BaseCryptLib.h
CryptoPkg: Apply uncrustify changes
[mirror_edk2.git] / CryptoPkg / Include / Library / BaseCryptLib.h
index 1b1ffa75ef5e1b8605d2e7c3699465f9eaedb07f..f4bc7c0d73d9d570f6be408bf0aaee1f27d0b5af 100644 (file)
@@ -17,12 +17,12 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 ///\r
 /// MD5 digest size in bytes\r
 ///\r
-#define MD5_DIGEST_SIZE     16\r
+#define MD5_DIGEST_SIZE  16\r
 \r
 ///\r
 /// SHA-1 digest size in bytes.\r
 ///\r
-#define SHA1_DIGEST_SIZE    20\r
+#define SHA1_DIGEST_SIZE  20\r
 \r
 ///\r
 /// SHA-256 digest size in bytes\r
@@ -42,17 +42,17 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 ///\r
 /// SM3 digest size in bytes\r
 ///\r
-#define SM3_256_DIGEST_SIZE 32\r
+#define SM3_256_DIGEST_SIZE  32\r
 \r
 ///\r
 /// TDES block size in bytes\r
 ///\r
-#define TDES_BLOCK_SIZE     8\r
+#define TDES_BLOCK_SIZE  8\r
 \r
 ///\r
 /// AES block size in bytes\r
 ///\r
-#define AES_BLOCK_SIZE      16\r
+#define AES_BLOCK_SIZE  16\r
 \r
 ///\r
 /// RSA Key Tags Definition used in RsaSetKey() function for key component identification.\r
@@ -68,9 +68,11 @@ typedef enum {
   RsaKeyQInv    ///< The CRT coefficient (== 1/q mod p)\r
 } RSA_KEY_TAG;\r
 \r
-//=====================================================================================\r
+// =====================================================================================\r
 //    One-Way Cryptographic Hash Primitives\r
-//=====================================================================================\r
+// =====================================================================================\r
+\r
+#ifdef ENABLE_MD5_DEPRECATED_INTERFACES\r
 \r
 /**\r
   Retrieves the size, in bytes, of the context buffer required for MD5 hash operations.\r
@@ -212,6 +214,10 @@ Md5HashAll (
   OUT  UINT8       *HashValue\r
   );\r
 \r
+#endif\r
+\r
+#ifndef DISABLE_SHA1_DEPRECATED_INTERFACES\r
+\r
 /**\r
   Retrieves the size, in bytes, of the context buffer required for SHA-1 hash operations.\r
 \r
@@ -352,6 +358,8 @@ Sha1HashAll (
   OUT  UINT8       *HashValue\r
   );\r
 \r
+#endif\r
+\r
 /**\r
   Retrieves the size, in bytes, of the context buffer required for SHA-256 hash operations.\r
 \r
@@ -876,9 +884,9 @@ Sm3HashAll (
   OUT  UINT8       *HashValue\r
   );\r
 \r
-//=====================================================================================\r
+// =====================================================================================\r
 //    MAC (Message Authentication Code) Primitive\r
-//=====================================================================================\r
+// =====================================================================================\r
 \r
 /**\r
   Allocates and initializes one HMAC_CTX context for subsequent HMAC-SHA256 use.\r
@@ -1008,9 +1016,9 @@ HmacSha256Final (
   OUT     UINT8  *HmacValue\r
   );\r
 \r
-//=====================================================================================\r
+// =====================================================================================\r
 //    Symmetric Cryptography Primitive\r
-//=====================================================================================\r
+// =====================================================================================\r
 \r
 /**\r
   Retrieves the size, in bytes, of the context buffer required for AES operations.\r
@@ -1135,9 +1143,9 @@ AesCbcDecrypt (
   OUT  UINT8        *Output\r
   );\r
 \r
-//=====================================================================================\r
+// =====================================================================================\r
 //    Asymmetric Cryptography Primitive\r
-//=====================================================================================\r
+// =====================================================================================\r
 \r
 /**\r
   Allocates and initializes one RSA context for subsequent use.\r
@@ -1359,6 +1367,80 @@ RsaPkcs1Verify (
   IN  UINTN        SigSize\r
   );\r
 \r
+/**\r
+  Carries out the RSA-SSA signature generation with EMSA-PSS encoding scheme.\r
+\r
+  This function carries out the RSA-SSA signature generation with EMSA-PSS encoding scheme defined in\r
+  RFC 8017.\r
+  Mask generation function is the same as the message digest algorithm.\r
+  If the Signature buffer is too small to hold the contents of signature, FALSE\r
+  is returned and SigSize is set to the required buffer size to obtain the signature.\r
+\r
+  If RsaContext is NULL, then return FALSE.\r
+  If Message is NULL, then return FALSE.\r
+  If MsgSize is zero or > INT_MAX, then return FALSE.\r
+  If DigestLen is NOT 32, 48 or 64, return FALSE.\r
+  If SaltLen is not equal to DigestLen, then return FALSE.\r
+  If SigSize is large enough but Signature is NULL, then return FALSE.\r
+  If this interface is not supported, then return FALSE.\r
+\r
+  @param[in]      RsaContext   Pointer to RSA context for signature generation.\r
+  @param[in]      Message      Pointer to octet message to be signed.\r
+  @param[in]      MsgSize      Size of the message in bytes.\r
+  @param[in]      DigestLen    Length of the digest in bytes to be used for RSA signature operation.\r
+  @param[in]      SaltLen      Length of the salt in bytes to be used for PSS encoding.\r
+  @param[out]     Signature    Pointer to buffer to receive RSA PSS signature.\r
+  @param[in, out] SigSize      On input, the size of Signature buffer in bytes.\r
+                               On output, the size of data returned in Signature buffer in bytes.\r
+\r
+  @retval  TRUE   Signature successfully generated in RSASSA-PSS.\r
+  @retval  FALSE  Signature generation failed.\r
+  @retval  FALSE  SigSize is too small.\r
+  @retval  FALSE  This interface is not supported.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+RsaPssSign (\r
+  IN      VOID         *RsaContext,\r
+  IN      CONST UINT8  *Message,\r
+  IN      UINTN        MsgSize,\r
+  IN      UINT16       DigestLen,\r
+  IN      UINT16       SaltLen,\r
+  OUT     UINT8        *Signature,\r
+  IN OUT  UINTN        *SigSize\r
+  );\r
+\r
+/**\r
+  Verifies the RSA signature with RSASSA-PSS signature scheme defined in RFC 8017.\r
+  Implementation determines salt length automatically from the signature encoding.\r
+  Mask generation function is the same as the message digest algorithm.\r
+  Salt length should be equal to digest length.\r
+\r
+  @param[in]  RsaContext      Pointer to RSA context for signature verification.\r
+  @param[in]  Message         Pointer to octet message to be verified.\r
+  @param[in]  MsgSize         Size of the message in bytes.\r
+  @param[in]  Signature       Pointer to RSASSA-PSS signature to be verified.\r
+  @param[in]  SigSize         Size of signature in bytes.\r
+  @param[in]  DigestLen       Length of digest for RSA operation.\r
+  @param[in]  SaltLen         Salt length for PSS encoding.\r
+\r
+  @retval  TRUE   Valid signature encoded in RSASSA-PSS.\r
+  @retval  FALSE  Invalid signature or invalid RSA context.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+RsaPssVerify (\r
+  IN  VOID         *RsaContext,\r
+  IN  CONST UINT8  *Message,\r
+  IN  UINTN        MsgSize,\r
+  IN  CONST UINT8  *Signature,\r
+  IN  UINTN        SigSize,\r
+  IN  UINT16       DigestLen,\r
+  IN  UINT16       SaltLen\r
+  );\r
+\r
 /**\r
   Retrieve the RSA Private Key from the password-protected PEM key data.\r
 \r
@@ -1472,7 +1554,7 @@ EFIAPI
 X509GetCommonName (\r
   IN      CONST UINT8  *Cert,\r
   IN      UINTN        CertSize,\r
-  OUT     CHAR8        *CommonName,  OPTIONAL\r
+  OUT     CHAR8        *CommonName   OPTIONAL,\r
   IN OUT  UINTN        *CommonNameSize\r
   );\r
 \r
@@ -1505,10 +1587,10 @@ X509GetCommonName (
 RETURN_STATUS\r
 EFIAPI\r
 X509GetOrganizationName (\r
-  IN      CONST UINT8   *Cert,\r
-  IN      UINTN         CertSize,\r
-  OUT     CHAR8         *NameBuffer,  OPTIONAL\r
-  IN OUT  UINTN         *NameBufferSize\r
+  IN      CONST UINT8  *Cert,\r
+  IN      UINTN        CertSize,\r
+  OUT     CHAR8        *NameBuffer   OPTIONAL,\r
+  IN OUT  UINTN        *NameBufferSize\r
   );\r
 \r
 /**\r
@@ -1743,8 +1825,8 @@ Pkcs1v2Encrypt (
   IN   UINTN        PublicKeySize,\r
   IN   UINT8        *InData,\r
   IN   UINTN        InDataSize,\r
-  IN   CONST UINT8  *PrngSeed,  OPTIONAL\r
-  IN   UINTN        PrngSeedSize,  OPTIONAL\r
+  IN   CONST UINT8  *PrngSeed   OPTIONAL,\r
+  IN   UINTN        PrngSeedSize   OPTIONAL,\r
   OUT  UINT8        **EncryptedData,\r
   OUT  UINTN        *EncryptedDataSize\r
   );\r
@@ -1773,8 +1855,8 @@ typedef struct {
 } EFI_CERT_DATA;\r
 \r
 typedef struct {\r
-  UINT8             CertNumber;   // Number of X.509 certificate.\r
-  //EFI_CERT_DATA   CertArray[];  // An array of X.509 certificate.\r
+  UINT8    CertNumber;            // Number of X.509 certificate.\r
+  // EFI_CERT_DATA   CertArray[];  // An array of X.509 certificate.\r
 } EFI_CERT_STACK;\r
 \r
 #pragma pack()\r
@@ -1827,7 +1909,7 @@ Pkcs7GetSigners (
 VOID\r
 EFIAPI\r
 Pkcs7FreeSigners (\r
-  IN  UINT8        *Certs\r
+  IN  UINT8  *Certs\r
   );\r
 \r
 /**\r
@@ -2073,9 +2155,9 @@ ImageTimestampVerify (
   OUT EFI_TIME     *SigningTime\r
   );\r
 \r
-//=====================================================================================\r
+// =====================================================================================\r
 //    DH Key Exchange Primitive\r
-//=====================================================================================\r
+// =====================================================================================\r
 \r
 /**\r
   Allocates and Initializes one Diffie-Hellman Context for subsequent use.\r
@@ -2238,9 +2320,9 @@ DhComputeKey (
   IN OUT  UINTN        *KeySize\r
   );\r
 \r
-//=====================================================================================\r
+// =====================================================================================\r
 //    Pseudo-Random Generation Primitive\r
-//=====================================================================================\r
+// =====================================================================================\r
 \r
 /**\r
   Sets up the seed value for the pseudorandom number generator.\r
@@ -2288,9 +2370,9 @@ RandomBytes (
   IN   UINTN  Size\r
   );\r
 \r
-//=====================================================================================\r
+// =====================================================================================\r
 //    Key Derivation Function Primitive\r
-//=====================================================================================\r
+// =====================================================================================\r
 \r
 /**\r
   Derive key data using HMAC-SHA256 based KDF.\r