1 #define _XOPEN_SOURCE 600
10 #define TLS_PREFIX "../server/tls/"
11 #define NSS_DIR TLS_PREFIX "client_nss"
13 void usage(const char *command
) {
14 const char *name
= NULL
;
16 name
= strrchr(command
, '/');
19 if (!name
) name
= command
;
21 fprintf(stderr
, "Usage: %s {openssl|nss} {sw|hw}\n", name
);
25 int main(int argc
, char **argv
) {
26 struct isds_ctx
*ctx
= NULL
;
28 struct isds_pki_credentials
*pki_credentials
= NULL
;
31 /* Software: OpenSSL, GnuTLS */
32 struct isds_pki_credentials pki_software_ossl
= {
35 .key_format
= PKI_FORMAT_PEM
,
36 .key
= TLS_PREFIX
"client.key",
37 .certificate_format
= PKI_FORMAT_PEM
,
38 .certificate
= TLS_PREFIX
"client.cert"
42 struct isds_pki_credentials pki_software_nss
= {
45 .key_format
= PKI_FORMAT_PEM
,
47 .certificate_format
= PKI_FORMAT_PEM
,
48 .certificate
= "The Client Material"
51 /* Hardware engine: OpenSSL */
52 struct isds_pki_credentials pki_hardware_ossl
= {
55 .key_format
= PKI_FORMAT_ENG
,
57 .certificate_format
= PKI_FORMAT_ENG
,
61 /* Hardware engine: NSS */
62 struct isds_pki_credentials pki_hardware_nss
= {
65 .key_format
= PKI_FORMAT_PEM
,
67 .certificate_format
= PKI_FORMAT_PEM
,
68 .certificate
= "OpenSC Card (Bob Tester):Certificate"
71 setlocale(LC_ALL
, "");
74 if (argc
!= 3 || !argv
[1] || !argv
[2]) usage(argv
[0]);
75 if (!strcmp(argv
[1], "openssl")) {
77 if (!strcmp(argv
[2], "sw")) pki_credentials
= &pki_software_ossl
;
78 else if (!strcmp(argv
[2], "hw")) pki_credentials
= &pki_hardware_ossl
;
80 } else if (!strcmp(argv
[1], "nss")) {
82 if (!strcmp(argv
[2], "sw")) pki_credentials
= &pki_software_nss
;
83 else if (!strcmp(argv
[2], "hw")) pki_credentials
= &pki_hardware_nss
;
91 printf("isds_init() failed: %s\n", isds_strerror(err
));
95 isds_set_logging(ILF_ALL
, ILL_ALL
);
97 ctx
= isds_ctx_create();
99 printf("isds_ctx_create() failed");
102 err
= isds_set_timeout(ctx
, 10000);
104 printf("isds_set_timeout() failed: %s\n", isds_strerror(err
));
107 /* err = isds_set_tls(ctx, ITLS_VERIFY_SERVER, 0);
109 printf("isds_set_tls(ITLS_VERIFY_SERVER) failed: %s\n",
115 if (setenv("SSL_DIR", NSS_DIR
, 0)) {
116 printf("setenv(\"SSL_DIR\", \"%s\") failed\n", NSS_DIR
);
119 err
= isds_set_tls(ctx
, ITLS_CA_FILE
, "../server/tls/ca.cert");
121 printf("isds_set_tls(ITLS_CA_FILE) failed: %s\n",
126 err
= isds_login(ctx
, "https://localhost:1443/", username
, password
,
129 printf("isds_login() failed: %s: %s\n", isds_strerror(err
),
130 isds_long_message(ctx
));
132 printf("Logged in :)\n");
136 err
= isds_logout(ctx
);
138 printf("isds_logout() failed: %s\n", isds_strerror(err
));
142 err
= isds_ctx_free(&ctx
);
144 printf("isds_ctx_free() failed: %s\n", isds_strerror(err
));
148 err
= isds_cleanup();
150 printf("isds_cleanup() failed: %s\n", isds_strerror(err
));