Retransmettre l'erreur à l'appliation au dess

razuki Messages postés 293 Statut Membre -  
razuki Messages postés 293 Statut Membre -
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 :

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 :

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 :
   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

1 réponse

  1. razuki Messages postés 293 Statut Membre 1
     
    En fait, le gars qui a développé la couche avant moi a déjà crée un enum contenant les codes d'erreurs :

    typedef enum LAB_ERRORS_ {
    LAB_ERROR_NOERROR 		= 0,
      LAB_ERROR_SUCCESS 		= 0,
     
      LAB_ERROR_BASE                = 0x0D430000,      
     
      /* generic errors */
      LAB_ERROR_BUFFERTOOSMALL,                          
      LAB_ERROR_TIMEOUT,                                 
      LAB_ERROR_OUTOFMEMORY,                                                      
      LAB_ERROR_SOCKETERROR,                             
      LAB_ERROR_OS,                                      
     
      /* network errors */
      LAB_ERROR_NETWORK = (LAB_ERROR_BASE + 0x1000),
      LAB_ERROR_CONNECTIONREFUSED,                      
      LAB_ERROR_PACKETTOOLARGE,                          
    			     		
     
      /*security errors */
      LAB_ERROR_SEC = (LAB_ERROR_BASE + 0x2000),
      LAB_ERROR_KEYSUNAVAILABLE,                        
      LAB_ERROR_REVOKEDCERTIFICATE,
      LAB_ERROR_CERTIFICATENOTLOADED
       } LAB_ERRORS;


    Le problème c'est que je ne sais pas comment intégrer mon code d'erreur à cet enum. En effet, err = ERR_get_error() donne 185073780 à l'execution et ERR_error_string_n(ERR_get_error(), sizeof(buf)); m'affiche "error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch"

    Je ne sais pas si ceci a un sens :
    PVKEY_DOES_NOT_MATCH_WITH_CERT 0B080074

    ou
    PVKEY_DOES_NOT_MATCH_WITH_CERT 185073780
    0