
jo_user
Membros-
Total de itens
45 -
Registro em
-
Última visita
Tudo que jo_user postou
-
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
-
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.
-
Tenta utilizar esta conversão Edit1.text := formatFloat('R$ 0.00', VALOR); - O valor deve ser do tipo Float
-
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.
-
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)
-
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.
-
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.
-
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).
-
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;
-
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.
-
Exprimenta colocar o campo de parametro como .AsDate e ao invés de >=, colocar where data between :param1 and param2.