| 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 |
|
|
| 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 |
|
|
| 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 |
|
|
| 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 |
|
|
| 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"); |
| 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); |
| 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 |
} |
} |
| 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; |
| 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; |
| 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 |
} |
} |
| 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; |