| 4128 |
// based on OpenSSH 6.5:key_save_private(), key_private_to_blob2() |
// based on OpenSSH 6.5:key_save_private(), key_private_to_blob2() |
| 4129 |
static void save_bcrypt_private_key(char *passphrase, char *filename, char *comment, HWND dlg, PTInstVar pvar, int rounds) |
static void save_bcrypt_private_key(char *passphrase, char *filename, char *comment, HWND dlg, PTInstVar pvar, int rounds) |
| 4130 |
{ |
{ |
| 4131 |
SSHCipher ciphernameval = SSH_CIPHER_NONE; |
ssh2_cipher_t *cipher = NULL; |
| 4132 |
char *ciphername = DEFAULT_CIPHERNAME; |
char *ciphername = DEFAULT_CIPHERNAME; |
| 4133 |
buffer_t *b = NULL; |
buffer_t *b = NULL; |
| 4134 |
buffer_t *kdf = NULL; |
buffer_t *kdf = NULL; |
| 4156 |
kdfname = "none"; |
kdfname = "none"; |
| 4157 |
} |
} |
| 4158 |
|
|
| 4159 |
ciphernameval = get_cipher_by_name(ciphername); |
cipher = get_cipher_by_name(ciphername); |
| 4160 |
blocksize = get_cipher_block_size(ciphernameval); |
blocksize = get_cipher_block_size(cipher); |
| 4161 |
keylen = get_cipher_key_len(ciphernameval); |
keylen = get_cipher_key_len(cipher); |
| 4162 |
ivlen = blocksize; |
ivlen = blocksize; |
| 4163 |
authlen = 0; // TODO: とりあえず固定化 |
authlen = 0; // TODO: とりあえず固定化 |
| 4164 |
key = calloc(1, keylen + ivlen); |
key = calloc(1, keylen + ivlen); |
| 4176 |
// TODO: OpenSSH 6.5では -Z オプションで、暗号化アルゴリズムを指定可能だが、 |
// TODO: OpenSSH 6.5では -Z オプションで、暗号化アルゴリズムを指定可能だが、 |
| 4177 |
// ここでは"AES256-CBC"に固定とする。 |
// ここでは"AES256-CBC"に固定とする。 |
| 4178 |
cipher_init_SSH2(&cipher_ctx, key, keylen, key + keylen, ivlen, CIPHER_ENCRYPT, |
cipher_init_SSH2(&cipher_ctx, key, keylen, key + keylen, ivlen, CIPHER_ENCRYPT, |
| 4179 |
get_cipher_EVP_CIPHER(ciphernameval), 0, 0, pvar); |
get_cipher_EVP_CIPHER(cipher), 0, 0, pvar); |
| 4180 |
SecureZeroMemory(key, keylen + ivlen); |
SecureZeroMemory(key, keylen + ivlen); |
| 4181 |
free(key); |
free(key); |
| 4182 |
|
|