Diff

Differences From Artifact [2ea77d0cd3]:

To Artifact [d87c921437]:


40
41
42
43
44
45
46



47
48

49
50
51
52
53
54
55
#define SSH1_SMSG_EXIT_STATUS	20
#define SSH1_CMSG_EXIT_CONFIRMATION	33
#define SSH1_MSG_IGNORE		32
#define SSH1_MSG_DEBUG		36
#define SSH1_CMSG_AUTH_TIS	39
#define SSH1_SMSG_AUTH_TIS_CHALLENGE	40
#define SSH1_CMSG_AUTH_TIS_RESPONSE	41




#define SSH1_AUTH_TIS		5


#define SSH2_MSG_DISCONNECT             1
#define SSH2_MSG_IGNORE                 2
#define SSH2_MSG_UNIMPLEMENTED          3
#define SSH2_MSG_DEBUG                  4
#define SSH2_MSG_SERVICE_REQUEST        5
#define SSH2_MSG_SERVICE_ACCEPT         6







>
>
>


>







40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#define SSH1_SMSG_EXIT_STATUS	20
#define SSH1_CMSG_EXIT_CONFIRMATION	33
#define SSH1_MSG_IGNORE		32
#define SSH1_MSG_DEBUG		36
#define SSH1_CMSG_AUTH_TIS	39
#define SSH1_SMSG_AUTH_TIS_CHALLENGE	40
#define SSH1_CMSG_AUTH_TIS_RESPONSE	41
#define SSH1_CMSG_AUTH_CCARD	70
#define SSH1_SMSG_AUTH_CCARD_CHALLENGE	71
#define SSH1_CMSG_AUTH_CCARD_RESPONSE	72

#define SSH1_AUTH_TIS		5
#define SSH1_AUTH_CCARD		16

#define SSH2_MSG_DISCONNECT             1
#define SSH2_MSG_IGNORE                 2
#define SSH2_MSG_UNIMPLEMENTED          3
#define SSH2_MSG_DEBUG                  4
#define SSH2_MSG_SERVICE_REQUEST        5
#define SSH2_MSG_SERVICE_ACCEPT         6
304
305
306
307
308
309
310
311

312
313
314
315
316
317
318
    if (gotcrc != realcrc) {
	fatalbox("Incorrect CRC received on packet");
    }

    if (pktin.type == SSH1_SMSG_STDOUT_DATA ||
        pktin.type == SSH1_SMSG_STDERR_DATA ||
        pktin.type == SSH1_MSG_DEBUG ||
        pktin.type == SSH1_SMSG_AUTH_TIS_CHALLENGE) {

	long strlen = GET_32BIT(pktin.body);
	if (strlen + 4 != pktin.length)
	    fatalbox("Received data packet with bogus string length");
    }

    if (pktin.type == SSH1_MSG_DEBUG) {
	/* log debug message */







|
>







308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
    if (gotcrc != realcrc) {
	fatalbox("Incorrect CRC received on packet");
    }

    if (pktin.type == SSH1_SMSG_STDOUT_DATA ||
        pktin.type == SSH1_SMSG_STDERR_DATA ||
        pktin.type == SSH1_MSG_DEBUG ||
        pktin.type == SSH1_SMSG_AUTH_TIS_CHALLENGE ||
        pktin.type == SSH1_SMSG_AUTH_CCARD_CHALLENGE) {
	long strlen = GET_32BIT(pktin.body);
	if (strlen + 4 != pktin.length)
	    fatalbox("Received data packet with bogus string length");
    }

    if (pktin.type == SSH1_MSG_DEBUG) {
	/* log debug message */
1195
1196
1197
1198
1199
1200
1201
1202

1203
1204
1205
1206
1207
1208
1209
    while (pktin.type == SSH1_SMSG_FAILURE) {
	static char password[100];
	static int pos;
	static char c;
        static int pwpkt_type;
        /*
         * Show password prompt, having first obtained it via a TIS
         * exchange if we're doing TIS authentication.

         */
        pwpkt_type = SSH1_CMSG_AUTH_PASSWORD;
        if (*cfg.keyfile && !tried_publickey)
            pwpkt_type = SSH1_CMSG_AUTH_RSA;

	if (pwpkt_type == SSH1_CMSG_AUTH_PASSWORD && !FLAG_WINDOWED) {
	    char prompt[200];







|
>







1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
    while (pktin.type == SSH1_SMSG_FAILURE) {
	static char password[100];
	static int pos;
	static char c;
        static int pwpkt_type;
        /*
         * Show password prompt, having first obtained it via a TIS
         * or CryptoCard exchange if we're doing TIS or CryptoCard
         * authentication.
         */
        pwpkt_type = SSH1_CMSG_AUTH_PASSWORD;
        if (*cfg.keyfile && !tried_publickey)
            pwpkt_type = SSH1_CMSG_AUTH_RSA;

	if (pwpkt_type == SSH1_CMSG_AUTH_PASSWORD && !FLAG_WINDOWED) {
	    char prompt[200];
1235
1236
1237
1238
1239
1240
1241




















1242
1243
1244
1245
1246
1247
1248
                    int challengelen = ((pktin.body[0] << 24) |
                                        (pktin.body[1] << 16) |
                                        (pktin.body[2] << 8) |
                                        (pktin.body[3]));
                    logevent("Received TIS challenge");
                    c_write(pktin.body+4, challengelen);
                }




















            }
            if (pwpkt_type == SSH1_CMSG_AUTH_PASSWORD)
                c_write("password: ", 10);
            if (pwpkt_type == SSH1_CMSG_AUTH_RSA) {
                if (flags & FLAG_VERBOSE)
                    c_write("Trying public key authentication.\r\n", 35);
                if (!rsakey_encrypted(cfg.keyfile)) {







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
                    int challengelen = ((pktin.body[0] << 24) |
                                        (pktin.body[1] << 16) |
                                        (pktin.body[2] << 8) |
                                        (pktin.body[3]));
                    logevent("Received TIS challenge");
                    c_write(pktin.body+4, challengelen);
                }
            }
            if (pktin.type == SSH1_SMSG_FAILURE &&
                cfg.try_tis_auth &&
                (supported_auths_mask & (1<<SSH1_AUTH_CCARD))) {
                pwpkt_type = SSH1_CMSG_AUTH_CCARD_RESPONSE;
                logevent("Requested CryptoCard authentication");
                send_packet(SSH1_CMSG_AUTH_CCARD, PKT_END);
                crWaitUntil(ispkt);
                if (pktin.type != SSH1_SMSG_AUTH_CCARD_CHALLENGE) {
                    logevent("CryptoCard authentication declined");
                    c_write("CryptoCard authentication refused.\r\n", 29);
                } else {
                    int challengelen = ((pktin.body[0] << 24) |
                                        (pktin.body[1] << 16) |
                                        (pktin.body[2] << 8) |
                                        (pktin.body[3]));
                    logevent("Received CryptoCard challenge");
                    c_write(pktin.body+4, challengelen);
                    c_write("\r\nResponse : ", 13);
                }
            }
            if (pwpkt_type == SSH1_CMSG_AUTH_PASSWORD)
                c_write("password: ", 10);
            if (pwpkt_type == SSH1_CMSG_AUTH_RSA) {
                if (flags & FLAG_VERBOSE)
                    c_write("Trying public key authentication.\r\n", 35);
                if (!rsakey_encrypted(cfg.keyfile)) {