Problema de desencriptación PGP de Bouncy Castle

He tenido una aplicación que utiliza Bouncy Castle para el descifrado PGP que se ha ejecutado sin problemas durante los últimos 8 meses aproximadamente, y los últimos 2 días, de repente, surgió un problema en el que el método GetDataStream está generando una excepción:

Mensaje de excepción: "error al establecer el cifrado asimétrico".

Mensaje de excepción interna: "No es una clave RSA".

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

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

La clave no ha caducado, no tiene fecha de caducidad:

No he hecho ningún cambio en la aplicación, no he tocado las teclas, por lo que no puedo entender por qué un problema ha surgido de la nada. ¿Algunas ideas? También puedo descifrar manualmente los archivos usando Kleopatra usando las mismas claves que cargo en la aplicación.

Actualización 1 - Descargué la versión de prueba gratuita paraBiblioteca OpenPGP para .NET, que también parece usar BouncyCastle, y no tengo problemas para descifrar los archivos usando la misma clave. Por alguna razón, mi implementación de descifrado con BouncyCastle que ha funcionado durante varios meses dejó de funcionar por alguna razón que aún no he podido identificar.

Actualización 2 - Saqué los archivos de la semana pasada que funcionaron, y también descargué el código fuente de BouncyCastle para poder avanzar y depurar para ver dónde está la excepción y cómo difieren las variables entre un archivo que funciona y un archivo. eso no funciona La excepción se lanza al principio del método GetDataStream de la clase PgpPublicKeyEncryptedData:

byte[] plain = fetchSymmetricKeyData(privKey);

Cuando paso a este método, para los archivos que puedo descifrar sin ningún problema, he notado que la variable keyData.Algorithm está establecida en "ElGamalEncrypt", mientras que para los archivos que arroja la excepción, el archivo keyData.Algortithm está establecido en "RsaGeneral". ¿Por qué estos difieren? ¿La empresa que me envió los archivos cambió su método de encriptación? ¿Y este método de encriptación no es soportado adecuadamente por 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);
    }

Además, no está seguro de si esto está relacionado, el tipo de certificado de nuestra clave es DSA.

Actualización 3 - No he podido averiguar cómo resolver el problema hasta el momento, dadas las claves actuales. Ayer generé nuevas claves (tipo DSA), y con las nuevas claves se resolvió el problema.

Actualización 4 - Este problema acaba de aparecer nuevamente, con la nueva clave que funcionó en mi última actualización. Una vez más, el keyData.Algorithm dentro de la clase PgpPublicKeyEncryptedData se está viendo a "RsaGeneral" en lugar de "ElGamalEncrypt" ahora. ¿Por qué cambiaría la propiedad del algoritmo? ¿Está la persona encriptando el archivo cambiando algo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta