svnno****@sourc*****
svnno****@sourc*****
2014年 3月 11日 (火) 13:44:22 JST
Revision: 5523 http://sourceforge.jp/projects/ttssh2/scm/svn/commits/5523 Author: yutakapon Date: 2014-03-11 13:44:21 +0900 (Tue, 11 Mar 2014) Log Message: ----------- 秘密鍵ファイルが正常に生成できていなかった問題を修正した。 TTSSH で生成した鍵ファイルを使って、OpenSSHクライアントとサーバ間で、 ユーザ認証が通ることを確認した。 Modified Paths: -------------- branches/ssh_ed25519/ttssh2/ttxssh/buffer.c branches/ssh_ed25519/ttssh2/ttxssh/buffer.h branches/ssh_ed25519/ttssh2/ttxssh/ttxssh.c -------------- next part -------------- Modified: branches/ssh_ed25519/ttssh2/ttxssh/buffer.c =================================================================== --- branches/ssh_ed25519/ttssh2/ttxssh/buffer.c 2014-03-11 03:12:56 UTC (rev 5522) +++ branches/ssh_ed25519/ttssh2/ttxssh/buffer.c 2014-03-11 04:44:21 UTC (rev 5523) @@ -58,12 +58,15 @@ } } -// \x83o\x83b\x83t\x83@\x82̗̈\xE6\x8Ag\x92\xA3\x82݂̂\xF0\x8Ds\x82\xA4\x81B -void buffer_append_space(buffer_t * buf, int size) +// \x83o\x83b\x83t\x83@\x82̗̈\xE6\x8Ag\x92\xA3\x82\xF0\x8Ds\x82\xA4\x81B +// \x83o\x83b\x83t\x83@\x82̃I\x83t\x83Z\x83b\x83g\x82͊g\x92\xA3\x95\xAA\x82\xBE\x82\xAF\x8C\xE3\x82\xEB\x82ɂ\xB8\x82\xEA\x82\xE9\x81B +// return: \x8Ag\x92\xA3\x91O\x82̃o\x83b\x83t\x83@\x83|\x83C\x83\x93\x83^\x81[ +void *buffer_append_space(buffer_t * buf, int size) { int n; int ret = -1; int newlen; + void *p; n = buf->offset + size; if (n < buf->maxlen) { @@ -80,13 +83,18 @@ buf->maxlen = newlen; } - return; + p = buf->buf + buf->offset; + buf->offset += size; + buf->len = buf->offset; + return (p); + panic: { char *p = NULL; *p = 0; // application fault } + return (NULL); } int buffer_append(buffer_t * buf, char *ptr, int size) Modified: branches/ssh_ed25519/ttssh2/ttxssh/buffer.h =================================================================== --- branches/ssh_ed25519/ttssh2/ttxssh/buffer.h 2014-03-11 03:12:56 UTC (rev 5522) +++ branches/ssh_ed25519/ttssh2/ttxssh/buffer.h 2014-03-11 04:44:21 UTC (rev 5523) @@ -15,7 +15,7 @@ void buffer_clear(buffer_t *buf); buffer_t *buffer_init(void); void buffer_free(buffer_t *buf); -void buffer_append_space(buffer_t * buf, int size); +void *buffer_append_space(buffer_t * buf, int size); int buffer_append(buffer_t *buf, char *ptr, int size); int buffer_append_length(buffer_t *msg, char *ptr, int size); void buffer_put_raw(buffer_t *msg, char *ptr, int size); Modified: branches/ssh_ed25519/ttssh2/ttxssh/ttxssh.c =================================================================== --- branches/ssh_ed25519/ttssh2/ttxssh/ttxssh.c 2014-03-11 03:12:56 UTC (rev 5522) +++ branches/ssh_ed25519/ttssh2/ttxssh/ttxssh.c 2014-03-11 04:44:21 UTC (rev 5523) @@ -4171,8 +4171,7 @@ buffer_put_int(encoded, buffer_len(b)); /* encrypt */ - buffer_append_space(encoded, buffer_len(b) + authlen); - cp = buffer_ptr(encoded); + cp = buffer_append_space(encoded, buffer_len(b) + authlen); if (EVP_Cipher(&cipher_ctx, cp, buffer_ptr(b), buffer_len(b)) == 0) { //strncpy_s(errmsg, errmsg_len, "Key decrypt error", _TRUNCATE); //free(decrypted); @@ -4180,29 +4179,29 @@ } cipher_cleanup_SSH2(&cipher_ctx); - len = 2 * buffer_len(encoded); - cp = malloc(len); - n = uuencode(buffer_ptr(encoded), buffer_len(encoded), (char *)cp, len); - if (n < 0) { - free(cp); - goto ed25519_error; - } - - buffer_clear(blob); - buffer_append(blob, MARK_BEGIN, sizeof(MARK_BEGIN) - 1); - for (i = 0; i < n; i++) { - buffer_put_char(blob, cp[i]); - if (i % 70 == 69) - buffer_put_char(blob, '\n'); - } - if (i % 70 != 69) - buffer_put_char(blob, '\n'); - buffer_append(blob, MARK_END, sizeof(MARK_END) - 1); - free(cp); - - len = buffer_len(blob); - - // \x94閧\x8C\xAE\x82\xF0\x83t\x83@\x83C\x83\x8B\x82ɕۑ\xB6\x82\xB7\x82\xE9\x81B + len = 2 * buffer_len(encoded); + cp = malloc(len); + n = uuencode(buffer_ptr(encoded), buffer_len(encoded), (char *)cp, len); + if (n < 0) { + free(cp); + goto ed25519_error; + } + + buffer_clear(blob); + buffer_append(blob, MARK_BEGIN, sizeof(MARK_BEGIN) - 1); + for (i = 0; i < n; i++) { + buffer_put_char(blob, cp[i]); + if (i % 70 == 69) + buffer_put_char(blob, '\n'); + } + if (i % 70 != 69) + buffer_put_char(blob, '\n'); + buffer_append(blob, MARK_END, sizeof(MARK_END) - 1); + free(cp); + + len = buffer_len(blob); + + // \x94閧\x8C\xAE\x82\xF0\x83t\x83@\x83C\x83\x8B\x82ɕۑ\xB6\x82\xB7\x82\xE9\x81B fp = fopen(filename, "w"); if (fp == NULL) { UTIL_get_lang_msg("MSG_SAVE_KEY_OPENFILE_ERROR", pvar, @@ -4221,8 +4220,8 @@ MessageBox(dlg, uimsg, pvar->ts->UIMsg, MB_OK | MB_ICONEXCLAMATION); } fclose(fp); - + ed25519_error: buffer_free(b); buffer_free(kdf);