sha.h 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. /*
  2. * Cryptographic API.
  3. *
  4. * s390 generic implementation of the SHA Secure Hash Algorithms.
  5. *
  6. * Copyright IBM Corp. 2007
  7. * Author(s): Jan Glauber (jang@de.ibm.com)
  8. *
  9. * This program is free software; you can redistribute it and/or modify it
  10. * under the terms of the GNU General Public License as published by the Free
  11. * Software Foundation; either version 2 of the License, or (at your option)
  12. * any later version.
  13. *
  14. */
  15. #ifndef _CRYPTO_ARCH_S390_SHA_H
  16. #define _CRYPTO_ARCH_S390_SHA_H
  17. #include <linux/crypto.h>
  18. #include <crypto/sha.h>
  19. /* must be big enough for the largest SHA variant */
  20. #define SHA_MAX_STATE_SIZE (SHA512_DIGEST_SIZE / 4)
  21. #define SHA_MAX_BLOCK_SIZE SHA512_BLOCK_SIZE
  22. struct s390_sha_ctx {
  23. u64 count; /* message length in bytes */
  24. u32 state[SHA_MAX_STATE_SIZE];
  25. u8 buf[2 * SHA_MAX_BLOCK_SIZE];
  26. int func; /* KIMD function to use */
  27. };
  28. struct shash_desc;
  29. int s390_sha_update(struct shash_desc *desc, const u8 *data, unsigned int len);
  30. int s390_sha_final(struct shash_desc *desc, u8 *out);
  31. #endif