Develop and Download Open Source Software

Browse Subversion Repository

Diff of /trunk/ttssh2/ttxssh/cipher-3des1.c

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

revision 9255 by nmaya, Wed May 19 14:11:26 2021 UTC revision 9692 by nmaya, Sun Jan 16 15:16:19 2022 UTC
# Line 52  struct ssh1_3des_ctx Line 52  struct ssh1_3des_ctx
52  };  };
53    
54  const EVP_CIPHER * evp_ssh1_3des(void);  const EVP_CIPHER * evp_ssh1_3des(void);
 int ssh1_3des_iv(EVP_CIPHER_CTX *, int, u_char *, int);  
55    
56  static int ssh1_3des_init(EVP_CIPHER_CTX *ctx, const u_char *key, const u_char *iv, int enc)  static int ssh1_3des_init(EVP_CIPHER_CTX *ctx, const u_char *key, const u_char *iv, int enc)
57  {  {
# Line 124  static int ssh1_3des_cleanup(EVP_CIPHER_ Line 123  static int ssh1_3des_cleanup(EVP_CIPHER_
123          return 1;          return 1;
124  }  }
125    
 // ssh1_3des_iv は未使用。  
 int ssh1_3des_iv(EVP_CIPHER_CTX *evp, int doset, u_char *iv, int len)  
 {  
         struct ssh1_3des_ctx *c;  
   
         if (len != 24) {  
                 //fatal("%s: bad 3des iv length: %d", __func__, len);  
                 return SSH_ERR_INVALID_ARGUMENT;  
         }  
   
         if ((c = EVP_CIPHER_CTX_get_app_data(evp)) == NULL) {  
                 //fatal("%s: no 3des context", __func__);  
                 return SSH_ERR_INTERNAL_ERROR;  
         }  
   
         if (doset) {  
                 //debug3("%s: Installed 3DES IV", __func__);  
                 memcpy(EVP_CIPHER_CTX_iv_noconst(c->k1), iv, 8);  
                 memcpy(EVP_CIPHER_CTX_iv_noconst(c->k2), iv + 8, 8);  
                 memcpy(EVP_CIPHER_CTX_iv_noconst(c->k3), iv + 16, 8);  
         } else {  
                 //debug3("%s: Copying 3DES IV", __func__);  
                 memcpy(iv, EVP_CIPHER_CTX_iv(c->k1), 8);  
                 memcpy(iv + 8, EVP_CIPHER_CTX_iv(c->k2), 8);  
                 memcpy(iv + 16, EVP_CIPHER_CTX_iv(c->k3), 8);  
         }  
         return 0;  
 }  
   
126  const EVP_CIPHER *evp_ssh1_3des(void)  const EVP_CIPHER *evp_ssh1_3des(void)
127  {  {
128    #ifndef LIBRESSL_VERSION_NUMBER
129          static EVP_CIPHER *p = NULL;          static EVP_CIPHER *p = NULL;
130    
131          if (p == NULL) {          if (p == NULL) {
# Line 169  const EVP_CIPHER *evp_ssh1_3des(void) Line 140  const EVP_CIPHER *evp_ssh1_3des(void)
140                  EVP_CIPHER_meth_set_flags(p, EVP_CIPH_CBC_MODE | EVP_CIPH_VARIABLE_LENGTH);                  EVP_CIPHER_meth_set_flags(p, EVP_CIPH_CBC_MODE | EVP_CIPH_VARIABLE_LENGTH);
141          }          }
142          return (p);          return (p);
143    #else
144            static EVP_CIPHER ssh1_3des;
145    
146            memset(&ssh1_3des, 0, sizeof(EVP_CIPHER));
147            ssh1_3des.nid = NID_undef;
148            ssh1_3des.block_size = 8;
149            ssh1_3des.iv_len = 0;
150            ssh1_3des.key_len = 16;
151            ssh1_3des.init = ssh1_3des_init;
152            ssh1_3des.cleanup = ssh1_3des_cleanup;
153            ssh1_3des.do_cipher = ssh1_3des_cbc;
154            ssh1_3des.flags = EVP_CIPH_CBC_MODE | EVP_CIPH_VARIABLE_LENGTH;
155            return (&ssh1_3des);
156    #endif
157  }  }

Legend:
Removed from v.9255  
changed lines
  Added in v.9692

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