Ir para conteúdo
  • Cadastre-se

dev botao

Como obtenho o segundo certificado de um arquivo .p12


Ver Solução Respondido por Daniel Simoes,
  • Este tópico foi criado há 1578 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Fundadores

Provavelmente eles estão em Fca 

https://www.openssl.org/docs/manmaster/man3/PKCS12_parse.html

STACK_OF(X509)

https://zakird.com/2013/10/13/certificate-parsing-with-openssl

procure por: "Misordered Certificate Chains"

  • Curtir 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

9 horas atrás, Daniel Simoes disse:

Provavelmente eles estão em Fca 

https://www.openssl.org/docs/manmaster/man3/PKCS12_parse.html

STACK_OF(X509)

https://zakird.com/2013/10/13/certificate-parsing-with-openssl

procure por: "Misordered Certificate Chains"

Muito obrigado pela vossa ajuda.
  Por favor, como faço para transformar isso em pascal?

https://zakird.com/2013/10/13/certificate-parsing-with-openssl

 "Misordered Certificate Chains"


  STACK_OF(X509) *r_sk = sk_X509_new_null();
  sk_X509_push(r_sk, sk_X509_value(st, 0));
  for (int i=1; i < sk_X509_num(st); i++) {
      X509 *prev = sk_X509_value(r_sk, i-1);
      X509 *next = NULL;
      for (int j=1; j < sk_X509_num(st); j++) {
              X509 *cand = sk_X509_value(st, j);
              if (!X509_NAME_cmp(cand->cert_info->subject, prev->cert_info->issuer)
                              || j == sk_X509_num(st) - 1) {
                      next = cand;
                      break;
              }
      }
      if (next) {
              sk_X509_push(r_sk, next);
      } else {

              sk_X509_free(r_sk);
              r_sk = sk_X509_dup(st);
              break;
      }
  }
 

Link para o comentário
Compartilhar em outros sites

  • Fundadores
  • Solution

Não será simples... o primeiro passo é verificar se seus "Binds" em pascal, possuem esses métodos indicados...

Se você não precisar usar OpenSSL... na Unit ACBrDFeWinCrypt.pas,  tem o método:

procedure AddCertContexToStoreMemory(NewCertContext: PCCERT_CONTEXT);

que faz algo semelhante...

 

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

1 hora atrás, Daniel Simoes disse:

Não será simples... o primeiro passo é verificar se seus "Binds" em pascal, possuem esses métodos indicados...

Se você não precisar usar OpenSSL... na Unit ACBrDFeWinCrypt.pas,  tem o método:

procedure AddCertContexToStoreMemory(NewCertContext: PCCERT_CONTEXT);

que faz algo semelhante...

 

 

Muito obrigado pela vossa ajuda.
Vou verificar,  

Unit ACBrDFeWinCrypt.pas,   método:

procedure AddCertContexToStoreMemory(NewCertContext: PCCERT_CONTEXT);

 

 

Editado por williamero
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1578 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.