Ir para conteúdo
@gilsones

Assinar XML com C/C++ (Certificado A3)

Recommended Posts

Pessoal, é possível assinar digitalmente um documento XML com C/C++ ?

 

Preciso contratar alguém para fazer um componente/modulo para assinar a NFe, que será acessado por outro sistema, mas queria saber se é possível.

Tenho a opção do Java tbm, mas antes queria tentar um opção sem precisar instalar o Java no servidor.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.

  • Conteúdo Similar

    • Por Nélio Junior
      estou utilizando o matlab mas a linguagem é c puro né.
       
      Eu quero simular uma onda que bate na parede de um duto e reflete. igual à imagem anexada
       

    • Por Lelre Ferreira
      Boa noite a todos.
       
      Estou com uma atividade no qual necessito informar se a matriz é simétrica ou não com base nos valores digitados pelo usuário. O meu código está meio caminho andado. Uma matriz simétrica é a matriz na qual os valores abaixo da diagonal principal são iguais os valores acima da diagonal principal. Logo pensei, se (i < j) valores acima da diagonal e (i  > j) valores abaixo da diagonal. Fiz os testes em um FOR, onde se as condições atenderem os requisitos os valores seriam armazenados em vetores distintos, um vetor para valores acima da diagonal e outro vetor para valores abaixo.
       
      Depois eu ia comprar os dois vetores para ver se os valores são iguais mas me deparei com um erro de lógica. Vou postar o código e comentar o erro.
      #define TAM 3 #include <stdio.h> #include <stdlib.h> #include <locale.h> void receberMatriz(int matriz[TAM][TAM]); void acimaDiagonal(int matriz[TAM][TAM], int acimaD[TAM]); void abaixoDiagonal(int matriz[TAM][TAM], int abaixoD[TAM]); void TesteValorVetor(int matriz[TAM][TAM], int acimaD[TAM], int abaixoD[TAM]); int main(void) { setlocale(LC_ALL, ""); int matriz[TAM][TAM] = {0}; int abaixoD[TAM] = {0}; int acimaD[TAM] = {0}; receberMatriz(matriz); acimaDiagonal(matriz, acimaD); abaixoDiagonal(matriz, abaixoD); TesteValorVetor(matriz, acimaD, abaixoD); return 0; } void receberMatriz(int matriz[TAM][TAM]) { int i, j; for(i = 0; i < TAM; i++) { for(j = 0; j < TAM; j++) { printf("Insira valor pos. [%i][%i]: ", i, j); scanf("%i", &matriz[i][j]); } } } void acimaDiagonal(int matriz[TAM][TAM], int acimaD[TAM]) { int i, j; for(i = 0; i < TAM; i++) { for(j = 0; j < TAM; j++) { if(i < j) { acimaD[j] = matriz[i][j]; } } } } void abaixoDiagonal(int matriz[TAM][TAM], int abaixoD[TAM]) { int i, j; for(i = 0; i < TAM; i++) { for(j = 0; j < TAM; j++) { if(i > j) { abaixoD[j] = matriz[i][j]; } } } } void TesteValorVetor(int matriz[TAM][TAM], int acimaD[TAM], int abaixoD[TAM]) { int i, j; system("cls"); for(i = 0; i < TAM; i++) { for(j = 0; j < TAM; j++) { printf("[%i] ", matriz[i][j]); } printf("\n"); } printf("\n"); for(i = 0; i < TAM; i++) { printf("[%i]", acimaD[i]); } printf("\n"); for(i = 0; i < TAM; i++) { printf("[%i]", abaixoD[i]); } }  
      Nas funções:
       
      void acimaDiagonal(int matriz[TAM][TAM], int acimaD[TAM]) { int i, j; for(i = 0; i < TAM; i++) { for(j = 0; j < TAM; j++) { if(i < j) { acimaD[j] = matriz[i][j]; } } } } void abaixoDiagonal(int matriz[TAM][TAM], int abaixoD[TAM]) { int i, j; for(i = 0; i < TAM; i++) { for(j = 0; j < TAM; j++) { if(i > j) { abaixoD[j] = matriz[i][j]; } } } }  
       
      Eu faço a verificação (i < j), acima do diagonal e vise-versa e então armazeno em um vetor. Quando mando mostrar o vetor para ver quais valores tenho lá. Supondo que eu coloque 1, 2, 3, 4, 5, 6, 7, 8, 9... Os valores deveriam ser para o primeiro vetor: [2][3][6] referente aos valores acima da diagonal principal. E [4][7][8] valores abaixo da diagonal principal... Mas ao invés disso o código está me retornando o seguinte: [0][2][6] e [7][8][0]... Ou seja, não está atribuindo alguns valores.
       
      A11, A12, A13
      A21, A22, A23
      A31, A32, A33
       
      Eu identifiquei um erro, na primeira função void acimaDiagonal() quando ele faz a primeira verificação no A11, como a condição se só atribui se for i < j, na primeira casa do primeiro vetor ele ignora qualquer alteração deixando o [0]... Como posso corrigir isso? Fui claro na minha dúvida?
    • Por Lelre Ferreira
      Boa noite a todos. Estou preso em na seguinte questão: Dada uma matriz de 4 x 5 elementos inteiros, calcular a soma de cada linha, de cada coluna e de todos os seus elementos. 
      Obs: Utilize um vetor para armazenar o resultado da soma de cada linha e outro para a soma de cada coluna. Então o programa pede o seguinte:   12345 = [15]
      67890 = [30]
      98765 = [35]
      43212 = [12]   Armazenar a soma de cada linha da matriz em um vetor: VetorLinha[4] onde = [15], [30], [35], [12] estariam armazenados, assim como vetorColuna com seus respectivos valores
      Eis o meu código:
          #include <stdio.h> #include <stdlib.h> #include <locale.h> void receberMatriz(int matriz[4][5]); void processarMatriz(int matriz[4][5], int vetorA[5], int vetorB[4]); void resultadoMatriz(int matriz[4][5], int vetorA[5], int vetorB[4]); int main(void) { setlocale(LC_ALL, ""); int matriz[4][5]; int vetorA[5]; int vetorB[4]; receberMatriz(matriz); processarMatriz(matriz, vetorA, vetorB); resultadoMatriz(matriz, vetorA, vetorB); return 0; } void receberMatriz(int matriz[4][5]) { int i, j; for(i = 0; i < 4; i++) { for(j = 0; j < 5; j++) { printf("Insira valor posição [%i][%i]: ", i, j); scanf("%i", &matriz[i][j]); } } } void processarMatriz(int matriz[4][5], int vetorA[5], int vetorB[4]) { int i, j; for(i = 0; i < 4; i++) { for(j = 0; j < 5; j++) { vetorA[j] = matriz[i][j]; soma = soma + vetorA[j]; vetorA[j] = soma; } } for(j = 0; j < 5; j++) { for(i = 0; i < 4; i++) { vetorB[i] = matriz[j][i]; soma = soma + vetorB[i]; vetorB[i] = soma; } } } void resultadoMatriz(int matriz[4][5], int vetorA[5], int vetorB[4]) { int i, j; }  
             
      Claramente eu não alcancei a lógica e queria entender como eu faria esse algoritmo. Não sei o que devo fazer para concluir com êxito nessa parte do código:      void processarMatriz(int matriz[4][5], int vetorA[5], int vetorB[4]) { int i, j; for(i = 0; i < 4; i++) { for(j = 0; j < 5; j++) { vetorA[j] = matriz[i][j]; soma = soma + vetorA[j]; vetorA[j] = soma; } } for(j = 0; j < 5; j++) { for(i = 0; i < 4; i++) { vetorB[i] = matriz[j][i]; soma = soma + vetorB[i]; vetorB[i] = soma; } } }  
    • Por macielcr7
      Estou usando o sdk dahua para conectar-me a um DVR. Até então. Estou tendo problemas para obter os bytes
      retornados de uma câmera. e exportar em formato de imagem. Sou iniciante e não tenho ideia. como.
       
      // real-time monitoring method g_lRealHandle = CLIENT_RealPlayEx(g_lLoginHandle, command_options.dvr_channel, NULL, emRealPlayType); //set-callback CLIENT_SetRealDataCallBackEx(g_lRealHandle, &RealDataCallBackEx, NULL, dwFlag) //bytes de retorno da camera void CALLBACK RealDataCallBackEx(LLONG lRealHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, LONG param, LDWORD dwUser) { // if more than one real-time monitoring use same data callback, we can judge by parameter lRealHandle. //NESTA PARTE QUE QUERIA PEGAR OS FRAMES DOS BYTES E SALVAR A IMAGEM fwrite (pBuffer, 1, dwBufSize, file); fflush(file); //original A/V hybrid data //printf("receive real data, param: lRealHandle[%ld], dwDataType[%u], pBuffer[%p], dwBufSize[%u], param[%d], dwUser[%ld] - [%d]\n", lRealHandle, dwDataType, pBuffer, dwBufSize, param, dwUser, bInput); }
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.

Este projeto é mantido e patrocinado pelas empresas:
Hospedado por: