Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/lib/libtelnet G/C SPX support



details:   https://anonhg.NetBSD.org/src/rev/95bbc7da47d6
branches:  trunk
changeset: 446729:95bbc7da47d6
user:      maya <maya%NetBSD.org@localhost>
date:      Sat Dec 15 23:22:51 2018 +0000

description:
G/C SPX support

It was presented as a draft in 1993. I don't see any mentions since. it
was not enabled.

diffstat:

 lib/libtelnet/auth.c |   20 +-
 lib/libtelnet/spx.c  |  580 ---------------------------------------------------
 2 files changed, 2 insertions(+), 598 deletions(-)

diffs (truncated from 625 to 300 lines):

diff -r 4f7e3dc37c4d -r 95bbc7da47d6 lib/libtelnet/auth.c
--- a/lib/libtelnet/auth.c      Sat Dec 15 22:56:51 2018 +0000
+++ b/lib/libtelnet/auth.c      Sat Dec 15 23:22:51 2018 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: auth.c,v 1.22 2018/12/14 23:42:39 christos Exp $       */
+/*     $NetBSD: auth.c,v 1.23 2018/12/15 23:22:51 maya Exp $   */
 
 /*-
  * Copyright (c) 1991, 1993
@@ -34,7 +34,7 @@
 #if 0
 static char sccsid[] = "@(#)auth.c     8.3 (Berkeley) 5/30/95"
 #else
-__RCSID("$NetBSD: auth.c,v 1.22 2018/12/14 23:42:39 christos Exp $");
+__RCSID("$NetBSD: auth.c,v 1.23 2018/12/15 23:22:51 maya Exp $");
 #endif
 #endif /* not lint */
 
@@ -106,22 +106,6 @@
  * in priority order, i.e. try the first one first.
  */
 Authenticator authenticators[] = {
-#ifdef SPX
-       { AUTHTYPE_SPX, AUTH_WHO_CLIENT|AUTH_HOW_MUTUAL,
-                               spx_init,
-                               spx_send,
-                               spx_is,
-                               spx_reply,
-                               spx_status,
-                               spx_printsub },
-       { AUTHTYPE_SPX, AUTH_WHO_CLIENT|AUTH_HOW_ONE_WAY,
-                               spx_init,
-                               spx_send,
-                               spx_is,
-                               spx_reply,
-                               spx_status,
-                               spx_printsub },
-#endif
 #ifdef KRB5
 # ifdef        ENCRYPTION
        { AUTHTYPE_KERBEROS_V5, AUTH_WHO_CLIENT|AUTH_HOW_MUTUAL,
diff -r 4f7e3dc37c4d -r 95bbc7da47d6 lib/libtelnet/spx.c
--- a/lib/libtelnet/spx.c       Sat Dec 15 22:56:51 2018 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,580 +0,0 @@
-/*     $NetBSD: spx.c,v 1.8 2018/12/13 09:09:32 maya Exp $ */
-
-/*-
- * Copyright (c) 1992, 1993
- *     The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-
-#ifndef lint
-#if 0
-static char sccsid[] = "@(#)spx.c      8.2 (Berkeley) 5/30/95";
-#else
-__RCSID("$NetBSD: spx.c,v 1.8 2018/12/13 09:09:32 maya Exp $");
-#endif
-#endif /* not lint */
-
-#ifdef SPX
-/*
- * COPYRIGHT (C) 1990 DIGITAL EQUIPMENT CORPORATION
- * ALL RIGHTS RESERVED
- *
- * "Digital Equipment Corporation authorizes the reproduction,
- * distribution and modification of this software subject to the following
- * restrictions:
- *
- * 1.  Any partial or whole copy of this software, or any modification
- * thereof, must include this copyright notice in its entirety.
- *
- * 2.  This software is supplied "as is" with no warranty of any kind,
- * expressed or implied, for any purpose, including any warranty of fitness
- * or merchantibility.  DIGITAL assumes no responsibility for the use or
- * reliability of this software, nor promises to provide any form of
- * support for it on any basis.
- *
- * 3.  Distribution of this software is authorized only if no profit or
- * remuneration of any kind is received in exchange for such distribution.
- *
- * 4.  This software produces public key authentication certificates
- * bearing an expiration date established by DIGITAL and RSA Data
- * Security, Inc.  It may cease to generate certificates after the expiration
- * date.  Any modification of this software that changes or defeats
- * the expiration date or its effect is unauthorized.
- *
- * 5.  Software that will renew or extend the expiration date of
- * authentication certificates produced by this software may be obtained
- * from RSA Data Security, Inc., 10 Twin Dolphin Drive, Redwood City, CA
- * 94065, (415)595-8782, or from DIGITAL"
- *
- */
-
-#include <sys/types.h>
-#include <arpa/telnet.h>
-#include <stdio.h>
-#include "gssapi_defs.h"
-#include <stdlib.h>
-#ifdef NO_STRING_H
-#include <strings.h>
-#else
-#include <string.h>
-#endif
-
-#include <pwd.h>
-#include "encrypt.h"
-#include "auth.h"
-#include "misc.h"
-
-extern auth_debug_mode;
-
-static unsigned char str_data[1024] = { IAC, SB, TELOPT_AUTHENTICATION, 0,
-                                       AUTHTYPE_SPX, };
-static unsigned char str_name[1024] = { IAC, SB, TELOPT_AUTHENTICATION,
-                                       TELQUAL_NAME, };
-
-#define        SPX_AUTH        0               /* Authentication data follows */
-#define        SPX_REJECT      1               /* Rejected (reason might follow) */
-#define SPX_ACCEPT     2               /* Accepted */
-
-#ifdef ENCRYPTION
-static Block   session_key     = { 0 };
-#endif /* ENCRYPTION */
-static Schedule sched;
-static Block   challenge       = { 0 };
-
-
-/*******************************************************************/
-
-gss_OID_set            actual_mechs;
-gss_OID                        actual_mech_type, output_name_type;
-int                    major_status, status, msg_ctx = 0, new_status;
-int                    req_flags = 0, ret_flags, lifetime_rec;
-gss_cred_id_t          gss_cred_handle;
-gss_ctx_id_t           actual_ctxhandle, context_handle;
-gss_buffer_desc                output_token, input_token, input_name_buffer;
-gss_buffer_desc                status_string;
-gss_name_t             desired_targname, src_name;
-gss_channel_bindings   input_chan_bindings;
-char                   lhostname[GSS_C_MAX_PRINTABLE_NAME];
-char                   targ_printable[GSS_C_MAX_PRINTABLE_NAME];
-int                    to_addr=0, from_addr=0;
-char                   *address;
-gss_buffer_desc                fullname_buffer;
-gss_OID                        fullname_type;
-gss_cred_id_t          gss_delegated_cred_handle;
-
-/*******************************************************************/
-
-
-
-       static int
-Data(ap, type, d, c)
-       Authenticator *ap;
-       int type;
-       void *d;
-       int c;
-{
-       unsigned char *p = str_data + 4;
-       unsigned char *cd = (unsigned char *)d;
-
-       if (c == -1)
-               c = strlen((char *)cd);
-
-       if (0) {
-               printf("%s:%d: [%d] (%d)",
-                       str_data[3] == TELQUAL_IS ? ">>>IS" : ">>>REPLY",
-                       str_data[3],
-                       type, c);
-               printd(d, c);
-               printf("\r\n");
-       }
-       *p++ = ap->type;
-       *p++ = ap->way;
-       *p++ = type;
-       while (c-- > 0) {
-               if ((*p++ = *cd++) == IAC)
-                       *p++ = IAC;
-       }
-       *p++ = IAC;
-       *p++ = SE;
-       if (str_data[3] == TELQUAL_IS)
-               printsub('>', &str_data[2], p - (&str_data[2]));
-       return(telnet_net_write(str_data, p - str_data));
-}
-
-       int
-spx_init(ap, server)
-       Authenticator *ap;
-       int server;
-{
-       gss_cred_id_t   tmp_cred_handle;
-
-       if (server) {
-               str_data[3] = TELQUAL_REPLY;
-               gethostname(lhostname, sizeof(lhostname));
-               strlcpy(targ_printable, "SERVICE:rcmd@",
-                   sizeof(targ_printable));
-               strlcat(targ_printable, lhostname, sizeof(targ_printable));
-               input_name_buffer.length = strlen(targ_printable);
-               input_name_buffer.value = targ_printable;
-               major_status = gss_import_name(&status,
-                                       &input_name_buffer,
-                                       GSS_C_NULL_OID,
-                                       &desired_targname);
-               major_status = gss_acquire_cred(&status,
-                                       desired_targname,
-                                       0,
-                                       GSS_C_NULL_OID_SET,
-                                       GSS_C_ACCEPT,
-                                       &tmp_cred_handle,
-                                       &actual_mechs,
-                                       &lifetime_rec);
-               if (major_status != GSS_S_COMPLETE) return(0);
-       } else {
-               str_data[3] = TELQUAL_IS;
-       }
-       return(1);
-}
-
-       int
-spx_send(ap)
-       Authenticator *ap;
-{
-       Block enckey;
-       int r;
-
-       gss_OID actual_mech_type, output_name_type;
-       int     msg_ctx = 0, new_status, status;
-       int     req_flags = 0, ret_flags, lifetime_rec, major_status;
-       gss_buffer_desc  output_token, input_token, input_name_buffer;
-       gss_buffer_desc  output_name_buffer, status_string;
-       gss_name_t    desired_targname;
-       gss_channel_bindings  input_chan_bindings;
-       char targ_printable[GSS_C_MAX_PRINTABLE_NAME];
-       int  from_addr=0, to_addr=0, myhostlen, j;
-       int  deleg_flag=1, mutual_flag=0, replay_flag=0, seq_flag=0;
-       char *address;
-
-       printf("[ Trying SPX ... ]\n");
-       strlcpy(targ_printable, "SERVICE:rcmd@", sizeof(targ_printable));
-       strlcat(targ_printable, RemoteHostName, sizeof(targ_printable));
-
-       input_name_buffer.length = strlen(targ_printable);
-       input_name_buffer.value = targ_printable;
-
-       if (!UserNameRequested) {
-               return(0);
-       }
-
-       major_status = gss_import_name(&status,
-                                       &input_name_buffer,
-                                       GSS_C_NULL_OID,
-                                       &desired_targname);
-
-
-       major_status = gss_display_name(&status,
-                                       desired_targname,
-                                       &output_name_buffer,
-                                       &output_name_type);
-
-       printf("target is '%s'\n", output_name_buffer.value); fflush(stdout);
-
-       major_status = gss_release_buffer(&status, &output_name_buffer);
-
-       input_chan_bindings = (gss_channel_bindings)
-         malloc(sizeof(gss_channel_bindings_desc));
-
-       input_chan_bindings->initiator_addrtype = GSS_C_AF_INET;
-       input_chan_bindings->initiator_address.length = 4;
-       address = (char *) malloc(4);
-       input_chan_bindings->initiator_address.value = (char *) address;
-       address[0] = ((from_addr & 0xff000000) >> 24);



Home | Main Index | Thread Index | Old Index