Jump to content
Fórum Script Brasil

jo_user

Membros
  • Posts

    45
  • Joined

  • Last visited

About jo_user

Perfil

  • Gender
    Male

jo_user's Achievements

0

Reputation

  1. Boa tarde a todos, sou novato em programação Java, porém, nas linguagens que utilizo tenho dificuldade para assinar um xml no padrão nfe, então, descobri um código Java que faz isso, só que a pessoa que deixou este código não colocou os imports necessários, utilizei a tecla control, shift e "o" do eclipse, mas não obtive sucesso segue abaixo o código. (aponta o erro na linha que contém o objeto APPSET). Obrigado pela atenção. at. Josué import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.security.KeyStore; import java.security.PrivateKey; import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration; import java.util.List; import javax.xml.crypto.dsig.CanonicalizationMethod; import javax.xml.crypto.dsig.DigestMethod; import javax.xml.crypto.dsig.Reference; import javax.xml.crypto.dsig.SignatureMethod; import javax.xml.crypto.dsig.SignedInfo; import javax.xml.crypto.dsig.Transform; import javax.xml.crypto.dsig.XMLSignature; import javax.xml.crypto.dsig.XMLSignatureFactory; import javax.xml.crypto.dsig.dom.DOMSignContext; import javax.xml.crypto.dsig.keyinfo.KeyInfo; import javax.xml.crypto.dsig.keyinfo.KeyInfoFactory; import javax.xml.crypto.dsig.keyinfo.X509Data; import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec; import javax.xml.crypto.dsig.spec.TransformParameterSpec; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import com.sun.xml.internal.bind.Util; public class AssinaXML { public static void main(String[] args) { System.out.println(signature("D:\\temp\\nfe.xml", "d:\\temp\\xxx.xml","infNFe")); } public static String signature(String xmlFileName, String xmlResponseName, String idNode) { try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setNamespaceAware(true); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(new File(xmlFileName)); // Create a DOM XMLSignatureFactory that will be used to // generate the enveloped signature. XMLSignatureFactory fac = XMLSignatureFactory.getInstance("DOM", new org.jcp.xml.dsig.internal.dom.XMLDSigRI()); // Create a Reference to the enveloped document (in this case, // you are signing the whole document, so a URI of "" signifies // that, and also specify the SHA1 digest algorithm and // the ENVELOPED Transform. ArrayList transformList = new ArrayList(); TransformParameterSpec tps = null; Transform envelopedTransform = fac.newTransform(Transform.ENVELOPED, tps); Transform c14NTransform = fac.newTransform("http://www.w3.org/TR/2001/REC-xml-c14n-20010315", tps); transformList.add(envelopedTransform); transformList.add(c14NTransform); // Load the KeyStore and get the signing key and certificate. char[] pin = Util.undoHexCodified(APPSet.getProperty("pin")).toCharArray(); /*aponta o erro na linha acima o objeto APPSET. KeyStore ks = KeyStore.getInstance("PKCS12"); FileInputStream fis = new FileInputStream(new File(APPSet.getProperty("certificado"))); /*aponta o erro na linha acima o objeto APPSET. ks.load(fis, pin); KeyStore.PrivateKeyEntry pkEntry = null; Enumeration aliasesEnum = ks.aliases(); PrivateKey privateKey = null; while (aliasesEnum.hasMoreElements()) { String alias = (String)aliasesEnum.nextElement(); System.out.println(alias); if (ks.isKeyEntry(alias)) { pkEntry = (KeyStore.PrivateKeyEntry)ks.getEntry(alias, new KeyStore.PasswordProtection(pin)); privateKey = pkEntry.getPrivateKey(); break; } } X509Certificate cert = (X509Certificate)pkEntry.getCertificate(); // Create the KeyInfo containing the X509Data. KeyInfoFactory kif = fac.getKeyInfoFactory(); List x509Content = new ArrayList(); x509Content.add(cert); X509Data xd = kif.newX509Data(x509Content); KeyInfo que = kif.newKeyInfo(Collections.singletonList(xd)); assinarXML(fac, transformList, privateKey, que, doc, idNode); // Output the resulting document. ByteArrayOutputStream os = new ByteArrayOutputStream(); TransformerFactory tf = TransformerFactory.newInstance(); Transformer trans = tf.newTransformer(); trans.transform(new DOMSource(doc), new StreamResult(os)); File fout = new File(xmlResponseName); FileOutputStream out = new FileOutputStream(fout); try { out.write(os.toByteArray()); } catch (Exception e) { } //return os.toString(); return "ok"; } catch (Exception e) { e.printStackTrace(); return e.toString(); } } private static void assinarXML(XMLSignatureFactory fac, ArrayList transformList, PrivateKey privateKey, KeyInfo que, Document doc, String idNode) throws Exception { // Obtem elemento do documento a ser assinado, será criado uma REFERENCE para o mesmo NodeList elements = doc.getElementsByTagName(idNode); Element el = (Element)elements.item(0); String id = el.getAttribute("Id"); // Create a DOM XMLSignatureFactory that will be used to generate the enveloped signature. Reference ref = fac.newReference("#" + id, fac.newDigestMethod(DigestMethod.SHA1, null), transformList, null, null); // Create the SignedInfo. SignedInfo si = fac.newSignedInfo(fac.newCanonicalizationMethod(CanonicalizationMethod.INCLUSIVE, (C14NMethodParameterSpec)null), fac.newSignatureMethod(SignatureMethod.RSA_SHA1, null), Collections.singletonList(ref)); XMLSignature signature = fac.newXMLSignature(si, que); DOMSignContext dsc = new DOMSignContext(privateKey, doc.getDocumentElement()); signature.sign(dsc); } }
  2. Obrigado pela ajuda vou fazer as verificações necessárias.
  3. Pessoal boa tarde, estou com problemas ao utilizar Sockets, na minha rede interna quando coloco o servidor numa máquina (diferente do servidor de internet), consigo fazer a transmissão de informação e receber resposta, porém, a idéia é consultar algo com o IP externo do servidor. No entanto, tanto na rede interna quanto externa no "servidor de Internet" aparece o Erro "Asynchronous Socket error 10061" quando tento acessar do Client o Servidor que já Está funcionando. Acredito que alguma configuração do servidor esteja atrapalhando, porém, não Firewall. Muito Obrigado Pela Atenção.
  4. jo_user

    Programa Ftp

    Boa tarde, utilizo o Delphi 6 nas minhas aplicações, no delphi 6 você possui um Demo muito bom referente a FTP, pois com ele consegui montar toda a nossa estrutura e trabalhar com segurança.
  5. Concordo, porém, preciso filtrar os dados primeiro, exemplo: select DISTINCT CEP, NUM_CASA, COMPLEMENTO FROM MEMBROS Union select DISTINCT CEP_DEP, NUMEND_DEP, COMPLEMENTO_DEP FROM DEPENDENTE order by 1 (primeiro faço este select e no conteúdo do mesmo é que quero apresentar informações no relatório) DMigreja.IBQrelatDist.Open; (esta tabela representa o resultado do select acima) DMigreja.IBQrelatDist.First; while not (DMigreja.IBQrelatDist.Eof) do begin with DMigreja.IBQrelatorio do begin //DMigreja.IBQrelatorio.sql.Clear; // DMigreja.IBQrelatorio.close; sql.Add('select CEP, NUM_CASA, COMPLEMENTO,'); sql.Add('NOME, ENDERECO, ''Membro '' as'); sql.Add(' Tipo from MEMBROS '); sql.Add(' where (CEP = :CEP) AND (NUM_CASA = :NUM) AND'); sql.Add('(COMPLEMENTO = :COMP)'); sql.Add('Union'); sql.Add('select CEP_DEP, NUMEND_DEP, COMPLEMENTO_DEP,'); sql.Add(' NOME_DEP, ENDERECO_DEP, ''Dependente'' as '); sql.Add('Tipo from DEPENDENTE'); sql.Add(' where (CEP_DEP = :CEP) AND (NUMEND_DEP = :NUM) AND'); sql.Add('(COMPLEMENTO_DEP = :COMP)'); sql.Add('order by 5'); ParamByName('CEP').AsString := DMigreja.IBQrelatDistCEP.AsString; ParamByName('NUM').AsInteger := DMigreja.IBQrelatDistNUM_CASA.AsInteger; ParamByName('COMP').AsString := DMigreja.IBQrelatDistCOMPLEMENTO.AsString; Open; end; DMigreja.IBQrelatDist.Next; end; DMigreja.IBQrelatorio.Open; FrmRelatEnd.QcRelatorio.Preview; FrmRelatEnd.Release; (não consigo apresentar linha a linha o resultado do select dentro do while.
  6. Pessoal boa tarde, estou tentando imprimir dados no QuickReport, quando dou um select funciona perfeitamente, porém, eu preciso navegar num conteúdo e deste conteúdo preencher linha a linha o relatório, por exemplo: while representantes.eof do begin white pedido do begin sql.add('select pedido from pedidos where repres = :rep'); ParamByname('rep).asInteger := RepresentantesCod.asInteger; Open; end; end; Este Exemplo só ilustra a minha situação, porém, no select de dentro do while eu quero apresentar no relatório. Obrigado pela Atenção.
  7. Obrigado, funcionou, uma forma bem fácil de trabalhar com imagens.
  8. Bom dia a todos, estou com uma dúvida quando salvo imagens para o banco de dados (Firebird), utilizo o componente DBimage, consigo salvar fotos no banco no formato bmp, porém, num formato reduzido não é possível (Jpeg), lembrando que declarei na uses o formato Jpeg. Utilizo o código abaixo para capturar a imagem; OpenPictureDialog.Execute; if OpenPictureDialog.FileName <> '' then DbImage1.Picture.LoadFromFile(OpenPictureDialog.Filename); Funciona apenas em Bmp, obrigado pela atenção.
  9. Bom dia, o que eu gostaria era que o programa direcionasse a impressora, porque senão o programa fica restrito a impressora padrão. Obrigado.
  10. Pessoal boa tarde, estou com uma dúvida no Quick Report, quando mando para a impressora ele automaticamente envia para LPT1: da minha máquina, é possível direcionar para qual impressora eu desejo enviar LPT2: ou USB? Obrigado.
  11. Boa tarde, acredito que esse erro seja ao converter dados no formato Decimal, segue uma sintaxe que utilizei para solucionar um problema parecido. FloattoStrF((Module.TBPedidoPED_VALOR_PEDIDO.AsFloat),fffixed,7,2);
  12. Obrigado pela ajuda, era isso que eu queria.
  13. Pessoal boa tarde, eu gostaria de saber como faço para ler os itens gravado numa listBox. Obrigado.
  14. Bom dia, não tenho certeza da resposta, porém, incrementa a horaAtual abaixo do Begin. while ( ( HoraAtual + 50 ) < HoraFinal ) do begin
×
×
  • Create New...