VOMS-Lite
view release on metacpan or search on metacpan
lib/VOMS/Lite/SAMLHelper.pm view on Meta::CPAN
@EXPORT_OK = qw( );
@EXPORT = ( );
$VERSION = '0.20';
####
# %knownns
# namespaces known about and corresponding local naming shorthand
#
my %knownns=( 'urn:oasis:names:tc:SAML:1.0:assertion' => 'saml1',
'urn:oasis:names:tc:SAML:1.0:protocol' => 'saml1p',
'http://www.w3.org/2000/09/xmldsig#' => 'ds',
'urn:oasis:names:tc:SAML:2.0:assertion' => 'saml2',
'urn:oasis:names:tc:SAML:2.0:protocol' => 'saml2p',
'http://www.w3.org/2001/04/xmlenc#' => 'xenc'
);
####
# %attributes
# local friendlynames for attributes that might appear in a SAML Assertion
#
my %attributes = (
lib/VOMS/Lite/VOMS.pm view on Meta::CPAN
my $hexEncPMSecret = rsaencrypt($hexpremastersecret,Hex($ServerCertInfo{'KeypublicExponent'}),Hex($ServerCertInfo{'Keymodulus'}));
my $hexClientKeyExchange = handShake("10",$hexEncPMSecret); #### USE ME FOR CertificateVarify
my $hexClientKeyExchangeMessageRecord = recordLayer("16",$hexClientKeyExchange);
my $ClientKeyExchangeMessage = Bin($hexClientKeyExchange); #### ClientCertificate for handshakemessages needs to be without record layer
#CertificateVerify
my $Hmsgs = $clienthello.$serverhello.$certmesg.$ClientKeyExchangeMessage;
my $verifymac = MAC($KEYS{'MS'},$Hmsgs);
my $hexsignedcertificateverify = rsasign($verifymac,$Keyexp,$Keymod);
my $hexwrappedsignedcertificateverify = sprintf("%04s",DecToHex(length($hexsignedcertificateverify)/2)).$hexsignedcertificateverify;
my $hexcertificateverify = handShake('0f',$hexwrappedsignedcertificateverify);
my $certificateverify = Bin($hexcertificateverify);
my $hex_ssl_certificateverifyrecord = recordLayer("16",$hexcertificateverify);
##########################################################################
## Switch to Encrypted Session -- change_cipher_spec message
#Select algorythm for key exchange -- Must be RSA
my $hexkeyselection="140300000101";
# Switch to tripple des (the only one I support) and send finished message
lib/VOMS/Lite/VOMS.pm view on Meta::CPAN
my $hexEncPMSecret = rsaencrypt($hexpremastersecret,Hex($ServerCertInfo{'KeypublicExponent'}),Hex($ServerCertInfo{'Keymodulus'}));
my $hexClientKeyExchange = handShake("10",$hexEncPMSecret); #### USE ME FOR CertificateVarify
my $hexClientKeyExchangeMessageRecord = recordLayer("16",$hexClientKeyExchange);
my $ClientKeyExchangeMessage = Bin($hexClientKeyExchange); #### ClientCertificate for handshakemessages needs to be without record layer
#CertificateVerify
my $Hmsgs = $clienthello.$serverhello.$certmesg.$ClientKeyExchangeMessage;
my $verifymac = MAC($KEYS{'MS'},$Hmsgs);
my $hexsignedcertificateverify = rsasign($verifymac,$Keyexp,$Keymod);
my $hexwrappedsignedcertificateverify = sprintf("%04s",DecToHex(length($hexsignedcertificateverify)/2)).$hexsignedcertificateverify;
my $hexcertificateverify = handShake('0f',$hexwrappedsignedcertificateverify);
my $certificateverify = Bin($hexcertificateverify);
my $hex_ssl_certificateverifyrecord = recordLayer("16",$hexcertificateverify);
##########################################################################
## Switch to Encrypted Session -- change_cipher_spec message
#Select algorythm for key exchange -- Must be RSA
my $hexkeyselection="140300000101";
# Switch to tripple des (the only one I support) and send finished message
( run in 1.705 second using v1.01-cache-2.11-cpan-71847e10f99 )