Lines Matching refs:alg

90 static bool fips140_wait_until_ready(struct crypto_alg *alg)  in fips140_wait_until_ready()  argument
103 alg->cra_driver_name); in fips140_wait_until_ready()
105 pr_info("tests done, allowing %s to proceed\n", alg->cra_driver_name); in fips140_wait_until_ready()
109 static int fips140_store_init_function(struct crypto_alg *alg, void *func) in fips140_store_init_function() argument
121 ret = xa_store(&fips140_init_func_map, (unsigned long)alg, func, in fips140_store_init_function()
127 static void *fips140_load_init_function(struct crypto_alg *alg) in fips140_load_init_function() argument
129 return xa_load(&fips140_init_func_map, (unsigned long)alg); in fips140_load_init_function()
136 struct crypto_alg *alg = tfm->__crt_alg; in fips140_alg_init_tfm() local
138 fips140_load_init_function(alg); in fips140_alg_init_tfm()
140 if (fips140_wait_until_ready(alg)) in fips140_alg_init_tfm()
141 WRITE_ONCE(alg->cra_init, cra_init); in fips140_alg_init_tfm()
147 struct aead_alg *alg = crypto_aead_alg(tfm); in fips140_aead_init_tfm() local
149 fips140_load_init_function(&alg->base); in fips140_aead_init_tfm()
151 if (fips140_wait_until_ready(&alg->base)) in fips140_aead_init_tfm()
152 WRITE_ONCE(alg->init, init); in fips140_aead_init_tfm()
159 struct ahash_alg *alg = container_of(halg, struct ahash_alg, halg); in fips140_ahash_init_tfm() local
164 WRITE_ONCE(alg->init_tfm, init_tfm); in fips140_ahash_init_tfm()
170 struct shash_alg *alg = crypto_shash_alg(tfm); in fips140_shash_init_tfm() local
172 fips140_load_init_function(&alg->base); in fips140_shash_init_tfm()
174 if (fips140_wait_until_ready(&alg->base)) in fips140_shash_init_tfm()
175 WRITE_ONCE(alg->init_tfm, init_tfm); in fips140_shash_init_tfm()
181 struct skcipher_alg *alg = crypto_skcipher_alg(tfm); in fips140_skcipher_init_tfm() local
183 fips140_load_init_function(&alg->base); in fips140_skcipher_init_tfm()
185 if (fips140_wait_until_ready(&alg->base)) in fips140_skcipher_init_tfm()
186 WRITE_ONCE(alg->init, init); in fips140_skcipher_init_tfm()
192 #define prepare_alg(alg, base_alg, field, wrapper_func) \ argument
196 if (!fips140_ready() && alg->field != wrapper_func) { \
197 err = fips140_store_init_function(base_alg, alg->field);\
199 alg->field = wrapper_func; \
204 static int fips140_prepare_alg(struct crypto_alg *alg) in fips140_prepare_alg() argument
210 return prepare_alg(alg, alg, cra_init, fips140_alg_init_tfm); in fips140_prepare_alg()
213 static int fips140_prepare_aead_alg(struct aead_alg *alg) in fips140_prepare_aead_alg() argument
215 return prepare_alg(alg, &alg->base, init, fips140_aead_init_tfm); in fips140_prepare_aead_alg()
218 static int fips140_prepare_ahash_alg(struct ahash_alg *alg) in fips140_prepare_ahash_alg() argument
220 return prepare_alg(alg, &alg->halg.base, init_tfm, in fips140_prepare_ahash_alg()
224 static int fips140_prepare_rng_alg(struct rng_alg *alg) in fips140_prepare_rng_alg() argument
230 return fips140_prepare_alg(&alg->base); in fips140_prepare_rng_alg()
233 static int fips140_prepare_shash_alg(struct shash_alg *alg) in fips140_prepare_shash_alg() argument
235 return prepare_alg(alg, &alg->base, init_tfm, fips140_shash_init_tfm); in fips140_prepare_shash_alg()
238 static int fips140_prepare_skcipher_alg(struct skcipher_alg *alg) in fips140_prepare_skcipher_alg() argument
240 return prepare_alg(alg, &alg->base, init, fips140_skcipher_init_tfm); in fips140_prepare_skcipher_alg()
243 int fips140_crypto_register_alg(struct crypto_alg *alg) in fips140_crypto_register_alg() argument
245 return fips140_prepare_alg(alg) ?: crypto_register_alg(alg); in fips140_crypto_register_alg()
248 int fips140_crypto_register_aead(struct aead_alg *alg) in fips140_crypto_register_aead() argument
250 return fips140_prepare_aead_alg(alg) ?: crypto_register_aead(alg); in fips140_crypto_register_aead()
253 int fips140_crypto_register_ahash(struct ahash_alg *alg) in fips140_crypto_register_ahash() argument
255 return fips140_prepare_ahash_alg(alg) ?: crypto_register_ahash(alg); in fips140_crypto_register_ahash()
258 int fips140_crypto_register_rng(struct rng_alg *alg) in fips140_crypto_register_rng() argument
260 return fips140_prepare_rng_alg(alg) ?: crypto_register_rng(alg); in fips140_crypto_register_rng()
263 int fips140_crypto_register_shash(struct shash_alg *alg) in fips140_crypto_register_shash() argument
265 return fips140_prepare_shash_alg(alg) ?: crypto_register_shash(alg); in fips140_crypto_register_shash()
268 int fips140_crypto_register_skcipher(struct skcipher_alg *alg) in fips140_crypto_register_skcipher() argument
270 return fips140_prepare_skcipher_alg(alg) ?: in fips140_crypto_register_skcipher()
271 crypto_register_skcipher(alg); in fips140_crypto_register_skcipher()
279 return fips140_prepare_aead_alg(&inst->alg) ?: in fips140_aead_register_instance()
286 return fips140_prepare_ahash_alg(&inst->alg) ?: in fips140_ahash_register_instance()
293 return fips140_prepare_shash_alg(&inst->alg) ?: in fips140_shash_register_instance()
300 return fips140_prepare_skcipher_alg(&inst->alg) ?: in fips140_skcipher_register_instance()