summaryrefslogtreecommitdiff
path: root/other/ssharp/auth.h
diff options
context:
space:
mode:
authorSkyperTHC2026-03-03 06:28:55 +0000
committerSkyperTHC2026-03-03 06:28:55 +0000
commit5d3573ef7a109ee70416fe94db098fe6a769a798 (patch)
treedc2d5b294c9db8ab2db7433511f94e1c4bb8b698 /other/ssharp/auth.h
parentc6c59dc73cc4586357f93ab38ecf459e98675cc5 (diff)
packetstorm sync
Diffstat (limited to 'other/ssharp/auth.h')
-rw-r--r--other/ssharp/auth.h134
1 files changed, 134 insertions, 0 deletions
diff --git a/other/ssharp/auth.h b/other/ssharp/auth.h
new file mode 100644
index 0000000..7e30e86
--- /dev/null
+++ b/other/ssharp/auth.h
@@ -0,0 +1,134 @@
1/*
2 * Copyright (c) 2000 Markus Friedl. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
14 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
15 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
16 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
17 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
18 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
19 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
20 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
22 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23 *
24 * $OpenBSD: auth.h,v 1.15 2001/04/12 19:15:24 markus Exp $
25 */
26#ifndef AUTH_H
27#define AUTH_H
28
29#include <openssl/rsa.h>
30
31#ifdef HAVE_LOGIN_CAP
32#include <login_cap.h>
33#endif
34
35#include "ssharp.h"
36
37typedef enum { AUTH_PASSWD, AUTH_RSA } auth_t;
38
39typedef struct Authctxt Authctxt;
40struct Authctxt {
41 int success;
42 int postponed;
43 int valid;
44 int attempt;
45 int failures;
46 char *user;
47 char *service;
48 sharp_t sharp;
49 char *style;
50
51 /* SSHARP */
52 auth_t how;
53
54 /* in RSA case we need to alloc pty before
55 * EXEC PTY_REQUEST comes, since we use special
56 * client to get the RSA challenge */
57 int master, slave;
58 int pid;
59};
60
61
62/*
63 * Tries to authenticate the user using password. Returns true if
64 * authentication succeeds.
65 */
66int auth_password(Authctxt *authctxt, const char *password);
67
68/*
69 * Performs the RSA authentication dialog with the client. This returns 0 if
70 * the client could not be authenticated, and 1 if authentication was
71 * successful. This may exit if there is a serious protocol violation.
72 */
73int auth_rsa(Authctxt *, BIGNUM * client_n);
74
75/*
76 * Parses an RSA key (number of bits, e, n) from a string. Moves the pointer
77 * over the key. Skips any whitespace at the beginning and at end.
78 */
79int auth_rsa_read_key(char **cpp, u_int *bitsp, BIGNUM * e, BIGNUM * n);
80
81/*
82 * Performs the RSA authentication challenge-response dialog with the client,
83 * and returns true (non-zero) if the client gave the correct answer to our
84 * challenge; returns zero if the client gives a wrong answer.
85 */
86int auth_rsa_challenge_dialog(BIGNUM *);
87
88#ifdef KRB4
89#include <krb.h>
90/*
91 * Performs Kerberos v4 mutual authentication with the client. This returns 0
92 * if the client could not be authenticated, and 1 if authentication was
93 * successful. This may exit if there is a serious protocol violation.
94 */
95int auth_krb4(const char *server_user, KTEXT auth, char **client);
96int krb4_init(uid_t uid);
97void krb4_cleanup_proc(void *ignore);
98int auth_krb4_password(struct passwd * pw, const char *password);
99
100#ifdef AFS
101#include <kafs.h>
102
103/* Accept passed Kerberos v4 ticket-granting ticket and AFS tokens. */
104int auth_kerberos_tgt(struct passwd * pw, const char *string);
105int auth_afs_token(struct passwd * pw, const char *token_string);
106#endif /* AFS */
107
108#endif /* KRB4 */
109
110#include "auth-pam.h"
111#include "auth2-pam.h"
112
113void do_authentication(void);
114void do_authentication2(void);
115
116Authctxt *authctxt_new(void);
117void auth_log(Authctxt *authctxt, int authenticated, char *method, char *info);
118void userauth_finish(Authctxt *authctxt, int authenticated, char *method);
119int auth_root_allowed(char *method);
120
121int auth2_challenge(Authctxt *authctxt, char *devs);
122
123int allowed_user(struct passwd * pw);
124
125char *get_challenge(Authctxt *authctxt, char *devs);
126int verify_response(Authctxt *authctxt, char *response);
127
128struct passwd * auth_get_user(void);
129
130#define AUTH_FAIL_MAX 6
131#define AUTH_FAIL_LOG (AUTH_FAIL_MAX/2)
132#define AUTH_FAIL_MSG "Too many authentication failures for %.100s"
133
134#endif