Develop and Download Open Source Software

Browse Subversion Repository

Diff of /branches/ssh_chacha20poly1305/ttssh2/ttxssh/key.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 6145 by maya, Tue Nov 17 04:37:00 2015 UTC revision 6147 by maya, Tue Nov 17 09:31:03 2015 UTC
# Line 561  unsigned char *duplicate_ED25519_PK(unsi Line 561  unsigned char *duplicate_ED25519_PK(unsi
561    
562  BOOL key_copy(Key *dest, Key *src)  BOOL key_copy(Key *dest, Key *src)
563  {  {
564            key_init(dest);
565          switch (src->type) {          switch (src->type) {
566          case KEY_RSA1: // SSH1          case KEY_RSA1: // SSH1
567                  dest->type = KEY_RSA1;                  dest->type = KEY_RSA1;
# Line 1077  void key_free(Key *key) Line 1078  void key_free(Key *key)
1078                  return;                  return;
1079          }          }
1080    
1081          switch (key->type) {          key_init(key);
                 case KEY_RSA1:  
                 case KEY_RSA:  
                         if (key->rsa != NULL)  
                                 RSA_free(key->rsa);  
                         key->rsa = NULL;  
                         break;  
1082    
1083                  case KEY_DSA:          free(key);
1084                          if (key->dsa != NULL)  }
                                 DSA_free(key->dsa);  
                         key->dsa = NULL;  
                         break;  
1085    
1086                  case KEY_ECDSA256:  void key_init(Key *key)
1087                  case KEY_ECDSA384:  {
1088                  case KEY_ECDSA521:          key->type = KEY_UNSPEC;
                         if (key->ecdsa != NULL)  
                                 EC_KEY_free(key->ecdsa);  
                         key->ecdsa = NULL;  
                         break;  
1089    
1090                  case KEY_ED25519:          // SSH1
1091                          if (key->ed25519_pk) {          key->bits = 0;
1092                                  memset(key->ed25519_pk, 0, ED25519_PK_SZ);          if (key->exp != NULL) {
1093                                  free(key->ed25519_pk);                  free(key->exp);
1094                                  key->ed25519_pk = NULL;                  key->exp = NULL;
1095                          }          }
1096                          if (key->ed25519_sk) {          if (key->mod != NULL) {
1097                                  memset(key->ed25519_sk, 0, ED25519_SK_SZ);                  free(key->mod);
1098                                  free(key->ed25519_sk);                  key->mod = NULL;
1099                                  key->ed25519_sk = NULL;          }
1100                          }  
1101                          break;          // SSH2
1102            if (key->dsa != NULL) {
1103                    DSA_free(key->dsa);
1104                    key->dsa = NULL;
1105            }
1106            if (key->rsa != NULL) {
1107                    RSA_free(key->rsa);
1108                    key->rsa = NULL;
1109            }
1110            if (key->ecdsa != NULL) {
1111                    EC_KEY_free(key->ecdsa);
1112                    key->ecdsa = NULL;
1113            }
1114            if (key->ed25519_pk != NULL) {
1115                    memset(key->ed25519_pk, 0, ED25519_PK_SZ);
1116                    free(key->ed25519_pk);
1117                    key->ed25519_pk = NULL;
1118            }
1119            if (key->ed25519_sk) {
1120                    memset(key->ed25519_sk, 0, ED25519_SK_SZ);
1121                    free(key->ed25519_sk);
1122                    key->ed25519_sk = NULL;
1123          }          }
         free(key);  
1124  }  }
1125    
1126  //  //

Legend:
Removed from v.6145  
changed lines
  Added in v.6147

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26