IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau C Discussion :

Convertir clé RSA en chaîne (librairie OpenSSL)


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 21
    Par défaut Convertir clé RSA en chaîne (librairie OpenSSL)
    Bonjour,

    Je suis à la recherche d'un moyen pour envoyer une clé public de type RSA* par un socket. Etant donné que ce type est complexe car crée dynamiquement et composé de plusieurs pointeurs, le plus simple serais de disposer d'une fonction pour convertir ce type en une chaine de caractère.

    (J'utilise la librairie OpenSSL, et je peux facilement transformer le type RSA en EVP_PKEY ou en un objet au format DER)

    Si vous connaissez une fonction de la librairie OpenSSL ou que vous disposez d'une idée pour m'aider je suis preneur.

    Merci par avance.

  2. #2
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Salut,

    Je sais pas si c'est appliquable ici, mais on avait utilisé openssl pour creer des hash md5 et les fonctions ne produisaient que des tableaux de bytes (unsigned char), ensuite on devait convertir soi meme en chaine hexadecimale avec une simple boucle de ce style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    unsigned char md5_data[MD5_DIGEST_LENGTH];
    char md5_str[MD5_DIGEST_LENGTH * 2 + 1];
    int k;
     
    /* creation du hash dans md5_data */
    /* ... */
     
    /* creation de la chaine correspondante */
    for (k = 0; k < MD5_DIGEST_LENGTH; k++)
    {
         sprintf(md5_str + (k * 2), "%02x", md5_data[k]);
    }
    md5_str[MD5_DIGEST_LENGTH * 2] = '\0';

  3. #3
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 21
    Par défaut
    Le problème est que le type RSA est plus complexe qu'un simple tableau.
    Comme vous pourrez le constater, ce type est composé de plusieurs pointeurs. Il est donc difficile de le transmettre élément par élément par le socket. Surtout que beaucoup de type tel que ENGINE me sont obscures.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    #define RSA rsa_st
     
    struct rsa_st
    	{
    	/* The first parameter is used to pickup errors where
    	 * this is passed instead of aEVP_PKEY, it is set to 0 */
    	int pad;
    	long version;
    	const RSA_METHOD *meth;
    	/* functional reference if 'meth' is ENGINE-provided */
    	ENGINE *engine;
    	BIGNUM *n;
    	BIGNUM *e;
    	BIGNUM *d;
    	BIGNUM *p;
    	BIGNUM *q;
    	BIGNUM *dmp1;
    	BIGNUM *dmq1;
    	BIGNUM *iqmp;
    	/* be careful using this if the RSA structure is shared */
    	CRYPTO_EX_DATA ex_data;
    	int references;
    	int flags;
     
    	/* Used to cache montgomery values */
    	BN_MONT_CTX *_method_mod_n;
    	BN_MONT_CTX *_method_mod_p;
    	BN_MONT_CTX *_method_mod_q;
     
    	/* all BIGNUM values are actually in the following data, if it is not
    	 * NULL */
    	char *bignum_data;
    	BN_BLINDING *blinding;
    	BN_BLINDING *mt_blinding;
    	};
    Merci à vous

Discussions similaires

  1. Librairie OpenSSL : comment lire une clef RSA sans fichier ?
    Par Feneck91 dans le forum Sécurité
    Réponses: 0
    Dernier message: 01/06/2012, 10h01
  2. [Free Pascal] Convertir un pointer en chaîne et chaîne en pointer multiplateforme
    Par bubulemaster dans le forum Free Pascal
    Réponses: 7
    Dernier message: 29/10/2007, 16h17
  3. Réponses: 9
    Dernier message: 17/02/2007, 17h43
  4. Réponses: 3
    Dernier message: 09/05/2006, 14h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo