Lines Matching refs:bn
34 struct rk_bignum *bn; in rk_bn_alloc() local
36 bn = kzalloc(sizeof(*bn), GFP_KERNEL); in rk_bn_alloc()
37 if (!bn) in rk_bn_alloc()
40 bn->data = kzalloc(round_up(max_size, sizeof(u32)), GFP_KERNEL); in rk_bn_alloc()
41 if (!bn->data) { in rk_bn_alloc()
42 kfree(bn); in rk_bn_alloc()
46 bn->n_words = BYTES2WORDS(max_size); in rk_bn_alloc()
48 return bn; in rk_bn_alloc()
51 void rk_bn_free(struct rk_bignum *bn) in rk_bn_free() argument
53 if (!bn) in rk_bn_free()
56 if (bn->data) { in rk_bn_free()
57 memset(bn->data, 0x00, WORDS2BYTES(bn->n_words)); in rk_bn_free()
58 kfree(bn->data); in rk_bn_free()
61 kfree(bn); in rk_bn_free()
64 int rk_bn_set_data(struct rk_bignum *bn, const u8 *data, u32 size, enum bignum_endian endian) in rk_bn_set_data() argument
66 if (!bn || !data) in rk_bn_set_data()
69 if (BYTES2WORDS(size) > bn->n_words) in rk_bn_set_data()
73 memcpy(bn->data, data, size); in rk_bn_set_data()
75 rk_reverse_memcpy(bn->data, data, size); in rk_bn_set_data()
80 int rk_bn_get_data(const struct rk_bignum *bn, u8 *data, u32 size, enum bignum_endian endian) in rk_bn_get_data() argument
82 if (!bn || !data) in rk_bn_get_data()
85 if (size < WORDS2BYTES(bn->n_words)) in rk_bn_get_data()
91 memcpy(data + size - WORDS2BYTES(bn->n_words), bn->data, bn->n_words); in rk_bn_get_data()
93 rk_reverse_memcpy(data + size - WORDS2BYTES(bn->n_words), in rk_bn_get_data()
94 bn->data, WORDS2BYTES(bn->n_words)); in rk_bn_get_data()
99 u32 rk_bn_get_size(const struct rk_bignum *bn) in rk_bn_get_size() argument
101 if (!bn) in rk_bn_get_size()
104 return WORDS2BYTES(bn->n_words); in rk_bn_get_size()
113 int rk_bn_highest_bit(const struct rk_bignum *bn) in rk_bn_highest_bit() argument
118 if (!bn || !bn->data || !bn->n_words) in rk_bn_highest_bit()
121 w = bn->data[bn->n_words - 1]; in rk_bn_highest_bit()
129 return (int)(bn->n_words - 1) * RK_WORD_SIZE + b; in rk_bn_highest_bit()