Diff for /rpl/src/instructions_d6.c between versions 1.63 and 1.64

version 1.63, 2016/03/01 22:12:30 version 1.64, 2016/09/27 10:43:23
Line 605  instruction_diag_fleche(struct_processus Line 605  instruction_diag_fleche(struct_processus
 void  void
 instruction_digest(struct_processus *s_etat_processus)  instruction_digest(struct_processus *s_etat_processus)
 {  {
     EVP_MD_CTX                  contexte;      EVP_MD_CTX                  *contexte;
   
     const EVP_MD                *EVP_sum;      const EVP_MD                *EVP_sum;
     const EVP_CIPHER            *EVP_chiffrement;      const EVP_CIPHER            *EVP_chiffrement;
Line 684  instruction_digest(struct_processus *s_e Line 684  instruction_digest(struct_processus *s_e
         printf("    - DES-EDE3-CB\n");          printf("    - DES-EDE3-CB\n");
         printf("    - DESX-CBC\n");          printf("    - DESX-CBC\n");
 #       endif  #       endif
 #       ifndef OPENSSL_NO_SHA  
         printf("    - DSS\n");  
         printf("    - DSS1\n");  
         printf("    - ECDSA\n");  
 #       endif  
 #       ifndef OPENSSL_NO_IDEA  #       ifndef OPENSSL_NO_IDEA
         printf("    - IDEA-CBC\n");          printf("    - IDEA-CBC\n");
 #       endif  #       endif
Line 712  instruction_digest(struct_processus *s_e Line 707  instruction_digest(struct_processus *s_e
 #       ifndef OPENSSL_NO_RIPEMD  #       ifndef OPENSSL_NO_RIPEMD
         printf("    - RIPEMD160\n");          printf("    - RIPEMD160\n");
 #       endif  #       endif
 #       ifndef OPENSSL_NO_SHA  
         printf("    - SHA\n");  
         printf("    - SHA1\n");          printf("    - SHA1\n");
 #       endif  
 #       ifndef OPENSSL_NO_SHA256  
         printf("    - SHA224\n");          printf("    - SHA224\n");
         printf("    - SHA256\n");          printf("    - SHA256\n");
 #       endif  
 #       ifndef OPENSSL_NO_SHA512  
         printf("    - SHA384\n");          printf("    - SHA384\n");
         printf("    - SHA512\n");          printf("    - SHA512\n");
 #       endif  
 #       ifndef OPENSSL_NO_WHIRLPOOL  #       ifndef OPENSSL_NO_WHIRLPOOL
         printf("    - WHIRLPOOL\n");          printf("    - WHIRLPOOL\n");
 #       endif  #       endif
Line 778  instruction_digest(struct_processus *s_e Line 766  instruction_digest(struct_processus *s_e
             ((*s_objet_argument_2).type == CHN))              ((*s_objet_argument_2).type == CHN))
     {      {
         // Liste des sommes disponibles :          // Liste des sommes disponibles :
         // - EVP_dss  
         // - EVP_dss1  
         // - EVP_ecdsa  
         // - EVP_md2          // - EVP_md2
         // - EVP_md4          // - EVP_md4
         // - EVP_md5          // - EVP_md5
         // - EVP_mdc2          // - EVP_mdc2
         // - EVP_ripemd160          // - EVP_ripemd160
         // - EVP_sha  
         // - EVP_sha1          // - EVP_sha1
         // - EVP_sha224          // - EVP_sha224
         // - EVP_sha256          // - EVP_sha256
Line 805  instruction_digest(struct_processus *s_e Line 789  instruction_digest(struct_processus *s_e
   
         switch(fonction[0])          switch(fonction[0])
         {          {
             case 'D':  
             {  
                 switch(fonction[1])  
                 {  
                     case 'S': // ds  
                     {  
                         switch(fonction[2])  
                         {  
 #                           ifndef OPENSSL_NO_SHA  
                             case 'S': // dss  
                             {  
                                 switch(fonction[3])  
                                 {  
                                     case d_code_fin_chaine:  
                                     {  
                                         EVP_sum = EVP_dss();  
                                         break;  
                                     }  
   
                                     case '1': // dss1  
                                     {  
                                         if (fonction[4] == d_code_fin_chaine)  
                                         {  
                                             EVP_sum = EVP_dss1();  
                                         }  
                                         else  
                                         {  
                                             somme_invalide = d_vrai;  
                                         }  
   
                                         break;  
                                     }  
   
                                     default:  
                                     {  
                                         somme_invalide = d_vrai;  
                                         break;  
                                     }  
                                 }  
   
                                 break;  
                             }  
 #                           endif  
   
                             default:  
                             {  
                                 somme_invalide = d_vrai;  
                                 break;  
                             }  
                         }  
   
                         break;  
                     }  
   
                     default:  
                     {  
                         somme_invalide = d_vrai;  
                         break;  
                     }  
                 }  
   
                 break;  
             }  
   
             case 'E':  
             {  
                 switch(fonction[1])  
                 {  
                     case 'C': // ec  
                     {  
                         switch(fonction[2])  
                         {  
                             case 'D': // ecd  
                             {  
                                 switch(fonction[3])  
                                 {  
                                     case 'S': // ecds  
                                     {  
                                         switch(fonction[4])  
                                         {  
 #                                           ifndef OPENSSL_NO_SHA  
                                             case 'A': // ecdsa  
                                             {  
                                                 if (fonction[5] ==  
                                                         d_code_fin_chaine)  
                                                 {  
                                                     EVP_sum = EVP_ecdsa();  
                                                 }  
                                                 else  
                                                 {  
                                                     somme_invalide = d_vrai;  
                                                 }  
   
                                                 break;  
                                             }  
 #                                           endif  
   
                                             default:  
                                             {  
                                                 somme_invalide = d_vrai;  
                                                 break;  
                                             }  
                                         }  
   
                                         break;  
                                     }  
   
                                     default:  
                                     {  
                                         somme_invalide = d_vrai;  
                                         break;  
                                     }  
                                 }  
   
                                 break;  
                             }  
   
                             default:  
                             {  
                                 somme_invalide = d_vrai;  
                                 break;  
                             }  
                         }  
   
                         break;  
                     }  
   
                     default:  
                     {  
                         somme_invalide = d_vrai;  
                         break;  
                     }  
                 }  
   
                 break;  
             }  
   
             case 'M':              case 'M':
             {              {
                 switch(fonction[1])                  switch(fonction[1])
Line 1072  instruction_digest(struct_processus *s_e Line 919  instruction_digest(struct_processus *s_e
                     {                      {
                         switch(fonction[2])                          switch(fonction[2])
                         {                          {
 #                           ifndef OPENSSL_NO_SHA  
                             case 'A':                              case 'A':
                             {                              {
                                 switch(fonction[3])                                  switch(fonction[3])
                                 {                                  {
                                     case d_code_fin_chaine:  
                                     {  
                                         EVP_sum = EVP_sha();  
                                         break;  
                                     }  
   
                                     case '1': // sha1                                      case '1': // sha1
                                     {                                      {
                                         if (fonction[4] == d_code_fin_chaine)                                          if (fonction[4] == d_code_fin_chaine)
Line 1097  instruction_digest(struct_processus *s_e Line 937  instruction_digest(struct_processus *s_e
                                         break;                                          break;
                                     }                                      }
   
 #                                   ifndef OPENSSL_NO_SHA256  
                                     case '2': // sha2                                      case '2': // sha2
                                     {                                      {
                                         switch(fonction[4])                                          switch(fonction[4])
Line 1173  instruction_digest(struct_processus *s_e Line 1012  instruction_digest(struct_processus *s_e
   
                                         break;                                          break;
                                     }                                      }
 #                                   endif  
   
 #                                   ifndef OPENSSL_NO_SHA512  
                                     case '3': // sha3                                      case '3': // sha3
                                     {                                      {
                                         switch(fonction[4])                                          switch(fonction[4])
Line 1265  instruction_digest(struct_processus *s_e Line 1102  instruction_digest(struct_processus *s_e
   
                                         break;                                          break;
                                     }                                      }
 #                                   endif  
   
                                     default:                                      default:
                                     {                                      {
Line 1276  instruction_digest(struct_processus *s_e Line 1112  instruction_digest(struct_processus *s_e
   
                                 break;                                  break;
                             }                              }
 #                           endif  
   
                             default:                              default:
                             {                              {
Line 1333  instruction_digest(struct_processus *s_e Line 1168  instruction_digest(struct_processus *s_e
             return;              return;
         }          }
   
         if (EVP_DigestInit(&contexte, EVP_sum) != 1)          if ((contexte = EVP_MD_CTX_new()) == NULL)
         {          {
             EVP_MD_CTX_cleanup(&contexte);              liberation(s_etat_processus, s_objet_argument_1);
               liberation(s_etat_processus, s_objet_argument_2);
   
               (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
               return;
           }
   
           if (EVP_DigestInit(contexte, EVP_sum) != 1)
           {
               EVP_MD_CTX_free(contexte);
   
             liberation(s_etat_processus, s_objet_argument_1);              liberation(s_etat_processus, s_objet_argument_1);
             liberation(s_etat_processus, s_objet_argument_2);              liberation(s_etat_processus, s_objet_argument_2);
Line 1347  instruction_digest(struct_processus *s_e Line 1191  instruction_digest(struct_processus *s_e
         if ((chaine = formateur_flux(s_etat_processus, (unsigned char *)          if ((chaine = formateur_flux(s_etat_processus, (unsigned char *)
                 (*s_objet_argument_2).objet, &longueur_chaine)) == NULL)                  (*s_objet_argument_2).objet, &longueur_chaine)) == NULL)
         {          {
             EVP_MD_CTX_cleanup(&contexte);              EVP_MD_CTX_free(contexte);
   
             liberation(s_etat_processus, s_objet_argument_1);              liberation(s_etat_processus, s_objet_argument_1);
             liberation(s_etat_processus, s_objet_argument_2);              liberation(s_etat_processus, s_objet_argument_2);
Line 1355  instruction_digest(struct_processus *s_e Line 1199  instruction_digest(struct_processus *s_e
             return;              return;
         }          }
   
         if (EVP_DigestUpdate(&contexte, chaine, (size_t) longueur_chaine) != 1)          if (EVP_DigestUpdate(contexte, chaine, (size_t) longueur_chaine) != 1)
         {          {
             free(chaine);              free(chaine);
             EVP_MD_CTX_cleanup(&contexte);              EVP_MD_CTX_free(contexte);
   
             liberation(s_etat_processus, s_objet_argument_1);              liberation(s_etat_processus, s_objet_argument_1);
             liberation(s_etat_processus, s_objet_argument_2);              liberation(s_etat_processus, s_objet_argument_2);
Line 1367  instruction_digest(struct_processus *s_e Line 1211  instruction_digest(struct_processus *s_e
             return;              return;
         }          }
   
         if (EVP_DigestFinal_ex(&contexte, somme, &longueur_somme) != 1)          if (EVP_DigestFinal_ex(contexte, somme, &longueur_somme) != 1)
         {          {
             free(chaine);              free(chaine);
             EVP_MD_CTX_cleanup(&contexte);              EVP_MD_CTX_free(contexte);
   
             liberation(s_etat_processus, s_objet_argument_1);              liberation(s_etat_processus, s_objet_argument_1);
             liberation(s_etat_processus, s_objet_argument_2);              liberation(s_etat_processus, s_objet_argument_2);
Line 1380  instruction_digest(struct_processus *s_e Line 1224  instruction_digest(struct_processus *s_e
         }          }
   
         free(chaine);          free(chaine);
         EVP_MD_CTX_cleanup(&contexte);          EVP_MD_CTX_free(contexte);
   
         if ((s_objet_resultat = allocation(s_etat_processus, CHN)) == NULL)          if ((s_objet_resultat = allocation(s_etat_processus, CHN)) == NULL)
         {          {
Line 1458  instruction_digest(struct_processus *s_e Line 1302  instruction_digest(struct_processus *s_e
   
         switch(fonction[0])          switch(fonction[0])
         {          {
             case 'D':  
             {  
                 switch(fonction[1])  
                 {  
                     case 'S': // ds  
                     {  
                         switch(fonction[2])  
                         {  
 #                           ifndef OPENSSL_NO_SHA  
                             case 'S': // dss  
                             {  
                                 switch(fonction[3])  
                                 {  
                                     case d_code_fin_chaine:  
                                     {  
                                         EVP_sum = EVP_dss();  
                                         break;  
                                     }  
   
                                     case '1': // dss1  
                                     {  
                                         if (fonction[4] == d_code_fin_chaine)  
                                         {  
                                             EVP_sum = EVP_dss1();  
                                         }  
                                         else  
                                         {  
                                             somme_invalide = d_vrai;  
                                         }  
   
                                         break;  
                                     }  
   
                                     default:  
                                     {  
                                         somme_invalide = d_vrai;  
                                         break;  
                                     }  
                                 }  
   
                                 break;  
                             }  
 #                           endif  
   
                             default:  
                             {  
                                 somme_invalide = d_vrai;  
                                 break;  
                             }  
                         }  
   
                         break;  
                     }  
   
                     default:  
                     {  
                         somme_invalide = d_vrai;  
                         break;  
                     }  
                 }  
   
                 break;  
             }  
   
             case 'E':  
             {  
                 switch(fonction[1])  
                 {  
                     case 'C': // ec  
                     {  
                         switch(fonction[2])  
                         {  
                             case 'D': // ecd  
                             {  
                                 switch(fonction[3])  
                                 {  
                                     case 'S': // ecds  
                                     {  
                                         switch(fonction[4])  
                                         {  
 #                                           ifndef OPENSSL_NO_SHA  
                                             case 'A': // ecdsa  
                                             {  
                                                 if (fonction[5] ==  
                                                         d_code_fin_chaine)  
                                                 {  
                                                     EVP_sum = EVP_ecdsa();  
                                                 }  
                                                 else  
                                                 {  
                                                     somme_invalide = d_vrai;  
                                                 }  
   
                                                 break;  
                                             }  
 #                                           endif  
   
                                             default:  
                                             {  
                                                 somme_invalide = d_vrai;  
                                                 break;  
                                             }  
                                         }  
   
                                         break;  
                                     }  
   
                                     default:  
                                     {  
                                         somme_invalide = d_vrai;  
                                         break;  
                                     }  
                                 }  
   
                                 break;  
                             }  
   
                             default:  
                             {  
                                 somme_invalide = d_vrai;  
                                 break;  
                             }  
                         }  
   
                         break;  
                     }  
   
                     default:  
                     {  
                         somme_invalide = d_vrai;  
                         break;  
                     }  
                 }  
   
                 break;  
             }  
   
             case 'M':              case 'M':
             {              {
                 switch(fonction[1])                  switch(fonction[1])
Line 1725  instruction_digest(struct_processus *s_e Line 1432  instruction_digest(struct_processus *s_e
                     {                      {
                         switch(fonction[2])                          switch(fonction[2])
                         {                          {
 #                           ifndef OPENSSL_NO_SHA  
                             case 'A':                              case 'A':
                             {                              {
                                 switch(fonction[3])                                  switch(fonction[3])
                                 {                                  {
                                     case d_code_fin_chaine:  
                                     {  
                                         EVP_sum = EVP_sha();  
                                         break;  
                                     }  
   
                                     case '1': // sha1                                      case '1': // sha1
                                     {                                      {
                                         if (fonction[4] == d_code_fin_chaine)                                          if (fonction[4] == d_code_fin_chaine)
Line 1750  instruction_digest(struct_processus *s_e Line 1450  instruction_digest(struct_processus *s_e
                                         break;                                          break;
                                     }                                      }
   
 #                                   ifndef OPENSSL_NO_SHA256  
                                     case '2': // sha2                                      case '2': // sha2
                                     {                                      {
                                         switch(fonction[4])                                          switch(fonction[4])
Line 1826  instruction_digest(struct_processus *s_e Line 1525  instruction_digest(struct_processus *s_e
   
                                         break;                                          break;
                                     }                                      }
 #                                   endif  
   
 #                                   ifndef OPENSSL_NO_SHA512  
                                     case '3': // sha3                                      case '3': // sha3
                                     {                                      {
                                         switch(fonction[4])                                          switch(fonction[4])
Line 1918  instruction_digest(struct_processus *s_e Line 1615  instruction_digest(struct_processus *s_e
   
                                         break;                                          break;
                                     }                                      }
 #                                   endif  
   
                                     default:                                      default:
                                     {                                      {
Line 1929  instruction_digest(struct_processus *s_e Line 1625  instruction_digest(struct_processus *s_e
   
                                 break;                                  break;
                             }                              }
 #                           endif  
   
                             default:                              default:
                             {                              {
Line 2385  instruction_digest(struct_processus *s_e Line 2080  instruction_digest(struct_processus *s_e
             if ((chaine = formateur_flux(s_etat_processus, (unsigned char *)              if ((chaine = formateur_flux(s_etat_processus, (unsigned char *)
                     (*s_objet_argument_2).objet, &longueur_chaine)) == NULL)                      (*s_objet_argument_2).objet, &longueur_chaine)) == NULL)
             {              {
                 EVP_MD_CTX_cleanup(&contexte);  
   
                 liberation(s_etat_processus, s_objet_argument_1);                  liberation(s_etat_processus, s_objet_argument_1);
                 liberation(s_etat_processus, s_objet_argument_2);                  liberation(s_etat_processus, s_objet_argument_2);
   
Line 2404  instruction_digest(struct_processus *s_e Line 2097  instruction_digest(struct_processus *s_e
             memcpy(tampon + longueur_bloc, chaine, (size_t) longueur_chaine);              memcpy(tampon + longueur_bloc, chaine, (size_t) longueur_chaine);
             longueur_tampon = longueur_bloc + longueur_chaine;              longueur_tampon = longueur_bloc + longueur_chaine;
   
             if (EVP_DigestInit(&contexte, EVP_sum) != 1)              if ((contexte = EVP_MD_CTX_new()) == NULL)
               {
                   liberation(s_etat_processus, s_objet_argument_1);
                   liberation(s_etat_processus, s_objet_argument_2);
   
                   (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                   return;
               }
   
               if (EVP_DigestInit(contexte, EVP_sum) != 1)
             {              {
                 free(tampon);                  free(tampon);
                 free(clef);                  free(clef);
                 free(chaine);                  free(chaine);
   
                 EVP_MD_CTX_cleanup(&contexte);                  EVP_MD_CTX_free(contexte);
   
                 liberation(s_etat_processus, s_objet_argument_1);                  liberation(s_etat_processus, s_objet_argument_1);
                 liberation(s_etat_processus, s_objet_argument_2);                  liberation(s_etat_processus, s_objet_argument_2);
Line 2419  instruction_digest(struct_processus *s_e Line 2121  instruction_digest(struct_processus *s_e
                 return;                  return;
             }              }
   
             if (EVP_DigestUpdate(&contexte, tampon, (size_t) longueur_tampon)              if (EVP_DigestUpdate(contexte, tampon, (size_t) longueur_tampon)
                     != 1)                      != 1)
             {              {
                 free(tampon);                  free(tampon);
                 free(clef);                  free(clef);
                 free(chaine);                  free(chaine);
   
                 EVP_MD_CTX_cleanup(&contexte);                  EVP_MD_CTX_free(contexte);
   
                 liberation(s_etat_processus, s_objet_argument_1);                  liberation(s_etat_processus, s_objet_argument_1);
                 liberation(s_etat_processus, s_objet_argument_2);                  liberation(s_etat_processus, s_objet_argument_2);
Line 2437  instruction_digest(struct_processus *s_e Line 2139  instruction_digest(struct_processus *s_e
   
             free(tampon);              free(tampon);
   
             if (EVP_DigestFinal_ex(&contexte, somme, &longueur_somme) != 1)              if (EVP_DigestFinal_ex(contexte, somme, &longueur_somme) != 1)
             {              {
                 free(chaine);                  free(chaine);
                 EVP_MD_CTX_cleanup(&contexte);                  EVP_MD_CTX_free(contexte);
   
                 liberation(s_etat_processus, s_objet_argument_1);                  liberation(s_etat_processus, s_objet_argument_1);
                 liberation(s_etat_processus, s_objet_argument_2);                  liberation(s_etat_processus, s_objet_argument_2);
Line 2449  instruction_digest(struct_processus *s_e Line 2151  instruction_digest(struct_processus *s_e
                 return;                  return;
             }              }
   
             EVP_MD_CTX_cleanup(&contexte);              EVP_MD_CTX_reset(contexte);
   
             for(i = 0; i < longueur_bloc; i++)              for(i = 0; i < longueur_bloc; i++)
             {              {
Line 2467  instruction_digest(struct_processus *s_e Line 2169  instruction_digest(struct_processus *s_e
             memcpy(tampon + longueur_bloc, somme, (size_t) longueur_somme);              memcpy(tampon + longueur_bloc, somme, (size_t) longueur_somme);
             longueur_tampon = longueur_bloc + longueur_somme;              longueur_tampon = longueur_bloc + longueur_somme;
   
             if (EVP_DigestInit(&contexte, EVP_sum) != 1)              if (EVP_DigestInit(contexte, EVP_sum) != 1)
             {              {
                 free(tampon);                  free(tampon);
                 free(clef);                  free(clef);
                 free(chaine);                  free(chaine);
   
                 EVP_MD_CTX_cleanup(&contexte);                  EVP_MD_CTX_free(contexte);
   
                 liberation(s_etat_processus, s_objet_argument_1);                  liberation(s_etat_processus, s_objet_argument_1);
                 liberation(s_etat_processus, s_objet_argument_2);                  liberation(s_etat_processus, s_objet_argument_2);
Line 2482  instruction_digest(struct_processus *s_e Line 2184  instruction_digest(struct_processus *s_e
                 return;                  return;
             }              }
   
             if (EVP_DigestUpdate(&contexte, tampon, (size_t) longueur_tampon)              if (EVP_DigestUpdate(contexte, tampon, (size_t) longueur_tampon)
                     != 1)                      != 1)
             {              {
                 free(tampon);                  free(tampon);
                 free(clef);                  free(clef);
                 free(chaine);                  free(chaine);
   
                 EVP_MD_CTX_cleanup(&contexte);                  EVP_MD_CTX_free(contexte);
   
                 liberation(s_etat_processus, s_objet_argument_1);                  liberation(s_etat_processus, s_objet_argument_1);
                 liberation(s_etat_processus, s_objet_argument_2);                  liberation(s_etat_processus, s_objet_argument_2);
Line 2500  instruction_digest(struct_processus *s_e Line 2202  instruction_digest(struct_processus *s_e
   
             free(tampon);              free(tampon);
   
             if (EVP_DigestFinal_ex(&contexte, somme, &longueur_somme) != 1)              if (EVP_DigestFinal_ex(contexte, somme, &longueur_somme) != 1)
             {              {
                 free(chaine);                  free(chaine);
                 EVP_MD_CTX_cleanup(&contexte);                  EVP_MD_CTX_free(contexte);
   
                 liberation(s_etat_processus, s_objet_argument_1);                  liberation(s_etat_processus, s_objet_argument_1);
                 liberation(s_etat_processus, s_objet_argument_2);                  liberation(s_etat_processus, s_objet_argument_2);
Line 2512  instruction_digest(struct_processus *s_e Line 2214  instruction_digest(struct_processus *s_e
                 return;                  return;
             }              }
   
             EVP_MD_CTX_cleanup(&contexte);              EVP_MD_CTX_free(contexte);
   
             free(chaine);              free(chaine);
             free(clef);              free(clef);

Removed from v.1.63  
changed lines
  Added in v.1.64


CVSweb interface <joel.bertrand@systella.fr>