aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDavid M. Syzdek <david@syzdek.net>2022-04-29 22:59:50 -0800
committerDavid M. Syzdek <david@syzdek.net>2022-04-29 22:59:50 -0800
commit8621fe0dd127599f0a1b91b654b470a4c73c12cf (patch)
tree39454ce8d6bbf07862844d5ec4de65b66f349d79
parentb9312a2108fefe165b8c1c1d05be910cd968c772 (diff)
downloadtinytac-8621fe0dd127599f0a1b91b654b470a4c73c12cf.tar.gz
tinytac-8621fe0dd127599f0a1b91b654b470a4c73c12cf.tar.bz2
tinytac-8621fe0dd127599f0a1b91b654b470a4c73c12cf.tar.xz
tinytac-8621fe0dd127599f0a1b91b654b470a4c73c12cf.zip
libtinytac: moving RFC definitions to new file
-rw-r--r--Makefile.am2
-rw-r--r--include/tinytac.h62
-rw-r--r--include/tinytac_plus.h150
3 files changed, 153 insertions, 61 deletions
diff --git a/Makefile.am b/Makefile.am
index 8db78d6..1ea7300 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -135,6 +135,7 @@ if ENABLE_EXAMPLES
135endif 135endif
136if ENABLE_LIBTINYTAC 136if ENABLE_LIBTINYTAC
137 include_HEADERS += include/tinytac.h 137 include_HEADERS += include/tinytac.h
138 include_HEADERS += include/tinytac_plus.h
138 lib_LTLIBRARIES += lib/libtinytac.la 139 lib_LTLIBRARIES += lib/libtinytac.la
139else 140else
140 noinst_HEADERS += include/tinytac.h 141 noinst_HEADERS += include/tinytac.h
@@ -162,6 +163,7 @@ lib_libtinytac_a_CFLAGS = $(AM_CFLAGS)
162lib_libtinytac_a_SOURCES = $(lib_libbindle_a_SOURCES) \ 163lib_libtinytac_a_SOURCES = $(lib_libbindle_a_SOURCES) \
163 include/bindle_prefix.h \ 164 include/bindle_prefix.h \
164 include/tinytac.h \ 165 include/tinytac.h \
166 include/tinytac_plus.h \
165 include/tinytac_compat.h \ 167 include/tinytac_compat.h \
166 lib/libtinytac/libtinytac.h \ 168 lib/libtinytac/libtinytac.h \
167 lib/libtinytac/ldebug.c \ 169 lib/libtinytac/ldebug.c \
diff --git a/include/tinytac.h b/include/tinytac.h
index ad86bb9..106a71e 100644
--- a/include/tinytac.h
+++ b/include/tinytac.h
@@ -42,6 +42,7 @@
42#include <stddef.h> 42#include <stddef.h>
43#include <inttypes.h> 43#include <inttypes.h>
44#include <sys/types.h> 44#include <sys/types.h>
45#include <tinytac_plus.h>
45 46
46 47
47////////////// 48//////////////
@@ -136,67 +137,6 @@
136#define TTAC_DFLT_DEBUG_SYSLOG TTAC_NO 137#define TTAC_DFLT_DEBUG_SYSLOG TTAC_NO
137 138
138 139
139// RFC8907 Section 4.1 The TACACS+ Packet Header
140#define TTAC_MAJOR_VER 0x0c // RFC name: TTAC_PLUS_MAJOR_VER
141#define TTAC_MINOR_VER_DEFAULT 0x00 // RFC name: TTAC_PLUS_MINOR_VER_DEFAULT
142#define TTAC_MINOR_VER_ONE 0x01 // RFC name: TTAC_PLUS_MINOR_VER_ONE
143#define TTAC_TYPE_AUTHEN 0x01 // RFC name: TTAC_PLUS_AUTHEN
144#define TTAC_TYPE_AUTHOR 0x02 // RFC name: TTAC_PLUS_AUTHOR
145#define TTAC_TYPE_ACCT 0x03 // RFC name: TTAC_PLUS_ACCT
146#define TTAC_FLAG_UNENCRYPTED 0x01 // RFC name: TAC_PLUS_UNENCRYPTED_FLAG
147#define TTAC_FLAG_SINGLE_CONNECT 0x04 // RFC name: TAC_PLUS_SINGLE_CONNECT_FLAG
148
149
150// RFC8907 Section 5.1 The Authentication START Packet Body
151#define TTAC_AUTHEN_LOGIN 0x01 // RFC name: TAC_PLUS_AUTHEN_LOGIN
152#define TTAC_AUTHEN_CHPASS 0x02 // RFC name: TAC_PLUS_AUTHEN_CHPASS
153#define TTAC_AUTHEN_SENDAUTH 0x04 // RFC name: TAC_PLUS_AUTHEN_SENDAUTH
154#define TTAC_AUTHEN_TYPE_ASCII 0x01 // RFC name: TAC_PLUS_AUTHEN_TYPE_ASCII
155#define TTAC_AUTHEN_TYPE_PAP 0x02 // RFC name: TAC_PLUS_AUTHEN_TYPE_PAP
156#define TTAC_AUTHEN_TYPE_CHAP 0x03 // RFC name: TAC_PLUS_AUTHEN_TYPE_CHAP
157#define TTAC_AUTHEN_TYPE_MSCHAP 0x05 // RFC name: TAC_PLUS_AUTHEN_TYPE_MSCHAP
158#define TTAC_AUTHEN_TYPE_MSCHAPV2 0x06 // RFC name: TAC_PLUS_AUTHEN_TYPE_MSCHAPV2
159#define TTAC_AUTHEN_SVC_NONE 0x00 // RFC name: TAC_PLUS_AUTHEN_SVC_NONE
160#define TTAC_AUTHEN_SVC_LOGIN 0x01 // RFC name: TAC_PLUS_AUTHEN_SVC_LOGIN
161#define TTAC_AUTHEN_SVC_ENABLE 0x02 // RFC name: TAC_PLUS_AUTHEN_SVC_ENABLE
162#define TTAC_AUTHEN_SVC_PPP 0x03 // RFC name: TAC_PLUS_AUTHEN_SVC_PPP
163#define TTAC_AUTHEN_SVC_PT 0x05 // RFC name: TAC_PLUS_AUTHEN_SVC_PT
164#define TTAC_AUTHEN_SVC_RCMD 0x06 // RFC name: TAC_PLUS_AUTHEN_SVC_RCMD
165#define TTAC_AUTHEN_SVC_X25 0x07 // RFC name: TAC_PLUS_AUTHEN_SVC_X25
166#define TTAC_AUTHEN_SVC_NASI 0x08 // RFC name: TAC_PLUS_AUTHEN_SVC_NASI
167#define TTAC_AUTHEN_SVC_FWPROXY 0x09 // RFC name: TAC_PLUS_AUTHEN_SVC_FWPROXY
168
169
170// RFC8907 Section 5.2 The Authentication REPLY Packet Body
171#define TTAC_AUTHEN_STATUS_PASS 0x01 // RFC name: TAC_PLUS_AUTHEN_STATUS_PASS
172#define TTAC_AUTHEN_STATUS_FAIL 0x02 // RFC name: TAC_PLUS_AUTHEN_STATUS_FAIL
173#define TTAC_AUTHEN_STATUS_GETDATA 0x03 // RFC name: TAC_PLUS_AUTHEN_STATUS_GETDATA
174#define TTAC_AUTHEN_STATUS_GETUSER 0x04 // RFC name: TAC_PLUS_AUTHEN_STATUS_GETUSER
175#define TTAC_AUTHEN_STATUS_GETPASS 0x05 // RFC name: TAC_PLUS_AUTHEN_STATUS_GETPASS
176#define TTAC_AUTHEN_STATUS_RESTART 0x06 // RFC name: TAC_PLUS_AUTHEN_STATUS_RESTART
177#define TTAC_AUTHEN_STATUS_ERROR 0x07 // RFC name: TAC_PLUS_AUTHEN_STATUS_ERROR
178#define TTAC_AUTHEN_STATUS_FOLLOW 0x21 // RFC name: TAC_PLUS_AUTHEN_STATUS_FOLLOW
179#define TTAC_REPLY_FLAG_NOECHO 0x01 // RFC name: TAC_PLUS_REPLY_FLAG_NOECHO
180
181
182// RFC8907 Section 5.3 The Authentication CONTINUE Packet Body
183#define TTAC_CONTINUE_FLAG_ABORT 0x01 // RFC name: TAC_PLUS_CONTINUE_FLAG_ABORT
184
185
186// RFC8907 Section 6.1 The Authorization REQUEST Packet Body
187#define TTAC_AUTHEN_METH_NOT_SET 0x00 // RFC name: TAC_PLUS_AUTHEN_METH_NOT_SET
188#define TTAC_AUTHEN_METH_NONE 0x01 // RFC name: TAC_PLUS_AUTHEN_METH_NONE
189#define TTAC_AUTHEN_METH_KRB5 0x02 // RFC name: TAC_PLUS_AUTHEN_METH_KRB5
190#define TTAC_AUTHEN_METH_LINE 0x03 // RFC name: TAC_PLUS_AUTHEN_METH_LINE
191#define TTAC_AUTHEN_METH_ENABLE 0x04 // RFC name: TAC_PLUS_AUTHEN_METH_ENABLE
192#define TTAC_AUTHEN_METH_LOCAL 0x05 // RFC name: TAC_PLUS_AUTHEN_METH_LOCAL
193#define TTAC_AUTHEN_METH_TACACSPLUS 0x06 // RFC name: TAC_PLUS_AUTHEN_METH_TACACSPLUS
194#define TTAC_AUTHEN_METH_GUEST 0x08 // RFC name: TAC_PLUS_AUTHEN_METH_GUEST
195#define TTAC_AUTHEN_METH_RADIUS 0x10 // RFC name: TAC_PLUS_AUTHEN_METH_RADIUS
196#define TTAC_AUTHEN_METH_KRB4 0x11 // RFC name: TAC_PLUS_AUTHEN_METH_KRB4
197#define TTAC_AUTHEN_METH_RCMD 0x20 // RFC name: TAC_PLUS_AUTHEN_METH_RCMD
198
199
200////////////////// 140//////////////////
201// // 141// //
202// Data Types // 142// Data Types //
diff --git a/include/tinytac_plus.h b/include/tinytac_plus.h
new file mode 100644
index 0000000..4d45979
--- /dev/null
+++ b/include/tinytac_plus.h
@@ -0,0 +1,150 @@
1/*
2 * Tiny TACACS+ Client Library
3 * Copyright (C) 2022 David M. Syzdek <david@syzdek.net>.
4 * All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are
8 * met:
9 *
10 * * Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * * Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 * * Neither the name of David M. Syzdek nor the
16 * names of its contributors may be used to endorse or promote products
17 * derived from this software without specific prior written permission.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
20 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DAVID M. SYZDEK BE LIABLE FOR
23 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 * SUCH DAMAGE.
30 */
31#ifndef __TINYTAC_PLUS_H
32#define __TINYTAC_PLUS_H 1
33
34///////////////////
35// //
36// Definitions //
37// //
38///////////////////
39#pragma mark - Definitions
40
41// The following definitions are documented in RFC 8907, "The Terminal Access
42// Controller Access-Control System Plus (TACACS+) Protocol". The definitions
43// in this header may conflict with other headers which declare the same
44// definitions from RFC 8907.
45
46
47// RFC8907 Section 4.1. The TACACS+ Packet Header
48// major_version
49#define TAC_PLUS_MAJOR_VER 0x0c
50// minor_version
51#define TAC_PLUS_MINOR_VER_DEFAULT 0x00
52#define TAC_PLUS_MINOR_VER_ONE 0x01
53// type
54#define TAC_PLUS_TYPE_AUTHEN 0x01
55#define TAC_PLUS_TYPE_AUTHOR 0x02
56#define TAC_PLUS_TYPE_ACCT 0x03
57// flags
58#define TAC_PLUS_FLAG_UNENCRYPTED 0x01
59#define TAC_PLUS_FLAG_SINGLE_CONNECT 0x04
60
61
62// RFC8907 Section 5.1 The Authentication START Packet Body
63// action
64#define TAC_PLUS_AUTHEN_LOGIN 0x01
65#define TAC_PLUS_AUTHEN_CHPASS 0x02
66#define TAC_PLUS_AUTHEN_SENDAUTH 0x04
67// authen_type
68#define TAC_PLUS_AUTHEN_TYPE_NOT_SET 0x00 // RFC8907 Section 6.1 The Authorization REQUEST Packet Body: authen_type
69#define TAC_PLUS_AUTHEN_TYPE_ASCII 0x01
70#define TAC_PLUS_AUTHEN_TYPE_PAP 0x02
71#define TAC_PLUS_AUTHEN_TYPE_CHAP 0x03
72#define TAC_PLUS_AUTHEN_TYPE_MSCHAP 0x05
73#define TAC_PLUS_AUTHEN_TYPE_MSCHAPV2 0x06
74// authen_service
75#define TAC_PLUS_AUTHEN_SVC_NONE 0x00
76#define TAC_PLUS_AUTHEN_SVC_LOGIN 0x01
77#define TAC_PLUS_AUTHEN_SVC_ENABLE 0x02
78#define TAC_PLUS_AUTHEN_SVC_PPP 0x03
79#define TAC_PLUS_AUTHEN_SVC_PT 0x05
80#define TAC_PLUS_AUTHEN_SVC_RCMD 0x06
81#define TAC_PLUS_AUTHEN_SVC_X25 0x07
82#define TAC_PLUS_AUTHEN_SVC_NASI 0x08
83#define TAC_PLUS_AUTHEN_SVC_FWPROXY 0x09
84
85
86// RFC8907 Section 5.2 The Authentication REPLY Packet Body
87// status
88#define TAC_PLUS_AUTHEN_STATUS_PASS 0x01
89#define TAC_PLUS_AUTHEN_STATUS_FAIL 0x02
90#define TAC_PLUS_AUTHEN_STATUS_GETDATA 0x03
91#define TAC_PLUS_AUTHEN_STATUS_GETUSER 0x04
92#define TAC_PLUS_AUTHEN_STATUS_GETPASS 0x05
93#define TAC_PLUS_AUTHEN_STATUS_RESTART 0x06
94#define TAC_PLUS_AUTHEN_STATUS_ERROR 0x07
95#define TAC_PLUS_AUTHEN_STATUS_FOLLOW 0x21
96// flags
97#define TAC_PLUS_REPLY_FLAG_NOECHO 0x01
98
99
100// RFC8907 Section 5.3 The Authentication CONTINUE Packet Body
101// flags
102#define TAC_PLUS_CONTINUE_FLAG_ABORT 0x01
103
104
105// RFC8907 Section 6.1 The Authorization REQUEST Packet Body
106// authen_method
107#define TAC_PLUS_AUTHEN_METH_NOT_SET 0x00
108#define TAC_PLUS_AUTHEN_METH_NONE 0x01
109#define TAC_PLUS_AUTHEN_METH_KRB5 0x02
110#define TAC_PLUS_AUTHEN_METH_LINE 0x03
111#define TAC_PLUS_AUTHEN_METH_ENABLE 0x04
112#define TAC_PLUS_AUTHEN_METH_LOCAL 0x05
113#define TAC_PLUS_AUTHEN_METH_TACACSPLUS 0x06
114#define TAC_PLUS_AUTHEN_METH_GUEST 0x08
115#define TAC_PLUS_AUTHEN_METH_RADIUS 0x10
116#define TAC_PLUS_AUTHEN_METH_KRB4 0x11
117#define TAC_PLUS_AUTHEN_METH_RCMD 0x20
118
119
120// RFC8907 Section 6.2. The Authorization REPLY Packet Body
121// status
122#define TAC_PLUS_AUTHOR_STATUS_PASS_ADD 0x01
123#define TAC_PLUS_AUTHOR_STATUS_PASS_REPL 0x02
124#define TAC_PLUS_AUTHOR_STATUS_FAIL 0x10
125#define TAC_PLUS_AUTHOR_STATUS_ERROR 0x11
126#define TAC_PLUS_AUTHOR_STATUS_FOLLOW 0x21
127
128
129// RFC8907 Section 7.1. The Account REQUEST Packet Body
130// flags
131#define TAC_PLUS_ACCT_FLAG_START 0x02
132#define TAC_PLUS_ACCT_FLAG_STOP 0x04
133#define TAC_PLUS_ACCT_FLAG_WATCHDOG 0x08
134
135
136// RFC8907 7.2. The Accounting REPLY Packet Body
137// status
138#define TAC_PLUS_ACCT_STATUS_SUCCESS 0x01
139#define TAC_PLUS_ACCT_STATUS_ERROR 0x02
140#define TAC_PLUS_ACCT_STATUS_FOLLOW 0x21
141
142
143// RFC8907 9. Privilege Levels
144#define TAC_PLUS_PRIV_LVL_MIN 0x00
145#define TAC_PLUS_PRIV_LVL_USER 0x01
146#define TAC_PLUS_PRIV_LVL_ROOT 0x0f
147#define TAC_PLUS_PRIV_LVL_MAX 0x0f
148
149
150#endif /* end of header */