VirtualBox

Ignore:
Timestamp:
Apr 14, 2023 3:17:44 PM (21 months ago)
Author:
vboxsync
Message:

Devices/EFI/FirmwareNew: Update to edk2-stable202302 and make it build, bugref:4643

Location:
trunk/src/VBox/Devices/EFI/FirmwareNew
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/EFI/FirmwareNew

  • trunk/src/VBox/Devices/EFI/FirmwareNew/CryptoPkg/Library/BaseCryptLib/Pem/CryptPem.c

    r85718 r99404  
    3131  INTN  KeyLength;
    3232
    33   ZeroMem ((VOID *) Buf, (UINTN) Size);
     33  ZeroMem ((VOID *)Buf, (UINTN)Size);
    3434  if (Key != NULL) {
    3535    //
    3636    // Duplicate key phrase directly.
    3737    //
    38     KeyLength = (INTN) AsciiStrLen ((CHAR8 *)Key);
    39     KeyLength = (KeyLength > Size ) ? Size : KeyLength;
    40     CopyMem (Buf, Key, (UINTN) KeyLength);
     38    KeyLength = (INTN)AsciiStrLen ((CHAR8 *)Key);
     39    KeyLength = (KeyLength > Size) ? Size : KeyLength;
     40    CopyMem (Buf, Key, (UINTN)KeyLength);
    4141    return KeyLength;
    4242  } else {
     
    7777  // Check input parameters.
    7878  //
    79   if (PemData == NULL || RsaContext == NULL || PemSize > INT_MAX) {
     79  if ((PemData == NULL) || (RsaContext == NULL) || (PemSize > INT_MAX)) {
    8080    return FALSE;
    8181  }
     
    8888    return FALSE;
    8989  }
     90
    9091  if (EVP_add_cipher (EVP_aes_192_cbc ()) == 0) {
    9192    return FALSE;
    9293  }
     94
    9395  if (EVP_add_cipher (EVP_aes_256_cbc ()) == 0) {
    9496    return FALSE;
     
    105107  }
    106108
    107   if (BIO_write (PemBio, PemData, (int) PemSize) <= 0) {
     109  if (BIO_write (PemBio, PemData, (int)PemSize) <= 0) {
    108110    goto _Exit;
    109111  }
     
    112114  // Retrieve RSA Private Key from encrypted PEM data.
    113115  //
    114   *RsaContext = PEM_read_bio_RSAPrivateKey (PemBio, NULL, (pem_password_cb *) &PasswordCallback, (void *) Password);
     116  *RsaContext = PEM_read_bio_RSAPrivateKey (PemBio, NULL, (pem_password_cb *)&PasswordCallback, (void *)Password);
    115117  if (*RsaContext != NULL) {
    116118    Status = TRUE;
     
    125127  return Status;
    126128}
     129
     130/**
     131  Retrieve the EC Private Key from the password-protected PEM key data.
     132
     133  @param[in]  PemData      Pointer to the PEM-encoded key data to be retrieved.
     134  @param[in]  PemSize      Size of the PEM key data in bytes.
     135  @param[in]  Password     NULL-terminated passphrase used for encrypted PEM key data.
     136  @param[out] EcContext    Pointer to new-generated EC DSA context which contain the retrieved
     137                           EC private key component. Use EcFree() function to free the
     138                           resource.
     139
     140  If PemData is NULL, then return FALSE.
     141  If EcContext is NULL, then return FALSE.
     142
     143  @retval  TRUE   EC Private Key was retrieved successfully.
     144  @retval  FALSE  Invalid PEM key data or incorrect password.
     145
     146**/
     147BOOLEAN
     148EFIAPI
     149EcGetPrivateKeyFromPem (
     150  IN   CONST UINT8  *PemData,
     151  IN   UINTN        PemSize,
     152  IN   CONST CHAR8  *Password,
     153  OUT  VOID         **EcContext
     154  )
     155{
     156  BOOLEAN  Status;
     157  BIO      *PemBio;
     158
     159  //
     160  // Check input parameters.
     161  //
     162  if ((PemData == NULL) || (EcContext == NULL) || (PemSize > INT_MAX)) {
     163    return FALSE;
     164  }
     165
     166  //
     167  // Add possible block-cipher descriptor for PEM data decryption.
     168  // NOTE: Only support most popular ciphers AES for the encrypted PEM.
     169  //
     170  if (EVP_add_cipher (EVP_aes_128_cbc ()) == 0) {
     171    return FALSE;
     172  }
     173
     174  if (EVP_add_cipher (EVP_aes_192_cbc ()) == 0) {
     175    return FALSE;
     176  }
     177
     178  if (EVP_add_cipher (EVP_aes_256_cbc ()) == 0) {
     179    return FALSE;
     180  }
     181
     182  Status = FALSE;
     183
     184  //
     185  // Read encrypted PEM Data.
     186  //
     187  PemBio = BIO_new (BIO_s_mem ());
     188  if (PemBio == NULL) {
     189    goto _Exit;
     190  }
     191
     192  if (BIO_write (PemBio, PemData, (int)PemSize) <= 0) {
     193    goto _Exit;
     194  }
     195
     196  //
     197  // Retrieve EC Private Key from encrypted PEM data.
     198  //
     199  *EcContext = PEM_read_bio_ECPrivateKey (PemBio, NULL, (pem_password_cb *)&PasswordCallback, (void *)Password);
     200  if (*EcContext != NULL) {
     201    Status = TRUE;
     202  }
     203
     204_Exit:
     205  //
     206  // Release Resources.
     207  //
     208  BIO_free (PemBio);
     209
     210  return Status;
     211}
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette