1*03f9172cSAndroid Build Coastguard Worker /* 2*03f9172cSAndroid Build Coastguard Worker * Shared Dragonfly functionality 3*03f9172cSAndroid Build Coastguard Worker * Copyright (c) 2012-2016, Jouni Malinen <[email protected]> 4*03f9172cSAndroid Build Coastguard Worker * Copyright (c) 2019, The Linux Foundation 5*03f9172cSAndroid Build Coastguard Worker * 6*03f9172cSAndroid Build Coastguard Worker * This software may be distributed under the terms of the BSD license. 7*03f9172cSAndroid Build Coastguard Worker * See README for more details. 8*03f9172cSAndroid Build Coastguard Worker */ 9*03f9172cSAndroid Build Coastguard Worker 10*03f9172cSAndroid Build Coastguard Worker #ifndef DRAGONFLY_H 11*03f9172cSAndroid Build Coastguard Worker #define DRAGONFLY_H 12*03f9172cSAndroid Build Coastguard Worker 13*03f9172cSAndroid Build Coastguard Worker #define DRAGONFLY_MAX_ECC_PRIME_LEN 66 14*03f9172cSAndroid Build Coastguard Worker 15*03f9172cSAndroid Build Coastguard Worker struct crypto_bignum; 16*03f9172cSAndroid Build Coastguard Worker struct crypto_ec; 17*03f9172cSAndroid Build Coastguard Worker 18*03f9172cSAndroid Build Coastguard Worker int dragonfly_suitable_group(int group, int ecc_only); 19*03f9172cSAndroid Build Coastguard Worker unsigned int dragonfly_min_pwe_loop_iter(int group); 20*03f9172cSAndroid Build Coastguard Worker int dragonfly_get_random_qr_qnr(const struct crypto_bignum *prime, 21*03f9172cSAndroid Build Coastguard Worker struct crypto_bignum **qr, 22*03f9172cSAndroid Build Coastguard Worker struct crypto_bignum **qnr); 23*03f9172cSAndroid Build Coastguard Worker int dragonfly_is_quadratic_residue_blind(struct crypto_ec *ec, 24*03f9172cSAndroid Build Coastguard Worker const u8 *qr, const u8 *qnr, 25*03f9172cSAndroid Build Coastguard Worker const struct crypto_bignum *val); 26*03f9172cSAndroid Build Coastguard Worker int dragonfly_generate_scalar(const struct crypto_bignum *order, 27*03f9172cSAndroid Build Coastguard Worker struct crypto_bignum *_rand, 28*03f9172cSAndroid Build Coastguard Worker struct crypto_bignum *_mask, 29*03f9172cSAndroid Build Coastguard Worker struct crypto_bignum *scalar); 30*03f9172cSAndroid Build Coastguard Worker int dragonfly_sqrt(struct crypto_ec *ec, const struct crypto_bignum *val, 31*03f9172cSAndroid Build Coastguard Worker struct crypto_bignum *res); 32*03f9172cSAndroid Build Coastguard Worker 33*03f9172cSAndroid Build Coastguard Worker #endif /* DRAGONFLY_H */ 34