/**
  * Método que firma una semilla previamente obtenida
  * @param seed Semilla obtenida desde SII
  * @param Firma objeto de la Firma electrónica o arreglo con configuración de la misma
  * @return Solicitud de token con la semilla incorporada y firmada
  * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]sasco.cl)
  * @version 2015-09-17
  */
 private static function getTokenRequest($seed, $Firma = [])
 {
     if (is_array($Firma)) {
         $Firma = new \sasco\LibreDTE\FirmaElectronica($Firma);
     }
     $seedSigned = $Firma->signXML((new \sasco\LibreDTE\XML())->generate(['getToken' => ['item' => ['Semilla' => $seed]]])->saveXML());
     if (!$seedSigned) {
         \sasco\LibreDTE\Log::write(\sasco\LibreDTE\Estado::AUTH_ERROR_FIRMA_SOLICITUD_TOKEN, \sasco\LibreDTE\Estado::get(\sasco\LibreDTE\Estado::AUTH_ERROR_FIRMA_SOLICITUD_TOKEN));
         return false;
     }
     return $seedSigned;
 }
 /**
  * Acción para firmar un XML
  * @author Esteban De La Fuente Rubio, DeLaF (esteban[at]sasco.cl)
  * @version 2015-11-09
  */
 public function firmar_xml()
 {
     if (isset($_POST['submit'])) {
         $xml = file_get_contents($_FILES['xml']['tmp_name']);
         // obtener nombre del tag y del ID
         $XML = new \sasco\LibreDTE\XML();
         $XML->loadXML($xml);
         foreach ($XML->documentElement->childNodes as $child) {
             if ($child instanceof \DOMElement) {
                 $tag = $child->tagName;
                 $id = $child->getAttribute('ID');
                 break;
             }
         }
         // firmar
         $Firma = new \sasco\LibreDTE\FirmaElectronica(['file' => $_FILES['firma']['tmp_name'], 'pass' => $_POST['contrasenia']]);
         $xmlSigned = $Firma->signXML($xml, $id, $tag);
         // entregar datos
         ob_end_clean();
         header('Content-Type: application/xml; charset=' . $XML->encoding);
         header('Content-Length: ' . strlen($xmlSigned));
         header('Content-Disposition: attachement; filename="' . $id . '_firmado.xml"');
         print $xmlSigned;
         exit;
     }
 }