Ir para conteúdo
Fórum Script Brasil

jo_user

Membros
  • Total de itens

    45
  • Registro em

  • Última visita

Tudo que jo_user postou

  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. jo_user

    Tempo De Execução

    Bom dia, não tenho certeza da resposta, porém, incrementa a horaAtual abaixo do Begin. while ( ( HoraAtual + 50 ) < HoraFinal ) do begin
  15. jo_user

    Sql - Interbase

    O Firebird é uma versão atualizada do Interbase, porém, ele não vem com IbConsole e para utilizá-lo você deve ter um utilitário como o IbExpert, e também existe um arquivo de configuração .ini, você deve mudar a porta padrão porque é a mesma do Interbase.
  16. Tenta utilizar esta conversão Edit1.text := formatFloat('R$ 0.00', VALOR); - O valor deve ser do tipo Float
  17. jo_user

    Sql - Interbase

    Se você entrar no site www.firebase.com.br você encontra algumas ferramentas para trabalhar com o Interbase e o Firebird, por isso perguntei qual utilitário você utiliza (porque com algumas ferramentas é necessário escrever a linha de conexão com o banco). Um utilitário legal é o IbExpert.
  18. jo_user

    Sql - Interbase

    Amigo, não sei qual utilitário você utiliza para manipular o Interbase, porém a sintaxe para a alteração é esta. Alter Table Funcionario add Nome varchar(50)
  19. Pessoal boa tarde, estou com um dúvida, vai chegar uma máquina nova e ela responde com comando TCP/IP, configurei um programa com os componentes ServerSocket1 e o ClientSocket1 na rede, consigo passar e receber mensagens, será que isso já é o suficiente? Obrigado.
  20. Pessoal boa tarde, estou com um problema quando recupero valores do banco de dados (utilizo o BDE), ao mover um campo TabelaCodigo.Integer para um Edit1.text (utilizando a função de conversão) funciona perfeitamente, porém, quando jogo este campo numa variável do tipo Integer e depois movimento ele para uma outra tabela (também do tipo inteiro), ele apresenta este erro " Project Prj_otica.exe raised exception class EDBEngineError with message 'Translate Error. Value out bounds .!Process Stopped . Use Step or Run to Continue." Obrigado pela ajuda.
  21. Bom dia a todos, estou com uma dúvida, pois estou trabalhando com arquivos XML. Descobri um componente no Delphi que gera estes arquivos, porém, preciso gerar arquivos para um órgão do Governo (Suframa), e quando comparo os arquivos gerados pelo Delphi e os quais tenho de exemplo da Suframa, a estrutura é diferente. Como nunca trabalhei com XML, tenho dúvidas se existe compatibilidade entre os arquivos, se alguém puder me dar alguma dica ficarei muito agradecido. Baixei um programa (viewer de XML) e a diferença na estrutura é a seguinte: - Xml Version = "1.0" Standalone="yes" (programa Delphi) - Xml Version = "1.0" Encoding="utf-8" (versão Suframa).
  22. Obs: O campo do Edit deve ser convertido para o tipo Inteiro, StrToInt. Também você pode utilizar métodos do Delphi, ex: NomeDaTabela.Open; NomeDaTabela.Locate('NomeCampoTabela',StrToInt(Edit.text),[]); NomeDaTabela.close;
  23. Pessoal, eu estou tentando inserir dados num campo numerico no SQLServer, uso a seguinte instrução. with Qcliente do begin close; sql.clear; sql.add('insert into cliente (nome, endereco, salario'), sql.add('values (:nom, :end, :sal'), ParamByname('nom').AsString := EdtNome.text; ParamByname('end').AsString := EdtEndereco.text ; ParamByname('sal').AsFloat := StrToFloat(EdtSalario.text); ExecSql; end; O campo salário é numerico, e sempre mostra um erro ao converter o tipo de dados. Será que exite algum método de conversão para campo numérico no SqlServer? Obrigado.
  24. Exprimenta colocar o campo de parametro como .AsDate e ao invés de >=, colocar where data between :param1 and param2.
×
×
  • Criar Novo...