Você pode usar a opção --list-packets
para obter uma cópia do que está em um arquivo gpg. A descrição do formato do arquivo é RFC 4880 (padrão OpenPGP).
A assinatura não contém diretamente um hash. Ele contém informações que permitem verificar tanto o hash quanto o remetente: existe um algoritmo de verificação de assinaturas , que recebe um valor de hash e uma chave pública como entrada e retorna yes ou não ; o algoritmo retorna sim se a assinatura foi feita pela chave privada correspondente à chave pública dada de uma mensagem com a chave privada dada, e retorna não em todas as outras circunstâncias ( assinatura de um hash diferente, assinatura feita por uma chave diferente, ou um monte de bytes que não pode ser uma assinatura em tudo). Sob o algoritmo DSA , acho inviável extrair o hash de uma assinatura se você não tiver a chave privada.
O arquivo de assinatura contém a identidade do signatário, bem como o valor da assinatura. Para verificar a assinatura, o gpg lê a chave pública do assinante do seu chaveiro, calcula o hash dos dados e aplica o algoritmo de verificação de assinaturas.