Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

RSAKeyFormatHelper does not reject nonsense RSAPrivateKey versions

Abierto Apto para principiantes
#134,659 1 comentario 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
84/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
csharp

Línea de trabajo

Comienza con la validación en RSAKeyFormatHelper.Pkcs1.cs, líneas 23-25, e inspecciona la definición firmada de Version en PrivateKeyInfoAsn.xml.cs. Sigue la ruta existente de decodificación de claves privadas RSA, añade cobertura para versiones negativas y verifica que un RSAPrivateKey con cualquier versión negativa sea rechazado en lugar de tratarse como la versión 0.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

area-System.Security untriaged
Description

If an RSAPrivateKey has a version of -1 it decodes successfully and is treated as 0.

https://github.com/dotnet/runtime/blob/0598ca0a45c1f29be94f889a1fc6e9b30c40ea64/src/libraries/Common/src/System/Security/Cryptography/RSAKeyFormatHelper.Pkcs1.cs#L23-L25

Version is a signed integer, so it can contain negative values:

https://github.com/dotnet/runtime/blob/0598ca0a45c1f29be94f889a1fc6e9b30c40ea64/src/libraries/Common/src/System/Security/Cryptography/Asn1/PrivateKeyInfoAsn.xml.cs#L15

Reproduction Steps

Construct an RSAPrivateKey with a version of -1, or any other negative number.

Expected behavior

The RSAPrivateKey should be rejected.

Actual behavior

The RSAPrivateKey version is treated as 0.

Regression?

No

Known Workarounds

No response

Configuration

No response

Other information

RFC 8017 and RFC 3447 define version as

Version ::= INTEGER { two-prime(0), multi(1) }
               (CONSTRAINED BY
               {-- version must be multi if otherPrimeInfos present --}

Since .NET does not support multi-prime values for key imports, the version check should probably just be != 0.

Lenguaje dominante
C#
Estrellas
18.3k
Forks
5.6k
Merge medio
2 d 20 h
PR fusionados (30 d)
614

Preparar el entorno

Abrir en Codespaces

Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de dotnet/runtime

Todos los issues de dotnet/runtime

Issues similares

Más issues de C#

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.