Problema de decriptação PGP do Castelo Bouncy

Eu tive um aplicativo usando Bouncy Castle para decodificação PGP que foi executado sem problemas durante os últimos 8 meses ou mais, e nos últimos 2 dias, de repente, surgiu um problema em que o método GetDataStream está lançando uma exceção:

Mensagem de exceção: "configuração de erro cifra assimétrica".

Mensagem de exceção interna: "Não é uma chave RSA".

private static PgpObjectFactory getClearDataStream(PgpPrivateKey privateKey, PgpPublicKeyEncryptedData publicKeyED)
{
    // Exception throws here.
    Stream clearStream = publicKeyED.GetDataStream(privateKey);

    PgpObjectFactory clearFactory = new PgpObjectFactory(clearStream);
    return clearFactory;
}

A chave não expirou, não tem data de expiração:

Eu não fiz alterações no aplicativo, não toquei nas teclas, por isso não consigo entender por que um problema surgiu inesperadamente. Alguma ideia? Eu também posso descriptografar manualmente os arquivos usando o Kleopatra usando as mesmas chaves que eu carrego no aplicativo.

Atualização 1 - Baixei o teste gratuito paraBiblioteca OpenPGP para .NET, que parece usar o BouncyCastle também, e não tenho problemas para descriptografar os arquivos usando a mesma chave. Por alguma razão, minha implementação da descriptografia usando o BouncyCastle que funcionou por vários meses parou de funcionar por algum motivo que ainda não consegui identificar.

Atualização 2 - Eu peguei arquivos da semana passada que funcionaram, e também baixei o código-fonte do BouncyCastle para que eu possa percorrer e depurar para ver onde a exceção está sendo lançada e como as variáveis ​​são diferentes entre um arquivo que funciona e um arquivo isso não funciona. A exceção está sendo lançada no início do método GetDataStream da classe PgpPublicKeyEncryptedData:

byte[] plain = fetchSymmetricKeyData(privKey);

Quando entro nesse método, para arquivos que eu posso descriptografar sem nenhum problema, notei que a variável keyData.Algorithm está definida como "ElGamalEncrypt", enquanto que, para os arquivos que a exceção lança, o arquivo keyData.Algortithm é definido como "RsaGeneral". Por que estes diferem? A empresa que me enviou os arquivos mudou seu método de criptografia? E este método de criptografia não é adequadamente suportado pelo BouncyCastle?

private byte[] fetchSymmetricKeyData(PgpPrivateKey privKey)
{
    IBufferedCipher c1 = GetKeyCipher(keyData.Algorithm);

    try
    {
        c1.Init(false, privKey.Key);
    }
    catch (InvalidKeyException e)
    {
        throw new PgpException("error setting asymmetric cipher", e);
    }

Além disso, não tenho certeza se isso está relacionado, o tipo de certificado da nossa chave é DSA.

Atualização 3 - Não consegui descobrir como resolver o problema até o momento, considerando as chaves atuais. Gerei novas chaves (digite DSA) ontem e, com as novas chaves, o problema foi resolvido.

Atualização 4 - Esse problema acaba de surgir novamente, com a nova chave que funcionou na minha última atualização. Mais uma vez, o keyData.Algorithm dentro da classe PgpPublicKeyEncryptedData está sendo visto para "RsaGeneral" em vez de "ElGamalEncrypt" agora. Por que a propriedade Algorithm mudaria? A pessoa está criptografando o arquivo mudando alguma coisa?

questionAnswers(2)

yourAnswerToTheQuestion