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 0.911 second using v1.01-cache-2.11-cpan-71847e10f99 )