1
10
13
14
20
21
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
...
...
...
...
...
#ifndef NX_ECDSA_H
#define NX_ECDSA_H
/* ... */
#ifdef __cplusplus
extern "C" {
#endif
#include "nx_crypto.h"
#include "nx_crypto_huge_number.h"
#include "nx_crypto_ec.h"
#ifndef NX_CRYPTO_ECDSA_SCRATCH_BUFFER_SIZE
#define NX_CRYPTO_ECDSA_SCRATCH_BUFFER_SIZE 3016
#endif
typedef struct NX_CRYPTO_ECDSA
{
NX_CRYPTO_EC *nx_crypto_ecdsa_curve;
NX_CRYPTO_METHOD *nx_crypto_ecdsa_hash_method;
HN_UBASE nx_crypto_ecdsa_scratch_buffer[NX_CRYPTO_ECDSA_SCRATCH_BUFFER_SIZE >> HN_SIZE_SHIFT];
...} NX_CRYPTO_ECDSA;
UINT _nx_crypto_ecdsa_sign(NX_CRYPTO_EC *curve,
UCHAR *hash,
UINT hash_length,
UCHAR *private_key,
UINT private_key_length,
UCHAR *signature,
ULONG signature_length,
ULONG *actual_signature_length,
HN_UBASE *scratch);
UINT _nx_crypto_ecdsa_verify(NX_CRYPTO_EC *curve,
UCHAR *hash,
UINT hash_length,
UCHAR *public_key,
UINT public_key_length,
UCHAR *signature,
UINT signature_length,
HN_UBASE *scratch);
UINT _nx_crypto_method_ecdsa_init(struct NX_CRYPTO_METHOD_STRUCT *method,
UCHAR *key, NX_CRYPTO_KEY_SIZE key_size_in_bits,
VOID **handle,
VOID *crypto_metadata,
ULONG crypto_metadata_size);
UINT _nx_crypto_method_ecdsa_cleanup(VOID *crypto_metadata);
UINT _nx_crypto_method_ecdsa_operation(UINT op,
VOID *handle,
struct NX_CRYPTO_METHOD_STRUCT *method,
UCHAR *key, NX_CRYPTO_KEY_SIZE key_size_in_bits,
UCHAR *input, ULONG input_length_in_byte,
UCHAR *iv_ptr,
UCHAR *output, ULONG output_length_in_byte,
VOID *crypto_metadata, ULONG crypto_metadata_size,
VOID *packet_ptr,
VOID (*nx_crypto_hw_process_callback)(VOID *, UINT));
#ifdef __cplusplus
}extern "C" { ... }
#endif/* ... */
#endif...