~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/s390/crypto/sha512_s390.c

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /arch/s390/crypto/sha512_s390.c (Architecture ppc) and /arch/sparc64/crypto/sha512_s390.c (Architecture sparc64)


  1 // SPDX-License-Identifier: GPL-2.0+                1 
  2 /*                                                
  3  * Cryptographic API.                             
  4  *                                                
  5  * s390 implementation of the SHA512 and SHA38    
  6  *                                                
  7  * Copyright IBM Corp. 2007                       
  8  * Author(s): Jan Glauber (jang@de.ibm.com)       
  9  */                                               
 10 #include <crypto/internal/hash.h>                 
 11 #include <crypto/sha2.h>                          
 12 #include <linux/errno.h>                          
 13 #include <linux/init.h>                           
 14 #include <linux/kernel.h>                         
 15 #include <linux/module.h>                         
 16 #include <linux/cpufeature.h>                     
 17 #include <asm/cpacf.h>                            
 18                                                   
 19 #include "sha.h"                                  
 20                                                   
 21 static int sha512_init(struct shash_desc *desc    
 22 {                                                 
 23         struct s390_sha_ctx *ctx = shash_desc_    
 24                                                   
 25         *(__u64 *)&ctx->state[0] = SHA512_H0;     
 26         *(__u64 *)&ctx->state[2] = SHA512_H1;     
 27         *(__u64 *)&ctx->state[4] = SHA512_H2;     
 28         *(__u64 *)&ctx->state[6] = SHA512_H3;     
 29         *(__u64 *)&ctx->state[8] = SHA512_H4;     
 30         *(__u64 *)&ctx->state[10] = SHA512_H5;    
 31         *(__u64 *)&ctx->state[12] = SHA512_H6;    
 32         *(__u64 *)&ctx->state[14] = SHA512_H7;    
 33         ctx->count = 0;                           
 34         ctx->func = CPACF_KIMD_SHA_512;           
 35                                                   
 36         return 0;                                 
 37 }                                                 
 38                                                   
 39 static int sha512_export(struct shash_desc *de    
 40 {                                                 
 41         struct s390_sha_ctx *sctx = shash_desc    
 42         struct sha512_state *octx = out;          
 43                                                   
 44         octx->count[0] = sctx->count;             
 45         octx->count[1] = 0;                       
 46         memcpy(octx->state, sctx->state, sizeo    
 47         memcpy(octx->buf, sctx->buf, sizeof(oc    
 48         return 0;                                 
 49 }                                                 
 50                                                   
 51 static int sha512_import(struct shash_desc *de    
 52 {                                                 
 53         struct s390_sha_ctx *sctx = shash_desc    
 54         const struct sha512_state *ictx = in;     
 55                                                   
 56         if (unlikely(ictx->count[1]))             
 57                 return -ERANGE;                   
 58         sctx->count = ictx->count[0];             
 59                                                   
 60         memcpy(sctx->state, ictx->state, sizeo    
 61         memcpy(sctx->buf, ictx->buf, sizeof(ic    
 62         sctx->func = CPACF_KIMD_SHA_512;          
 63         return 0;                                 
 64 }                                                 
 65                                                   
 66 static struct shash_alg sha512_alg = {            
 67         .digestsize     =       SHA512_DIGEST_    
 68         .init           =       sha512_init,      
 69         .update         =       s390_sha_updat    
 70         .final          =       s390_sha_final    
 71         .export         =       sha512_export,    
 72         .import         =       sha512_import,    
 73         .descsize       =       sizeof(struct     
 74         .statesize      =       sizeof(struct     
 75         .base           =       {                 
 76                 .cra_name       =       "sha51    
 77                 .cra_driver_name=       "sha51    
 78                 .cra_priority   =       300,      
 79                 .cra_blocksize  =       SHA512    
 80                 .cra_module     =       THIS_M    
 81         }                                         
 82 };                                                
 83                                                   
 84 MODULE_ALIAS_CRYPTO("sha512");                    
 85                                                   
 86 static int sha384_init(struct shash_desc *desc    
 87 {                                                 
 88         struct s390_sha_ctx *ctx = shash_desc_    
 89                                                   
 90         *(__u64 *)&ctx->state[0] = SHA384_H0;     
 91         *(__u64 *)&ctx->state[2] = SHA384_H1;     
 92         *(__u64 *)&ctx->state[4] = SHA384_H2;     
 93         *(__u64 *)&ctx->state[6] = SHA384_H3;     
 94         *(__u64 *)&ctx->state[8] = SHA384_H4;     
 95         *(__u64 *)&ctx->state[10] = SHA384_H5;    
 96         *(__u64 *)&ctx->state[12] = SHA384_H6;    
 97         *(__u64 *)&ctx->state[14] = SHA384_H7;    
 98         ctx->count = 0;                           
 99         ctx->func = CPACF_KIMD_SHA_512;           
100                                                   
101         return 0;                                 
102 }                                                 
103                                                   
104 static struct shash_alg sha384_alg = {            
105         .digestsize     =       SHA384_DIGEST_    
106         .init           =       sha384_init,      
107         .update         =       s390_sha_updat    
108         .final          =       s390_sha_final    
109         .export         =       sha512_export,    
110         .import         =       sha512_import,    
111         .descsize       =       sizeof(struct     
112         .statesize      =       sizeof(struct     
113         .base           =       {                 
114                 .cra_name       =       "sha38    
115                 .cra_driver_name=       "sha38    
116                 .cra_priority   =       300,      
117                 .cra_blocksize  =       SHA384    
118                 .cra_ctxsize    =       sizeof    
119                 .cra_module     =       THIS_M    
120         }                                         
121 };                                                
122                                                   
123 MODULE_ALIAS_CRYPTO("sha384");                    
124                                                   
125 static int __init init(void)                      
126 {                                                 
127         int ret;                                  
128                                                   
129         if (!cpacf_query_func(CPACF_KIMD, CPAC    
130                 return -ENODEV;                   
131         if ((ret = crypto_register_shash(&sha5    
132                 goto out;                         
133         if ((ret = crypto_register_shash(&sha3    
134                 crypto_unregister_shash(&sha51    
135 out:                                              
136         return ret;                               
137 }                                                 
138                                                   
139 static void __exit fini(void)                     
140 {                                                 
141         crypto_unregister_shash(&sha512_alg);     
142         crypto_unregister_shash(&sha384_alg);     
143 }                                                 
144                                                   
145 module_cpu_feature_match(S390_CPU_FEATURE_MSA,    
146 module_exit(fini);                                
147                                                   
148 MODULE_LICENSE("GPL");                            
149 MODULE_DESCRIPTION("SHA512 and SHA-384 Secure     
150                                                   

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php