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 18 #include <linux/crypto.h> 19 #include <crypto/sha.h> 20 21 /* must be big enough for the largest SHA variant */ 22 #define SHA_MAX_STATE_SIZE (SHA512_DIGEST_SIZE / 4) 23 #define SHA_MAX_BLOCK_SIZE SHA512_BLOCK_SIZE 24 25 struct s390_sha_ctx { 26 u64 count; /* message length in bytes */ 27 u32 state[SHA_MAX_STATE_SIZE]; 28 u8 buf[2 * SHA_MAX_BLOCK_SIZE]; 29 int func; /* KIMD function to use */ 30 }; 31 32 struct shash_desc; 33 34 int s390_sha_update(struct shash_desc *desc, const u8 *data, unsigned int len); 35 int s390_sha_final(struct shash_desc *desc, u8 *out); 36 37 #endif 38