openssl rsautl
manipula apenas o algoritmo RSA, e não qualquer outro algoritmo: não DSA, não ECDSA, não GOST, não DSTU, etc. openssl pkeyutl -sign/-verify
pode manipular qualquer algoritmo disponível por meio da interface EVP
padrão, qual seu motor presumivelmente deveria.
No entanto, a maioria dos algoritmos de assinatura realmente assina um hash dos dados, não os dados originais. Em particular, vejo o BouncyCastle tem vários esquemas de assinatura usando GOST3411 (um hash) com DSTU4145 (e com ou sem codificação LE aka Little-Endian). Para isso, você precisa explicitamente usar hash e usar openssl pkeyutl
, ou mais facilmente usar openssl dgst -$hashname -sign/-verify
, que os combina para você. Para hashes incorporados, você pode abreviar isso para openssl $hashname -sign/-verify
, mas não sei se isso funciona para um hash de mecanismo.
Em qualquer caso, você quase certamente não quer tratar todos os signed_content.txt
como dados, muito menos como o hash dos dados. Se tiver estrutura ASN.1, provavelmente inclui os dados assinados (como apenas parte da estrutura) mais o valor da assinatura e, provavelmente, metadados ou até mesmo outros dados. Se for uma estrutura comum e você publicar o resultado asn1parse
, com todos os valores de dados que você considera confidenciais suprimidos, mas todos os metadados como OIDs intactos, eu ou outra pessoa aqui pode reconhecê-lo e avisar. Se for a estrutura mais comum, o CMS / PKCS7, a linha de comando do OpenSSL pode manipular isso diretamente.