mkyx Posted January 13 Report Share Posted January 13 Boa noite fivewinner, Alguém sabe como gerar a codificação hb_sha256, quando ao compilar o programa, aparece a mensagem de função inexistente? uso fivewin com o compilador comercial xharbour e tbm não consegui achar a lib, dessa função se alguem puder ajudar, será muito bem vindo essa necessidade é para codificar e assinar os arquivos json, de boletos, para enviar para o banco bradesco, via webservice. Ainda não testei o envio ao banco, até agora, só gerei o arquivos json, e travou na assinatura. Obrigado a todos. Quote Link to comment Share on other sites More sharing options...
Jmsilva Posted January 14 Report Share Posted January 14 Verifiquei é a rtl.lib . Quote Link to comment Share on other sites More sharing options...
mkyx Posted January 14 Author Report Share Posted January 14 Vixi, quase acertou, não está mais dando erro de ausência da função hb_sha256, agora, só está aparecendo a mensagem que a compilação não pode ser concluida. Deve ser conflito de versão. Quote Link to comment Share on other sites More sharing options...
kapiaba Posted January 15 Report Share Posted January 15 https://forums.fivetechsupport.com/viewtopic.php?f=6&t=42954 Quote Link to comment Share on other sites More sharing options...
emotta Posted January 15 Report Share Posted January 15 tem algo errado nas suas libs, vc copiou algo de alguma outra versão? uso hb_sha256 a muitos anos, é default do xharbour, nem precisa ser o comercial. Quote Link to comment Share on other sites More sharing options...
Wellington Vieira Posted January 16 Report Share Posted January 16 Eu criei um PHP e o coloquei em um FTP, e envio o JSON para este PHP pelo método GET. Este PHP recebe o JSON, processa e retorna o que eu devo enviar para o BRADESCO já em "pkcs7" que é o JSON assinado em base64, que é o padrão que o BRADESCO necessita. O Certificado digital pode ser qualquer um no formato ".pfx". Segue o PHP <?php function ApagaDir($dir) { if($objs = glob($dir."/*")){ foreach($objs as $obj) { is_dir($obj)? ApagaDir($obj) : unlink($obj); } } } $nome_da_pasta="../public_html/data/tmp"; // PASTA PARA ARQUIVO TEMPORARIO ApagaDir($nome_da_pasta); $pfx = ""; // lOCAL E NOME DO CERTIFICADO NO FTP EX: CERTS/MEUCERTIFICADO.PFX $certPassword = ""; // SENHA DO CERTIFICADO $json_str = $_GET['json_str']; $certificado_pfx = file_get_contents($pfx); if (!openssl_pkcs12_read($certificado_pfx, $result, $certPassword)) { throw new Exception('Não foi possível ler o certificado .pfx'); } $path = sprintf('%s%sdata%stmp%s', realpath('.'), DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR); if (@mkdir($path, 0777, true) && !is_dir($path)) { throw new Exception('Falha ao criar diretórios. Entre em contato com o administrador'); } $jsonFile = $path . uniqid('jsonFile', true); $signedFile = $path . uniqid('signedFile', true); file_put_contents($jsonFile, $json_str); $certKey = openssl_x509_read($result['cert']); $privKey = openssl_pkey_get_private($result['pkey'], $certPassword); openssl_pkcs7_sign( $jsonFile, $signedFile, $certKey, $privKey, array(), PKCS7_BINARY | PKCS7_TEXT ); $signature = file_get_contents($signedFile); $parts = preg_split("#\n\s*\n#Uis", $signature); $mensagem_assinada_base64 = $parts[1]; print_r($mensagem_assinada_base64); ?> Quote Link to comment Share on other sites More sharing options...
Eric.Developer Posted February 9 Report Share Posted February 9 Olá, Que utilitário você usou para compilar? de terceiro? (sempre prefira o oficial) Esta função é nativa. Comece testando o básico, compile sem script xHarbour.com, veja na imagem. [], Consultorias/Orçamentos: Delphi, x/Harbour, FastReport, Xailer(IDE/RAD) Fivewin-VxH-Minigui/HMG-Hwgui Em 13/01/2024 at 19:59, mkyx disse: Alguém sabe como gerar a codificação hb_sha256, quando ao compilar o programa, aparece a mensagem de função inexistente? uso fivewin com o compilador comercial xharbour e tbm não consegui achar a lib, dessa função se alguem puder ajudar, será muito bem vindo essa necessidade é para codificar e assinar os arquivos json, de boletos, para enviar para o banco bradesco, via webservice. Ainda não testei o envio ao banco, até agora, só gerei o arquivos json, e travou na assinatura Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.