-
-
Notifications
You must be signed in to change notification settings - Fork 20
/
libsecsipid.h
216 lines (180 loc) · 7.83 KB
/
libsecsipid.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
/* Code generated by cmd/cgo; DO NOT EDIT. */
/* package command-line-arguments */
#line 1 "cgo-builtin-export-prolog"
#include <stddef.h>
#ifndef GO_CGO_EXPORT_PROLOGUE_H
#define GO_CGO_EXPORT_PROLOGUE_H
#ifndef GO_CGO_GOSTRING_TYPEDEF
typedef struct { const char *p; ptrdiff_t n; } _GoString_;
#endif
#endif
/* Start of preamble from import "C" comments. */
/* End of preamble from import "C" comments. */
/* Start of boilerplate cgo prologue. */
#line 1 "cgo-gcc-export-header-prolog"
#ifndef GO_CGO_PROLOGUE_H
#define GO_CGO_PROLOGUE_H
typedef signed char GoInt8;
typedef unsigned char GoUint8;
typedef short GoInt16;
typedef unsigned short GoUint16;
typedef int GoInt32;
typedef unsigned int GoUint32;
typedef long long GoInt64;
typedef unsigned long long GoUint64;
typedef GoInt64 GoInt;
typedef GoUint64 GoUint;
typedef size_t GoUintptr;
typedef float GoFloat32;
typedef double GoFloat64;
#ifdef _MSC_VER
#include <complex.h>
typedef _Fcomplex GoComplex64;
typedef _Dcomplex GoComplex128;
#else
typedef float _Complex GoComplex64;
typedef double _Complex GoComplex128;
#endif
/*
static assertion to make sure the file is being used on architecture
at least with matching size of GoInt.
*/
typedef char _check_for_64_bit_pointer_matching_GoInt[sizeof(void*)==64/8 ? 1:-1];
#ifndef GO_CGO_GOSTRING_TYPEDEF
typedef _GoString_ GoString;
#endif
typedef void *GoMap;
typedef void *GoChan;
typedef struct { void *t; void *v; } GoInterface;
typedef struct { void *data; GoInt len; GoInt cap; } GoSlice;
#endif
/* End of boilerplate cgo prologue. */
#ifdef __cplusplus
extern "C" {
#endif
// SecSIPIDSignJSONHP --
// - sign the JSON header and payload with provided private key file path
// - headerJSON - header part in JSON forman (0-terminated string)
// - payloadJSON - payload part in JSON forman (0-terminated string)
// - prvkeyPath - path to private key to be used to generate the signature
// - outPtr - to be set to the pointer containing the output (it is a
// 0-terminated string); the `*outPtr` must be freed after use
// - return: the length of `*outPtr`
//
extern int SecSIPIDSignJSONHP(char* headerJSON, char* payloadJSON, char* prvkeyPath, char** outPtr);
// SecSIPIDSignJSONHPPrvKey --
// - sign the JSON header and payload with provided private key data
// - headerJSON - header part in JSON forman (0-terminated string)
// - payloadJSON - payload part in JSON forman (0-terminated string)
// - prvkeyData - private key data to be used to generate the signature
// - outPtr - to be set to the pointer containing the output (it is a
// 0-terminated string); the `*outPtr` must be freed after use
// - return: the length of `*outPtr`
//
extern int SecSIPIDSignJSONHPPrvKey(char* headerJSON, char* payloadJSON, char* prvkeyData, char** outPtr);
// SecSIPIDGetIdentity --
// Generate the Identity header content using the input attributes
// - origTN - calling number
// - destTN - called number
// - attestVal - attestation level
// - origID - unique ID for tracking purposes, if empty string a UUID is generated
// - x5uVal - location of public certificate
// - prvkeyPath - path to private key to be used to generate the signature
// - outPtr - to be set to the pointer containing the output (it is a
// 0-terminated string); the `*outPtr` must be freed after use
// - return: the length of `*outPtr` on success or error return code (< 0)
//
extern int SecSIPIDGetIdentity(char* origTN, char* destTN, char* attestVal, char* origID, char* x5uVal, char* prvkeyPath, char** outPtr);
// SecSIPIDGetIdentityPrvKey --
// Generate the Identity header content using the input attributes
// - origTN - calling number
// - destTN - called number
// - attestVal - attestation level
// - origID - unique ID for tracking purposes, if empty string a UUID is generated
// - x5uVal - location of public certificate
// - prvkeyData - content of private key to be used to generate the signature
// - outPtr - to be set to the pointer containing the output (it is a
// 0-terminated string); the `*outPtr` must be freed after use
// - return: the length of `*outPtr` on success or error return code (< 0)
//
extern int SecSIPIDGetIdentityPrvKey(char* origTN, char* destTN, char* attestVal, char* origID, char* x5uVal, char* prvkeyData, char** outPtr);
// SecSIPIDCheck --
// check the Identity header value
// - identityVal - identity header value
// - identityLen - length of identityVal, if is 0, identityVal is expected
// to be 0-terminated
// - expireVal - number of seconds until the validity is considered expired
// - pubkeyPath - file path or URL to public key
// - timeoutVal - timeout in seconds to try to fetch the public key via HTTP
// - return: 0 - if validity is ok; <0 - on error or validity is not ok
//
extern int SecSIPIDCheck(char* identityVal, int identityLen, int expireVal, char* pubkeyPath, int timeoutVal);
// SecSIPIDCheckFull --
// check the Identity header value
// - identityVal - identity header value with header parameters
// - identityLen - length of identityVal, if it is 0, identityVal is expected
// to be 0-terminated
// - expireVal - number of seconds until the validity is considered expired
// - pubkeyPath - file path or URL to public key
// - timeoutVal - timeout in seconds to try to fetch the public key via HTTP
// - return: 0 - if validity is ok; <0 - on error or validity is not ok
//
extern int SecSIPIDCheckFull(char* identityVal, int identityLen, int expireVal, char* pubkeyPath, int timeoutVal);
// SecSIPIDCheckFullPubKey --
// check the Identity header value
// - identityVal - identity header value with header parameters
// - identityLen - length of identityVal, if it is 0, identityVal is expected
// to be 0-terminated
// - expireVal - number of seconds until the validity is considered expired
// - pubkeyVal - the value of the public key
// - pubkeyLen - the length of the public key, if it is 0, then the pubkeyVal
// is expected to be 0-terminated
// - return: 0 - if validity is ok; <0 - on error or validity is not ok
//
extern int SecSIPIDCheckFullPubKey(char* identityVal, int identityLen, int expireVal, char* pubkeyVal, int pubkeyLen);
// SecSIPIDSetFileCacheOptions --
// set the options for local file caching of public keys
// * dirPath - path to local directory where to store the files
// * expireVal - number of the seconds after which to invalidate the cached file
// * return: 0
//
extern int SecSIPIDSetFileCacheOptions(char* dirPath, int expireVal);
// SecSIPIDGetURLContent --
// get the content of an URL
// - urlVal - the HTTP or HTTPS URL
// - timeoutVal - timeout in seconds to try to get the content of the HTTP URL
// - outPtr - to be set to the pointer containing the output (it is a
// 0-terminated string); the `*outPtr` must be freed after use
// - outLen: to be set to the length of `*outPtr`
// - return: 0 - on success; -1 - on failure
//
extern int SecSIPIDGetURLContent(char* urlVal, int timeoutVal, char** outPtr, int* outLen);
// SecSIPIDOptSetS --
// set a string option for the library
// * optName - name of the option
// * optVal - value of the option
// * return: 0 if option was set, -1 otherwise
//
extern int SecSIPIDOptSetS(char* optName, char* optVal);
// SecSIPIDOptSetN --
// set a number (integer) option for the library
// * optName - name of the option
// * optVal - value of the option
// * 0 if option was set, -1 otherwise
//
extern int SecSIPIDOptSetN(char* optName, int optVal);
// SecSIPIDOptGetN --
// get the number (integer) option from the library
// * optName - name of the option
// * return: option value if it was found, -1 otherwise
//
extern int SecSIPIDOptGetN(char* optName);
// SecSIPIDOptSetV --
// set an option for the library
// * optNameVal - string with name=value of the option
// * 0 if option was set, -1 otherwise
//
extern int SecSIPIDOptSetV(char* optNameVal);
#ifdef __cplusplus
}
#endif