| 478 |
return (ret); // success |
return (ret); // success |
| 479 |
} |
} |
| 480 |
|
|
| 481 |
|
static char FAR *copy_mp_int(char FAR * num) |
| 482 |
|
{ |
| 483 |
|
int len = (get_ushort16_MSBfirst(num) + 7) / 8 + 2; |
| 484 |
|
char FAR *result = (char FAR *) malloc(len); |
| 485 |
|
|
| 486 |
|
if (result != NULL) { |
| 487 |
|
memcpy(result, num, len); |
| 488 |
|
} |
| 489 |
|
|
| 490 |
|
return result; |
| 491 |
|
} |
| 492 |
|
|
| 493 |
// |
// |
| 494 |
// RSA構造体の複製 |
// RSA構造体の複製 |
| 495 |
// |
// |
| 559 |
return (ptr); |
return (ptr); |
| 560 |
} |
} |
| 561 |
|
|
| 562 |
|
BOOL key_copy(Key *dest, Key *src) |
| 563 |
|
{ |
| 564 |
|
switch (src->type) { |
| 565 |
|
case KEY_RSA1: // SSH1 |
| 566 |
|
dest->type = KEY_RSA1; |
| 567 |
|
dest->bits = src->bits; |
| 568 |
|
dest->exp = copy_mp_int(src->exp); |
| 569 |
|
dest->mod = copy_mp_int(src->mod); |
| 570 |
|
break; |
| 571 |
|
case KEY_RSA: // SSH2 RSA |
| 572 |
|
dest->type = KEY_RSA; |
| 573 |
|
dest->rsa = duplicate_RSA(src->rsa); |
| 574 |
|
break; |
| 575 |
|
case KEY_DSA: // SSH2 DSA |
| 576 |
|
dest->type = KEY_DSA; |
| 577 |
|
dest->dsa = duplicate_DSA(src->dsa); |
| 578 |
|
break; |
| 579 |
|
case KEY_ECDSA256: |
| 580 |
|
case KEY_ECDSA384: |
| 581 |
|
case KEY_ECDSA521: |
| 582 |
|
dest->type = src->type; |
| 583 |
|
dest->ecdsa = EC_KEY_dup(src->ecdsa); |
| 584 |
|
break; |
| 585 |
|
case KEY_ED25519: |
| 586 |
|
dest->type = src->type; |
| 587 |
|
dest->ed25519_pk = duplicate_ED25519_PK(src->ed25519_pk); |
| 588 |
|
break; |
| 589 |
|
default: |
| 590 |
|
return FALSE; |
| 591 |
|
} |
| 592 |
|
return TRUE; |
| 593 |
|
} |
| 594 |
|
|
| 595 |
char* key_fingerprint_raw(Key *k, enum digest_algorithm dgst_alg, int *dgst_raw_length) |
char* key_fingerprint_raw(Key *k, enum digest_algorithm dgst_alg, int *dgst_raw_length) |
| 596 |
{ |
{ |
| 2138 |
_snprintf_s(buf, sizeof(buf), _TRUNCATE, pvar->ts->UIMsg, ctx->nold); |
_snprintf_s(buf, sizeof(buf), _TRUNCATE, pvar->ts->UIMsg, ctx->nold); |
| 2139 |
SetDlgItemText(dlg, IDC_REMOVEKEY_TEXT, buf); |
SetDlgItemText(dlg, IDC_REMOVEKEY_TEXT, buf); |
| 2140 |
|
|
| 2141 |
CheckDlgButton(dlg, IDC_FP_HASH_ALG_MD5, TRUE); |
CheckDlgButton(dlg, IDC_FP_HASH_ALG_SHA256, TRUE); |
| 2142 |
hosts_updatekey_dlg_set_fingerprint(pvar, dlg, SSH_DIGEST_MD5); |
hosts_updatekey_dlg_set_fingerprint(pvar, dlg, SSH_DIGEST_SHA256); |
| 2143 |
|
|
| 2144 |
GetDlgItemText(dlg, IDOK, uimsg, sizeof(uimsg)); |
GetDlgItemText(dlg, IDOK, uimsg, sizeof(uimsg)); |
| 2145 |
UTIL_get_lang_msg("BTN_YES", pvar, uimsg); |
UTIL_get_lang_msg("BTN_YES", pvar, uimsg); |