Revision: 10692 https://osdn.net/projects/ttssh2/scm/svn/commits/10692 Author: zmatsuo Date: 2023-05-02 22:27:22 +0900 (Tue, 02 May 2023) Log Message: ----------- ttssh2/putty を ttssh2/libsshagent/putty へ移動 Added Paths: ----------- trunk/ttssh2/libsshagentc/ trunk/ttssh2/libsshagentc/putty/ trunk/ttssh2/libsshagentc/putty/CMakeLists.txt trunk/ttssh2/libsshagentc/putty/libputty.c trunk/ttssh2/libsshagentc/putty/libputty.h trunk/ttssh2/libsshagentc/putty/putty-import.c trunk/ttssh2/libsshagentc/putty/putty.v16.vcxproj trunk/ttssh2/libsshagentc/putty/putty.v16.vcxproj.filters trunk/ttssh2/libsshagentc/putty/putty.v17.vcxproj trunk/ttssh2/libsshagentc/putty/putty.v17.vcxproj.filters Removed Paths: ------------- trunk/ttssh2/putty/CMakeLists.txt trunk/ttssh2/putty/libputty.c trunk/ttssh2/putty/libputty.h trunk/ttssh2/putty/putty-import.c trunk/ttssh2/putty/putty.v16.vcxproj trunk/ttssh2/putty/putty.v16.vcxproj.filters trunk/ttssh2/putty/putty.v17.vcxproj trunk/ttssh2/putty/putty.v17.vcxproj.filters -------------- next part -------------- Copied: trunk/ttssh2/libsshagentc/putty/CMakeLists.txt (from rev 10691, trunk/ttssh2/putty/CMakeLists.txt) =================================================================== --- trunk/ttssh2/libsshagentc/putty/CMakeLists.txt (rev 0) +++ trunk/ttssh2/libsshagentc/putty/CMakeLists.txt 2023-05-02 13:27:22 UTC (rev 10692) @@ -0,0 +1,60 @@ +project(libputty) + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/") + +if(MINGW) + add_definitions("-D_WINDOWS") +endif() + +set(PUTTY_SRC + ../../libs/putty/aqsync.c + ../../libs/putty/callback.c + ../../libs/putty/errsock.c + ../../libs/putty/marshal.c + ../../libs/putty/memory.c + ../../libs/putty/mpint.c + ../../libs/putty/sshsh256.c + ../../libs/putty/tree234.c + ../../libs/putty/utils.c + ../../libs/putty/version.c + ../../libs/putty/windows/wincapi.c + ../../libs/putty/windows/winhandl.c + ../../libs/putty/windows/winhsock.c + ../../libs/putty/windows/winmisc.c + ../../libs/putty/windows/winnpc.c + ../../libs/putty/windows/winpgntc.c + ../../libs/putty/windows/winsecur.c + ) + +source_group( + "putty" + FILES + ${PUTTY_SRC} + ) + +set(SRC + libputty.c + libputty.h + putty-import.c + ) + +include_directories( + ../../libs/putty + ../../libs/putty/windows + . + ) + +add_library( + libputty + ${SRC} + ${PUTTY_SRC} +) + +# sshsh256.c, sshsh512.c で出るエラーを回避 +if(MINGW) + target_compile_definitions( + libputty + PRIVATE + _FORCE_SOFTWARE_SHA + ) +endif(MINGW) Copied: trunk/ttssh2/libsshagentc/putty/libputty.c (from rev 10691, trunk/ttssh2/putty/libputty.c) =================================================================== --- trunk/ttssh2/libsshagentc/putty/libputty.c (rev 0) +++ trunk/ttssh2/libsshagentc/putty/libputty.c 2023-05-02 13:27:22 UTC (rev 10692) @@ -0,0 +1,280 @@ +/* + * Copyright (C) 1994-1998 T. Teranishi + * (C) 2004- TeraTerm Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +// PuTTY is copyright 1997-2021 Simon Tatham. + +/* + * putty \x83v\x83\x8D\x83W\x83F\x83N\x83g\x82\xCD + * - libputty.c/h + * PuTTY \x82̋@\x94\\x82𗘗p\x82\xB7\x82\xE9\x83C\x83\x93\x83^\x81[\x83t\x83F\x81[\x83X + * PuTTY \x82̓\xE0\x95\x94\x8C^\x82Ƃ̕ϊ\xB7 + * - PuTTY \x82̃\\x81[\x83X\x83R\x81[\x83h (\x83v\x83\x8D\x83W\x83F\x83N\x83g\x82ɓǂݍ\x9E\x82ރt\x83@\x83C\x83\x8B\x82͍ŏ\xAC\x8C\xC0) + * -- \x93W\x8AJ\x82\xB5\x82\xBD PuTTY \x82̃\\x81[\x83X\x83t\x83@\x83C\x83\x8B\x82\xF0\x82\xBB\x82̂܂ܓǂݍ\x9E\x82\xE0\x82\xCC (Putty Files \x83O\x83\x8B\x81[\x83v\x93\xE0) + * -- putty \x83v\x83\x8D\x83W\x83F\x83N\x83g\x91\xA4\x82ɃR\x83s\x81[\x82\xB5\x82\xBD\x83\\x81[\x83X\x83R\x81[\x83h (putty-import.c) + * static \x82Ȃ\xBD\x82߂ɌĂяo\x82\xB9\x82Ȃ\xA2\x8A\x94\x82\xCC static \x82\xF0\x8AO\x82\xB7 + * putty \x82Ŏg\x82\xA4\x95\x94\x95\xAA\x82\xBE\x82\xAF\x82\x88 (putty \x82Ŏg\x82\xED\x82Ȃ\xA2\x95\x94\x95\xAA\x82ő\x9D\x82\xA6\x82Ă\xB5\x82܂\xA4\x88ˑ\xB6\x82\xF0\x97}\x90\xA7) + * \x82\xA9\x82\xE7\x90ÓI\x83\x89\x83C\x83u\x83\x89\x83\x8A libputty.lib \x82\xAC\x82\xB5\x81ATTXSSH \x82\xA9\x82烊\x83\x93\x83N\x82\xB3\x82\xEA\x82ė\x98\x97p\x82\xB3\x82\xEA\x82\xE9\x81B + * \x82\xBB\x82̂\xBD\x82߁ATTXSSH \x91\xA4\x82̒\xE8\x8B`\x82͎\x9D\x82\xBF\x8D\x9E\x82܂Ȃ\xA2\x81B + */ + +#include <stdio.h> +#include <windows.h> +#include <assert.h> + +#include "ssh.h" +#include "mpint.h" + +#include "libputty.h" + + +// pageant.c +typedef struct KeyListEntry { + ptrlen blob, comment; + uint32_t flags; +} KeyListEntry; +typedef struct KeyList { + strbuf *raw_data; + KeyListEntry *keys; + size_t nkeys; + bool broken; +} KeyList; + +// putty.h +// aqsync.c +extern void agent_query_synchronous(strbuf *in, void **out, int *outlen); + +// pageant.c +extern void keylist_free(KeyList *kl); + +// pageant.c +extern KeyList *pageant_get_keylist(unsigned ssh_version); + +// putty.h +// windows/winpgntc.c +extern bool agent_exists(void); + + +/* + * for SSH2 + * \x8C\xAE\x82̈ꗗ\x82\xE9 + */ +int putty_get_ssh2_keylist(unsigned char **keylist) +{ + KeyList *kl; + int keylistlen = 0; + strbuf *sb_keylist = strbuf_new(); + size_t i; + + kl = pageant_get_keylist(2); + if (kl) { + if (kl->broken) { + keylist_free(kl); + strbuf_free(sb_keylist); + return 0; + } + + put_uint32(sb_keylist, kl->nkeys); + keylistlen += 4; + for (i = 0; i < kl->nkeys; i++) { + put_uint32(sb_keylist, kl->keys[i].blob.len); + keylistlen += 4; + put_datapl(sb_keylist, kl->keys[i].blob); + keylistlen += kl->keys[i].blob.len; + put_uint32(sb_keylist, kl->keys[i].comment.len); + keylistlen += 4; + put_datapl(sb_keylist, kl->keys[i].comment); + keylistlen += kl->keys[i].comment.len; + } + keylist_free(kl); + + *keylist = strbuf_to_str(sb_keylist); + + return keylistlen; + } + + strbuf_free(sb_keylist); + return 0; +} + +/* + * for SSH2 + * \x8C\xF6\x8AJ\x8C\xAE\x82ƃf\x81[\x83^\x82\xF0\x93n\x82\xB5\x81A + * \x94閧\x8C\xAE\x82ɂ\xE6\x82鏐\x96\xBC\x82\xE9 + * ssh2userauth.c (PuTTY 0.76) \x82\xA9\x82\xE7\x8Dč\\x90\xAC + */ +void *putty_sign_ssh2_key(unsigned char *pubkey /* length(4byte) + data */, + unsigned char *data, + int datalen, + int *outlen, + int signflags) +{ + void *ret; + + unsigned char *response; + void *vresponse; + int response_len; + int pubkeylen; + strbuf *agentreq = strbuf_new_for_agent_query(); + + put_byte(agentreq, SSH2_AGENTC_SIGN_REQUEST); + pubkeylen = GET_32BIT_MSB_FIRST(pubkey); + put_data(agentreq, pubkey, 4 + pubkeylen); + put_uint32(agentreq, datalen); + put_data(agentreq, data, datalen); + put_uint32(agentreq, signflags); + agent_query_synchronous(agentreq, &vresponse, &response_len); + strbuf_free(agentreq); + + response = vresponse; + if (response_len < 5 || response[4] != SSH2_AGENT_SIGN_RESPONSE) { + sfree(response); + return NULL; + } + + ret = snewn(response_len-5, unsigned char); + memcpy(ret, response+5, response_len-5); + sfree(response); + + if (outlen) + *outlen = response_len-5; + + return ret; +} + +/* + * for SSH1 + * \x8C\xAE\x82̈ꗗ\x82\xE9 + */ +int putty_get_ssh1_keylist(unsigned char **keylist) +{ + KeyList *kl; + int keylistlen = 0; + strbuf *sb_keylist = strbuf_new(); + size_t i; + + kl = pageant_get_keylist(1); + if (kl) { + if (kl->broken) { + keylist_free(kl); + strbuf_free(sb_keylist); + return 0; + } + + put_uint32(sb_keylist, kl->nkeys); + keylistlen += 4; + for (i = 0; i < kl->nkeys; i++) { + put_data(sb_keylist, kl->keys[i].blob.ptr, kl->keys[i].blob.len); + keylistlen += kl->keys[i].blob.len; + put_uint32(sb_keylist, kl->keys[i].comment.len); + keylistlen += 4; + put_datapl(sb_keylist, kl->keys[i].comment); + keylistlen += kl->keys[i].comment.len; + } + keylist_free(kl); + + *keylist = strbuf_to_str(sb_keylist); + + return keylistlen; + } + + strbuf_free(sb_keylist); + return 0; +} + +/* + * for SSH1 + * \x8C\xF6\x8AJ\x8C\xAE\x82ƈÍ\x86\x89\xBB\x83f\x81[\x83^\x82\xF0\x93n\x82\xB5 + * \x95\x9C\x8D\x86\x83f\x81[\x83^\x82̃n\x83b\x83V\x83\x85\x82\xE9 + * ssh1login.c (PuTTY 0.76) \x82\xA9\x82\xE7\x8Dč\\x90\xAC + */ +void *putty_hash_ssh1_challenge(unsigned char *pubkey, + int pubkeylen, + unsigned char *data, + int datalen, + unsigned char *session_id, + int *outlen) +{ + void *ret; + + unsigned char *response; + void *vresponse; + int response_len; + strbuf *agentreq = strbuf_new_for_agent_query(); + + put_byte(agentreq, SSH1_AGENTC_RSA_CHALLENGE); + put_data(agentreq, pubkey, pubkeylen); + put_data(agentreq, data, datalen); + put_data(agentreq, session_id, 16); + put_uint32(agentreq, 1); // response format + agent_query_synchronous(agentreq, &vresponse, &response_len); + strbuf_free(agentreq); + + response = vresponse; + if (response_len < 5+16 || response[4] != SSH1_AGENT_RSA_RESPONSE) { + sfree(response); + return NULL; + } + + ret = snewn(response_len-5, unsigned char); + memcpy(ret, response+5, response_len-5); + sfree(response); + + if (outlen) + *outlen = response_len-5; + + return ret; +} + +int putty_get_ssh1_keylen(unsigned char *key, int maxlen) +{ + return rsa_ssh1_public_blob_len(make_ptrlen(key, maxlen)); +} + +const char *putty_get_version() +{ + extern const char ver[]; /* in version.c */ + return ver; +} + +void putty_agent_query_synchronous(void *in, int inlen, void **out, int *outlen) +{ + strbuf *buf = strbuf_new(); + + put_data(buf, in, inlen); + agent_query_synchronous(buf, out, outlen); + strbuf_free(buf); +} + +BOOL putty_agent_exists() +{ + if (agent_exists()) { + return TRUE; + } + return FALSE; +} + Copied: trunk/ttssh2/libsshagentc/putty/libputty.h (from rev 10691, trunk/ttssh2/putty/libputty.h) =================================================================== --- trunk/ttssh2/libsshagentc/putty/libputty.h (rev 0) +++ trunk/ttssh2/libsshagentc/putty/libputty.h 2023-05-02 13:27:22 UTC (rev 10692) @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2008- TeraTerm Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +// PuTTY is copyright 1997-2021 Simon Tatham. + +int putty_get_ssh2_keylist(unsigned char **keylist); +void *putty_sign_ssh2_key(unsigned char *pubkey, + unsigned char *data, + int datalen, + int *outlen, + int signflags); +int putty_get_ssh1_keylist(unsigned char **keylist); +void *putty_hash_ssh1_challenge(unsigned char *pubkey, + int pubkeylen, + unsigned char *data, + int datalen, + unsigned char *session_id, + int *outlen); +int putty_get_ssh1_keylen(unsigned char *key, int maxlen); +const char *putty_get_version(); +void putty_agent_query_synchronous(void *in, int inlen, void **out, int *outlen); +BOOL putty_agent_exists(); + +// \x83G\x83\x89\x81[\x89\x9E\x93\x9A\x97p +#define SSH_AGENT_FAILURE_MSG "\x00\x00\x00\x01\x05" + +// pageant.h +#define AGENT_MAX_MSGLEN 262144 + +// puttymen.h +// memory.c +extern void safefree(void *); + Copied: trunk/ttssh2/libsshagentc/putty/putty-import.c (from rev 10691, trunk/ttssh2/putty/putty-import.c) =================================================================== --- trunk/ttssh2/libsshagentc/putty/putty-import.c (rev 0) +++ trunk/ttssh2/libsshagentc/putty/putty-import.c 2023-05-02 13:27:22 UTC (rev 10692) @@ -0,0 +1,446 @@ +/* + * Copyright (C) 1994-1998 T. Teranishi + * (C) 2004- TeraTerm Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +// PuTTY is copyright 1997-2021 Simon Tatham. + +/* + * \x83\\x81[\x83X\x91S\x91̂\xF0\x82\xBB\x82̂܂܃v\x83\x8D\x83W\x83F\x83N\x83g\x82ɒlj\xC1\x82\xB7\x82\xE9\x82ƁA + * \x8Eg\x82\xED\x82Ȃ\xA2\x95\x94\x95\xAA\x82ňˑ\xB6\x90悪\x91\x9D\x82\xA6\x81A\x82\xB3\x82\xE7\x82ɂ\xBB\x82̈ˑ\xB6\x90悪\x91\x9D\x82\xA6\x82\xBD\x82苣\x8D\x87\x82\xAA\x8BN\x82\xAB\x82\xE9\x82̂ŁA + * PuTTY \x82̃\\x81[\x83X\x82\xA9\x82\xE7\x83R\x83s\x81[\x82\xB5\x82Ă\xAB\x82\xBD\x83R\x81[\x83h + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <assert.h> + +#include "ssh.h" +#include "mpint.h" +#include "putty.h" +#include "network.h" +#include "sshcr.h" +#include "pageant.h" + + +// from pageant.c (PuTTY 0.76) +#define DECL_EXT_ENUM(id, name) id, +enum Extension { KNOWN_EXTENSIONS(DECL_EXT_ENUM) EXT_UNKNOWN }; +#define DEF_EXT_NAMES(id, name) PTRLEN_DECL_LITERAL(name), +static const ptrlen extension_names[] = { KNOWN_EXTENSIONS(DEF_EXT_NAMES) }; + +// from pageant.c (PuTTY 0.76) +typedef struct PageantClientOp { + strbuf *buf; + bool request_made; + BinarySink_DELEGATE_IMPLEMENTATION; + BinarySource_IMPLEMENTATION; +} PageantClientOp; + +// from pageant.c (PuTTY 0.76) +typedef struct KeyListEntry { + ptrlen blob, comment; + uint32_t flags; +} KeyListEntry; + +// from pageant.c (PuTTY 0.76) +typedef struct KeyList { + strbuf *raw_data; + KeyListEntry *keys; + size_t nkeys; + bool broken; +} KeyList; + +// from pageant.c (PuTTY 0.76) +static PageantClientOp *pageant_client_op_new(void) +{ + PageantClientOp *pco = snew(PageantClientOp); + pco->buf = strbuf_new_for_agent_query(); + pco->request_made = false; + BinarySink_DELEGATE_INIT(pco, pco->buf); + BinarySource_INIT(pco, "", 0); + return pco; +} + +// from pageant.c (PuTTY 0.76) +static void pageant_client_op_free(PageantClientOp *pco) +{ + if (pco->buf) + strbuf_free(pco->buf); + sfree(pco); +} + +// from pageant.c (PuTTY 0.76) +static unsigned pageant_client_op_query(PageantClientOp *pco) +{ + /* Since we use the same strbuf for the request and the response, + * check by assertion that we aren't embarrassingly sending a + * previous response back to the agent */ + assert(!pco->request_made); + pco->request_made = true; + + void *response_raw; + int resplen_raw; + agent_query_synchronous(pco->buf, &response_raw, &resplen_raw); + strbuf_clear(pco->buf); + put_data(pco->buf, response_raw, resplen_raw); + sfree(response_raw); + + /* The data coming back from agent_query_synchronous will have + * its length field prepended. So we start by parsing it as an + * SSH-formatted string, and then reinitialise our + * BinarySource with the interior of that string. */ + BinarySource_INIT_PL(pco, ptrlen_from_strbuf(pco->buf)); + BinarySource_INIT_PL(pco, get_string(pco)); + + /* Strip off and directly return the type byte, which every client + * will need, to save a boilerplate get_byte at each call site */ + unsigned reply_type = get_byte(pco); + if (get_err(pco)) + reply_type = 256; /* out-of-range code */ + return reply_type; +} + +// from pageant.c (PuTTY 0.76) +void keylist_free(KeyList *kl) +{ + sfree(kl->keys); + strbuf_free(kl->raw_data); + sfree(kl); +} + +// from pageant.c (PuTTY 0.76) +static PageantClientOp *pageant_request_keylist_1(void) +{ + PageantClientOp *pco = pageant_client_op_new(); + put_byte(pco, SSH1_AGENTC_REQUEST_RSA_IDENTITIES); + if (pageant_client_op_query(pco) == SSH1_AGENT_RSA_IDENTITIES_ANSWER) + return pco; + pageant_client_op_free(pco); + return NULL; +} + +// from pageant.c (PuTTY 0.76) +static PageantClientOp *pageant_request_keylist_2(void) +{ + PageantClientOp *pco = pageant_client_op_new(); + put_byte(pco, SSH2_AGENTC_REQUEST_IDENTITIES); + if (pageant_client_op_query(pco) == SSH2_AGENT_IDENTITIES_ANSWER) + return pco; + pageant_client_op_free(pco); + return NULL; +} + +// from pageant.c (PuTTY 0.76) +static PageantClientOp *pageant_request_keylist_extended(void) +{ + PageantClientOp *pco = pageant_client_op_new(); + put_byte(pco, SSH2_AGENTC_EXTENSION); + put_stringpl(pco, extension_names[EXT_LIST_EXTENDED]); + if (pageant_client_op_query(pco) == SSH_AGENT_SUCCESS) + return pco; + pageant_client_op_free(pco); + return NULL; +} + +// from pageant.c (PuTTY 0.76) +KeyList *pageant_get_keylist(unsigned ssh_version) +{ + PageantClientOp *pco; + bool list_is_extended = false; + + if (ssh_version == 1) { + pco = pageant_request_keylist_1(); + } else { + if ((pco = pageant_request_keylist_extended()) != NULL) + list_is_extended = true; + else + pco = pageant_request_keylist_2(); + } + + if (!pco) + return NULL; + + KeyList *kl = snew(KeyList); + kl->nkeys = get_uint32(pco); + kl->keys = snewn(kl->nkeys, struct KeyListEntry); + kl->broken = false; + + for (size_t i = 0; i < kl->nkeys && !get_err(pco); i++) { + if (ssh_version == 1) { + int bloblen = rsa_ssh1_public_blob_len( + make_ptrlen(get_ptr(pco), get_avail(pco))); + if (bloblen < 0) { + kl->broken = true; + bloblen = 0; + } + kl->keys[i].blob = get_data(pco, bloblen); + } else { + kl->keys[i].blob = get_string(pco); + } + kl->keys[i].comment = get_string(pco); + + if (list_is_extended) { + ptrlen key_ext_info = get_string(pco); + BinarySource src[1]; + BinarySource_BARE_INIT_PL(src, key_ext_info); + + kl->keys[i].flags = get_uint32(src); + } else { + kl->keys[i].flags = 0; + } + } + + if (get_err(pco)) + kl->broken = true; + kl->raw_data = pco->buf; + pco->buf = NULL; + pageant_client_op_free(pco); + return kl; +} + +// from sshrsa.c (PuTTY 0.76) +/* Given an SSH-1 public key blob, determine its length. */ +int rsa_ssh1_public_blob_len(ptrlen data) +{ + BinarySource src[1]; + + BinarySource_BARE_INIT_PL(src, data); + + /* Expect a length word, then exponent and modulus. (It doesn't + * even matter which order.) */ + get_uint32(src); + mp_free(get_mp_ssh1(src)); + mp_free(get_mp_ssh1(src)); + + if (get_err(src)) + return -1; + + /* Return the number of bytes consumed. */ + return src->pos; +} + +// from windows/winmiscs.c (PuTTY 0.76) +/* + * Windows implementation of smemclr (see misc.c) using SecureZeroMemory. + */ +void smemclr(void *b, size_t n) { + if (b && n > 0) + SecureZeroMemory(b, n); +} + +// from be_misc.c (PuTTY 0.76) +void log_proxy_stderr(Plug *plug, ProxyStderrBuf *psb, + const void *vdata, size_t len) +{ + const char *data = (const char *)vdata; + + /* + * This helper function allows us to collect the data written to a + * local proxy command's standard error in whatever size chunks we + * happen to get from its pipe, and whenever we have a complete + * line, we pass it to plug_log. + * + * (We also do this when the buffer in psb fills up, to avoid just + * allocating more and more memory forever, and also to keep Event + * Log lines reasonably bounded in size.) + * + * Prerequisites: a plug to log to, and a ProxyStderrBuf stored + * somewhere to collect any not-yet-output partial line. + */ + + while (len > 0) { + /* + * Copy as much data into psb->buf as will fit. + */ + assert(psb->size < lenof(psb->buf)); + size_t to_consume = lenof(psb->buf) - psb->size; + if (to_consume > len) + to_consume = len; + memcpy(psb->buf + psb->size, data, to_consume); + data += to_consume; + len -= to_consume; + psb->size += to_consume; + + /* + * Output any full lines in psb->buf. + */ + size_t pos = 0; + while (pos < psb->size) { + char *nlpos = memchr(psb->buf + pos, '\n', psb->size - pos); + if (!nlpos) + break; + + /* + * Found a newline in the buffer, so we can output a line. + */ + size_t endpos = nlpos - psb->buf; + while (endpos > pos && (psb->buf[endpos-1] == '\n' || + psb->buf[endpos-1] == '\r')) + endpos--; + char *msg = dupprintf( + "proxy: %.*s", (int)(endpos - pos), psb->buf + pos); + plug_log(plug, PLUGLOG_PROXY_MSG, NULL, 0, msg, 0); + sfree(msg); + + pos = nlpos - psb->buf + 1; + assert(pos <= psb->size); + } + + /* + * If the buffer is completely full and we didn't output + * anything, then output the whole thing, flagging it as a + * truncated line. + */ + if (pos == 0 && psb->size == lenof(psb->buf)) { + char *msg = dupprintf( + "proxy (partial line): %.*s", (int)psb->size, psb->buf); + plug_log(plug, PLUGLOG_PROXY_MSG, NULL, 0, msg, 0); + sfree(msg); + + pos = psb->size = 0; + } + + /* + * Now move any remaining data up to the front of the buffer. + */ + size_t newsize = psb->size - pos; + if (newsize) + memmove(psb->buf, psb->buf + pos, newsize); + psb->size = newsize; + + /* + * And loop round again if there's more data to be read from + * our input. + */ + } +} + +// from be_misc.c (PuTTY 0.76) +void psb_init(ProxyStderrBuf *psb) +{ + psb->size = 0; +} + +// from windows/winpgnt.c (PuTTY 0.76) +void noise_ultralight(NoiseSourceId id, unsigned long data) +{ + /* Pageant doesn't use random numbers, so we ignore this */ +} + +// from windows/window.c (PuTTY 0.76) +/* + * Print a modal (Really Bad) message box and perform a fatal exit. + */ +void modalfatalbox(const char *fmt, ...) +{ + va_list ap; + char *message, *title; + + va_start(ap, fmt); + message = dupvprintf(fmt, ap); + va_end(ap); + title = dupprintf("%s Fatal Error", "TTSSH"); + MessageBox(NULL, message, title, + MB_SYSTEMMODAL | MB_ICONERROR | MB_OK); + sfree(message); + sfree(title); +} + +// from misc.c (PuTTY 0.76) +void out_of_memory(void) +{ + modalfatalbox("Out of memory"); +} + + +/* +putty_get_ssh1_keylen()@libputty.c + rsa_ssh1_public_blob_len()@sshrsa.c ... import + +memory.c / mpint.c / utils.c + smemclr()@windows/winmiscs.c ... import + +safemalloc()@memory.c + out_of_memory()@misc.c ... import + modalfatalbox()@windows/window.c ... import + +wm_copydata_agent_query()@windows\winpgnt.c + got_advapi()@windows\winsecur.c ... include winsecur.c + +agent_named_pipe_name()@windows\winpgnt.c + get_username()@windows\winmisc.c ... include winmisc.c + +agent_connect()@windows\winpgnt.c + new_named_pipe_client()@winnpc.c ... include winnpc.c + connect_to_named_pipe()@winnpc.c + new_error_socket_consume_string()@errsock.c ... include errsock.c + make_handle_socket()@winsocket.c ... include winsocket.c + handle_input_new()@winhandl.c ... include winhandl.c + handle_output_new()@winhandl.c + psb_init()@be_misc.c ... import + handle_stderr()@winhsock.c + log_proxy_stderr()@be_misc.c ... import + +agent_named_pipe_name()@windows\winpgnt.c + capi_obfuscate_string()@windows\wincapi.c ... include wincapi.c + ssh_sha25****@sshsh***** ... include sshsh256.c + +handle_got_event()@windows\winhandl.c + noise_ultralight()@windows/winpgnt.c + +sk_handle_set_frozen()@windows\winhsock.c + queue_toplevel_callback()@callback.c ... include callback.c +sk_handle_close()@windows\winhsock.c + delete_callbacks_for_context()@callback.c + +winmisc.c refers to tree234 ... include tree234.c + + + +if include be_misc.c ... +backend_socket_log()@be_misc.c + sk_getaddr()@windows\winnet.c + sk_addr_needs_port()@windows\winnet.c + conf_get_int()@conf.c + logevent()@logging.c + +if include sshrsa.c ... +rsa_components()@sshrsa.c + key_components_new()@sshpubk.c + key_components_add_text()@sshpubk.c + key_components_add_mp()@sshpubk.c +ssh_rsakex_encrypt()@sshrsa.c + hash_simple()@sshauxcrypt.c +ssh_rsakex_decrypt()@sshrsa.c + hash_simple()@sshauxcrypt.c +rsa_ssh1_encrypt()@sshrsa.c + random_read()@sshrand.c + +if include sshauxcropt.c ... +mac_simple()@sshauxcropt.c coflicts mac_simple()@keyfiles-putty.c +*/ Copied: trunk/ttssh2/libsshagentc/putty/putty.v16.vcxproj (from rev 10691, trunk/ttssh2/putty/putty.v16.vcxproj) =================================================================== --- trunk/ttssh2/libsshagentc/putty/putty.v16.vcxproj (rev 0) +++ trunk/ttssh2/libsshagentc/putty/putty.v16.vcxproj 2023-05-02 13:27:22 UTC (rev 10692) @@ -0,0 +1,102 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{98CA1284-8F6C-4791-BF57-7E5FAD33744E}</ProjectGuid> + <RootNamespace>putty</RootNamespace> + <ProjectName>putty</ProjectName> + <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <PlatformToolset>v142</PlatformToolset> + <CharacterSet>NotSet</CharacterSet> + <WholeProgramOptimization>false</WholeProgramOptimization> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <PlatformToolset>v142</PlatformToolset> + <CharacterSet>NotSet</CharacterSet> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup> + <_ProjectFileVersion>12.0.30501.0</_ProjectFileVersion> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <OutDir>$(ProjectDir)$(Configuration)\</OutDir> + <IntDir>$(Configuration)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <OutDir>$(ProjectDir)$(Configuration)\</OutDir> + <IntDir>$(Configuration)\</IntDir> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <Optimization>Disabled</Optimization> + <AdditionalIncludeDirectories>$(SolutionDir)..\libs\putty;$(SolutionDir)..\libs\putty\windows;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>_WINDOWS;_CRT_SECURE_NO_DEPRECATE;SECURITY_WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <MinimalRebuild>false</MinimalRebuild> + <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> + <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> + <WarningLevel>Level3</WarningLevel> + <DebugInformationFormat>EditAndContinue</DebugInformationFormat> + <MultiProcessorCompilation>true</MultiProcessorCompilation> + </ClCompile> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <AdditionalIncludeDirectories>$(SolutionDir)..\libs\putty;$(SolutionDir)..\libs\putty\windows;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>_WINDOWS;_CRT_SECURE_NO_DEPRECATE;SECURITY_WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <RuntimeLibrary>MultiThreaded</RuntimeLibrary> + <WarningLevel>Level3</WarningLevel> + <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> + <MultiProcessorCompilation>true</MultiProcessorCompilation> + </ClCompile> + </ItemDefinitionGroup> + <ItemGroup> + <ClCompile Include="..\..\libs\putty\aqsync.c" /> + <ClCompile Include="..\..\libs\putty\callback.c" /> + <ClCompile Include="..\..\libs\putty\errsock.c" /> + <ClCompile Include="..\..\libs\putty\marshal.c" /> + <ClCompile Include="..\..\libs\putty\memory.c" /> + <ClCompile Include="..\..\libs\putty\mpint.c" /> + <ClCompile Include="..\..\libs\putty\sshsh256.c" /> + <ClCompile Include="..\..\libs\putty\tree234.c" /> + <ClCompile Include="..\..\libs\putty\utils.c" /> + <ClCompile Include="..\..\libs\putty\version.c" /> + <ClCompile Include="..\..\libs\putty\windows\wincapi.c" /> + <ClCompile Include="..\..\libs\putty\windows\winhandl.c" /> + <ClCompile Include="..\..\libs\putty\windows\winhsock.c" /> + <ClCompile Include="..\..\libs\putty\windows\winmisc.c" /> + <ClCompile Include="..\..\libs\putty\windows\winnpc.c" /> + <ClCompile Include="..\..\libs\putty\windows\winpgntc.c" /> + <ClCompile Include="..\..\libs\putty\windows\winsecur.c" /> + <ClCompile Include="libputty.c" /> + <ClCompile Include="putty-import.c" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="libputty.h" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project> \ No newline at end of file Copied: trunk/ttssh2/libsshagentc/putty/putty.v16.vcxproj.filters (from rev 10691, trunk/ttssh2/putty/putty.v16.vcxproj.filters) =================================================================== --- trunk/ttssh2/libsshagentc/putty/putty.v16.vcxproj.filters (rev 0) +++ trunk/ttssh2/libsshagentc/putty/putty.v16.vcxproj.filters 2023-05-02 13:27:22 UTC (rev 10692) @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Putty Files"> + <UniqueIdentifier>{6907d95d-706b-4797-acc8-556c5fc25181}</UniqueIdentifier> + </Filter> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\..\libs\putty\aqsync.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\callback.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\errsock.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\marshal.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\memory.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\mpint.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\sshsh256.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\tree234.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\utils.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\version.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\windows\wincapi.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\windows\winhandl.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\windows\winhsock.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\windows\winmisc.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\windows\winnpc.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\windows\winpgntc.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\windows\winsecur.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="libputty.c" /> + <ClCompile Include="putty-import.c" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="libputty.h" /> + </ItemGroup> +</Project> \ No newline at end of file Copied: trunk/ttssh2/libsshagentc/putty/putty.v17.vcxproj (from rev 10691, trunk/ttssh2/putty/putty.v17.vcxproj) =================================================================== --- trunk/ttssh2/libsshagentc/putty/putty.v17.vcxproj (rev 0) +++ trunk/ttssh2/libsshagentc/putty/putty.v17.vcxproj 2023-05-02 13:27:22 UTC (rev 10692) @@ -0,0 +1,102 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{98CA1284-8F6C-4791-BF57-7E5FAD33744E}</ProjectGuid> + <RootNamespace>putty</RootNamespace> + <ProjectName>putty</ProjectName> + <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <PlatformToolset>v143</PlatformToolset> + <CharacterSet>NotSet</CharacterSet> + <WholeProgramOptimization>false</WholeProgramOptimization> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <PlatformToolset>v143</PlatformToolset> + <CharacterSet>NotSet</CharacterSet> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup> + <_ProjectFileVersion>12.0.30501.0</_ProjectFileVersion> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <OutDir>$(ProjectDir)$(Configuration)\</OutDir> + <IntDir>$(Configuration)\</IntDir> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <OutDir>$(ProjectDir)$(Configuration)\</OutDir> + <IntDir>$(Configuration)\</IntDir> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <Optimization>Disabled</Optimization> + <AdditionalIncludeDirectories>$(SolutionDir)..\libs\putty;$(SolutionDir)..\libs\putty\windows;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>_WINDOWS;_CRT_SECURE_NO_DEPRECATE;SECURITY_WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <MinimalRebuild>false</MinimalRebuild> + <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> + <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> + <WarningLevel>Level3</WarningLevel> + <DebugInformationFormat>EditAndContinue</DebugInformationFormat> + <MultiProcessorCompilation>true</MultiProcessorCompilation> + </ClCompile> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <AdditionalIncludeDirectories>$(SolutionDir)..\libs\putty;$(SolutionDir)..\libs\putty\windows;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>_WINDOWS;_CRT_SECURE_NO_DEPRECATE;SECURITY_WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <RuntimeLibrary>MultiThreaded</RuntimeLibrary> + <WarningLevel>Level3</WarningLevel> + <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> + <MultiProcessorCompilation>true</MultiProcessorCompilation> + </ClCompile> + </ItemDefinitionGroup> + <ItemGroup> + <ClCompile Include="..\..\libs\putty\aqsync.c" /> + <ClCompile Include="..\..\libs\putty\callback.c" /> + <ClCompile Include="..\..\libs\putty\errsock.c" /> + <ClCompile Include="..\..\libs\putty\marshal.c" /> + <ClCompile Include="..\..\libs\putty\memory.c" /> + <ClCompile Include="..\..\libs\putty\mpint.c" /> + <ClCompile Include="..\..\libs\putty\sshsh256.c" /> + <ClCompile Include="..\..\libs\putty\tree234.c" /> + <ClCompile Include="..\..\libs\putty\utils.c" /> + <ClCompile Include="..\..\libs\putty\version.c" /> + <ClCompile Include="..\..\libs\putty\windows\wincapi.c" /> + <ClCompile Include="..\..\libs\putty\windows\winhandl.c" /> + <ClCompile Include="..\..\libs\putty\windows\winhsock.c" /> + <ClCompile Include="..\..\libs\putty\windows\winmisc.c" /> + <ClCompile Include="..\..\libs\putty\windows\winnpc.c" /> + <ClCompile Include="..\..\libs\putty\windows\winpgntc.c" /> + <ClCompile Include="..\..\libs\putty\windows\winsecur.c" /> + <ClCompile Include="libputty.c" /> + <ClCompile Include="putty-import.c" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="libputty.h" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project> \ No newline at end of file Copied: trunk/ttssh2/libsshagentc/putty/putty.v17.vcxproj.filters (from rev 10691, trunk/ttssh2/putty/putty.v17.vcxproj.filters) =================================================================== --- trunk/ttssh2/libsshagentc/putty/putty.v17.vcxproj.filters (rev 0) +++ trunk/ttssh2/libsshagentc/putty/putty.v17.vcxproj.filters 2023-05-02 13:27:22 UTC (rev 10692) @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="Putty Files"> + <UniqueIdentifier>{6907d95d-706b-4797-acc8-556c5fc25181}</UniqueIdentifier> + </Filter> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\..\libs\putty\aqsync.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\callback.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\errsock.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\marshal.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\memory.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\mpint.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\sshsh256.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\tree234.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\utils.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\version.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\windows\wincapi.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\windows\winhandl.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\windows\winhsock.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\windows\winmisc.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\windows\winnpc.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\windows\winpgntc.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="..\..\libs\putty\windows\winsecur.c"> + <Filter>Putty Files</Filter> + </ClCompile> + <ClCompile Include="libputty.c" /> + <ClCompile Include="putty-import.c" /> + </ItemGroup> + <ItemGroup> + <ClInclude Include="libputty.h" /> + </ItemGroup> +</Project> \ No newline at end of file Deleted: trunk/ttssh2/putty/CMakeLists.txt =================================================================== --- trunk/ttssh2/putty/CMakeLists.txt 2023-05-02 10:18:28 UTC (rev 10691) +++ trunk/ttssh2/putty/CMakeLists.txt 2023-05-02 13:27:22 UTC (rev 10692) @@ -1,60 +0,0 @@ -project(libputty) - -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/") - -if(MINGW) - add_definitions("-D_WINDOWS") -endif() - -set(PUTTY_SRC - ../../libs/putty/aqsync.c - ../../libs/putty/callback.c - ../../libs/putty/errsock.c - ../../libs/putty/marshal.c - ../../libs/putty/memory.c - ../../libs/putty/mpint.c - ../../libs/putty/sshsh256.c - ../../libs/putty/tree234.c - ../../libs/putty/utils.c - ../../libs/putty/version.c - ../../libs/putty/windows/wincapi.c - ../../libs/putty/windows/winhandl.c - ../../libs/putty/windows/winhsock.c - ../../libs/putty/windows/winmisc.c - ../../libs/putty/windows/winnpc.c - ../../libs/putty/windows/winpgntc.c - ../../libs/putty/windows/winsecur.c - ) - -source_group( - "putty" - FILES - ${PUTTY_SRC} - ) - -set(SRC - libputty.c - libputty.h - putty-import.c - ) - -include_directories( - ../../libs/putty - ../../libs/putty/windows - . - ) - -add_library( - libputty - ${SRC} - ${PUTTY_SRC} -) - -# sshsh256.c, sshsh512.c で出るエラーを回避 -if(MINGW) - target_compile_definitions( - libputty - PRIVATE - _FORCE_SOFTWARE_SHA - ) -endif(MINGW) Deleted: trunk/ttssh2/putty/libputty.c =================================================================== --- trunk/ttssh2/putty/libputty.c 2023-05-02 10:18:28 UTC (rev 10691) +++ trunk/ttssh2/putty/libputty.c 2023-05-02 13:27:22 UTC (rev 10692) @@ -1,280 +0,0 @@ -/* - * Copyright (C) 1994-1998 T. Teranishi - * (C) 2004- TeraTerm Project - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -// PuTTY is copyright 1997-2021 Simon Tatham. - -/* - * putty \x83v\x83\x8D\x83W\x83F\x83N\x83g\x82\xCD - * - libputty.c/h - * PuTTY \x82̋@\x94\\x82𗘗p\x82\xB7\x82\xE9\x83C\x83\x93\x83^\x81[\x83t\x83F\x81[\x83X - * PuTTY \x82̓\xE0\x95\x94\x8C^\x82Ƃ̕ϊ\xB7 - * - PuTTY \x82̃\\x81[\x83X\x83R\x81[\x83h (\x83v\x83\x8D\x83W\x83F\x83N\x83g\x82ɓǂݍ\x9E\x82ރt\x83@\x83C\x83\x8B\x82͍ŏ\xAC\x8C\xC0) - * -- \x93W\x8AJ\x82\xB5\x82\xBD PuTTY \x82̃\\x81[\x83X\x83t\x83@\x83C\x83\x8B\x82\xF0\x82\xBB\x82̂܂ܓǂݍ\x9E\x82\xE0\x82\xCC (Putty Files \x83O\x83\x8B\x81[\x83v\x93\xE0) - * -- putty \x83v\x83\x8D\x83W\x83F\x83N\x83g\x91\xA4\x82ɃR\x83s\x81[\x82\xB5\x82\xBD\x83\\x81[\x83X\x83R\x81[\x83h (putty-import.c) - * static \x82Ȃ\xBD\x82߂ɌĂяo\x82\xB9\x82Ȃ\xA2\x8A\x94\x82\xCC static \x82\xF0\x8AO\x82\xB7 - * putty \x82Ŏg\x82\xA4\x95\x94\x95\xAA\x82\xBE\x82\xAF\x82\x88 (putty \x82Ŏg\x82\xED\x82Ȃ\xA2\x95\x94\x95\xAA\x82ő\x9D\x82\xA6\x82Ă\xB5\x82܂\xA4\x88ˑ\xB6\x82\xF0\x97}\x90\xA7) - * \x82\xA9\x82\xE7\x90ÓI\x83\x89\x83C\x83u\x83\x89\x83\x8A libputty.lib \x82\xAC\x82\xB5\x81ATTXSSH \x82\xA9\x82烊\x83\x93\x83N\x82\xB3\x82\xEA\x82ė\x98\x97p\x82\xB3\x82\xEA\x82\xE9\x81B - * \x82\xBB\x82̂\xBD\x82߁ATTXSSH \x91\xA4\x82̒\xE8\x8B`\x82͎\x9D\x82\xBF\x8D\x9E\x82܂Ȃ\xA2\x81B - */ - -#include <stdio.h> -#include <windows.h> -#include <assert.h> - -#include "ssh.h" -#include "mpint.h" - -#include "libputty.h" - - -// pageant.c -typedef struct KeyListEntry { - ptrlen blob, comment; - uint32_t flags; -} KeyListEntry; -typedef struct KeyList { - strbuf *raw_data; - KeyListEntry *keys; - size_t nkeys; - bool broken; -} KeyList; - -// putty.h -// aqsync.c -extern void agent_query_synchronous(strbuf *in, void **out, int *outlen); - -// pageant.c -extern void keylist_free(KeyList *kl); - -// pageant.c -extern KeyList *pageant_get_keylist(unsigned ssh_version); - -// putty.h -// windows/winpgntc.c -extern bool agent_exists(void); - - -/* - * for SSH2 - * \x8C\xAE\x82̈ꗗ\x82\xE9 - */ -int putty_get_ssh2_keylist(unsigned char **keylist) -{ - KeyList *kl; - int keylistlen = 0; - strbuf *sb_keylist = strbuf_new(); - size_t i; - - kl = pageant_get_keylist(2); - if (kl) { - if (kl->broken) { - keylist_free(kl); - strbuf_free(sb_keylist); - return 0; - } - - put_uint32(sb_keylist, kl->nkeys); - keylistlen += 4; - for (i = 0; i < kl->nkeys; i++) { - put_uint32(sb_keylist, kl->keys[i].blob.len); - keylistlen += 4; - put_datapl(sb_keylist, kl->keys[i].blob); - keylistlen += kl->keys[i].blob.len; - put_uint32(sb_keylist, kl->keys[i].comment.len); - keylistlen += 4; - put_datapl(sb_keylist, kl->keys[i].comment); - keylistlen += kl->keys[i].comment.len; - } - keylist_free(kl); - - *keylist = strbuf_to_str(sb_keylist); - - return keylistlen; - } - - strbuf_free(sb_keylist); - return 0; -} - -/* - * for SSH2 - * \x8C\xF6\x8AJ\x8C\xAE\x82ƃf\x81[\x83^\x82\xF0\x93n\x82\xB5\x81A - * \x94閧\x8C\xAE\x82ɂ\xE6\x82鏐\x96\xBC\x82\xE9 - * ssh2userauth.c (PuTTY 0.76) \x82\xA9\x82\xE7\x8Dč\\x90\xAC - */ -void *putty_sign_ssh2_key(unsigned char *pubkey /* length(4byte) + data */, - unsigned char *data, - int datalen, - int *outlen, - int signflags) -{ - void *ret; - - unsigned char *response; - void *vresponse; - int response_len; - int pubkeylen; - strbuf *agentreq = strbuf_new_for_agent_query(); - - put_byte(agentreq, SSH2_AGENTC_SIGN_REQUEST); - pubkeylen = GET_32BIT_MSB_FIRST(pubkey); - put_data(agentreq, pubkey, 4 + pubkeylen); - put_uint32(agentreq, datalen); - put_data(agentreq, data, datalen); - put_uint32(agentreq, signflags); - agent_query_synchronous(agentreq, &vresponse, &response_len); - strbuf_free(agentreq); - - response = vresponse; - if (response_len < 5 || response[4] != SSH2_AGENT_SIGN_RESPONSE) { - sfree(response); - return NULL; - } - - ret = snewn(response_len-5, unsigned char); - memcpy(ret, response+5, response_len-5); - sfree(response); - - if (outlen) - *outlen = response_len-5; - - return ret; -} - -/* - * for SSH1 - * \x8C\xAE\x82̈ꗗ\x82\xE9 - */ -int putty_get_ssh1_keylist(unsigned char **keylist) -{ - KeyList *kl; - int keylistlen = 0; - strbuf *sb_keylist = strbuf_new(); - size_t i; - - kl = pageant_get_keylist(1); - if (kl) { - if (kl->broken) { - keylist_free(kl); - strbuf_free(sb_keylist); - return 0; - } - - put_uint32(sb_keylist, kl->nkeys); - keylistlen += 4; - for (i = 0; i < kl->nkeys; i++) { - put_data(sb_keylist, kl->keys[i].blob.ptr, kl->keys[i].blob.len); - keylistlen += kl->keys[i].blob.len; - put_uint32(sb_keylist, kl->keys[i].comment.len); - keylistlen += 4; - put_datapl(sb_keylist, kl->keys[i].comment); - keylistlen += kl->keys[i].comment.len; - } - keylist_free(kl); - - *keylist = strbuf_to_str(sb_keylist); - - return keylistlen; - } - - strbuf_free(sb_keylist); - return 0; -} - -/* - * for SSH1 - * \x8C\xF6\x8AJ\x8C\xAE\x82ƈÍ\x86\x89\xBB\x83f\x81[\x83^\x82\xF0\x93n\x82\xB5 - * \x95\x9C\x8D\x86\x83f\x81[\x83^\x82̃n\x83b\x83V\x83\x85\x82\xE9 - * ssh1login.c (PuTTY 0.76) \x82\xA9\x82\xE7\x8Dč\\x90\xAC - */ -void *putty_hash_ssh1_challenge(unsigned char *pubkey, - int pubkeylen, - unsigned char *data, - int datalen, - unsigned char *session_id, - int *outlen) -{ - void *ret; - - unsigned char *response; - void *vresponse; - int response_len; - strbuf *agentreq = strbuf_new_for_agent_query(); - - put_byte(agentreq, SSH1_AGENTC_RSA_CHALLENGE); - put_data(agentreq, pubkey, pubkeylen); - put_data(agentreq, data, datalen); - put_data(agentreq, session_id, 16); - put_uint32(agentreq, 1); // response format - agent_query_synchronous(agentreq, &vresponse, &response_len); - strbuf_free(agentreq); - - response = vresponse; - if (response_len < 5+16 || response[4] != SSH1_AGENT_RSA_RESPONSE) { - sfree(response); - return NULL; - } - - ret = snewn(response_len-5, unsigned char); - memcpy(ret, response+5, response_len-5); - sfree(response); - - if (outlen) - *outlen = response_len-5; - - return ret; -} - -int putty_get_ssh1_keylen(unsigned char *key, int maxlen) -{ - return rsa_ssh1_public_blob_len(make_ptrlen(key, maxlen)); -} - -const char *putty_get_version() -{ - extern const char ver[]; /* in version.c */ - return ver; -} - -void putty_agent_query_synchronous(void *in, int inlen, void **out, int *outlen) -{ - strbuf *buf = strbuf_new(); - - put_data(buf, in, inlen); - agent_query_synchronous(buf, out, outlen); - strbuf_free(buf); -} - -BOOL putty_agent_exists() -{ - if (agent_exists()) { - return TRUE; - } - return FALSE; -} - Deleted: trunk/ttssh2/putty/libputty.h =================================================================== --- trunk/ttssh2/putty/libputty.h 2023-05-02 10:18:28 UTC (rev 10691) +++ trunk/ttssh2/putty/libputty.h 2023-05-02 13:27:22 UTC (rev 10692) @@ -1,57 +0,0 @@ -/* - * Copyright (C) 2008- TeraTerm Project - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -// PuTTY is copyright 1997-2021 Simon Tatham. - -int putty_get_ssh2_keylist(unsigned char **keylist); -void *putty_sign_ssh2_key(unsigned char *pubkey, - unsigned char *data, - int datalen, - int *outlen, - int signflags); -int putty_get_ssh1_keylist(unsigned char **keylist); -void *putty_hash_ssh1_challenge(unsigned char *pubkey, - int pubkeylen, - unsigned char *data, - int datalen, - unsigned char *session_id, - int *outlen); -int putty_get_ssh1_keylen(unsigned char *key, int maxlen); -const char *putty_get_version(); -void putty_agent_query_synchronous(void *in, int inlen, void **out, int *outlen); -BOOL putty_agent_exists(); - -// \x83G\x83\x89\x81[\x89\x9E\x93\x9A\x97p -#define SSH_AGENT_FAILURE_MSG "\x00\x00\x00\x01\x05" - -// pageant.h -#define AGENT_MAX_MSGLEN 262144 - -// puttymen.h -// memory.c -extern void safefree(void *); - Deleted: trunk/ttssh2/putty/putty-import.c =================================================================== --- trunk/ttssh2/putty/putty-import.c 2023-05-02 10:18:28 UTC (rev 10691) +++ trunk/ttssh2/putty/putty-import.c 2023-05-02 13:27:22 UTC (rev 10692) @@ -1,446 +0,0 @@ -/* - * Copyright (C) 1994-1998 T. Teranishi - * (C) 2004- TeraTerm Project - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -// PuTTY is copyright 1997-2021 Simon Tatham. - -/* - * \x83\\x81[\x83X\x91S\x91̂\xF0\x82\xBB\x82̂܂܃v\x83\x8D\x83W\x83F\x83N\x83g\x82ɒlj\xC1\x82\xB7\x82\xE9\x82ƁA - * \x8Eg\x82\xED\x82Ȃ\xA2\x95\x94\x95\xAA\x82ňˑ\xB6\x90悪\x91\x9D\x82\xA6\x81A\x82\xB3\x82\xE7\x82ɂ\xBB\x82̈ˑ\xB6\x90悪\x91\x9D\x82\xA6\x82\xBD\x82苣\x8D\x87\x82\xAA\x8BN\x82\xAB\x82\xE9\x82̂ŁA - * PuTTY \x82̃\\x81[\x83X\x82\xA9\x82\xE7\x83R\x83s\x81[\x82\xB5\x82Ă\xAB\x82\xBD\x83R\x81[\x83h - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <assert.h> - -#include "ssh.h" -#include "mpint.h" -#include "putty.h" -#include "network.h" -#include "sshcr.h" -#include "pageant.h" - - -// from pageant.c (PuTTY 0.76) -#define DECL_EXT_ENUM(id, name) id, -enum Extension { KNOWN_EXTENSIONS(DECL_EXT_ENUM) EXT_UNKNOWN }; -#define DEF_EXT_NAMES(id, name) PTRLEN_DECL_LITERAL(name), -static const ptrlen extension_names[] = { KNOWN_EXTENSIONS(DEF_EXT_NAMES) }; - -// from pageant.c (PuTTY 0.76) -typedef struct PageantClientOp { - strbuf *buf; - bool request_made; - BinarySink_DELEGATE_IMPLEMENTATION; - BinarySource_IMPLEMENTATION; -} PageantClientOp; - -// from pageant.c (PuTTY 0.76) -typedef struct KeyListEntry { - ptrlen blob, comment; - uint32_t flags; -} KeyListEntry; - -// from pageant.c (PuTTY 0.76) -typedef struct KeyList { - strbuf *raw_data; - KeyListEntry *keys; - size_t nkeys; - bool broken; -} KeyList; - -// from pageant.c (PuTTY 0.76) -static PageantClientOp *pageant_client_op_new(void) -{ - PageantClientOp *pco = snew(PageantClientOp); - pco->buf = strbuf_new_for_agent_query(); - pco->request_made = false; - BinarySink_DELEGATE_INIT(pco, pco->buf); - BinarySource_INIT(pco, "", 0); - return pco; -} - -// from pageant.c (PuTTY 0.76) -static void pageant_client_op_free(PageantClientOp *pco) -{ - if (pco->buf) - strbuf_free(pco->buf); - sfree(pco); -} - -// from pageant.c (PuTTY 0.76) -static unsigned pageant_client_op_query(PageantClientOp *pco) -{ - /* Since we use the same strbuf for the request and the response, - * check by assertion that we aren't embarrassingly sending a - * previous response back to the agent */ - assert(!pco->request_made); - pco->request_made = true; - - void *response_raw; - int resplen_raw; - agent_query_synchronous(pco->buf, &response_raw, &resplen_raw); - strbuf_clear(pco->buf); - put_data(pco->buf, response_raw, resplen_raw); - sfree(response_raw); - - /* The data coming back from agent_query_synchronous will have - * its length field prepended. So we start by parsing it as an - * SSH-formatted string, and then reinitialise our - * BinarySource with the interior of that string. */ - BinarySource_INIT_PL(pco, ptrlen_from_strbuf(pco->buf)); - BinarySource_INIT_PL(pco, get_string(pco)); - - /* Strip off and directly return the type byte, which every client - * will need, to save a boilerplate get_byte at each call site */ - unsigned reply_type = get_byte(pco); - if (get_err(pco)) - reply_type = 256; /* out-of-range code */ - return reply_type; -} - -// from pageant.c (PuTTY 0.76) -void keylist_free(KeyList *kl) -{ - sfree(kl->keys); - strbuf_free(kl->raw_data); - sfree(kl); -} - -// from pageant.c (PuTTY 0.76) -static PageantClientOp *pageant_request_keylist_1(void) -{ - PageantClientOp *pco = pageant_client_op_new(); - put_byte(pco, SSH1_AGENTC_REQUEST_RSA_IDENTITIES); - if (pageant_client_op_query(pco) == SSH1_AGENT_RSA_IDENTITIES_ANSWER) - return pco; - pageant_client_op_free(pco); - return NULL; -} - -// from pageant.c (PuTTY 0.76) -static PageantClientOp *pageant_request_keylist_2(void) -{ - PageantClientOp *pco = pageant_client_op_new(); - put_byte(pco, SSH2_AGENTC_REQUEST_IDENTITIES); - if (pageant_client_op_query(pco) == SSH2_AGENT_IDENTITIES_ANSWER) - return pco; - pageant_client_op_free(pco); - return NULL; -} - -// from pageant.c (PuTTY 0.76) -static PageantClientOp *pageant_request_keylist_extended(void) -{ - PageantClientOp *pco = pageant_client_op_new(); - put_byte(pco, SSH2_AGENTC_EXTENSION); - put_stringpl(pco, extension_names[EXT_LIST_EXTENDED]); - if (pageant_client_op_query(pco) == SSH_AGENT_SUCCESS) - return pco; - pageant_client_op_free(pco); - return NULL; -} - -// from pageant.c (PuTTY 0.76) -KeyList *pageant_get_keylist(unsigned ssh_version) -{ - PageantClientOp *pco; - bool list_is_extended = false; - - if (ssh_version == 1) { - pco = pageant_request_keylist_1(); - } else { - if ((pco = pageant_request_keylist_extended()) != NULL) - list_is_extended = true; - else - pco = pageant_request_keylist_2(); - } - - if (!pco) - return NULL; - - KeyList *kl = snew(KeyList); - kl->nkeys = get_uint32(pco); - kl->keys = snewn(kl->nkeys, struct KeyListEntry); - kl->broken = false; - - for (size_t i = 0; i < kl->nkeys && !get_err(pco); i++) { - if (ssh_version == 1) { - int bloblen = rsa_ssh1_public_blob_len( - make_ptrlen(get_ptr(pco), get_avail(pco))); - if (bloblen < 0) { - kl->broken = true; - bloblen = 0; - } - kl->keys[i].blob = get_data(pco, bloblen); - } else { - kl->keys[i].blob = get_string(pco); - } - kl->keys[i].comment = get_string(pco); - - if (list_is_extended) { - ptrlen key_ext_info = get_string(pco); - BinarySource src[1]; - BinarySource_BARE_INIT_PL(src, key_ext_info); - - kl->keys[i].flags = get_uint32(src); - } else { - kl->keys[i].flags = 0; - } - } - - if (get_err(pco)) - kl->broken = true; - kl->raw_data = pco->buf; - pco->buf = NULL; - pageant_client_op_free(pco); - return kl; -} - -// from sshrsa.c (PuTTY 0.76) -/* Given an SSH-1 public key blob, determine its length. */ -int rsa_ssh1_public_blob_len(ptrlen data) -{ - BinarySource src[1]; - - BinarySource_BARE_INIT_PL(src, data); - - /* Expect a length word, then exponent and modulus. (It doesn't - * even matter which order.) */ - get_uint32(src); - mp_free(get_mp_ssh1(src)); - mp_free(get_mp_ssh1(src)); - - if (get_err(src)) - return -1; - - /* Return the number of bytes consumed. */ - return src->pos; -} - -// from windows/winmiscs.c (PuTTY 0.76) -/* - * Windows implementation of smemclr (see misc.c) using SecureZeroMemory. - */ -void smemclr(void *b, size_t n) { - if (b && n > 0) - SecureZeroMemory(b, n); -} - -// from be_misc.c (PuTTY 0.76) -void log_proxy_stderr(Plug *plug, ProxyStderrBuf *psb, - const void *vdata, size_t len) -{ - const char *data = (const char *)vdata; - - /* - * This helper function allows us to collect the data written to a - * local proxy command's standard error in whatever size chunks we - * happen to get from its pipe, and whenever we have a complete - * line, we pass it to plug_log. - * - * (We also do this when the buffer in psb fills up, to avoid just - * allocating more and more memory forever, and also to keep Event - * Log lines reasonably bounded in size.) - * - * Prerequisites: a plug to log to, and a ProxyStderrBuf stored - * somewhere to collect any not-yet-output partial line. - */ - - while (len > 0) { - /* - * Copy as much data into psb->buf as will fit. - */ - assert(psb->size < lenof(psb->buf)); - size_t to_consume = lenof(psb->buf) - psb->size; - if (to_consume > len) - to_consume = len; - memcpy(psb->buf + psb->size, data, to_consume); - data += to_consume; - len -= to_consume; - psb->size += to_consume; - - /* - * Output any full lines in psb->buf. - */ - size_t pos = 0; - while (pos < psb->size) { - char *nlpos = memchr(psb->buf + pos, '\n', psb->size - pos); - if (!nlpos) - break; - - /* - * Found a newline in the buffer, so we can output a line. - */ - size_t endpos = nlpos - psb->buf; - while (endpos > pos && (psb->buf[endpos-1] == '\n' || - psb->buf[endpos-1] == '\r')) - endpos--; - char *msg = dupprintf( - "proxy: %.*s", (int)(endpos - pos), psb->buf + pos); - plug_log(plug, PLUGLOG_PROXY_MSG, NULL, 0, msg, 0); - sfree(msg); - - pos = nlpos - psb->buf + 1; - assert(pos <= psb->size); - } - - /* - * If the buffer is completely full and we didn't output - * anything, then output the whole thing, flagging it as a - * truncated line. - */ - if (pos == 0 && psb->size == lenof(psb->buf)) { - char *msg = dupprintf( - "proxy (partial line): %.*s", (int)psb->size, psb->buf); - plug_log(plug, PLUGLOG_PROXY_MSG, NULL, 0, msg, 0); - sfree(msg); - - pos = psb->size = 0; - } - - /* - * Now move any remaining data up to the front of the buffer. - */ - size_t newsize = psb->size - pos; - if (newsize) - memmove(psb->buf, psb->buf + pos, newsize); - psb->size = newsize; - - /* - * And loop round again if there's more data to be read from - * our input. - */ - } -} - -// from be_misc.c (PuTTY 0.76) -void psb_init(ProxyStderrBuf *psb) -{ - psb->size = 0; -} - -// from windows/winpgnt.c (PuTTY 0.76) -void noise_ultralight(NoiseSourceId id, unsigned long data) -{ - /* Pageant doesn't use random numbers, so we ignore this */ -} - -// from windows/window.c (PuTTY 0.76) -/* - * Print a modal (Really Bad) message box and perform a fatal exit. - */ -void modalfatalbox(const char *fmt, ...) -{ - va_list ap; - char *message, *title; - - va_start(ap, fmt); - message = dupvprintf(fmt, ap); - va_end(ap); - title = dupprintf("%s Fatal Error", "TTSSH"); - MessageBox(NULL, message, title, - MB_SYSTEMMODAL | MB_ICONERROR | MB_OK); - sfree(message); - sfree(title); -} - -// from misc.c (PuTTY 0.76) -void out_of_memory(void) -{ - modalfatalbox("Out of memory"); -} - - -/* -putty_get_ssh1_keylen()@libputty.c - rsa_ssh1_public_blob_len()@sshrsa.c ... import - -memory.c / mpint.c / utils.c - smemclr()@windows/winmiscs.c ... import - -safemalloc()@memory.c - out_of_memory()@misc.c ... import - modalfatalbox()@windows/window.c ... import - -wm_copydata_agent_query()@windows\winpgnt.c - got_advapi()@windows\winsecur.c ... include winsecur.c - -agent_named_pipe_name()@windows\winpgnt.c - get_username()@windows\winmisc.c ... include winmisc.c - -agent_connect()@windows\winpgnt.c - new_named_pipe_client()@winnpc.c ... include winnpc.c - connect_to_named_pipe()@winnpc.c - new_error_socket_consume_string()@errsock.c ... include errsock.c - make_handle_socket()@winsocket.c ... include winsocket.c - handle_input_new()@winhandl.c ... include winhandl.c - handle_output_new()@winhandl.c - psb_init()@be_misc.c ... import - handle_stderr()@winhsock.c - log_proxy_stderr()@be_misc.c ... import - -agent_named_pipe_name()@windows\winpgnt.c - capi_obfuscate_string()@windows\wincapi.c ... include wincapi.c - ssh_sha25****@sshsh***** ... include sshsh256.c - -handle_got_event()@windows\winhandl.c - noise_ultralight()@windows/winpgnt.c - -sk_handle_set_frozen()@windows\winhsock.c - queue_toplevel_callback()@callback.c ... include callback.c -sk_handle_close()@windows\winhsock.c - delete_callbacks_for_context()@callback.c - -winmisc.c refers to tree234 ... include tree234.c - - - -if include be_misc.c ... -backend_socket_log()@be_misc.c - sk_getaddr()@windows\winnet.c - sk_addr_needs_port()@windows\winnet.c - conf_get_int()@conf.c - logevent()@logging.c - -if include sshrsa.c ... -rsa_components()@sshrsa.c - key_components_new()@sshpubk.c - key_components_add_text()@sshpubk.c - key_components_add_mp()@sshpubk.c -ssh_rsakex_encrypt()@sshrsa.c - hash_simple()@sshauxcrypt.c -ssh_rsakex_decrypt()@sshrsa.c - hash_simple()@sshauxcrypt.c -rsa_ssh1_encrypt()@sshrsa.c - random_read()@sshrand.c - -if include sshauxcropt.c ... -mac_simple()@sshauxcropt.c coflicts mac_simple()@keyfiles-putty.c -*/ Deleted: trunk/ttssh2/putty/putty.v16.vcxproj =================================================================== --- trunk/ttssh2/putty/putty.v16.vcxproj 2023-05-02 10:18:28 UTC (rev 10691) +++ trunk/ttssh2/putty/putty.v16.vcxproj 2023-05-02 13:27:22 UTC (rev 10692) @@ -1,102 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup Label="ProjectConfigurations"> - <ProjectConfiguration Include="Debug|Win32"> - <Configuration>Debug</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Win32"> - <Configuration>Release</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - </ItemGroup> - <PropertyGroup Label="Globals"> - <ProjectGuid>{98CA1284-8F6C-4791-BF57-7E5FAD33744E}</ProjectGuid> - <RootNamespace>putty</RootNamespace> - <ProjectName>putty</ProjectName> - <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> - <ConfigurationType>StaticLibrary</ConfigurationType> - <PlatformToolset>v142</PlatformToolset> - <CharacterSet>NotSet</CharacterSet> - <WholeProgramOptimization>false</WholeProgramOptimization> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> - <ConfigurationType>StaticLibrary</ConfigurationType> - <PlatformToolset>v142</PlatformToolset> - <CharacterSet>NotSet</CharacterSet> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> - <ImportGroup Label="ExtensionSettings"> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <PropertyGroup Label="UserMacros" /> - <PropertyGroup> - <_ProjectFileVersion>12.0.30501.0</_ProjectFileVersion> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <OutDir>$(ProjectDir)$(Configuration)\</OutDir> - <IntDir>$(Configuration)\</IntDir> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <OutDir>$(ProjectDir)$(Configuration)\</OutDir> - <IntDir>$(Configuration)\</IntDir> - </PropertyGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>$(SolutionDir)..\libs\putty;$(SolutionDir)..\libs\putty\windows;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_WINDOWS;_CRT_SECURE_NO_DEPRECATE;SECURITY_WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>false</MinimalRebuild> - <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>EditAndContinue</DebugInformationFormat> - <MultiProcessorCompilation>true</MultiProcessorCompilation> - </ClCompile> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <ClCompile> - <AdditionalIncludeDirectories>$(SolutionDir)..\libs\putty;$(SolutionDir)..\libs\putty\windows;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_WINDOWS;_CRT_SECURE_NO_DEPRECATE;SECURITY_WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <RuntimeLibrary>MultiThreaded</RuntimeLibrary> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - <MultiProcessorCompilation>true</MultiProcessorCompilation> - </ClCompile> - </ItemDefinitionGroup> - <ItemGroup> - <ClCompile Include="..\..\libs\putty\aqsync.c" /> - <ClCompile Include="..\..\libs\putty\callback.c" /> - <ClCompile Include="..\..\libs\putty\errsock.c" /> - <ClCompile Include="..\..\libs\putty\marshal.c" /> - <ClCompile Include="..\..\libs\putty\memory.c" /> - <ClCompile Include="..\..\libs\putty\mpint.c" /> - <ClCompile Include="..\..\libs\putty\sshsh256.c" /> - <ClCompile Include="..\..\libs\putty\tree234.c" /> - <ClCompile Include="..\..\libs\putty\utils.c" /> - <ClCompile Include="..\..\libs\putty\version.c" /> - <ClCompile Include="..\..\libs\putty\windows\wincapi.c" /> - <ClCompile Include="..\..\libs\putty\windows\winhandl.c" /> - <ClCompile Include="..\..\libs\putty\windows\winhsock.c" /> - <ClCompile Include="..\..\libs\putty\windows\winmisc.c" /> - <ClCompile Include="..\..\libs\putty\windows\winnpc.c" /> - <ClCompile Include="..\..\libs\putty\windows\winpgntc.c" /> - <ClCompile Include="..\..\libs\putty\windows\winsecur.c" /> - <ClCompile Include="libputty.c" /> - <ClCompile Include="putty-import.c" /> - </ItemGroup> - <ItemGroup> - <ClInclude Include="libputty.h" /> - </ItemGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> - <ImportGroup Label="ExtensionTargets"> - </ImportGroup> -</Project> \ No newline at end of file Deleted: trunk/ttssh2/putty/putty.v16.vcxproj.filters =================================================================== --- trunk/ttssh2/putty/putty.v16.vcxproj.filters 2023-05-02 10:18:28 UTC (rev 10691) +++ trunk/ttssh2/putty/putty.v16.vcxproj.filters 2023-05-02 13:27:22 UTC (rev 10692) @@ -1,66 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup> - <Filter Include="Putty Files"> - <UniqueIdentifier>{6907d95d-706b-4797-acc8-556c5fc25181}</UniqueIdentifier> - </Filter> - </ItemGroup> - <ItemGroup> - <ClCompile Include="..\..\libs\putty\aqsync.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\callback.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\errsock.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\marshal.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\memory.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\mpint.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\sshsh256.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\tree234.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\utils.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\version.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\windows\wincapi.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\windows\winhandl.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\windows\winhsock.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\windows\winmisc.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\windows\winnpc.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\windows\winpgntc.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\windows\winsecur.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="libputty.c" /> - <ClCompile Include="putty-import.c" /> - </ItemGroup> - <ItemGroup> - <ClInclude Include="libputty.h" /> - </ItemGroup> -</Project> \ No newline at end of file Deleted: trunk/ttssh2/putty/putty.v17.vcxproj =================================================================== --- trunk/ttssh2/putty/putty.v17.vcxproj 2023-05-02 10:18:28 UTC (rev 10691) +++ trunk/ttssh2/putty/putty.v17.vcxproj 2023-05-02 13:27:22 UTC (rev 10692) @@ -1,102 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup Label="ProjectConfigurations"> - <ProjectConfiguration Include="Debug|Win32"> - <Configuration>Debug</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - <ProjectConfiguration Include="Release|Win32"> - <Configuration>Release</Configuration> - <Platform>Win32</Platform> - </ProjectConfiguration> - </ItemGroup> - <PropertyGroup Label="Globals"> - <ProjectGuid>{98CA1284-8F6C-4791-BF57-7E5FAD33744E}</ProjectGuid> - <RootNamespace>putty</RootNamespace> - <ProjectName>putty</ProjectName> - <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> - <ConfigurationType>StaticLibrary</ConfigurationType> - <PlatformToolset>v143</PlatformToolset> - <CharacterSet>NotSet</CharacterSet> - <WholeProgramOptimization>false</WholeProgramOptimization> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> - <ConfigurationType>StaticLibrary</ConfigurationType> - <PlatformToolset>v143</PlatformToolset> - <CharacterSet>NotSet</CharacterSet> - </PropertyGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> - <ImportGroup Label="ExtensionSettings"> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> - <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> - </ImportGroup> - <PropertyGroup Label="UserMacros" /> - <PropertyGroup> - <_ProjectFileVersion>12.0.30501.0</_ProjectFileVersion> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <OutDir>$(ProjectDir)$(Configuration)\</OutDir> - <IntDir>$(Configuration)\</IntDir> - </PropertyGroup> - <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <OutDir>$(ProjectDir)$(Configuration)\</OutDir> - <IntDir>$(Configuration)\</IntDir> - </PropertyGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> - <ClCompile> - <Optimization>Disabled</Optimization> - <AdditionalIncludeDirectories>$(SolutionDir)..\libs\putty;$(SolutionDir)..\libs\putty\windows;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_WINDOWS;_CRT_SECURE_NO_DEPRECATE;SECURITY_WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <MinimalRebuild>false</MinimalRebuild> - <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> - <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>EditAndContinue</DebugInformationFormat> - <MultiProcessorCompilation>true</MultiProcessorCompilation> - </ClCompile> - </ItemDefinitionGroup> - <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> - <ClCompile> - <AdditionalIncludeDirectories>$(SolutionDir)..\libs\putty;$(SolutionDir)..\libs\putty\windows;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <PreprocessorDefinitions>_WINDOWS;_CRT_SECURE_NO_DEPRECATE;SECURITY_WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <RuntimeLibrary>MultiThreaded</RuntimeLibrary> - <WarningLevel>Level3</WarningLevel> - <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> - <MultiProcessorCompilation>true</MultiProcessorCompilation> - </ClCompile> - </ItemDefinitionGroup> - <ItemGroup> - <ClCompile Include="..\..\libs\putty\aqsync.c" /> - <ClCompile Include="..\..\libs\putty\callback.c" /> - <ClCompile Include="..\..\libs\putty\errsock.c" /> - <ClCompile Include="..\..\libs\putty\marshal.c" /> - <ClCompile Include="..\..\libs\putty\memory.c" /> - <ClCompile Include="..\..\libs\putty\mpint.c" /> - <ClCompile Include="..\..\libs\putty\sshsh256.c" /> - <ClCompile Include="..\..\libs\putty\tree234.c" /> - <ClCompile Include="..\..\libs\putty\utils.c" /> - <ClCompile Include="..\..\libs\putty\version.c" /> - <ClCompile Include="..\..\libs\putty\windows\wincapi.c" /> - <ClCompile Include="..\..\libs\putty\windows\winhandl.c" /> - <ClCompile Include="..\..\libs\putty\windows\winhsock.c" /> - <ClCompile Include="..\..\libs\putty\windows\winmisc.c" /> - <ClCompile Include="..\..\libs\putty\windows\winnpc.c" /> - <ClCompile Include="..\..\libs\putty\windows\winpgntc.c" /> - <ClCompile Include="..\..\libs\putty\windows\winsecur.c" /> - <ClCompile Include="libputty.c" /> - <ClCompile Include="putty-import.c" /> - </ItemGroup> - <ItemGroup> - <ClInclude Include="libputty.h" /> - </ItemGroup> - <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> - <ImportGroup Label="ExtensionTargets"> - </ImportGroup> -</Project> \ No newline at end of file Deleted: trunk/ttssh2/putty/putty.v17.vcxproj.filters =================================================================== --- trunk/ttssh2/putty/putty.v17.vcxproj.filters 2023-05-02 10:18:28 UTC (rev 10691) +++ trunk/ttssh2/putty/putty.v17.vcxproj.filters 2023-05-02 13:27:22 UTC (rev 10692) @@ -1,66 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <ItemGroup> - <Filter Include="Putty Files"> - <UniqueIdentifier>{6907d95d-706b-4797-acc8-556c5fc25181}</UniqueIdentifier> - </Filter> - </ItemGroup> - <ItemGroup> - <ClCompile Include="..\..\libs\putty\aqsync.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\callback.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\errsock.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\marshal.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\memory.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\mpint.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\sshsh256.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\tree234.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\utils.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\version.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\windows\wincapi.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\windows\winhandl.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\windows\winhsock.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\windows\winmisc.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\windows\winnpc.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\windows\winpgntc.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="..\..\libs\putty\windows\winsecur.c"> - <Filter>Putty Files</Filter> - </ClCompile> - <ClCompile Include="libputty.c" /> - <ClCompile Include="putty-import.c" /> - </ItemGroup> - <ItemGroup> - <ClInclude Include="libputty.h" /> - </ItemGroup> -</Project> \ No newline at end of file