146811Sdab /*-
2*62309Sbostic * Copyright (c) 1991, 1993
3*62309Sbostic * The Regents of the University of California. All rights reserved.
446811Sdab *
546811Sdab * %sccs.include.redist.c%
646811Sdab */
746811Sdab
846811Sdab #ifndef lint
9*62309Sbostic static char sccsid[] = "@(#)authenc.c 8.1 (Berkeley) 06/06/93";
1046811Sdab #endif /* not lint */
1146811Sdab
1260149Sdab #if defined(AUTHENTICATION) || defined(ENCRYPTION)
1346811Sdab #include <sys/types.h>
1446811Sdab #include <arpa/telnet.h>
1546811Sdab #include <libtelnet/encrypt.h>
1646811Sdab #include <libtelnet/misc.h>
1746811Sdab
1846811Sdab #include "general.h"
1946811Sdab #include "ring.h"
2046811Sdab #include "externs.h"
2146811Sdab #include "defines.h"
2246811Sdab #include "types.h"
2346811Sdab
2446811Sdab int
net_write(str,len)2546811Sdab net_write(str, len)
2646811Sdab unsigned char *str;
2746811Sdab int len;
2846811Sdab {
2946811Sdab if (NETROOM() > len) {
3046811Sdab ring_supply_data(&netoring, str, len);
3146811Sdab if (str[0] == IAC && str[1] == SE)
3246811Sdab printsub('>', &str[2], len-2);
3346811Sdab return(len);
3446811Sdab }
3546811Sdab return(0);
3646811Sdab }
3746811Sdab
3846811Sdab void
net_encrypt()3946811Sdab net_encrypt()
4046811Sdab {
4160149Sdab #ifdef ENCRYPTION
4246811Sdab if (encrypt_output)
4346811Sdab ring_encrypt(&netoring, encrypt_output);
4446811Sdab else
4546811Sdab ring_clearto(&netoring);
4660149Sdab #endif /* ENCRYPTION */
4746811Sdab }
4846811Sdab
4946811Sdab int
telnet_spin()5046811Sdab telnet_spin()
5146811Sdab {
5246811Sdab return(-1);
5346811Sdab }
5446811Sdab
5546811Sdab char *
telnet_getenv(val)5646811Sdab telnet_getenv(val)
5746811Sdab char *val;
5846811Sdab {
5946811Sdab return((char *)env_getvalue((unsigned char *)val));
6046811Sdab }
6146811Sdab
6246811Sdab char *
telnet_gets(prompt,result,length,echo)6346811Sdab telnet_gets(prompt, result, length, echo)
6446811Sdab char *prompt;
6546811Sdab char *result;
6646811Sdab int length;
6746811Sdab int echo;
6846811Sdab {
6946811Sdab extern char *getpass();
7046811Sdab extern int globalmode;
7146811Sdab int om = globalmode;
7246811Sdab char *res;
7346811Sdab
7446811Sdab TerminalNewMode(-1);
7546811Sdab if (echo) {
7646811Sdab printf("%s", prompt);
7746811Sdab res = fgets(result, length, stdin);
7846811Sdab } else if (res = getpass(prompt)) {
7946811Sdab strncpy(result, res, length);
8046811Sdab res = result;
8146811Sdab }
8246811Sdab TerminalNewMode(om);
8346811Sdab return(res);
8446811Sdab }
8560149Sdab #endif /* defined(AUTHENTICATION) || defined(ENCRYPTION) */
86