xref: /original-bsd/usr.bin/telnet/authenc.c (revision b43cd7f2)
1 /*-
2  * Copyright (c) 1991 The Regents of the University of California.
3  * All rights reserved.
4  *
5  * %sccs.include.redist.c%
6  */
7 
8 #ifndef lint
9 static char sccsid[] = "@(#)authenc.c	5.3 (Berkeley) 05/20/93";
10 #endif /* not lint */
11 
12 #if	defined(AUTHENTICATION) || defined(ENCRYPTION)
13 #include <sys/types.h>
14 #include <arpa/telnet.h>
15 #include <libtelnet/encrypt.h>
16 #include <libtelnet/misc.h>
17 
18 #include "general.h"
19 #include "ring.h"
20 #include "externs.h"
21 #include "defines.h"
22 #include "types.h"
23 
24 	int
25 net_write(str, len)
26 	unsigned char *str;
27 	int len;
28 {
29 	if (NETROOM() > len) {
30 		ring_supply_data(&netoring, str, len);
31 		if (str[0] == IAC && str[1] == SE)
32 			printsub('>', &str[2], len-2);
33 		return(len);
34 	}
35 	return(0);
36 }
37 
38 	void
39 net_encrypt()
40 {
41 #ifdef	ENCRYPTION
42 	if (encrypt_output)
43 		ring_encrypt(&netoring, encrypt_output);
44 	else
45 		ring_clearto(&netoring);
46 #endif	/* ENCRYPTION */
47 }
48 
49 	int
50 telnet_spin()
51 {
52 	return(-1);
53 }
54 
55 	char *
56 telnet_getenv(val)
57 	char *val;
58 {
59 	return((char *)env_getvalue((unsigned char *)val));
60 }
61 
62 	char *
63 telnet_gets(prompt, result, length, echo)
64 	char *prompt;
65 	char *result;
66 	int length;
67 	int echo;
68 {
69 	extern char *getpass();
70 	extern int globalmode;
71 	int om = globalmode;
72 	char *res;
73 
74 	TerminalNewMode(-1);
75 	if (echo) {
76 		printf("%s", prompt);
77 		res = fgets(result, length, stdin);
78 	} else if (res = getpass(prompt)) {
79 		strncpy(result, res, length);
80 		res = result;
81 	}
82 	TerminalNewMode(om);
83 	return(res);
84 }
85 #endif	/* defined(AUTHENTICATION) || defined(ENCRYPTION) */
86