Home | History | Annotate | Download | only in Ppi
      1 /*++
      2 
      3   Copyright (c) 2004  - 2014, Intel Corporation. All rights reserved.<BR>
      4 
      5   This program and the accompanying materials are licensed and made available under
      7   the terms and conditions of the BSD License that accompanies this distribution.
      9   The full text of the license may be found at
     11   http://opensource.org/licenses/bsd-license.php.
     13 
     15   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     17   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     19 
     21 
     23 Module Name:
     24 
     25   Speaker.h
     26 
     27 Abstract:
     28 
     29   EFI Speaker Interface Protocol
     30 
     31 
     32 
     33 --*/
     34 
     35 #ifndef _PEI_SHA256_HASH_H
     36 #define _PEI_SHA256_HASH_H
     37 
     38 //
     39 // Global ID Speaker Interface
     40 //
     41 #define PEI_SHA256_HASH_PPI_GUID \
     42   { \
     43     0x950e191b, 0x8524, 0x4f51,  0x80, 0xa1, 0x5c, 0x4f, 0x1b, 0x3, 0xf3, 0x5c  \
     44   }
     45 
     46 typedef struct _PEI_SHA256_HASH_PPI PEI_SHA256_HASH_PPI;
     47 
     48 /**
     49   @return  The size, in bytes, of the context buffer required for hash operations.
     50 
     51 **/
     52 typedef
     53 UINTN
     54 (EFIAPI *HASH_GET_CONTEXT_SIZE)(
     55   VOID
     56   );
     57 
     58 /**
     59   Initializes user-supplied memory pointed by HashContext as hash context for
     60   subsequent use.
     61 
     62   If HashContext is NULL, then ASSERT().
     63 
     64   @param[in, out]  HashContext  Pointer to  Context being initialized.
     65 
     66   @retval TRUE   HASH context initialization succeeded.
     67   @retval FALSE  HASH context initialization failed.
     68 
     69 **/
     70 typedef
     71 BOOLEAN
     72 (EFIAPI *HASH_INIT)(
     73   IN OUT  VOID  *HashContext
     74   );
     75 
     76 /**
     77   Performs digest on a data buffer of the specified length. This function can
     78   be called multiple times to compute the digest of long or discontinuous data streams.
     79 
     80   If HashContext is NULL, then ASSERT().
     81 
     82   @param[in, out]  HashContext  Pointer to the MD5 context.
     83   @param[in]       Data         Pointer to the buffer containing the data to be hashed.
     84   @param[in]       DataLength   Length of Data buffer in bytes.
     85 
     86   @retval TRUE     HASH data digest succeeded.
     87   @retval FALSE    Invalid HASH context. After HashFinal function has been called, the
     88                    HASH context cannot be reused.
     89 
     90 **/
     91 typedef
     92 BOOLEAN
     93 (EFIAPI *HASH_UPDATE)(
     94   IN OUT  VOID        *HashContext,
     95   IN      CONST VOID  *Data,
     96   IN      UINTN       DataLength
     97   );
     98 
     99 /**
    100   Completes hash computation and retrieves the digest value into the specified
    101   memory. After this function has been called, the context cannot be used again.
    102 
    103   If HashContext is NULL, then ASSERT().
    104   If HashValue is NULL, then ASSERT().
    105 
    106   @param[in, out]  HashContext  Pointer to the MD5 context
    107   @param[out]      HashValue    Pointer to a buffer that receives the HASH digest
    108                                 value.
    109 
    110   @retval TRUE   HASH digest computation succeeded.
    111   @retval FALSE  HASH digest computation failed.
    112 
    113 **/
    114 typedef
    115 BOOLEAN
    116 (EFIAPI *HASH_FINAL)(
    117   IN OUT  VOID   *HashContext,
    118   OUT     UINT8  *HashValue
    119   );
    120 
    121 //
    122 // Ppi definition
    123 //
    124 typedef struct _PEI_SHA256_HASH_PPI {
    125   //
    126   // Pointer to Hash GetContentSize function
    127   //
    128   HASH_GET_CONTEXT_SIZE    GetContextSize;
    129   //
    130   // Pointer to Hash Init function
    131   //
    132   HASH_INIT                HashInit;
    133   //
    134   // Pointer to Hash Update function
    135   //
    136   HASH_UPDATE              HashUpdate;
    137   //
    138   // Pointer to Hash Final function
    139   //
    140   HASH_FINAL               HashFinal;
    141 
    142 } PEI_SHA256_HASH_PPI;
    143 
    144 extern EFI_GUID gPeiSha256HashPpiGuid;
    145 #endif
    146