
O principal trabalho ao criar o utilitário
cryptoarmpkcs não foi o desenvolvimento de código ou uma interface gráfica, mas o trabalho com estruturas
ASN1 . É nessas estruturas que são armazenados certificados x509v3, assinaturas eletrônicas de documentos (PKCS # 7, CMS), solicitações de certificados (PKCS # 10, CSR), chaves públicas e privadas, contêineres seguros PKCS # 12 / PFX, listas de certificados CRL revogados e carimbos de data / hora para assinaturas eletrônicas, solicitações e respostas de OCSP e assim por diante. Constantemente, era necessário examinar as estruturas existentes para entender como os outros faziam, examinar as estruturas AN1 recém-
montadas por nós mesmos. O processo é claro. Mas como eu trabalho no Linux (agora é Mageia e também preparo o código para o Windows no Linux), os utilitários
openssl e derdump do pacote
NSS estavam à mão das ferramentas disponíveis para analisar as estruturas ASN1. Pessoalmente, minhas preferências estavam do lado do derdump. Foi ela quem se tornou o protótipo do utilitário
derdump.tcl / tclderdump considerado aqui para visualizar estruturas ASN1. E se você comparar a saída do utilitário derdump do pacote NSS e do utilitário derdump.tcl, dificilmente verá diferenças:

As diferenças estão relacionadas aos nomes de OID. O utilitário possui a seguinte sintaxe:
$dertcl.tcl < > < | stdout> <1 | 0> <der | pem | hex>
onde
- <arquivo de entrada> - indica o caminho para o arquivo com a estrutura ASN1;
- <arquivo de saída> - indica o arquivo em que o resultado da análise será salvo: se stdout for especificado como arquivo de saída, o resultado será enviado para a saída padrão;
- o terceiro parâmetro indica que é necessário exibir informações completas (1);
- o quarto parâmetro define o formato do arquivo de entrada, em que der é um arquivo binário, pem indica que o arquivo contém dados codificados em base64 com o cabeçalho “----- BEGIN ... -” e o trailer “----- END ... -” como é habitual no openssl, e finalmente hex diz que o arquivo contém código hexadecimal. Além disso, pode conter caracteres especiais (\ r, \ n, \ t), espaços e caracteres "." e ":". A origem dos símbolos de ponto e dois pontos ficará clara abaixo.
O formato hexadecimal foi vital para mim. De fato, para analisar qualquer parte do arquivo analisado, você tinha que traduzi-lo para a forma binária (der-codificação) e passá-lo novamente pelo utilitário. O formato hexadecimal tornou a vida muito mais fácil.
Obviamente, o uso de código tcl puro (assim como qualquer outro código de script, por exemplo, python) não é totalmente confortável. Portanto, os utilitários são enquadrados nas distribuições
tclderdump para as plataformas Linux, Windows e OS X. Essas distribuições são auto-suficientes: você baixa e executa.
Mas voltando à capacidade de visualizar estruturas ASN1 armazenadas em hexadecimal. Além dos utilitários mencionados acima para exibir estruturas ASN1, também existe um bom utilitário
pyderasn escrito em Python, que usa caracteres de ponto e dois pontos na saída, e foi decidido que eles também podem estar presentes no código hexadecimal. A seguir, o resultado da análise do mesmo certificado x509 v.3 com os utilitários derdump.tcl e pederasn:

Mas eu queria mais, a saber, uma interface gráfica e a capacidade de analisar blocos internos em tempo real. Decidiu-se adicionar essa funcionalidade ao utilitário cryptoarmpkcs, especialmente porque ele tem muito a desenvolver, por exemplo, criptografar documentos no certificado do destinatário. E aqui novamente você não pode prescindir de um visualizador de estruturas ASN1.
Para esses propósitos, foi decidido reorientar o botão de função "Informações do Token". Reorientamos o botão e atribuímos a nova função "Visualizar estrutura do ASN1" a ele, e você
ainda pode obter informações sobre o token conectado movendo o cursor sobre o nome do token à direita do rótulo "Choose token / smartcard":

Tudo é simples aqui. Selecionamos o arquivo com a estrutura ASN1, indicamos em qual formato ele está, decidimos se precisamos de detalhes adicionais e clique no botão "Exibir arquivo ASN1":

Comparando as capturas de tela direita e esquerda, você pode ver pessoalmente quais informações adicionais podem ser obtidas quando o botão "Informações adicionais" é pressionado. Para salvar a estrutura na forma desmontada, basta clicar no botão "Salvar".
Se você pressionar o botão esquerdo do mouse, poderá selecionar o bloco de seu interesse. E, se agora no bloco selecionado, pressione o botão direito do mouse, um menu será exibido com os seguintes itens:
- copiar para a área de transferência;
- veja o bloco realçado.
E se você selecionar o item "Visualizar bloco selecionado", uma janela com o bloco analisado será exibida:

Se você clicar no botão "copiar para a área de transferência", o bloco selecionado será copiado para a área de transferência. A área de transferência pode ser visualizada clicando no botão "ASN1-clipboard". O usuário pode colocar os dados na área de transferência com seus próprios fundos e visualizá-los aqui.
E como o utilitário geralmente é atualizado, foi adicionada a capacidade de obter novas versões do utilitário diretamente a partir dele. Para fazer isso, basta mover o cursor do mouse sobre o campo "PKCS # 11, x509v3, PKCS # 10, PKCS # 7, CMS, PKCS # 12, ASN1", pressione o botão direito do mouse e selecione "Sobre o programa" no menu exibido. Na janela exibida, basta selecionar a plataforma e pressionar o botão esquerdo do mouse:

Após o recebimento bem-sucedido do kit de distribuição, você receberá uma mensagem correspondente sobre onde o arquivo recebido foi salvo:

PS Para quem deseja obter utilitários pela primeira vez, isso ainda pode ser feito aqui:
Distribuições para Linux, OS X e Windows