#
# $Id: ssl.pm,v 1.10 2003/03/02 11:12:10 dsw Exp $
#
# COPYRIGHT AND LICENSE
# Copyright (c) 2001-2003, Juniper Networks, Inc.
# 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. The name of the copyright owner may not be used to
# endorse or promote products derived from this software without specific
# prior written permission.
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
#
#==========================================================================
#
# ssl Access Method for the JUNOS::Access object
#
# Here are the mandatory input parameter(s) that are needed to
# create a connection with the server and optional input parameters
# that can change the default behavior of the SSL connection.
#
# $self->{hostname} = Mandatory. Name of the router to connect to.
#
# $self->{login} = Conditional on noninteractive. The username to login the server.
# If this parameter is not provided by the client application,
# this module will prompt for the username unless noninteractive
# is specified.
#
# $self->{password} = Conditional on noninteractive. The password for the username.
# If this parameter is not provided by the client
# application and it's requested by the server, this
# module will prompt for the password unless noninteractive
# is specified.
#
# $self->{noninteractive} = Optional. If this parameter is specified, this module
# will not prompt for any information it needs. Instead,
# it will fail if any required information is not already
# provided by the client application. For example, if
# the login value is not provided and noninteractive is
# specified, then the SSL connection will fail.
#
# $self->{ssl_port} = Optional. The port number of the ssl server. It's
# JUNOSCRIPT_SSL_PORT by default.
#
# $self->{ssl_cert_dir} = Optional. The certificate dir storing the CA certs
# validation of the server certificate.
#
# $self->{ssl_verify_method} = Optional. A callback function provided by the
# client application to verify the server certificate.
#
# $self->{ssl_client_cert} = Optional. The file containing the client's
# certificate.
#
# $self->{ssl_client_key} = Conditional on ssl_client_cert. The file
# containing client's key.
#
# $self->{ssl_client_cipher_list} = Optional. The list of ciphers the client
# will accept while negotiating with the server on the cipher suite
# for the new SSL connection. This is a colon separated list,
# its syntax is specified in :
# http://www.openssl.org/docs/apps/ciphers.html#CIPHER_LIST_FORMAT
#
# States maintained by this access method for each SSL connection, they
# can also be read by the client application:
#
# $self->{xnm_result} = contains the authenticated user if the SSL
# connection was successful. Otherwise, it contains the error message.
#
# $self->{ssl_ctx} = the SSL_CTX object as framework for TLS/SSL enabled
# functions.
#
# $self->{ssl_conn} = the SSL structure for the connection
#
# $self->{ssl_socket} = the file handle of the socket attached to the SSLeay
# layer.
#
#==========================================================================
package JUNOS::Access::ssl;
use strict;
use IO::Socket;
=1= |