Example #1
0
File: HEV.php Project: synap/ebics
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $parameters = json_decode(file_get_contents('parameters.json'));
     $url = $parameters->url;
     $HostID = $parameters->host;
     // Template pour requête HEV
     $xsl = new DOMDocument();
     $xsl->load('xslt/hev.xsl');
     // Configuration du moteur de template
     $proc = new XSLTProcessor();
     $proc->setParameter('', 'HostID', $HostID);
     $proc->importStylesheet($xsl);
     // Récupération du résultat
     $doc = $proc->transformToDoc(new DOMDocument());
     $request = new Request('POST', $url);
     $request->setBody($doc->saveXML());
     $client = new Client();
     $client->addCurlSetting(CURLOPT_SSL_VERIFYPEER, false);
     $response = $client->send($request);
     $dom = new DOMDocument();
     $dom->loadXML($response->getBodyAsString());
     //echo "\nVoici la liste des versions compatibles avec ce serveur:\n\n";
     $result = array();
     foreach ($dom->getElementsByTagName('VersionNumber') as $version) {
         $result[] = array($version->getAttribute('ProtocolVersion'), "EBICS version {$version->nodeValue}");
     }
     $table = new Table($output);
     $table->setHeaders(array('Protocole', 'Description'))->setRows($result);
     $table->render();
 }
Example #2
0
File: INI.php Project: synap/ebics
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     // Récupération des paramètres de connexion
     $parameters = json_decode(file_get_contents('parameters.json'));
     // Récupération du certificat X509
     $cert = file_get_contents('test/fixtures/keys/A005/cert.pem');
     $cert_details = openssl_x509_parse($cert);
     $params = array('X509IssuerName' => $cert_details['name'], 'X509SerialNumber' => $cert_details['serialNumber'], 'X509Certificate' => str_replace(array('-----BEGIN CERTIFICATE-----', '-----END CERTIFICATE-----', "\n"), '', $cert));
     $cert_details = openssl_pkey_get_details(openssl_pkey_get_public($cert));
     $params = array_merge(array('Modulus' => base64_encode($cert_details['rsa']['n']), 'Exponent' => base64_encode($cert_details['rsa']['e'])), $params);
     // Attention, la cohérence entre les différente valeurs n'est pas vérifiée dans
     // la phase d'initialisation. Seule la longueur des valeurs l'est
     // Création de la signature A005
     $xsl = new DOMDocument();
     $xsl->load('xslt/SignaturePubKeyOrderData.xsl');
     $proc = new XSLTProcessor();
     $proc->setParameter('', 'X509IssuerName', $params['X509IssuerName']);
     $proc->setParameter('', 'X509SerialNumber', $params['X509SerialNumber']);
     $proc->setParameter('', 'X509Certificate', $params['X509Certificate']);
     $proc->setParameter('', 'Modulus', $params['Modulus']);
     $proc->setParameter('', 'Exponent', $params['Exponent']);
     $proc->setParameter('', 'PartnerID', $parameters->partner);
     $proc->setParameter('', 'UserID', $parameters->user);
     $proc->setParameter('', 'TimeStamp', date('c'));
     $proc->importStylesheet($xsl);
     $A005 = $proc->transformToXML(new DOMDocument());
     // On compresse et on encode en base64
     $A005 = gzcompress($A005);
     $A005 = base64_encode($A005);
     $xsl = new DOMDocument();
     $xsl->load('xslt/ebicsUnsecuredRequest.xsl');
     $proc->importStylesheet($xsl);
     $proc->setParameter('', 'HostID', $parameters->host);
     $proc->setParameter('', 'OrderData', $A005);
     $xml = $proc->transformToXML(new DOMDocument());
     $request = new Request('POST', $parameters->url);
     $request->setBody($xml);
     $client = new Client();
     $client->addCurlSetting(CURLOPT_SSL_VERIFYPEER, false);
     $response = $client->send($request);
     $dom = new DOMDocument();
     $dom->formatOutput = true;
     $dom->loadXML($response->getBodyAsString());
     echo $dom->saveXML();
 }
Example #3
0
File: HIA.php Project: synap/ebics
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $parameters = json_decode(file_get_contents('parameters.json'));
     $X002 = file_get_contents('test/fixtures/keys/X002/cert.pem');
     $cert_details = openssl_x509_parse($X002);
     $params['X002'] = array('X509IssuerName' => $cert_details['name'], 'X509SerialNumber' => $cert_details['serialNumber'], 'X509Certificate' => str_replace(array('-----BEGIN CERTIFICATE-----', '-----END CERTIFICATE-----', "\n"), '', $X002));
     $cert_details = openssl_pkey_get_details(openssl_pkey_get_public($X002));
     $params['X002'] = array_merge(array('Modulus' => base64_encode($cert_details['rsa']['n']), 'Exponent' => base64_encode($cert_details['rsa']['e'])), $params['X002']);
     $E002 = file_get_contents('test/fixtures/keys/E002/cert.pem');
     $cert_details = openssl_x509_parse($E002);
     $params['E002'] = array('X509IssuerName' => $cert_details['name'], 'X509SerialNumber' => $cert_details['serialNumber'], 'X509Certificate' => str_replace(array('-----BEGIN CERTIFICATE-----', '-----END CERTIFICATE-----', "\n"), '', $E002));
     $cert_details = openssl_pkey_get_details(openssl_pkey_get_public($E002));
     $params['E002'] = array_merge(array('Modulus' => base64_encode($cert_details['rsa']['n']), 'Exponent' => base64_encode($cert_details['rsa']['e'])), $params['E002']);
     // Attention, la cohérence entre les différente valeurs n'est pas vérifiée dans
     // la phase d'initialisation. Seule la longueur des valeurs l'est
     // Création de la signature A005
     $data = '<?xml version="1.0" encoding="UTF-8"?>
     <HIARequestOrderData xmlns="http://www.ebics.org/H003" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ebics.org/H003 http://www.ebics.org/H003/ebics_orders.xsd">
       <AuthenticationPubKeyInfo>
         <ds:X509Data>
           <ds:X509IssuerSerial>
             <ds:X509IssuerName>' . $params['X002']['X509IssuerName'] . '</ds:X509IssuerName>
             <ds:X509SerialNumber>' . $params['X002']['X509SerialNumber'] . '</ds:X509SerialNumber>
           </ds:X509IssuerSerial>
           <ds:X509Certificate>' . $params['X002']['X509Certificate'] . '</ds:X509Certificate>
         </ds:X509Data>
         <PubKeyValue>
           <ds:RSAKeyValue>
             <ds:Modulus>' . $params['X002']['Modulus'] . '</ds:Modulus>
             <ds:Exponent>' . $params['X002']['Exponent'] . '</ds:Exponent>
           </ds:RSAKeyValue>
         </PubKeyValue>
         <AuthenticationVersion>X002</AuthenticationVersion>
       </AuthenticationPubKeyInfo>
       <EncryptionPubKeyInfo>
         <ds:X509Data>
           <ds:X509IssuerSerial>
             <ds:X509IssuerName>' . $params['E002']['X509IssuerName'] . '</ds:X509IssuerName>
             <ds:X509SerialNumber>' . $params['E002']['X509SerialNumber'] . '</ds:X509SerialNumber>
           </ds:X509IssuerSerial>
           <ds:X509Certificate>' . $params['E002']['X509Certificate'] . '</ds:X509Certificate>
         </ds:X509Data>
         <PubKeyValue>
           <ds:RSAKeyValue>
             <ds:Modulus>' . $params['E002']['Modulus'] . '</ds:Modulus>
             <ds:Exponent>' . $params['E002']['Exponent'] . '</ds:Exponent>
           </ds:RSAKeyValue>
         </PubKeyValue>
         <EncryptionVersion>E002</EncryptionVersion>
       </EncryptionPubKeyInfo>
       <PartnerID>' . $parameters->partner . '</PartnerID>
       <UserID>' . $parameters->user . '</UserID>
     </HIARequestOrderData>';
     $data = base64_encode(gzcompress($data));
     $xml = '<?xml version="1.0"?>
     <ebicsUnsecuredRequest xmlns="http://www.ebics.org/H003" Revision="1" Version="H003">
       <header authenticate="true">
         <static>
           <HostID>' . $parameters->host . '</HostID>
           <PartnerID>' . $parameters->partner . '</PartnerID>
           <UserID>' . $parameters->user . '</UserID>
           <OrderDetails>
             <OrderType>HIA</OrderType>
             <OrderID>A102</OrderID>
             <OrderAttribute>DZNNN</OrderAttribute>
           </OrderDetails>
           <SecurityMedium>0000</SecurityMedium>
         </static>
         <mutable/>
       </header>
       <body>
         <DataTransfer>
           <OrderData>' . $data . '</OrderData>
         </DataTransfer>
       </body>
     </ebicsUnsecuredRequest>';
     $request = new Request('POST', $parameters->url);
     $request->setBody($xml);
     $client = new Client();
     $client->addCurlSetting(CURLOPT_SSL_VERIFYPEER, false);
     $response = $client->send($request);
     $dom = new DOMDocument();
     $dom->formatOutput = true;
     $dom->loadXML($response->getBodyAsString());
     echo $dom->saveXML();
 }