1/* 2 * Copyright (C) 2014-2018 Yubico AB - See COPYING 3 */ 4 5#include <stdio.h> 6#include <stdlib.h> 7#include <assert.h> 8 9/* These #defines must be present according to PAM documentation. */ 10#define PAM_SM_AUTH 11 12#ifdef HAVE_SECURITY_PAM_APPL_H 13#include <security/pam_appl.h> 14#endif 15#ifdef HAVE_SECURITY_PAM_MODULES_H 16#include <security/pam_modules.h> 17#endif 18 19#include <string.h> 20#include "../util.h" 21 22int main(int argc, const char **argv) { 23 int rc; 24 25 cfg_t cfg; 26 27 memset(&cfg, 0, sizeof(cfg_t)); 28 cfg.auth_file = "credentials/ssh_credential.cred"; 29 cfg.debug = 1; 30 cfg.debug_file = stderr; 31 cfg.max_devs = 24; 32 cfg.sshformat = 1; 33 34 device_t dev[24]; 35 memset(dev, 0, sizeof(dev)); 36 unsigned n_devs; 37 char *username; 38 39 username = secure_getenv("USER"); 40 if (username == NULL) { 41 username = secure_getenv("LOGNAME"); 42 } 43 assert(username != NULL); 44 45 rc = get_devices_from_authfile(&cfg, username /* not used for SSH format */, 46 dev, &n_devs); 47 assert(rc == 1); 48 assert(n_devs == 1); 49 assert(strcmp(dev[0].coseType, "es256") == 0); 50 assert(strcmp(dev[0].attributes, "+presence") == 0); 51 assert(strcmp(dev[0].keyHandle, 52 "Li4NkUKcvFym8V6aGagSAI11MXPuKSu6kqdWhdxNmQo3i25Ab" 53 "1Lkun2I2H2bz4EjuwLD1UQpJjLG5vjbKG8efg==") == 0); 54 assert(strcmp(dev[0].publicKey, 55 "439pGle7126d1YORADduke347N2t2XyKzOSv8M4naCUjlFYDt" 56 "TVhP/MXO41wzHFUIzrrzfEzzCGWoOH5FU5Adw==") == 0); 57 assert(dev[0].old_format == 0); 58 59 free(dev[0].coseType); 60 free(dev[0].attributes); 61 free(dev[0].keyHandle); 62 free(dev[0].publicKey); 63 memset(dev, 0, sizeof(dev)); 64 65 cfg.auth_file = "credentials/new_.cred"; 66 cfg.sshformat = 0; 67 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 68 assert(rc == 1); 69 assert(n_devs == 1); 70 71 assert(strcmp(dev[0].coseType, "es256") == 0); 72 assert( 73 strcmp(dev[0].keyHandle, 74 "vlcWFQFik8gJySuxMTlRwSDvnq9u/" 75 "mlMXRIqv4rd7Kq2CJj1V9Uh9PqbTF8UkY3EcQfHeS0G3nY0ibyxXE0pdw==") == 0); 76 assert(strcmp(dev[0].publicKey, "CTTRrHrqQmqfyI7/" 77 "bhtAknx9TGCqhd936JdcoekUxUa6PNA6uYzsvFN0qaE+" 78 "j2LchLPU4vajQPdAOcvvvNfWCA==") == 0); 79 assert(strcmp(dev[0].attributes, "+presence") == 0); 80 assert(dev[0].old_format == 0); 81 82 free(dev[0].coseType); 83 free(dev[0].attributes); 84 free(dev[0].keyHandle); 85 free(dev[0].publicKey); 86 87 memset(dev, 0, sizeof(dev)); 88 89 cfg.auth_file = "credentials/new_-V.cred"; 90 cfg.sshformat = 0; 91 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 92 assert(rc == 1); 93 assert(n_devs == 1); 94 95 assert(strcmp(dev[0].coseType, "es256") == 0); 96 assert( 97 strcmp(dev[0].keyHandle, 98 "qf/qcQqFloToNoUMnp2cWg8pUPKoJ0CJFyP0wqpbpOgcD+hzEOJEBaHFbnnYP9d/" 99 "zLKuwTsQ1nRpSc/aDJTEeQ==") == 0); 100 assert(strcmp(dev[0].publicKey, 101 "kwca39tt8HI+MV7skKO1W1K4y0ptbXv6lFW/nwxZ0GSVeMAwTZgf/" 102 "XP1O7O0i9+D227F/Ppo5eIc6gquvjiXdA==") == 0); 103 assert(strcmp(dev[0].attributes, "+presence+verification") == 0); 104 assert(dev[0].old_format == 0); 105 106 free(dev[0].coseType); 107 free(dev[0].attributes); 108 free(dev[0].keyHandle); 109 free(dev[0].publicKey); 110 111 memset(dev, 0, sizeof(dev)); 112 113 cfg.auth_file = "credentials/new_-N.cred"; 114 cfg.sshformat = 0; 115 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 116 assert(rc == 1); 117 assert(n_devs == 1); 118 119 assert(strcmp(dev[0].coseType, "es256") == 0); 120 assert( 121 strcmp(dev[0].keyHandle, 122 "IPbgFVDLguVOr5GzdV7C5MH4Ec+" 123 "bWfG2hifOy0IWWvNsHUZyN5x0rqbAoGWQPgxbAuQTKfk/n+3U9h4AWf8QXg==") == 124 0); 125 assert(strcmp(dev[0].publicKey, 126 "5KfKYcZofwqflFbr+d+df0e9b8nfLulducJ1WMyTBO00Rf3rL3JInYeccS2+" 127 "xvI+eYNsZmJ3RR6zFAPkkBUhzA==") == 0); 128 assert(strcmp(dev[0].attributes, "+presence+pin") == 0); 129 assert(dev[0].old_format == 0); 130 131 free(dev[0].coseType); 132 free(dev[0].attributes); 133 free(dev[0].keyHandle); 134 free(dev[0].publicKey); 135 136 memset(dev, 0, sizeof(dev)); 137 138 cfg.auth_file = "credentials/new_-V-N.cred"; 139 cfg.sshformat = 0; 140 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 141 assert(rc == 1); 142 assert(n_devs == 1); 143 144 assert(strcmp(dev[0].coseType, "es256") == 0); 145 assert(strcmp(dev[0].keyHandle, 146 "HftI6IHewEFB4OhBMeT9WjnG097GYvpE4dTxSS33JTRzRP6V/" 147 "oBPyj3vurnTRJwif98V8YhceMAH8lDePA1dxQ==") == 0); 148 assert(strcmp(dev[0].publicKey, 149 "7h0f9+" 150 "MuzG087QC8zjLK9UoEksAXHmmGmoHGPvWwfkfSsH2cqq" 151 "p7Qyi4LO7Y58OxlEq79gbWqNYEP0H56zvZ4Q==") == 0); 152 assert(strcmp(dev[0].attributes, "+presence+verification+pin") == 0); 153 assert(dev[0].old_format == 0); 154 155 free(dev[0].coseType); 156 free(dev[0].attributes); 157 free(dev[0].keyHandle); 158 free(dev[0].publicKey); 159 160 memset(dev, 0, sizeof(dev)); 161 162 cfg.auth_file = "credentials/new_-P.cred"; 163 cfg.sshformat = 0; 164 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 165 assert(rc == 1); 166 assert(n_devs == 1); 167 168 assert(strcmp(dev[0].coseType, "es256") == 0); 169 assert(strcmp(dev[0].keyHandle, 170 "yvFPHZBdPoBcdhF86mImwNQm2DUgfPw0s26QCpm4XQO0is4ql" 171 "x3nIdyVP9WHszpJ5uFV/1mjd09L3P6ton1fAw==") == 0); 172 assert( 173 strcmp(dev[0].publicKey, 174 "JTP+Uu9VE/79hD1H+Uzf9yqSCi9HgeMLeuc3jQ43TCxg5o+GeFL7Q6e63p3Dn4/" 175 "uch2YJ8iNNJmDlktrLouWSg==") == 0); 176 assert(strcmp(dev[0].attributes, "") == 0); 177 assert(dev[0].old_format == 0); 178 179 free(dev[0].coseType); 180 free(dev[0].attributes); 181 free(dev[0].keyHandle); 182 free(dev[0].publicKey); 183 184 memset(dev, 0, sizeof(dev)); 185 186 cfg.auth_file = "credentials/new_-P-V.cred"; 187 cfg.sshformat = 0; 188 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 189 assert(rc == 1); 190 assert(n_devs == 1); 191 192 assert(strcmp(dev[0].coseType, "es256") == 0); 193 assert(strcmp(dev[0].keyHandle, 194 "WSSDFwB8Bv4wg5pOLzYNRsqyJYi6/rbuxL6nzuvPOkpSslyNX/" 195 "8lcZSsPfBmuWkRE1CNh7xvalAlBUz1/LUcbg==") == 0); 196 assert(strcmp(dev[0].publicKey, "XUIVb5hwOunVJvtwDXAWr5/" 197 "FTd7tkbYN6ahTzrSwmLtd8ISBJq9LBJ9v1NwfHBMakdC" 198 "OBbl8LMVc7bDBSrMoZw==") == 0); 199 assert(strcmp(dev[0].attributes, "+verification") == 0); 200 assert(dev[0].old_format == 0); 201 202 free(dev[0].coseType); 203 free(dev[0].attributes); 204 free(dev[0].keyHandle); 205 free(dev[0].publicKey); 206 207 memset(dev, 0, sizeof(dev)); 208 209 cfg.auth_file = "credentials/new_-P-N.cred"; 210 cfg.sshformat = 0; 211 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 212 assert(rc == 1); 213 assert(n_devs == 1); 214 215 assert(strcmp(dev[0].coseType, "es256") == 0); 216 assert(strcmp(dev[0].keyHandle, 217 "+/" 218 "l9LJ6dwbnDLff0PqkDhMEOWsruM+aYP+" 219 "bzQdaCq3QmTGnh0dbcblfLaYs86XgcirS9OEoEkohB5pd8mhwSMQ==") == 0); 220 assert(strcmp(dev[0].publicKey, 221 "d7sKBe6vgaoYTEXcyovikiB/7IZXLyUPv8qfdaxwWvy7WaGYhwkMvr2H/" 222 "q6YBBHJmRl0OCU3WTD/hfeAo2RknA==") == 0); 223 assert(strcmp(dev[0].attributes, "+pin") == 0); 224 assert(dev[0].old_format == 0); 225 226 free(dev[0].coseType); 227 free(dev[0].attributes); 228 free(dev[0].keyHandle); 229 free(dev[0].publicKey); 230 231 memset(dev, 0, sizeof(dev)); 232 233 cfg.auth_file = "credentials/new_-P-V-N.cred"; 234 cfg.sshformat = 0; 235 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 236 assert(rc == 1); 237 assert(n_devs == 1); 238 239 assert(strcmp(dev[0].coseType, "es256") == 0); 240 assert(strcmp(dev[0].keyHandle, 241 "vw9z9n3ndQkTKPY3+LDy1Fd2otIsV5LgcYE+" 242 "dR0buViSZnKcLJ1kav46mQ47jtelw82/6q3Z2/VKQ44F763tVg==") == 0); 243 assert(strcmp(dev[0].publicKey, 244 "X+" 245 "GY5K9BSG24K9uVnaWgE8wlRhElIPp526M0Xw8H7zqVkGJm2OF" 246 "T1ZQeowjxqEx4agArzPTT5WvukpERNLe81Q==") == 0); 247 assert(strcmp(dev[0].attributes, "+verification+pin") == 0); 248 assert(dev[0].old_format == 0); 249 250 free(dev[0].coseType); 251 free(dev[0].attributes); 252 free(dev[0].keyHandle); 253 free(dev[0].publicKey); 254 255 memset(dev, 0, sizeof(dev)); 256 257 cfg.auth_file = "credentials/new_-r.cred"; 258 cfg.sshformat = 0; 259 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 260 assert(rc == 1); 261 assert(n_devs == 1); 262 263 assert(strcmp(dev[0].coseType, "es256") == 0); 264 assert(strcmp(dev[0].keyHandle, "*") == 0); 265 assert(strcmp(dev[0].publicKey, 266 "b9G0ZYtAB4TQQBnpUfptgTzDArSqLMP3/" 267 "LxtHYZQrIpXrUnGsqi0gYrKa8ThJoKRlj6f3EJdsJMRdnOr6323+w==") == 268 0); 269 assert(strcmp(dev[0].attributes, "+presence") == 0); 270 assert(dev[0].old_format == 0); 271 272 free(dev[0].coseType); 273 free(dev[0].attributes); 274 free(dev[0].keyHandle); 275 free(dev[0].publicKey); 276 277 memset(dev, 0, sizeof(dev)); 278 279 cfg.auth_file = "credentials/new_-r-V.cred"; 280 cfg.sshformat = 0; 281 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 282 assert(rc == 1); 283 assert(n_devs == 1); 284 285 assert(strcmp(dev[0].coseType, "es256") == 0); 286 assert(strcmp(dev[0].keyHandle, "*") == 0); 287 assert(strcmp(dev[0].publicKey, 288 "D/" 289 "ZqT9AuR83CV07njO9NKFuzREbmec3Da+" 290 "NS2HMG346rh8Jq2zd9rbB35tedrUC4fZiRa3yRXlWYz1L9GXku7Q==") == 0); 291 assert(strcmp(dev[0].attributes, "+presence+verification") == 0); 292 assert(dev[0].old_format == 0); 293 294 free(dev[0].coseType); 295 free(dev[0].attributes); 296 free(dev[0].keyHandle); 297 free(dev[0].publicKey); 298 299 memset(dev, 0, sizeof(dev)); 300 301 cfg.auth_file = "credentials/new_-r-N.cred"; 302 cfg.sshformat = 0; 303 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 304 assert(rc == 1); 305 assert(n_devs == 1); 306 307 assert(strcmp(dev[0].coseType, "es256") == 0); 308 assert(strcmp(dev[0].keyHandle, "*") == 0); 309 assert(strcmp(dev[0].publicKey, "+rrhFmn3HrQXi+TMvQbide4/" 310 "rE24y3feLU9wJfhHsEgmaJiLTwAfiBw5z0ASlyZu3vPU" 311 "5/MaNuJdAZqvz/zEJQ==") == 0); 312 assert(strcmp(dev[0].attributes, "+presence+pin") == 0); 313 assert(dev[0].old_format == 0); 314 315 free(dev[0].coseType); 316 free(dev[0].attributes); 317 free(dev[0].keyHandle); 318 free(dev[0].publicKey); 319 320 memset(dev, 0, sizeof(dev)); 321 322 cfg.auth_file = "credentials/new_-r-V-N.cred"; 323 cfg.sshformat = 0; 324 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 325 assert(rc == 1); 326 assert(n_devs == 1); 327 328 assert(strcmp(dev[0].coseType, "es256") == 0); 329 assert(strcmp(dev[0].keyHandle, "*") == 0); 330 assert(strcmp(dev[0].publicKey, 331 "sDQr9MGvetCg0dfPJ3fW804stpJC5VDsPld+zv3C1k6e4I6uyOg9I2lfaZU0/" 332 "sp83CaODgmGsMd7O3Zo80c64Q==") == 0); 333 assert(strcmp(dev[0].attributes, "+presence+verification+pin") == 0); 334 assert(dev[0].old_format == 0); 335 336 free(dev[0].coseType); 337 free(dev[0].attributes); 338 free(dev[0].keyHandle); 339 free(dev[0].publicKey); 340 341 memset(dev, 0, sizeof(dev)); 342 343 cfg.auth_file = "credentials/new_-r-P.cred"; 344 cfg.sshformat = 0; 345 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 346 assert(rc == 1); 347 assert(n_devs == 1); 348 349 assert(strcmp(dev[0].coseType, "es256") == 0); 350 assert(strcmp(dev[0].keyHandle, "*") == 0); 351 assert(strcmp(dev[0].publicKey, 352 "yBQxzNyU+UEP7nQtlyuwzLmWXslkYCAHFSl5Fq2GxKIz9V0ocqbG7vRqbU+" 353 "RGT73M4e8OLrBoX1gAZO7/2Q82Q==") == 0); 354 assert(strcmp(dev[0].attributes, "") == 0); 355 assert(dev[0].old_format == 0); 356 357 free(dev[0].coseType); 358 free(dev[0].attributes); 359 free(dev[0].keyHandle); 360 free(dev[0].publicKey); 361 362 memset(dev, 0, sizeof(dev)); 363 364 cfg.auth_file = "credentials/new_-r-P-V.cred"; 365 cfg.sshformat = 0; 366 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 367 assert(rc == 1); 368 assert(n_devs == 1); 369 370 assert(strcmp(dev[0].coseType, "es256") == 0); 371 assert(strcmp(dev[0].keyHandle, "*") == 0); 372 assert(strcmp(dev[0].publicKey, "GhUPBL+KXG7F7PwhO+" 373 "F3WDZx4KfxoxYwh7h5rqAzsIqkFESR21CqE7vkCvoWm2" 374 "dFTU51aJd2qdw/VmxJ0N/vRQ==") == 0); 375 assert(strcmp(dev[0].attributes, "+verification") == 0); 376 assert(dev[0].old_format == 0); 377 378 free(dev[0].coseType); 379 free(dev[0].attributes); 380 free(dev[0].keyHandle); 381 free(dev[0].publicKey); 382 383 memset(dev, 0, sizeof(dev)); 384 385 cfg.auth_file = "credentials/new_-r-P-N.cred"; 386 cfg.sshformat = 0; 387 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 388 assert(rc == 1); 389 assert(n_devs == 1); 390 391 assert(strcmp(dev[0].coseType, "es256") == 0); 392 assert(strcmp(dev[0].keyHandle, "*") == 0); 393 assert(strcmp(dev[0].publicKey, 394 "9cthNaXFY62096qpe7OF45+KKFMqPb2csGkfa1q35J/" 395 "3l8Re7SS9gkgSwvQOOAkxaqWYIWKAP1foPr58eerF0A==") == 0); 396 assert(strcmp(dev[0].attributes, "+pin") == 0); 397 assert(dev[0].old_format == 0); 398 399 free(dev[0].coseType); 400 free(dev[0].attributes); 401 free(dev[0].keyHandle); 402 free(dev[0].publicKey); 403 404 memset(dev, 0, sizeof(dev)); 405 406 cfg.auth_file = "credentials/new_-r-P-V-N.cred"; 407 cfg.sshformat = 0; 408 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 409 assert(rc == 1); 410 assert(n_devs == 1); 411 412 assert(strcmp(dev[0].coseType, "es256") == 0); 413 assert(strcmp(dev[0].keyHandle, "*") == 0); 414 assert(strcmp(dev[0].publicKey, 415 "oO3z71rtDS86RH3EdZFxr/y6ZUOZ7/" 416 "csyhia9UhiDWWpq7oUoxqvN0qmky9R14Clm6RovaOThX89oIbI84BqxA==") == 417 0); 418 assert(strcmp(dev[0].attributes, "+verification+pin") == 0); 419 assert(dev[0].old_format == 0); 420 421 free(dev[0].coseType); 422 free(dev[0].attributes); 423 free(dev[0].keyHandle); 424 free(dev[0].publicKey); 425 426 memset(dev, 0, sizeof(dev)); 427 428 cfg.auth_file = "credentials/new_double_.cred"; 429 cfg.sshformat = 0; 430 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 431 assert(rc == 1); 432 assert(n_devs == 2); 433 434 assert(strcmp(dev[0].coseType, "es256") == 0); 435 assert(strcmp(dev[0].keyHandle, 436 "THwoppI4JkuHWwQsSvsH6E987xAokX4MjB8Vh/" 437 "lVghzW3iBtMglBw1epdwjbVEpKMVNqwYq6h71p3sQqnaTgLQ==") == 0); 438 assert(strcmp(dev[0].publicKey, 439 "CB2xx1o7OBmX27Ph6wiqFUodmAiSiz2EuYg3UV/" 440 "yEE0Fe9zeMYrk3k2+Una+O9m1P2uzuU3UypOqszVG1WNvYQ==") == 0); 441 assert(strcmp(dev[0].attributes, "+presence") == 0); 442 assert(dev[0].old_format == 0); 443 444 assert(strcmp(dev[1].coseType, "es256") == 0); 445 assert(strcmp(dev[1].keyHandle, 446 "i1grPL1cYGGda7VDTA5C4eqaLZXaW7u8LdIIz2QR8f0L07myF" 447 "DVWFpHmdhEzFAPGtL2kgwdXwx4NvC8VfEKwjA==") == 0); 448 assert(strcmp(dev[1].publicKey, 449 "14+UmD2jiBtceZTsshDPl3rKvHFOWeLdNx9nfq4gTHwi+4GmzUvA+" 450 "XwCohusQsjWocfoyTejYWKL/ZKc5wRuYQ==") == 0); 451 assert(strcmp(dev[1].attributes, "+presence") == 0); 452 assert(dev[1].old_format == 0); 453 454 free(dev[0].coseType); 455 free(dev[0].attributes); 456 free(dev[0].keyHandle); 457 free(dev[0].publicKey); 458 459 free(dev[1].coseType); 460 free(dev[1].attributes); 461 free(dev[1].keyHandle); 462 free(dev[1].publicKey); 463 464 memset(dev, 0, sizeof(dev)); 465 466 cfg.auth_file = "credentials/new_double_-V.cred"; 467 cfg.sshformat = 0; 468 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 469 assert(rc == 1); 470 assert(n_devs == 2); 471 472 assert(strcmp(dev[0].coseType, "es256") == 0); 473 assert(strcmp(dev[0].keyHandle, 474 "oBQ1hIWiYfhJ8g6DFWawe0xOAlKtcPiBDKyoS8ydd/" 475 "zwXbIEU+fHfnzjh46gLjV67+rt1ycCTTMj+P/7EsLNhg==") == 0); 476 assert( 477 strcmp(dev[0].publicKey, 478 "exBDguUdnZhG4+sXOnKPJtrMvn+Rb7pn2E52wyEieitaLY3Yhb2mSFth5sxNjuwl7/" 479 "n+0mMN6gQtmzVxCNvTXw==") == 0); 480 assert(strcmp(dev[0].attributes, "+presence+verification") == 0); 481 assert(dev[0].old_format == 0); 482 483 assert(strcmp(dev[1].coseType, "es256") == 0); 484 assert(strcmp(dev[1].keyHandle, "/8NBWj19H4Wr+/" 485 "avzu9Qg5PGwE7fmdrFWGqlNega38eV1nnajviBOS6Aba" 486 "HmQwqsmVcE+DPNrP7KDFI3ZqjPew==") == 0); 487 assert(strcmp(dev[1].publicKey, "+sW8XEp5RJe/" 488 "ZyPykO6AP2Wm5ySTuLshZ13ohwl0VsypepsyhJxfPmEQ" 489 "GIXysn47uK5egh4eWMvNyMA4Ww0fPg==") == 0); 490 assert(strcmp(dev[1].attributes, "+presence+verification") == 0); 491 assert(dev[1].old_format == 0); 492 493 free(dev[0].coseType); 494 free(dev[0].attributes); 495 free(dev[0].keyHandle); 496 free(dev[0].publicKey); 497 498 free(dev[1].coseType); 499 free(dev[1].attributes); 500 free(dev[1].keyHandle); 501 free(dev[1].publicKey); 502 503 memset(dev, 0, sizeof(dev)); 504 505 cfg.auth_file = "credentials/new_double_-N.cred"; 506 cfg.sshformat = 0; 507 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 508 assert(rc == 1); 509 assert(n_devs == 2); 510 511 assert(strcmp(dev[0].coseType, "es256") == 0); 512 assert(strcmp(dev[0].keyHandle, 513 "WWJqEWaCASU+nsp2bTFh4LbJVOnf1ZRgNxmDcBuThynSTxDgO1GxGcTYg0Ilo/" 514 "RF4YXvVCur7gfALYZA69lDTg==") == 0); 515 assert(strcmp(dev[0].publicKey, "ZN+ud1nR+" 516 "Lk5B6CzcbhvdJztDzgaK0MRLn7MOKPbOWfYpr8bLsYRY" 517 "IfnVUFfSwnGPF6iMK3/FjHRe1mGhOddkg==") == 0); 518 assert(strcmp(dev[0].attributes, "+presence+pin") == 0); 519 assert(dev[0].old_format == 0); 520 521 assert(strcmp(dev[1].coseType, "es256") == 0); 522 assert(strcmp(dev[1].keyHandle, 523 "auU99KPIIvKGbRcVmsiEyGp/rPx1RNruXI2qS8+JgX1e7nWPczLvmlkx8/" 524 "0Z8ZBNqy69aocwQgGHRWKEbDdwlw==") == 0); 525 assert(strcmp(dev[1].publicKey, 526 "oG+" 527 "oN40QezgwX3S6xFk2sR3jiQnobXxxFQy7Mo5vv9hryeIHX13z" 528 "G0OZK0KJuhj4A71OAeNXd065P9tVHeQtOQ==") == 0); 529 assert(strcmp(dev[1].attributes, "+presence+pin") == 0); 530 assert(dev[1].old_format == 0); 531 532 free(dev[0].coseType); 533 free(dev[0].attributes); 534 free(dev[0].keyHandle); 535 free(dev[0].publicKey); 536 537 free(dev[1].coseType); 538 free(dev[1].attributes); 539 free(dev[1].keyHandle); 540 free(dev[1].publicKey); 541 542 memset(dev, 0, sizeof(dev)); 543 544 cfg.auth_file = "credentials/new_double_-V-N.cred"; 545 cfg.sshformat = 0; 546 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 547 assert(rc == 1); 548 assert(n_devs == 2); 549 550 assert(strcmp(dev[0].coseType, "es256") == 0); 551 assert(strcmp(dev[0].keyHandle, 552 "5sVKkhoc+afHBtAp7csIg/Sq4RFi1arnr/" 553 "Qi9quwpNZ4gPhlI6FFBP4CmH8HLw/n5xt8iQxUD83aue23WbrDVA==") == 0); 554 assert(strcmp(dev[0].publicKey, 555 "K1oB5vq8XezU8NCA9jEuuxtLjbNS8bTAFEZXeNWvCQ5vF6viE" 556 "7hvjBPfTrf2KoLz1JtYxHAngZMW+XOZIloVzw==") == 0); 557 assert(strcmp(dev[0].attributes, "+presence+verification+pin") == 0); 558 assert(dev[0].old_format == 0); 559 560 assert(strcmp(dev[1].coseType, "es256") == 0); 561 assert(strcmp(dev[1].keyHandle, 562 "RQWf8kjjCXCNrMhUHHHIeWvQVlft96SShOsfTylA0QUO8UzuS" 563 "Y1mQQFaOPGde1wSX9b2P7tpfTlhYflfgAwkuQ==") == 0); 564 assert(strcmp(dev[1].publicKey, 565 "SGFYgZZ0rJoAPhj7KzDKSpm2a7y4lE8PIZ6T8WYeDqrsZxrrx" 566 "Shc2sx2cAu+r70c8sb6etjab3m9CxobV8ADcA==") == 0); 567 assert(strcmp(dev[1].attributes, "+presence+verification+pin") == 0); 568 assert(dev[1].old_format == 0); 569 570 free(dev[0].coseType); 571 free(dev[0].attributes); 572 free(dev[0].keyHandle); 573 free(dev[0].publicKey); 574 575 free(dev[1].coseType); 576 free(dev[1].attributes); 577 free(dev[1].keyHandle); 578 free(dev[1].publicKey); 579 580 memset(dev, 0, sizeof(dev)); 581 582 cfg.auth_file = "credentials/new_double_-P.cred"; 583 cfg.sshformat = 0; 584 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 585 assert(rc == 1); 586 assert(n_devs == 2); 587 588 assert(strcmp(dev[0].coseType, "es256") == 0); 589 assert(strcmp(dev[0].keyHandle, 590 "ACoC1fhEYhdOstzkaCb1PqcU4T6xMrXxe5GEQjPDsheOxJzWG" 591 "XTpaA3abmHZ3khcJ8Off/ecyPq2kMMqh3l7Xg==") == 0); 592 assert( 593 strcmp(dev[0].publicKey, 594 "c79BTe8BahuDUaeBAATyT8NKq+" 595 "mwV87aaor4s79WI5g9gn7BQDjnyUd1C7aaQMGGtu88h/YOGvDVKMVDal6OJQ==") == 596 0); 597 assert(strcmp(dev[0].attributes, "") == 0); 598 assert(dev[0].old_format == 0); 599 600 assert(strcmp(dev[1].coseType, "es256") == 0); 601 assert(strcmp(dev[1].keyHandle, 602 "0BdgF8gbsYuFfUrpI3K01LcEwnWBxZ6Ewj61GXZJPQh3IcK4H" 603 "+QMMG6nqzBhfLipVwGqUugZxCZP2eR9151kog==") == 0); 604 assert(strcmp(dev[1].publicKey, 605 "X0vskPE+AKWmGrp3ZGhUJVXeAm+sN6nCbMeC30IpItVhMdSosP9I0jOMmsQeF+" 606 "rKh+00K30iNucHdXguLPYL7g==") == 0); 607 assert(strcmp(dev[1].attributes, "") == 0); 608 assert(dev[1].old_format == 0); 609 610 free(dev[0].coseType); 611 free(dev[0].attributes); 612 free(dev[0].keyHandle); 613 free(dev[0].publicKey); 614 615 free(dev[1].coseType); 616 free(dev[1].attributes); 617 free(dev[1].keyHandle); 618 free(dev[1].publicKey); 619 620 memset(dev, 0, sizeof(dev)); 621 622 cfg.auth_file = "credentials/new_double_-P-V.cred"; 623 cfg.sshformat = 0; 624 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 625 assert(rc == 1); 626 assert(n_devs == 2); 627 628 assert(strcmp(dev[0].coseType, "es256") == 0); 629 assert(strcmp(dev[0].keyHandle, 630 "7jPjHZzm/" 631 "Ec6oKy6gpq+XXI3P435OLJFO4o3iGH8KUQlEw+" 632 "1Zv0FmUtguJ2HIZifRsIyMILdu2rwCDgcqmuj9Q==") == 0); 633 assert(strcmp(dev[0].publicKey, 634 "xzrbCZKe8sNdrE0F3dkRwsfkwInYUrKHEAMeeHkNrRLbQqlJH" 635 "n9C2j5puty3FDVKMV5y1MCrwyJ8IEZHtX2H+Q==") == 0); 636 assert(strcmp(dev[0].attributes, "+verification") == 0); 637 assert(dev[0].old_format == 0); 638 639 assert(strcmp(dev[1].coseType, "es256") == 0); 640 assert(strcmp(dev[1].keyHandle, 641 "ghKvm1MLkHIWwr6qjzenROIPfoJCUfrFTlqOXLrMktBSqHaYh" 642 "oA7NpqwVa3jJ86hpJFekWDOqoV1sLz+GZ9UtQ==") == 0); 643 assert(strcmp(dev[1].publicKey, 644 "SyrD8BKIReOUHLII642tgpA+i1S8d+6MOcnfGapk32blq0/" 645 "qYWmgzJ5lqv+BsO0nBoOG6uXLqLqMkKt3/zLj1w==") == 0); 646 assert(strcmp(dev[1].attributes, "+verification") == 0); 647 assert(dev[1].old_format == 0); 648 649 free(dev[0].coseType); 650 free(dev[0].attributes); 651 free(dev[0].keyHandle); 652 free(dev[0].publicKey); 653 654 free(dev[1].coseType); 655 free(dev[1].attributes); 656 free(dev[1].keyHandle); 657 free(dev[1].publicKey); 658 659 memset(dev, 0, sizeof(dev)); 660 661 cfg.auth_file = "credentials/new_double_-P-N.cred"; 662 cfg.sshformat = 0; 663 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 664 assert(rc == 1); 665 assert(n_devs == 2); 666 667 assert(strcmp(dev[0].coseType, "es256") == 0); 668 assert( 669 strcmp(dev[0].keyHandle, 670 "USgDNJZ9Z8GXzQgWdrkFJ5S+WsqKhdg9zHmoMifow3xBd8Rn0ZH2udPuRs6Q8Y/" 671 "13BOCL9lEhdxc+1JAoP0j8w==") == 0); 672 assert(strcmp(dev[0].publicKey, 673 "Is31uMHcVRQYiCxCe3E1tJfKSA92Q47JoppIfLcRLd9sh+e7QR9Gix4LrA2+" 674 "RPw24eKI0iqpMm5ayvPMx2nmxA==") == 0); 675 assert(strcmp(dev[0].attributes, "+pin") == 0); 676 assert(dev[0].old_format == 0); 677 678 assert(strcmp(dev[1].coseType, "es256") == 0); 679 assert(strcmp(dev[1].keyHandle, 680 "uBTQIj0EUe2YoeLfVXksAo9gXTJJ2cXMyPqOMNvE2g9pDwetJ" 681 "IdPTR9oUorMiuRZiXALAlfaayc4vMgQvWXdxw==") == 0); 682 assert(strcmp(dev[1].publicKey, 683 "cToPi0zc8+U6g1kpqJ2pHXCKQyxyNrJAvuLqBmknwxhciBj0+" 684 "iTDFaut0Vc1MSu/r6yrw2mHSnuYXTmPx3mhmw==") == 0); 685 assert(strcmp(dev[1].attributes, "+pin") == 0); 686 assert(dev[1].old_format == 0); 687 688 free(dev[0].coseType); 689 free(dev[0].attributes); 690 free(dev[0].keyHandle); 691 free(dev[0].publicKey); 692 693 free(dev[1].coseType); 694 free(dev[1].attributes); 695 free(dev[1].keyHandle); 696 free(dev[1].publicKey); 697 698 memset(dev, 0, sizeof(dev)); 699 700 cfg.auth_file = "credentials/new_double_-P-V-N.cred"; 701 cfg.sshformat = 0; 702 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 703 assert(rc == 1); 704 assert(n_devs == 2); 705 706 assert(strcmp(dev[0].coseType, "es256") == 0); 707 assert(strcmp(dev[0].keyHandle, 708 "Ypw0/" 709 "A5KEPshXH0zO72Qlgt1uHvB4VnVRBpObzVGDeS8LxR9s" 710 "mealISARIOo3rlOLgjqj6dkJxqu1LoLm22UpA==") == 0); 711 assert(strcmp(dev[0].publicKey, 712 "dFnZLWVzEvbSw6O4ld9Fjb1Pki4NptNpvASGEthr5GsaWRp6p" 713 "Le1Uqwm/IrVrOgwO2Q6sB0SXsQKdAIWbMrPHw==") == 0); 714 assert(strcmp(dev[0].attributes, "+verification+pin") == 0); 715 assert(dev[0].old_format == 0); 716 717 assert(strcmp(dev[1].coseType, "es256") == 0); 718 assert(strcmp(dev[1].keyHandle, 719 "IMaY3yG6NuO4oVjrKUrCArluNfimT+5pnxB2jA0CXD7xjmhUO+" 720 "90lILLwxxnGYKvbq2X5wlxLNnuQLm5gpt7ig==") == 0); 721 assert(strcmp(dev[1].publicKey, 722 "bDTCB4xWqBY9gh6BLP8b4gJmUIYIQbckvrSMDX/8lyftL/" 723 "uesJBxblHkDVzfCIatAzqKZ6kltokEHE8saX8phA==") == 0); 724 assert(strcmp(dev[1].attributes, "+verification+pin") == 0); 725 assert(dev[1].old_format == 0); 726 727 free(dev[0].coseType); 728 free(dev[0].attributes); 729 free(dev[0].keyHandle); 730 free(dev[0].publicKey); 731 732 free(dev[1].coseType); 733 free(dev[1].attributes); 734 free(dev[1].keyHandle); 735 free(dev[1].publicKey); 736 737 memset(dev, 0, sizeof(dev)); 738 739 cfg.auth_file = "credentials/new_double_-r.cred"; 740 cfg.sshformat = 0; 741 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 742 assert(rc == 1); 743 assert(n_devs == 2); 744 745 assert(strcmp(dev[0].coseType, "es256") == 0); 746 assert(strcmp(dev[0].keyHandle, "*") == 0); 747 assert(strcmp(dev[0].publicKey, 748 "JvWtmu8JaeUNYklKkii5KflmS9vVXtTGcqLdWNXcRHza5qCuB" 749 "oYX/QNWlKoZklPfsmjTVkXcnBh+B4DSZM55fw==") == 0); 750 assert(strcmp(dev[0].attributes, "+presence") == 0); 751 assert(dev[0].old_format == 0); 752 753 assert(strcmp(dev[1].coseType, "es256") == 0); 754 assert(strcmp(dev[1].keyHandle, "*") == 0); 755 assert(strcmp(dev[1].publicKey, 756 "4AXGf9eUWUXpfLNJ+2uySBvz2FmkK2EZP+wyKuTf73UDS8/" 757 "vi+DZVllXuhrXmQA36NLwqS8YPEIq6pRLYE6m2A==") == 0); 758 assert(strcmp(dev[1].attributes, "+presence") == 0); 759 assert(dev[1].old_format == 0); 760 761 free(dev[0].coseType); 762 free(dev[0].attributes); 763 free(dev[0].keyHandle); 764 free(dev[0].publicKey); 765 766 free(dev[1].coseType); 767 free(dev[1].attributes); 768 free(dev[1].keyHandle); 769 free(dev[1].publicKey); 770 771 memset(dev, 0, sizeof(dev)); 772 773 cfg.auth_file = "credentials/new_double_-r-V.cred"; 774 cfg.sshformat = 0; 775 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 776 assert(rc == 1); 777 assert(n_devs == 2); 778 779 assert(strcmp(dev[0].coseType, "es256") == 0); 780 assert(strcmp(dev[0].keyHandle, "*") == 0); 781 assert(strcmp(dev[0].publicKey, 782 "qZywZ2yedeQu4bPAy6rk7pPcHPprUd+" 783 "DOxGf10MgwteNYKyAWuyPd7tREc0X3ZzoDejzmM3+X0dWALnBBSVWyA==") == 784 0); 785 assert(strcmp(dev[0].attributes, "+presence+verification") == 0); 786 assert(dev[0].old_format == 0); 787 788 assert(strcmp(dev[1].coseType, "es256") == 0); 789 assert(strcmp(dev[1].keyHandle, "*") == 0); 790 assert(strcmp(dev[1].publicKey, "IcQsmgW/Y5UQUW/" 791 "Bz7eYU1azOfyhQWTr8R6mk0gpBJ4l5qq4BstimedubRF" 792 "voIAanumNrrqgvo1CA+9rzHG6Hg==") == 0); 793 assert(strcmp(dev[1].attributes, "+presence+verification") == 0); 794 assert(dev[1].old_format == 0); 795 796 free(dev[0].coseType); 797 free(dev[0].attributes); 798 free(dev[0].keyHandle); 799 free(dev[0].publicKey); 800 801 free(dev[1].coseType); 802 free(dev[1].attributes); 803 free(dev[1].keyHandle); 804 free(dev[1].publicKey); 805 806 memset(dev, 0, sizeof(dev)); 807 808 cfg.auth_file = "credentials/new_double_-r-N.cred"; 809 cfg.sshformat = 0; 810 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 811 assert(rc == 1); 812 assert(n_devs == 2); 813 814 assert(strcmp(dev[0].coseType, "es256") == 0); 815 assert(strcmp(dev[0].keyHandle, "*") == 0); 816 assert( 817 strcmp(dev[0].publicKey, 818 "BEOf/KU74hsdWbvfUn7yIXH2aktz/" 819 "DY2ChTLpljbntz5xpwsOv+4x9r6LySuVYWuoWH11fgKv4Bqt57MHiPYUg==") == 0); 820 assert(strcmp(dev[0].attributes, "+presence+pin") == 0); 821 assert(dev[0].old_format == 0); 822 823 assert(strcmp(dev[1].coseType, "es256") == 0); 824 assert(strcmp(dev[1].keyHandle, "*") == 0); 825 assert(strcmp(dev[1].publicKey, 826 "4vbnuZSSrYJ/qzOpnVgy8cqm7yq6m9+GQlpNnMbPN2kXr+B0vL91O6d7/" 827 "0VitOqW8GX2FFQaXvV3mHETtsUYAg==") == 0); 828 assert(strcmp(dev[1].attributes, "+presence+pin") == 0); 829 assert(dev[1].old_format == 0); 830 831 free(dev[0].coseType); 832 free(dev[0].attributes); 833 free(dev[0].keyHandle); 834 free(dev[0].publicKey); 835 836 free(dev[1].coseType); 837 free(dev[1].attributes); 838 free(dev[1].keyHandle); 839 free(dev[1].publicKey); 840 841 memset(dev, 0, sizeof(dev)); 842 843 cfg.auth_file = "credentials/new_double_-r-V-N.cred"; 844 cfg.sshformat = 0; 845 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 846 assert(rc == 1); 847 assert(n_devs == 2); 848 849 assert(strcmp(dev[0].coseType, "es256") == 0); 850 assert(strcmp(dev[0].keyHandle, "*") == 0); 851 assert(strcmp(dev[0].publicKey, 852 "5zx2nk/ANhsncQV0np0kDYT+jf5w3dQ8rvVM5fqwDcHbh8AzBHbcGiRcNfPE/" 853 "6v09cEomfVrIAT+IvyAcZnuow==") == 0); 854 assert(strcmp(dev[0].attributes, "+presence+verification+pin") == 0); 855 assert(dev[0].old_format == 0); 856 857 assert(strcmp(dev[1].coseType, "es256") == 0); 858 assert(strcmp(dev[1].keyHandle, "*") == 0); 859 assert(strcmp(dev[1].publicKey, 860 "FJ6553yOZoAJKnR2Ysai/5k1i6PpHz/8HusKkFjOqBSIsAK9vALAb/" 861 "M223hz8remwuqPyNXczq1WgBcN4P9wKw==") == 0); 862 assert(strcmp(dev[1].attributes, "+presence+verification+pin") == 0); 863 assert(dev[1].old_format == 0); 864 865 free(dev[0].coseType); 866 free(dev[0].attributes); 867 free(dev[0].keyHandle); 868 free(dev[0].publicKey); 869 870 free(dev[1].coseType); 871 free(dev[1].attributes); 872 free(dev[1].keyHandle); 873 free(dev[1].publicKey); 874 875 memset(dev, 0, sizeof(dev)); 876 877 cfg.auth_file = "credentials/new_double_-r-P.cred"; 878 cfg.sshformat = 0; 879 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 880 assert(rc == 1); 881 assert(n_devs == 2); 882 883 assert(strcmp(dev[0].coseType, "es256") == 0); 884 assert(strcmp(dev[0].keyHandle, "*") == 0); 885 assert(strcmp(dev[0].publicKey, 886 "kuY0RmjxQfbzMREZM8l++bbKTFHSGTYK+" 887 "OI0owggVKCXSaD5YHsk2EONGtwWoafg8KypNQIYhxxxT2RlWWVcGw==") == 888 0); 889 assert(strcmp(dev[0].attributes, "") == 0); 890 assert(dev[0].old_format == 0); 891 892 assert(strcmp(dev[1].coseType, "es256") == 0); 893 assert(strcmp(dev[1].keyHandle, "*") == 0); 894 assert(strcmp(dev[1].publicKey, 895 "t94+brQxTF62oQw642Pq6qDFFfPx1A7GbjU/" 896 "2i+H7OiHLeIALTzm9AwLVZuyofXURgiIrmLAG26ww2KVv6ji+A==") == 0); 897 assert(strcmp(dev[1].attributes, "") == 0); 898 assert(dev[1].old_format == 0); 899 900 free(dev[0].coseType); 901 free(dev[0].attributes); 902 free(dev[0].keyHandle); 903 free(dev[0].publicKey); 904 905 free(dev[1].coseType); 906 free(dev[1].attributes); 907 free(dev[1].keyHandle); 908 free(dev[1].publicKey); 909 910 memset(dev, 0, sizeof(dev)); 911 912 cfg.auth_file = "credentials/new_double_-r-P-V.cred"; 913 cfg.sshformat = 0; 914 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 915 assert(rc == 1); 916 assert(n_devs == 2); 917 918 assert(strcmp(dev[0].coseType, "es256") == 0); 919 assert(strcmp(dev[0].keyHandle, "*") == 0); 920 assert(strcmp(dev[0].publicKey, 921 "KBBozy1XYywARLB1AcY5hYvUN2hYHpGY2YyxAIczZ7GXrfWeZ" 922 "8RGOW7+Z34DaozgLFeHMQSCXJuNYK+fw8khEw==") == 0); 923 assert(strcmp(dev[0].attributes, "+verification") == 0); 924 assert(dev[0].old_format == 0); 925 926 assert(strcmp(dev[1].coseType, "es256") == 0); 927 assert(strcmp(dev[1].keyHandle, "*") == 0); 928 assert(strcmp(dev[1].publicKey, "LABCxfeOxfctKo8HmDA/" 929 "PYyPlwTYj3i2tQu2QWEmi7tytaPQA8ZZZP7hddzpkUQV" 930 "HRu2oASGigS7oBwt38WFCw==") == 0); 931 assert(strcmp(dev[1].attributes, "+verification") == 0); 932 assert(dev[1].old_format == 0); 933 934 free(dev[0].coseType); 935 free(dev[0].attributes); 936 free(dev[0].keyHandle); 937 free(dev[0].publicKey); 938 939 free(dev[1].coseType); 940 free(dev[1].attributes); 941 free(dev[1].keyHandle); 942 free(dev[1].publicKey); 943 944 memset(dev, 0, sizeof(dev)); 945 946 cfg.auth_file = "credentials/new_double_-r-P-N.cred"; 947 cfg.sshformat = 0; 948 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 949 assert(rc == 1); 950 assert(n_devs == 2); 951 952 assert(strcmp(dev[0].coseType, "es256") == 0); 953 assert(strcmp(dev[0].keyHandle, "*") == 0); 954 assert(strcmp(dev[0].publicKey, 955 "se1ih71yYTjlvF6p3Kc+wB0PtXv+5RM8O/0/" 956 "yFy5RcvEXCvirQPbxhmSIhh5QYP17fkAFGLfJYQtmV7RNU0xDg==") == 0); 957 assert(strcmp(dev[0].attributes, "+pin") == 0); 958 assert(dev[0].old_format == 0); 959 960 assert(strcmp(dev[1].coseType, "es256") == 0); 961 assert(strcmp(dev[1].keyHandle, "*") == 0); 962 assert(strcmp(dev[1].publicKey, 963 "v6hgPffPopqHTh19Y0Wf11cF/lChqwlT0f5/" 964 "6K+Dsdzq1OPZxKBqTaW6jCU0x5Pr9HgntWyTtQ1TS7EM22uhyQ==") == 0); 965 assert(strcmp(dev[1].attributes, "+pin") == 0); 966 assert(dev[1].old_format == 0); 967 968 free(dev[0].coseType); 969 free(dev[0].attributes); 970 free(dev[0].keyHandle); 971 free(dev[0].publicKey); 972 973 free(dev[1].coseType); 974 free(dev[1].attributes); 975 free(dev[1].keyHandle); 976 free(dev[1].publicKey); 977 978 memset(dev, 0, sizeof(dev)); 979 980 cfg.auth_file = "credentials/new_double_-r-P-V-N.cred"; 981 cfg.sshformat = 0; 982 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 983 assert(rc == 1); 984 assert(n_devs == 2); 985 986 assert(strcmp(dev[0].coseType, "es256") == 0); 987 assert(strcmp(dev[0].keyHandle, "*") == 0); 988 assert( 989 strcmp(dev[0].publicKey, 990 "+zfrwyH/M5/" 991 "tEVfijRKzRqNh+" 992 "QoC3JBweJFa0heINIDkCjLAYqUb2hSTecTxoKh2bzpxSqeg6nJJPJNBqDD2aA==") == 993 0); 994 assert(strcmp(dev[0].attributes, "+verification+pin") == 0); 995 assert(dev[0].old_format == 0); 996 997 assert(strcmp(dev[1].coseType, "es256") == 0); 998 assert(strcmp(dev[1].keyHandle, "*") == 0); 999 assert(strcmp(dev[1].publicKey, 1000 "W1vVZhmkt3KG16sraGayBP8elRXSl5UGMl+" 1001 "oojLI15yyIAVUUzoEKNUQtf3j3s3sVtjD009nLxHOpkf2zjIpQQ==") == 0); 1002 assert(strcmp(dev[1].attributes, "+verification+pin") == 0); 1003 assert(dev[1].old_format == 0); 1004 1005 free(dev[0].coseType); 1006 free(dev[0].attributes); 1007 free(dev[0].keyHandle); 1008 free(dev[0].publicKey); 1009 1010 free(dev[1].coseType); 1011 free(dev[1].attributes); 1012 free(dev[1].keyHandle); 1013 free(dev[1].publicKey); 1014 1015 memset(dev, 0, sizeof(dev)); 1016 1017 cfg.auth_file = "credentials/new_mixed_12.cred"; 1018 cfg.sshformat = 0; 1019 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 1020 assert(rc == 1); 1021 assert(n_devs == 2); 1022 1023 assert(strcmp(dev[0].coseType, "es256") == 0); 1024 assert(strcmp(dev[0].keyHandle, 1025 "ooq2bCWeHFXzWqKwWFRliREQjOtUWKtWJbr7KwSh3FLNiCFgB" 1026 "uie4tqq3Pee86o7ew32u1+ITLsCBEYPrTQMAg==") == 0); 1027 assert(strcmp(dev[0].publicKey, 1028 "39hCGEGO7kqz3Pig/bL0ycZxLfcpWPtX8fKxb/" 1029 "S8xx2BdSUs6HXTzIDmifuFv6pabpy3DxUvcA0yIygMAO1ZQw==") == 0); 1030 assert(strcmp(dev[0].attributes, "+presence") == 0); 1031 assert(dev[0].old_format == 0); 1032 1033 assert(strcmp(dev[1].coseType, "es256") == 0); 1034 assert(strcmp(dev[1].keyHandle, 1035 "2O2vxjSMeMl6obzQCkIE3VL2Qtija5sLJuJkMrP+/" 1036 "bAFeoLp7m2SPKKRUFFXsO8Z44HTL7PKoFmY4+r5Qwt00w==") == 0); 1037 assert(strcmp(dev[1].publicKey, 1038 "qZIaqR+" 1039 "mGxEnvo04LtsX4krKV5r5PBVBfJYDXi2zS7uXSHgRr7K" 1040 "OQHaNgx70E2IBrVmUlaFAH4QhDnDAeishBA==") == 0); 1041 assert(strcmp(dev[1].attributes, "+presence") == 0); 1042 assert(dev[1].old_format == 0); 1043 1044 free(dev[0].coseType); 1045 free(dev[0].attributes); 1046 free(dev[0].keyHandle); 1047 free(dev[0].publicKey); 1048 1049 free(dev[1].coseType); 1050 free(dev[1].attributes); 1051 free(dev[1].keyHandle); 1052 free(dev[1].publicKey); 1053 1054 memset(dev, 0, sizeof(dev)); 1055 1056 cfg.auth_file = "credentials/new_mixed_1-P2.cred"; 1057 cfg.sshformat = 0; 1058 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 1059 assert(rc == 1); 1060 assert(n_devs == 2); 1061 1062 assert(strcmp(dev[0].coseType, "es256") == 0); 1063 assert(strcmp(dev[0].keyHandle, "9HY72OR/" 1064 "kQECy5PbwfJwSaWZFlLL1CHamlm1LMZFozCBj6hzq4V9" 1065 "BpkkkMObxNL9gFd8yOXKDflFiVVoGq7sWQ==") == 0); 1066 assert(strcmp(dev[0].publicKey, 1067 "sn+" 1068 "cAxAvdlnwwwvLCLoEjiza2G0aPniyqgomxmm1aLisMl1z9Vpv" 1069 "dlGgO4nOPLYZSoRkW6nKvOBzztGYq/knfQ==") == 0); 1070 assert(strcmp(dev[0].attributes, "+presence") == 0); 1071 assert(dev[0].old_format == 0); 1072 1073 assert(strcmp(dev[1].coseType, "es256") == 0); 1074 assert(strcmp(dev[1].keyHandle, 1075 "43JAMt5EnG72Sx/4C9ptEd+6/f1RMOKWBSQj4U6pnQyVvPFI/" 1076 "nX2jvN4EYqMQrdGYaszRbh0AL0an3hKZJNqLw==") == 0); 1077 assert(strcmp(dev[1].publicKey, "aPlEf4vR+SUrOykB1tk+" 1078 "H1XKsEiSIBMK252bPz7kLHusnAgqgPZLqcruFEegChmY" 1079 "yhytWDPluPrw1o16FFyf5Q==") == 0); 1080 assert(strcmp(dev[1].attributes, "") == 0); 1081 assert(dev[1].old_format == 0); 1082 1083 free(dev[0].coseType); 1084 free(dev[0].attributes); 1085 free(dev[0].keyHandle); 1086 free(dev[0].publicKey); 1087 1088 free(dev[1].coseType); 1089 free(dev[1].attributes); 1090 free(dev[1].keyHandle); 1091 free(dev[1].publicKey); 1092 1093 memset(dev, 0, sizeof(dev)); 1094 1095 cfg.auth_file = "credentials/new_mixed_-P12.cred"; 1096 cfg.sshformat = 0; 1097 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 1098 assert(rc == 1); 1099 assert(n_devs == 2); 1100 1101 assert(strcmp(dev[0].coseType, "es256") == 0); 1102 assert(strcmp(dev[0].keyHandle, 1103 "kNfZ8Uot7TcImjCXhji32Apur3172TYc4XLA0uDQsdW1lrIRe" 1104 "cyZP5chyPrkNxIrRIZ58UgiMxD72fiaCiQghw==") == 0); 1105 assert(strcmp(dev[0].publicKey, 1106 "QiscDH8fpvC9imwd7UiQ8n2XeqNRWW5sUxmboMbiNLUXWrvuG" 1107 "7pEBvWYQA3yLdmOvvb/3MijCh6AZr/3fpwZKQ==") == 0); 1108 assert(strcmp(dev[0].attributes, "") == 0); 1109 assert(dev[0].old_format == 0); 1110 1111 assert(strcmp(dev[1].coseType, "es256") == 0); 1112 assert(strcmp(dev[1].keyHandle, 1113 "4ICSXy6FCp7NUErnJAOoyqGOnszEMmnIxjgH2NmiC9cyn0XqB" 1114 "xmr1+YHt9fv6yhbrPrnn9/QLvysS+VZBc9twQ==") == 0); 1115 assert(strcmp(dev[1].publicKey, 1116 "IJMQOa1WrUkBwZKKviNxkMlvKGkiIbXcIdWf+" 1117 "Rv1BPWI9Xo1edi1LF7ux8sZs6mbQEn3z+v+UCSgO13ZtFzI/w==") == 0); 1118 assert(strcmp(dev[1].attributes, "+presence") == 0); 1119 assert(dev[1].old_format == 0); 1120 1121 free(dev[0].coseType); 1122 free(dev[0].attributes); 1123 free(dev[0].keyHandle); 1124 free(dev[0].publicKey); 1125 1126 free(dev[1].coseType); 1127 free(dev[1].attributes); 1128 free(dev[1].keyHandle); 1129 free(dev[1].publicKey); 1130 1131 memset(dev, 0, sizeof(dev)); 1132 1133 cfg.auth_file = "credentials/new_mixed_-P1-P2.cred"; 1134 cfg.sshformat = 0; 1135 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 1136 assert(rc == 1); 1137 assert(n_devs == 2); 1138 1139 assert(strcmp(dev[0].coseType, "es256") == 0); 1140 assert(strcmp(dev[0].keyHandle, 1141 "gqCuXGhiA9P4PhXPgrMjQCdgBPkLHHmQcDF/" 1142 "AMOp9vMuCoreRgwWlckMvCdHnsRTohdGqKZgVT/M3HVu4/UiXA==") == 0); 1143 assert(strcmp(dev[0].publicKey, 1144 "DJaEFTDU5XMq5+KwhEwj69zo5KthqvPRcrCE8Rhu6v1FkgFww/" 1145 "gHYeCZi8s6IRbzmmkxSANXuBAGcpVAM6Zo3A==") == 0); 1146 assert(strcmp(dev[0].attributes, "") == 0); 1147 assert(dev[0].old_format == 0); 1148 1149 assert(strcmp(dev[1].coseType, "es256") == 0); 1150 assert(strcmp(dev[1].keyHandle, 1151 "RFgUluPS2nAXHy3++1dyyu5k0Rnr9KHUccYSH2oMdpw+" 1152 "QWOu5lvHki3lyAxhKm7HTu8wfMK86qIHakTMYDiYSA==") == 0); 1153 assert(strcmp(dev[1].publicKey, 1154 "sgoB52Vmw6fqQMDsBHKMsSeft6AfXoULH+" 1155 "mHNi3nOS6KHnvobo82LFGjvQqxrbSNfIul/cpD3MSdz8R0Tfhl3w==") == 0); 1156 assert(strcmp(dev[1].attributes, "") == 0); 1157 assert(dev[1].old_format == 0); 1158 1159 free(dev[0].coseType); 1160 free(dev[0].attributes); 1161 free(dev[0].keyHandle); 1162 free(dev[0].publicKey); 1163 1164 free(dev[1].coseType); 1165 free(dev[1].attributes); 1166 free(dev[1].keyHandle); 1167 free(dev[1].publicKey); 1168 1169 memset(dev, 0, sizeof(dev)); 1170 1171 cfg.auth_file = "credentials/old_credential.cred"; 1172 cfg.sshformat = 0; 1173 1174 rc = get_devices_from_authfile(&cfg, username, dev, &n_devs); 1175 assert(rc == 1); 1176 assert(n_devs == 1); 1177 assert(strcmp(dev[0].coseType, "es256") == 0); 1178 assert(strcmp(dev[0].attributes, "+presence") == 0); 1179 printf("kh %s\n", dev[0].publicKey); 1180 assert(strcmp(dev[0].keyHandle, 1181 "mGvXxDqTMSVkSlDnDRNTVsP5Ij9cceCkdZkSJYeaJCHCOpBtM" 1182 "IFGQXKBBkvZpV5bWuEuJkoElIiMKirhCPAU8Q==") == 0); 1183 assert( 1184 strcmp(dev[0].publicKey, 1185 "0405a35641a6f5b63e2ef4449393e7e1cb2b96711e797fc74dbd63e99dbf410ffe7" 1186 "425e79f8c41d8f049c8f7241a803563a43c139f923f0ab9007fbd0dcc722927") == 1187 0); 1188 assert(dev[0].old_format == 1); 1189 1190 free(dev[0].coseType); 1191 free(dev[0].attributes); 1192 free(dev[0].keyHandle); 1193 free(dev[0].publicKey); 1194 1195 return 0; 1196} 1197