
jo_user
Membros-
Total de itens
45 -
Registro em
-
Última visita
Sobre jo_user

Perfil
-
Gender
Male
jo_user's Achievements
0
Reputação
-
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); } }
-
Obrigado pela ajuda vou fazer as verificações necessárias.
-
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.
-
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.
-
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.
-
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.
-
[resolvido] Como Salvar No Bd No Formato Jpeg
pergunta respondeu ao jo_user de jo_user em Delphi, Kylix
Obrigado, funcionou, uma forma bem fácil de trabalhar com imagens. -
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.
-
Obrigado pela ajuda.
-
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.
-
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.
-
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);
-
Obrigado pela ajuda, era isso que eu queria.
-
Pessoal boa tarde, eu gostaria de saber como faço para ler os itens gravado numa listBox. Obrigado.
-
Bom dia, não tenho certeza da resposta, porém, incrementa a horaAtual abaixo do Begin. while ( ( HoraAtual + 50 ) < HoraFinal ) do begin