diff --git a/cssp.c b/cssp.c index 829742a..f74c7d0 100644 --- a/cssp.c +++ b/cssp.c @@ -297,7 +297,8 @@ cssp_encode_tspasswordcreds(char *username, char *password, char *domain) #define AT_SIGNATURE 2 static STREAM -cssp_encode_tscspdatadetail(unsigned char keyspec, char *card, char *reader, char *container, char *csp) +cssp_encode_tscspdatadetail(unsigned char keyspec, char *card, char *reader, char *container, + char *csp) { int i; STREAM out; @@ -326,7 +327,7 @@ cssp_encode_tscspdatadetail(unsigned char keyspec, char *card, char *reader, cha // cardName [1] if (card) - { + { s_reset(&tmp); for (i = 0; i < strlen(card); i++) out_uint16_le(&tmp, card[i]); @@ -367,7 +368,8 @@ cssp_encode_tscspdatadetail(unsigned char keyspec, char *card, char *reader, cha } // cspName [4] - if (csp) { + if (csp) + { s_reset(&tmp); for (i = 0; i < strlen(csp); i++) out_uint16_le(&tmp, csp[i]); @@ -387,11 +389,11 @@ cssp_encode_tscspdatadetail(unsigned char keyspec, char *card, char *reader, cha // cleanup free(tmp.data); free(message.data); - return out; + return out; } static STREAM -cssp_encode_tssmartcardcreds(char *username, char *password,char *domain) +cssp_encode_tssmartcardcreds(char *username, char *password, char *domain) { int i; STREAM out, h1, h2; @@ -419,7 +421,8 @@ cssp_encode_tssmartcardcreds(char *username, char *password,char *domain) s_free(h1); // cspData[1] - h2 = cssp_encode_tscspdatadetail(AT_KEYEXCHANGE, g_sc_card_name, g_sc_reader_name, g_sc_container_name, g_sc_csp_name); + h2 = cssp_encode_tscspdatadetail(AT_KEYEXCHANGE, g_sc_card_name, g_sc_reader_name, + g_sc_container_name, g_sc_csp_name); h1 = ber_wrap_hdr_data(BER_TAG_CTXT_SPECIFIC | BER_TAG_CONSTRUCTED | 1, h2); out_uint8p(&message, h1->data, s_length(h1)); s_free(h2); @@ -461,7 +464,7 @@ cssp_encode_tssmartcardcreds(char *username, char *password,char *domain) // cleanup free(tmp.data); free(message.data); - return out; + return out; } STREAM @@ -489,9 +492,9 @@ cssp_encode_tscredentials(char *username, char *password, char *domain) } else { - out_uint8(&tmp, 2); // TSSmartCardCreds + out_uint8(&tmp, 2); // TSSmartCardCreds } - + s_mark_end(&tmp); h2 = ber_wrap_hdr_data(BER_TAG_INTEGER, &tmp); h1 = ber_wrap_hdr_data(BER_TAG_CTXT_SPECIFIC | BER_TAG_CONSTRUCTED | 0, h2); diff --git a/rdesktop.c b/rdesktop.c index b7026ed..01590d7 100644 --- a/rdesktop.c +++ b/rdesktop.c @@ -133,7 +133,7 @@ RD_BOOL g_rdpsnd = False; char g_codepage[16] = ""; #endif -char *g_sc_csp_name = NULL; /* Smartcard CSP name */ +char *g_sc_csp_name = NULL; /* Smartcard CSP name */ char *g_sc_reader_name = NULL; char *g_sc_card_name = NULL; char *g_sc_container_name = NULL; @@ -245,11 +245,15 @@ usage(char *program) fprintf(stderr, " -5: use RDP version 5 (default)\n"); #ifdef WITH_SCARD fprintf(stderr, " -o: name=value: Adds an additional option to rdesktop.\n"); - fprintf(stderr, " sc-csp-name Specifies the Crypto Service Provider name which\n"); - fprintf(stderr, " is used to authenticate the user by smartcard\n"); - fprintf(stderr, " sc-container-name Specifies the container name, this is usally the username\n"); + fprintf(stderr, + " sc-csp-name Specifies the Crypto Service Provider name which\n"); + fprintf(stderr, + " is used to authenticate the user by smartcard\n"); + fprintf(stderr, + " sc-container-name Specifies the container name, this is usally the username\n"); fprintf(stderr, " sc-reader-name Smartcard reader name to use\n"); - fprintf(stderr, " sc-card-name Specifies the card name of the smartcard to use\n"); + fprintf(stderr, + " sc-card-name Specifies the card name of the smartcard to use\n"); #endif fprintf(stderr, "\n"); @@ -536,7 +540,7 @@ main(int argc, char *argv[]) #define VNCOPT #endif while ((c = getopt(argc, argv, - VNCOPT "A:u:L:d:s:c:p:n:k:g:o:fbBeEitmzCDKS:T:NX:a:x:Pr:045h?")) != -1) + VNCOPT "A:u:L:d:s:c:p:n:k:g:o:fbBeEitmzCDKS:T:NX:a:x:Pr:045h?")) != -1) { switch (c) { @@ -882,24 +886,33 @@ main(int argc, char *argv[]) g_rdp_version = RDP_V5; break; #if WITH_SCARD - case 'o': - { - char *p = strchr(optarg, '='); - if (p == NULL) { - warning("Skipping option '%s' specified, lacks name=value format.\n"); - continue; - } + case 'o': + { + char *p = strchr(optarg, '='); + if (p == NULL) + { + warning("Skipping option '%s' specified, lacks name=value format.\n"); + continue; + } - if (strncmp(optarg, "sc-csp-name", strlen("sc-scp-name")) == 0) - g_sc_csp_name = strdup(p+1); - else if (strncmp(optarg, "sc-reader-name", strlen("sc-reader-name")) == 0) - g_sc_reader_name = strdup(p+1); - else if (strncmp(optarg, "sc-card-name", strlen("sc-card-name")) == 0) - g_sc_card_name = strdup(p+1); - else if (strncmp(optarg, "sc-container-name", strlen("sc-container-name")) == 0) - g_sc_container_name = strdup(p+1); - - } break; + if (strncmp(optarg, "sc-csp-name", strlen("sc-scp-name")) == + 0) + g_sc_csp_name = strdup(p + 1); + else if (strncmp + (optarg, "sc-reader-name", + strlen("sc-reader-name")) == 0) + g_sc_reader_name = strdup(p + 1); + else if (strncmp + (optarg, "sc-card-name", + strlen("sc-card-name")) == 0) + g_sc_card_name = strdup(p + 1); + else if (strncmp + (optarg, "sc-container-name", + strlen("sc-container-name")) == 0) + g_sc_container_name = strdup(p + 1); + + } + break; #endif case 'h': case '?': @@ -1098,7 +1111,7 @@ main(int argc, char *argv[]) if (time(NULL) - g_reconnect_random_ts > (3600 + 600)) return EX_PROTOCOL; - fprintf(stderr, "Failed to connect, retry in 4 secs...\n"); + fprintf(stderr, "Failed to connect, retry in 4 secs...\n"); sleep(4); continue; }