1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun /* Copyright (c) 2020 Rockchip Electronics Co., Ltd. */ 3*4882a593Smuzhiyun 4*4882a593Smuzhiyun #ifndef __RK_CRYPTO_BIGNUM_H__ 5*4882a593Smuzhiyun #define __RK_CRYPTO_BIGNUM_H__ 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun enum bignum_endian { 8*4882a593Smuzhiyun RK_BG_BIG_ENDIAN, 9*4882a593Smuzhiyun RK_BG_LITTILE_ENDIAN 10*4882a593Smuzhiyun }; 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun /** 13*4882a593Smuzhiyun * struct rk_bignum - crypto bignum struct. 14*4882a593Smuzhiyun */ 15*4882a593Smuzhiyun struct rk_bignum { 16*4882a593Smuzhiyun u32 n_words; 17*4882a593Smuzhiyun u32 *data; 18*4882a593Smuzhiyun }; 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun struct rk_bignum *rk_bn_alloc(u32 max_size); 21*4882a593Smuzhiyun void rk_bn_free(struct rk_bignum *bn); 22*4882a593Smuzhiyun int rk_bn_set_data(struct rk_bignum *bn, const u8 *data, u32 size, enum bignum_endian endian); 23*4882a593Smuzhiyun int rk_bn_get_data(const struct rk_bignum *bn, u8 *data, u32 size, enum bignum_endian endian); 24*4882a593Smuzhiyun u32 rk_bn_get_size(const struct rk_bignum *bn); 25*4882a593Smuzhiyun int rk_bn_highest_bit(const struct rk_bignum *src); 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun #endif 28