]> granicus.if.org Git - esp-idf/blob - components/esp32/include/rom/bigint.h
Initial public version
[esp-idf] / components / esp32 / include / rom / bigint.h
1 // Copyright 2015-2016 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 #ifndef _ROM_BIGINT_H_
15 #define _ROM_BIGINT_H_
16
17 #include <stdint.h>
18 #include <stdbool.h>
19
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23
24 void ets_bigint_enable(void);
25
26 void ets_bigint_disable(void);
27
28 void ets_bigint_wait_finish(void);
29
30 bool ets_bigint_mod_power_prepare(uint32_t *x, uint32_t *y, uint32_t *m,
31                                   uint32_t m_dash, uint32_t *rb, uint32_t len, bool again);
32
33 bool ets_bigint_mod_power_getz(uint32_t *z, uint32_t len);
34
35 bool ets_bigint_mult_prepare(uint32_t *x, uint32_t *y, uint32_t len);
36
37 bool ets_bigint_mult_getz(uint32_t *z, uint32_t len);
38
39 bool ets_bigint_montgomery_mult_prepare(uint32_t *x, uint32_t *y, uint32_t *m,
40                                         uint32_t m_dash, uint32_t len, bool again);
41
42 bool ets_bigint_montgomery_mult_getz(uint32_t *z, uint32_t len);
43
44 bool ets_bigint_mod_mult_prepare(uint32_t *x, uint32_t *y, uint32_t *m,
45                                  uint32_t m_dash, uint32_t *rb, uint32_t len, bool again);
46
47 bool ets_bigint_mod_mult_getz(uint32_t *m, uint32_t *z, uint32_t len);
48
49 #ifdef __cplusplus
50 }
51 #endif
52
53 #endif /* _ROM_BIGINT_H_ */