ascii-chat 0.8.38
Real-time terminal-based video chat with ASCII art conversion
Loading...
Searching...
No Matches
security.c
Go to the documentation of this file.
1
12#include <ascii-chat/options/registry/common.h>
13#include <ascii-chat/options/parsers.h>
14
15// ============================================================================
16// SECURITY CATEGORY - Security and authentication options
17// ============================================================================
18const registry_entry_t g_security_entries[] = {
19 // SECURITY GROUP (client, server, discovery)
20 {"encrypt",
21 'E',
22 OPTION_TYPE_BOOL,
23 offsetof(options_t, encrypt_enabled),
24 &default_encrypt_enabled_value,
25 sizeof(bool),
26 "Enable end-to-end encryption (requires the other party to be encrypted as well).",
27 "SECURITY",
28 NULL,
29 false,
30 "ASCII_CHAT_ENCRYPT",
31 NULL,
32 NULL,
33 false,
34 false,
35 OPTION_MODE_CLIENT | OPTION_MODE_SERVER | OPTION_MODE_DISCOVERY | OPTION_MODE_DISCOVERY_SVC,
36 {0},
37 NULL},
38 {"key",
39 'K',
40 OPTION_TYPE_STRING,
41 offsetof(options_t, encrypt_key),
42 "",
43 0,
44 "Server identity key (SSH Ed25519 or GPG key file, gpg:FINGERPRINT, github:USER[.gpg], gitlab:USER[.gpg], or "
45 "HTTPS URL like https://example.com/key.pub or .gpg).",
46 "SECURITY",
47 NULL,
48 false,
49 "ASCII_CHAT_KEY",
50 NULL,
51 NULL,
52 false,
53 false,
54 OPTION_MODE_CLIENT | OPTION_MODE_SERVER | OPTION_MODE_DISCOVERY | OPTION_MODE_DISCOVERY_SVC,
55 {0},
56 NULL},
57 {"password",
58 '\0',
59 OPTION_TYPE_STRING,
60 offsetof(options_t, password),
61 "",
62 0,
63 "Shared password for authentication (8-256 characters).",
64 "SECURITY",
65 NULL,
66 false,
67 "ASCII_CHAT_PASSWORD",
68 NULL,
69 NULL,
70 false,
71 false,
72 OPTION_MODE_CLIENT | OPTION_MODE_SERVER | OPTION_MODE_DISCOVERY | OPTION_MODE_DISCOVERY_SVC,
73 {0},
74 NULL},
75 {"no-encrypt",
76 '\0',
77 OPTION_TYPE_BOOL,
78 offsetof(options_t, no_encrypt),
79 &default_no_encrypt_value,
80 sizeof(bool),
81 "Disable encryption (requires the other party to be unencrypted as well).",
82 "SECURITY",
83 NULL,
84 false,
85 "ASCII_CHAT_NO_ENCRYPT",
86 NULL,
87 NULL,
88 false,
89 false,
90 OPTION_MODE_CLIENT | OPTION_MODE_SERVER | OPTION_MODE_DISCOVERY | OPTION_MODE_DISCOVERY_SVC,
91 {0},
92 NULL},
93 {"server-key",
94 '\0',
95 OPTION_TYPE_STRING,
96 offsetof(options_t, server_key),
97 "",
98 0,
99 "Expected server public key for verification. Supports: raw base64 public key (AAAAC3Nz...), "
100 "SSH/GPG key files, gpg:FINGERPRINT, github:USER[.gpg], gitlab:USER[.gpg], "
101 "or HTTP(S) URLs like https://github.com/zfogg.[keys|gpg].",
102 "SECURITY",
103 NULL,
104 false,
105 "ASCII_CHAT_SERVER_KEY",
106 NULL,
107 NULL,
108 false,
109 false,
110 OPTION_MODE_CLIENT | OPTION_MODE_DISCOVERY,
111 {0},
112 NULL},
113 {"client-keys",
114 '\0',
115 OPTION_TYPE_STRING,
116 offsetof(options_t, client_keys),
117 "",
118 0,
119 "Allowed client keys (comma-separated). Supports: raw base64 public keys (AAAAC3Nz...), "
120 "file paths with one key per line, github:USER[.gpg], gitlab:USER[.gpg], gpg:KEYID, "
121 "or HTTP(S) URLs like https://github.com/zfogg.[keys|gpg].",
122 "SECURITY",
123 NULL,
124 false,
125 "ASCII_CHAT_CLIENT_KEYS",
126 NULL,
127 NULL,
128 false,
129 false,
130 OPTION_MODE_SERVER | OPTION_MODE_DISCOVERY | OPTION_MODE_DISCOVERY_SVC,
131 {0},
132 NULL},
133 {"discovery-insecure",
134 '\0',
135 OPTION_TYPE_BOOL,
136 offsetof(options_t, discovery_insecure),
137 &default_discovery_insecure_value,
138 sizeof(bool),
139 "Skip server key verification (MITM-vulnerable, requires explicit opt-in).",
140 "SECURITY",
141 NULL,
142 false,
143 "ASCII_CHAT_DISCOVERY_INSECURE",
144 NULL,
145 NULL,
146 false,
147 false,
148 OPTION_MODE_CLIENT | OPTION_MODE_DISCOVERY,
149 {0},
150 NULL},
151 {"discovery-service-key",
152 '\0',
153 OPTION_TYPE_STRING,
154 offsetof(options_t, discovery_service_key),
155 "",
156 0,
157 "Discovery server public key for verification. Supports: raw base64 public key (AAAAC3Nz...), "
158 "SSH/GPG key files, gpg:FINGERPRINT, github:USER[.gpg], gitlab:USER[.gpg], "
159 "or HTTP(S) URLs like https://github.com/zfogg.[keys|gpg].",
160 "SECURITY",
161 NULL,
162 false,
163 "ASCII_CHAT_DISCOVERY_SERVER_KEY",
164 NULL,
165 NULL,
166 false,
167 false,
168 OPTION_MODE_CLIENT | OPTION_MODE_SERVER | OPTION_MODE_DISCOVERY,
169 {0},
170 NULL},
171 {"require-server-identity",
172 '\0',
173 OPTION_TYPE_BOOL,
174 offsetof(options_t, require_server_identity),
175 NULL,
176 sizeof(bool),
177 "Require servers to provide signed Ed25519 identity.",
178 "SECURITY",
179 NULL,
180 false,
181 "ASCII_CHAT_REQUIRE_SERVER_IDENTITY",
182 NULL,
183 NULL,
184 false,
185 false,
186 OPTION_MODE_DISCOVERY_SVC,
187 {0},
188 NULL},
189 {"require-client-identity",
190 '\0',
191 OPTION_TYPE_BOOL,
192 offsetof(options_t, require_client_identity),
193 NULL,
194 sizeof(bool),
195 "Require clients to provide signed Ed25519 identity.",
196 "SECURITY",
197 NULL,
198 false,
199 "ASCII_CHAT_REQUIRE_CLIENT_IDENTITY",
200 NULL,
201 NULL,
202 false,
203 false,
204 OPTION_MODE_DISCOVERY_SVC,
205 {0},
206 NULL},
207
208 REGISTRY_TERMINATOR()};
const registry_entry_t g_security_entries[]
Definition security.c:18
#define bool
Definition stdbool.h:22