uboot/include/hw_sha.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0+ */
   2/*
   3 * Header file for SHA hardware acceleration
   4 *
   5 * Copyright (c) 2012  Samsung Electronics
   6 */
   7#ifndef __HW_SHA_H
   8#define __HW_SHA_H
   9#include <hash.h>
  10
  11/**
  12 * Computes hash value of input pbuf using h/w acceleration
  13 *
  14 * @param in_addr       A pointer to the input buffer
  15 * @param bufleni       Byte length of input buffer
  16 * @param out_addr      A pointer to the output buffer. When complete
  17 *                      64 bytes are copied to pout[0]...pout[63]. Thus, a user
  18 *                      should allocate at least 64 bytes at pOut in advance.
  19 * @param chunk_size    chunk size for sha512
  20 */
  21void hw_sha512(const uchar *in_addr, uint buflen, uchar *out_addr,
  22               uint chunk_size);
  23
  24/**
  25 * Computes hash value of input pbuf using h/w acceleration
  26 *
  27 * @param in_addr       A pointer to the input buffer
  28 * @param bufleni       Byte length of input buffer
  29 * @param out_addr      A pointer to the output buffer. When complete
  30 *                      48 bytes are copied to pout[0]...pout[47]. Thus, a user
  31 *                      should allocate at least 48 bytes at pOut in advance.
  32 * @param chunk_size    chunk size for sha384
  33 */
  34void hw_sha384(const uchar *in_addr, uint buflen, uchar *out_addr,
  35               uint chunk_size);
  36
  37/**
  38 * Computes hash value of input pbuf using h/w acceleration
  39 *
  40 * @param in_addr       A pointer to the input buffer
  41 * @param bufleni       Byte length of input buffer
  42 * @param out_addr      A pointer to the output buffer. When complete
  43 *                      32 bytes are copied to pout[0]...pout[31]. Thus, a user
  44 *                      should allocate at least 32 bytes at pOut in advance.
  45 * @param chunk_size    chunk size for sha256
  46 */
  47void hw_sha256(const uchar *in_addr, uint buflen, uchar *out_addr,
  48               uint chunk_size);
  49
  50/**
  51 * Computes hash value of input pbuf using h/w acceleration
  52 *
  53 * @param in_addr       A pointer to the input buffer
  54 * @param bufleni       Byte length of input buffer
  55 * @param out_addr      A pointer to the output buffer. When complete
  56 *                      32 bytes are copied to pout[0]...pout[31]. Thus, a user
  57 *                      should allocate at least 32 bytes at pOut in advance.
  58 * @param chunk_size    chunk_size for sha1
  59 */
  60void hw_sha1(const uchar *in_addr, uint buflen, uchar *out_addr,
  61             uint chunk_size);
  62
  63/*
  64 * Create the context for sha progressive hashing using h/w acceleration
  65 *
  66 * @algo: Pointer to the hash_algo struct
  67 * @ctxp: Pointer to the pointer of the context for hashing
  68 * @return 0 if ok, -ve on error
  69 */
  70int hw_sha_init(struct hash_algo *algo, void **ctxp);
  71
  72/*
  73 * Update buffer for sha progressive hashing using h/w acceleration
  74 *
  75 * The context is freed by this function if an error occurs.
  76 *
  77 * @algo: Pointer to the hash_algo struct
  78 * @ctx: Pointer to the context for hashing
  79 * @buf: Pointer to the buffer being hashed
  80 * @size: Size of the buffer being hashed
  81 * @is_last: 1 if this is the last update; 0 otherwise
  82 * @return 0 if ok, -ve on error
  83 */
  84int hw_sha_update(struct hash_algo *algo, void *ctx, const void *buf,
  85                  unsigned int size, int is_last);
  86
  87/*
  88 * Copy sha hash result at destination location
  89 *
  90 * The context is freed after completion of hash operation or after an error.
  91 *
  92 * @algo: Pointer to the hash_algo struct
  93 * @ctx: Pointer to the context for hashing
  94 * @dest_buf: Pointer to the destination buffer where hash is to be copied
  95 * @size: Size of the buffer being hashed
  96 * @return 0 if ok, -ve on error
  97 */
  98int hw_sha_finish(struct hash_algo *algo, void *ctx, void *dest_buf,
  99                  int size);
 100
 101#endif
 102