forked from mirrors/linux
		
	 c5c46887cf
			
		
	
	
		c5c46887cf
		
	
	
	
	
		
			
			Don't cast the data buffer directly to streebog_uint512, as this
violates alignment rules.
Fixes: fe18957e8e ("crypto: streebog - add Streebog hash function")
Cc: Vitaly Chikunov <vt@altlinux.org>
Signed-off-by: Eric Biggers <ebiggers@google.com>
Reviewed-by: Vitaly Chikunov <vt@altlinux.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
		
	
			
		
			
				
	
	
		
			37 lines
		
	
	
	
		
			949 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
	
		
			949 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0+ OR BSD-2-Clause */
 | |
| /*
 | |
|  * Copyright (c) 2013 Alexey Degtyarev <alexey@renatasystems.org>
 | |
|  * Copyright (c) 2018 Vitaly Chikunov <vt@altlinux.org>
 | |
|  *
 | |
|  * This program is free software; you can redistribute it and/or modify it
 | |
|  * under the terms of the GNU General Public License as published by the Free
 | |
|  * Software Foundation; either version 2 of the License, or (at your option)
 | |
|  * any later version.
 | |
|  */
 | |
| 
 | |
| #ifndef _CRYPTO_STREEBOG_H_
 | |
| #define _CRYPTO_STREEBOG_H_
 | |
| 
 | |
| #include <linux/types.h>
 | |
| 
 | |
| #define STREEBOG256_DIGEST_SIZE	32
 | |
| #define STREEBOG512_DIGEST_SIZE	64
 | |
| #define STREEBOG_BLOCK_SIZE	64
 | |
| 
 | |
| struct streebog_uint512 {
 | |
| 	__le64 qword[8];
 | |
| };
 | |
| 
 | |
| struct streebog_state {
 | |
| 	union {
 | |
| 		u8 buffer[STREEBOG_BLOCK_SIZE];
 | |
| 		struct streebog_uint512 m;
 | |
| 	};
 | |
| 	struct streebog_uint512 hash;
 | |
| 	struct streebog_uint512 h;
 | |
| 	struct streebog_uint512 N;
 | |
| 	struct streebog_uint512 Sigma;
 | |
| 	size_t fillsize;
 | |
| };
 | |
| 
 | |
| #endif /* !_CRYPTO_STREEBOG_H_ */
 |