`OpenSSL::PKey::EC::Point` should be able to get and set affine coordinates
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 25/100
- Type d'issue
- Fonctionnalité
- Clarté
- À clarifier
- Activité
- À l'abandon
- Domaine
- cryptography
Piste de recherche
Aucun fichier ni test n’est nommé. Commencez par examiner l’API existante de OpenSSL::PKey::EC::Point ainsi que les exemples de points compressés et non compressés dans l’issue. Définissez avec les maintainers la conception proposée pour le constructeur et l’accès aux coordonnées, puis définissez des tests montrant que la récupération des coordonnées affines et la construction de points fonctionnent comme prévu.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
It is possible using a little magic to create a point with a raw x and y:
def self.from_compressed_point(group, x, is_even)
x_value = x.to_s(2).rjust(32, "\x00")
prefix = is_even ? "\x02" : "\x03"
encoded = OpenSSL::BN.new [ prefix, x_value ].join, 2
OpenSSL::PKey::EC::Point.new(group, encoded)
end
One can similarly use some magic to get uncompressed points and turn them into two OpenSSL::BN instances
It would be better if we supported this without using compressed point form magic, like so (RBS signature with hypothetical overload):
class OpenSSL::PKey::EC::Point
# Since the OpenSSL operation returns both
def affine_coordinates -> [ OpenSSL::BN, OpenSSL::BN ]
# Convenance methods for above
attr_reader :x, :y -> OpenSSL::BN
# Choice 1 - Using Bool for Y
def initialize : (group: OpenSSL::PKey::EC::Group, x: OpenSSL::BN, even: Boolean) -> OpenSSL::PKey::EC::Point
# Choice 2 - Using a symbol for Y
def initialize : (group: OpenSSL::PKey::EC::Group, x: OpenSSL::BN, y:[ :even, :odd ]) -> OpenSSL::PKey::EC::Point
# Using X and Y directly
def initialize : (group: OpenSSL::PKey::EC::Group, x: OpenSSL::BN, y: OpenSSL::BN) -> OpenSSL::PKey::EC::Point
end
I've intentionally omitted mutating the X and Y of a point after creation. Because all of these have a different aridity they will not conflict. Similarly adding Jacobian would create an aridity == 4.
The big question is for choice 1 or 2 when creating an X and which Y value.
- Langage dominant
- C
- Étoiles
- 276
- Forks
- 200
- Merge moyen
- 15 h 35 min
- PR mergées (30 j)
- 7
Préparer son environnement
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de ruby/openssl
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
ruby/openssl#1116 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 48/100
ruby/openssl#1082 · 4 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
ruby/openssl#1075 · 4 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Unchecked *_set_* callsOuverte
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
ruby/openssl#1038 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Add a method OpenSSL::PKey#sizeOuverte
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
ruby/openssl#988 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de ruby/openssl
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
darktable-org/darktable#22455 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
area:ci kind:gate-defect
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
InauguralSystems/EigenScript#1448 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
BasedHardware/omi#20084 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 64/100
raspberrypi/pico-sdk#3225 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100