Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1180 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Par défaut

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Par défaut

n°2059673
razuki
Posté le 25-02-2011 à 14:45:35  profilanswer
 

Bonjour,
je développe une brique sécurisée entre TCP et une appli.
Quand ma fonction de chargement de certificat echoue, en l'occurence la clef privée ne correspond pas au certificat, j'obtiens l'erreur :

Code :
  1. error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch


 
En effet, afin d'obtenir le résultat ci-dessus, j'ai fait :

Code :
  1. err = ERR_get_error(); // cette fonction récupère la dernière erreur arrivée sur la pile.
  2. ERR_error_string_n(ERR_get_error(), sizeof(buf));// traduit l'erreur en string pour que je puisse comprendre ce qui s'était passé.


 
Ma question :
Je ne veux pas traiter moi même ce qu'il faut faire si une telle erreur se produit. Je veux juste retransmettre l'erreur au programmeur de l'appli ( qui utilisera donc ma brique ), pour qu'il puisse faire :
 

Code :
  1. if(err = PVKEY_DOES_NOT_MATCH_WITH_CERT) {
  2.      //traiter ici ce qu'il faut faire
  3. }


 
En gros, comment faire correspondre PVKEY_DOES_NOT_MATCH_WITH_CERT à mon type d'erreur.
 
PS: je suis débutant en C/C++
 
Merci d'avance

mood
Publicité
Posté le 25-02-2011 à 14:45:35  profilanswer
 

n°2059692
shaoyin
Posté le 25-02-2011 à 15:39:34  profilanswer
 

En C++, tu peux utiliser les exceptions pour gérer les erreurs.
 
Dans ta brique, tu te contentes d'émettre une classe d'exception via la fonction "throw".
 
L'utilisateur de ta brique doit quant à lui intercepter l'exception dans un bloc try...catch.
 
C'est plus élégant que de gérer une variable d'erreur.

n°2059935
razuki
Posté le 27-02-2011 à 23:10:21  profilanswer
 

Le problème c'est que la gars qui a commencé le dev de la stack n'utilise pas ces throw, il utilise un enum pour lister les codes d'erreurs :
 

Code :
  1. typedef enum LAB_ERRORS_ {
  2. LAB_ERROR_NOERROR   = 0,
  3.   LAB_ERROR_SUCCESS   = 0,
  4.   LAB_ERROR_BASE                = 0x0D430000,     
  5.   /* generic errors */
  6.   LAB_ERROR_BUFFERTOOSMALL,                         
  7.   LAB_ERROR_TIMEOUT,                               
  8.   LAB_ERROR_OUTOFMEMORY,                                                     
  9.   LAB_ERROR_SOCKETERROR,                           
  10.   LAB_ERROR_OS,                                     
  11.   /* network errors */
  12.   LAB_ERROR_NETWORK = (LAB_ERROR_BASE + 0x1000),
  13.   LAB_ERROR_CONNECTIONREFUSED,                     
  14.   LAB_ERROR_PACKETTOOLARGE,                         
  15.      
  16.   /*security errors */
  17.   LAB_ERROR_SEC = (LAB_ERROR_BASE + 0x2000),
  18.   LAB_ERROR_KEYSUNAVAILABLE,                       
  19.   LAB_ERROR_REVOKEDCERTIFICATE,
  20.   LAB_ERROR_CERTIFICATENOTLOADED
  21.    } LAB_ERRORS;


 

Code :
  1. err = ERR_get_error();

 
l'instruction au dessus donne : 185073780 comme résultat quand on affiche.
 

Code :
  1. ERR_error_string_n(ERR_get_error(), sizeof(buf))


L'instruction ci dessus donne

Code :
  1. error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch

quand on affiche.
 
Mon problème c'est, est ce que je devrais rajouter :
PVKEY_DOES_NOT_MATCH_WITH_CERT 185073780
ou
PVKEY_DOES_NOT_MATCH_WITH_CERT 0B080074

n°2059944
Joel F
Real men use unique_ptr
Posté le 28-02-2011 à 08:21:14  profilanswer
 

rien ne t'empeche de faire une petite classe d'exceptino que tu throw avec le ERR_get_Error() en parametere et qui fait la construction du message dans son what()


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Par défaut

 

Sujets relatifs
retransmettre l'erreur à l'appliation au dessusJointure et choix de valeurs par defaut (pour traduction)
synchroniser des tables avec un triggerModifier d'erreur 404 par défaut
valeur par défaut[JQuery] Plugin Validate. Validation d'un input avec valeur par défaut
Par défaut requete en de plusieurs tables en relations avec hibernatChanger le charset par défaut
[PHP] Valeur par défaut lors du rechargement d'un formulairearguments par défaut
Plus de sujets relatifs à : Par défaut


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR