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 6158 by maya, Thu Nov 19 10:54:12 2015 UTC revision 6229 by yutakapon, Fri Jan 1 11:06:37 2016 UTC
# Line 134  int ssh_dss_verify(DSA *key, Line 134  int ssh_dss_verify(DSA *key,
134          EVP_DigestFinal(&md, digest, &dlen);          EVP_DigestFinal(&md, digest, &dlen);
135    
136          ret = DSA_do_verify(digest, dlen, sig, key);          ret = DSA_do_verify(digest, dlen, sig, key);
137          memset(digest, 'd', sizeof(digest));          SecureZeroMemory(digest, sizeof(digest));
138    
139          DSA_SIG_free(sig);          DSA_SIG_free(sig);
140    
# Line 308  int ssh_rsa_verify(RSA *key, Line 308  int ssh_rsa_verify(RSA *key,
308    
309          ret = openssh_RSA_verify(nid, digest, dlen, sigblob, len, key);          ret = openssh_RSA_verify(nid, digest, dlen, sigblob, len, key);
310    
311          memset(digest, 'd', sizeof(digest));          SecureZeroMemory(digest, sizeof(digest));
312          memset(sigblob, 's', len);          SecureZeroMemory(sigblob, len);
313          //free(sigblob);          //free(sigblob);
314          //debug("ssh_rsa_verify: signature %scorrect", (ret==0) ? "in" : "");          //debug("ssh_rsa_verify: signature %scorrect", (ret==0) ? "in" : "");
315    
# Line 372  int ssh_ecdsa_verify(EC_KEY *key, ssh_ke Line 372  int ssh_ecdsa_verify(EC_KEY *key, ssh_ke
372          EVP_DigestFinal(&md, digest, &dlen);          EVP_DigestFinal(&md, digest, &dlen);
373    
374          ret = ECDSA_do_verify(digest, dlen, sig, key);          ret = ECDSA_do_verify(digest, dlen, sig, key);
375          memset(digest, 'd', sizeof(digest));          SecureZeroMemory(digest, sizeof(digest));
376    
377          ECDSA_SIG_free(sig);          ECDSA_SIG_free(sig);
378    
# Line 434  error: Line 434  error:
434          free(ktype);          free(ktype);
435    
436          if (sigblob) {          if (sigblob) {
437                  memset(sigblob, 's', len);                  SecureZeroMemory(sigblob, len);
438                  free(sigblob);                  free(sigblob);
439          }          }
440          if (sm) {          if (sm) {
441                  memset(sm, 'S', (size_t)smlen);                  SecureZeroMemory(sm, (size_t)smlen);
442                  free(sm);                  free(sm);
443          }          }
444          if (m) {          if (m) {
445                  memset(m, 'm', (size_t)smlen); /* NB. mlen may be invalid if ret != 0 */                  SecureZeroMemory(m, (size_t)smlen); /* NB. mlen may be invalid if ret != 0 */
446                  free(m);                  free(m);
447          }          }
448    
# Line 660  char* key_fingerprint_raw(Key *k, enum d Line 660  char* key_fingerprint_raw(Key *k, enum d
660                  EVP_DigestInit(&ctx, md);                  EVP_DigestInit(&ctx, md);
661                  EVP_DigestUpdate(&ctx, blob, len);                  EVP_DigestUpdate(&ctx, blob, len);
662                  EVP_DigestFinal(&ctx, retval, dgst_raw_length);                  EVP_DigestFinal(&ctx, retval, dgst_raw_length);
663                  memset(blob, 0, len);                  SecureZeroMemory(blob, len);
664                  free(blob);                  free(blob);
665          } else {          } else {
666                  //fatal("key_fingerprint_raw: blob is null");                  //fatal("key_fingerprint_raw: blob is null");
# Line 905  char *key_fingerprint(Key *key, enum fp_ Line 905  char *key_fingerprint(Key *key, enum fp_
905                  break;                  break;
906          }          }
907    
908          memset(dgst_raw, 0, dgst_raw_len);          SecureZeroMemory(dgst_raw, dgst_raw_len);
909          free(dgst_raw);          free(dgst_raw);
910    
911          return (retval);          return (retval);
# Line 1118  void key_init(Key *key) Line 1118  void key_init(Key *key)
1118                  key->ecdsa = NULL;                  key->ecdsa = NULL;
1119          }          }
1120          if (key->ed25519_pk != NULL) {          if (key->ed25519_pk != NULL) {
1121                  memset(key->ed25519_pk, 0, ED25519_PK_SZ);                  SecureZeroMemory(key->ed25519_pk, ED25519_PK_SZ);
1122                  free(key->ed25519_pk);                  free(key->ed25519_pk);
1123                  key->ed25519_pk = NULL;                  key->ed25519_pk = NULL;
1124          }          }
1125          if (key->ed25519_sk) {          if (key->ed25519_sk) {
1126                  memset(key->ed25519_sk, 0, ED25519_SK_SZ);                  SecureZeroMemory(key->ed25519_sk, ED25519_SK_SZ);
1127                  free(key->ed25519_sk);                  free(key->ed25519_sk);
1128                  key->ed25519_sk = NULL;                  key->ed25519_sk = NULL;
1129          }          }
# Line 1431  static int ssh_ed25519_sign(Key *key, ch Line 1431  static int ssh_ed25519_sign(Key *key, ch
1431                  memcpy(*sigp, buffer_ptr(b), len);                  memcpy(*sigp, buffer_ptr(b), len);
1432          }          }
1433          buffer_free(b);          buffer_free(b);
1434          memset(sig, 's', slen);          SecureZeroMemory(sig, slen);
1435          free(sig);          free(sig);
1436    
1437          return 0;          return 0;
# Line 1471  BOOL generate_SSH2_keysign(Key *keypair, Line 1471  BOOL generate_SSH2_keysign(Key *keypair,
1471    
1472                  // 電子署名を計算                  // 電子署名を計算
1473                  ok = RSA_sign(nid, digest, dlen, sig, &len, keypair->rsa);                  ok = RSA_sign(nid, digest, dlen, sig, &len, keypair->rsa);
1474                  memset(digest, 'd', sizeof(digest));                  SecureZeroMemory(digest, sizeof(digest));
1475                  if (ok != 1) { // error                  if (ok != 1) { // error
1476                          free(sig);                          free(sig);
1477                          goto error;                          goto error;
# Line 1523  BOOL generate_SSH2_keysign(Key *keypair, Line 1523  BOOL generate_SSH2_keysign(Key *keypair,
1523    
1524                  // DSA電子署名を計算                  // DSA電子署名を計算
1525                  sig = DSA_do_sign(digest, dlen, keypair->dsa);                  sig = DSA_do_sign(digest, dlen, keypair->dsa);
1526                  memset(digest, 'd', sizeof(digest));                  SecureZeroMemory(digest, sizeof(digest));
1527                  if (sig == NULL) {                  if (sig == NULL) {
1528                          goto error;                          goto error;
1529                  }                  }
# Line 1576  BOOL generate_SSH2_keysign(Key *keypair, Line 1576  BOOL generate_SSH2_keysign(Key *keypair,
1576                  EVP_DigestFinal(&md, digest, &dlen);                  EVP_DigestFinal(&md, digest, &dlen);
1577    
1578                  sig = ECDSA_do_sign(digest, dlen, keypair->ecdsa);                  sig = ECDSA_do_sign(digest, dlen, keypair->ecdsa);
1579                  memset(digest, 'd', sizeof(digest));                  SecureZeroMemory(digest, sizeof(digest));
1580    
1581                  if (sig == NULL) {                  if (sig == NULL) {
1582                          goto error;                          goto error;

Legend:
Removed from v.6158  
changed lines
  Added in v.6229

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