1 // Copyright 2020 Espressif Systems (Shanghai) PTE LTD
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //     http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #ifndef _ROM_BIGINT_H_
16 #define _ROM_BIGINT_H_
17 
18 #include <stdint.h>
19 #include <stdbool.h>
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
25 void ets_bigint_enable(void);
26 
27 void ets_bigint_disable(void);
28 
29 int ets_bigint_multiply(const uint32_t *x, const uint32_t *y, uint32_t len_words);
30 
31 int ets_bigint_modmult(const uint32_t *x, const uint32_t *y, const uint32_t *m, uint32_t m_dash, const uint32_t *rb, uint32_t len_words);
32 
33 int ets_bigint_modexp(const uint32_t *x, const uint32_t *y, const uint32_t *m, uint32_t m_dash, const uint32_t *rb, bool constant_time, uint32_t len_words);
34 
35 void ets_bigint_wait_finish(void);
36 
37 int ets_bigint_getz(uint32_t *z, uint32_t len_words);
38 
39 #ifdef __cplusplus
40 }
41 #endif
42 
43 #endif /* _ROM_BIGINT_H_ */
44