Authen-NTLM-HTTP
view release on metacpan or search on metacpan
lib/Authen/NTLM/HTTP.pm view on Meta::CPAN
# -*- perl -*-
# NTLM.pm - An implementation of NTLM. In this version, I only
# implemented the client side functions that calculates the NTLM response.
# I will add the corresponding server side functions in the next version.
#
package Authen::NTLM::HTTP;
use strict;
use POSIX;
use Carp;
use MIME::Base64;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
require Exporter;
*import = \&Exporter::import;
use base qw/Authen::NTLM::HTTP::Base/;
@EXPORT = qw ();
@EXPORT_OK = qw ();
$VERSION = '0.33';
# Stolen from Crypt::DES.
sub usage {
my ($package, $filename, $line, $subr) = caller (1);
$Carp::CarpLevel = 2;
croak "Usage: $subr (@_)";
}
# Flags to indicate whether we are talking to web server or proxy
use constant NTLMSSP_HTTP_WWW => "WWW";
use constant NTLMSSP_HTTP_PROXY => "Proxy";
# These constants are stolen from samba-2.2.4 and other sources
use constant NTLMSSP_SIGNATURE => 'NTLMSSP';
# NTLMSSP Message Types
use constant NTLMSSP_NEGOTIATE => 1;
use constant NTLMSSP_CHALLENGE => 2;
use constant NTLMSSP_AUTH => 3;
use constant NTLMSSP_UNKNOWN => 4;
# NTLMSSP Flags
# Text strings are in unicode
use constant NTLMSSP_NEGOTIATE_UNICODE => 0x00000001;
# Text strings are in OEM
use constant NTLMSSP_NEGOTIATE_OEM => 0x00000002;
# Server should return its authentication realm
use constant NTLMSSP_REQUEST_TARGET => 0x00000004;
# Request signature capability
use constant NTLMSSP_NEGOTIATE_SIGN => 0x00000010;
# Request confidentiality
use constant NTLMSSP_NEGOTIATE_SEAL => 0x00000020;
# Use datagram style authentication
use constant NTLMSSP_NEGOTIATE_DATAGRAM => 0x00000040;
# Use LM session key for sign/seal
use constant NTLMSSP_NEGOTIATE_LM_KEY => 0x00000080;
# NetWare authentication
use constant NTLMSSP_NEGOTIATE_NETWARE => 0x00000100;
# NTLM authentication
use constant NTLMSSP_NEGOTIATE_NTLM => 0x00000200;
# Domain Name supplied on negotiate
use constant NTLMSSP_NEGOTIATE_OEM_DOMAIN_SUPPLIED => 0x00001000;
# Workstation Name supplied on negotiate
use constant NTLMSSP_NEGOTIATE_OEM_WORKSTATION_SUPPLIED => 0x00002000;
# Indicates client/server are same machine
use constant NTLMSSP_NEGOTIATE_LOCAL_CALL => 0x00004000;
# Sign for all security levels
use constant NTLMSSP_NEGOTIATE_ALWAYS_SIGN => 0x00008000;
# TargetName is a domain name
use constant NTLMSSP_TARGET_TYPE_DOMAIN => 0x00010000;
# TargetName is a server name
use constant NTLMSSP_TARGET_TYPE_SERVER => 0x00020000;
# TargetName is a share name
use constant NTLMSSP_TARGET_TYPE_SHARE => 0x00040000;
# TargetName is a share name
use constant NTLMSSP_NEGOTIATE_NTLM2 => 0x00080000;
# get back session keys
use constant NTLMSSP_REQUEST_INIT_RESPONSE => 0x00100000;
# get back session key, LUID
use constant NTLMSSP_REQUEST_ACCEPT_RESPONSE => 0x00200000;
# request non-ntsession key
( run in 2.381 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )