summaryrefslogtreecommitdiffstats
path: root/plugins/ioam-plugin/ioam/lib-pot/pot.api
blob: fa2fc126b7e2ffa6fe629982653405858b2eb379 (plain)
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
/* Hey Emacs use -*- mode: C -*- */
/*
 * Copyright (c) 2016 Cisco and/or its affiliates.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at:
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */


/** \brief Proof of Transit(POT): Set POT profile
    @param id - id of the profile 
    @param validator - True/False to indicate if this is verifier
    @param secret_key - Verification key
    @param secret_share - Share of the 1st polynomial
    @param prime - Prime number used for modulo operation
    @param max_bits - Max bits to be used for Random number generation
    @param lpc - Lagrange basis polynomial
    @param polynomial_public - pre-evaluated public polynomial 
    @param list_name_len - length of the name of this profile list
    @param list_name - name of this profile list
*/
define pot_profile_add {
  u32 client_index;
  u32 context;
  u8 id;
  u8 validator;
  u64 secret_key;
  u64 secret_share;
  u64 prime;
  u8  max_bits;
  u64 lpc;
  u64 polynomial_public;
  u8 list_name_len;
  u8 list_name[0];
};

/** \brief Proof of Transit profile add / del response
    @param context - sender context, to match reply w/ request
    @param retval - return value for request
*/
define pot_profile_add_reply {
    u32 context;
    i32 retval;
};


/** \brief Proof of Transit(POT): Activate POT profile in the list
    @param id - id of the profile 
    @param list_name_len - length of the name of this profile list
    @param list_name - name of this profile list
*/
define pot_profile_activate {
  u32 client_index;
  u32 context;
  u8 id;
  u8 list_name_len;
  u8 list_name[0];
};

/** \brief Proof of Transit profile activate response
    @param context - sender context, to match reply w/ request
    @param retval - return value for request 
*/
define pot_profile_activate_reply {
  u32 context;
  i32 retval;
};

/** \brief Delete POT Profile 
    @param client_index - opaque cookie to identify the sender
    @param context - sender context, to match reply w/ request
    @param list_name_len - length of the name of the profile list
    @param list_name - name of profile list to delete
*/
define pot_profile_del {
  u32 client_index;
  u32 context;
  u8 list_name_len;
  u8 list_name[0];
};

/** \brief Proof of Transit profile add / del response
    @param context - sender context, to match reply w/ request
    @param retval - return value for request
*/
define pot_profile_del_reply {
    u32 context;
    i32 retval;
};

/** \brief Show POT Profiles
    @param client_index - opaque cookie to identify the sender
    @param context - sender context, to match reply w/ request
    @param id - id of the profile
*/
define pot_profile_show_config_dump {
  u32 client_index;
  u32 context;
  u8 id;
};

/** \brief Show POT profile reply
    @param id - id of the profile
    @param validator - True/False to indicate if this is verifier
    @param secret_key - Verification key
    @param secret_share - Share of the 1st polynomial
    @param prime - Prime number used for modulo operation
    @param max_bits - Max bits to be used for Random number generation
    @param lpc - Lagrange basis polynomial
    @param polynomial_public - pre-evaluated public polynomial
    @param list_name_len - length of the name of this profile list
    @param list_name - name of this profile list
*/
define pot_profile_show_config_details {
  u32 context;
  i32 retval;
  u8 id;
  u8 validator;
  u64 secret_key;
  u64 secret_share;
  u64 prime;
  u64 bit_mask;
  u64 lpc;
  u64 polynomial_public;
};