/* Copyright (C) 2001 Juha Yrjölä * All rights reserved. * * PKCS#15 PIN code test */ #include "sc-test.h" #include "sc.h" #include "sc-pkcs15.h" #include #include struct sc_pkcs15_card *p15card; int enum_pins() { int i, c; c = sc_pkcs15_enum_pins(p15card); if (c < 0) { fprintf(stderr, "Error enumerating PIN codes: %s\n", sc_strerror(i)); return 1; } if (c == 0) fprintf(stderr, "No PIN codes found!\n"); for (i = 0; i < c; i++) { sc_pkcs15_print_pin_info(&p15card->pin_info[i]); } return 0; } int main(int argc, char *argv[]) { int i, c; i = sc_test_init(&argc, argv); if (i < 0) return 1; printf("Looking for a PKCS#15 compatible Smart Card... "); fflush(stdout); i = sc_pkcs15_init(card, &p15card); if (i) { fprintf(stderr, "failed: %s\n", sc_strerror(i)); return 1; } printf("found.\n"); sc_pkcs15_print_card(p15card); printf("Enumerating PIN codes...\n"); i = enum_pins(); if (i) return 1; printf("Enumerating private keys... "); fflush(stdout); i = sc_pkcs15_enum_private_keys(p15card); if (i < 0) { fprintf(stderr, "failed: %s\n", sc_strerror(i)); return 1; } printf("done.\n"); for (c = 0; c < p15card->prkey_count; c++) { sc_pkcs15_print_prkey_info(&p15card->prkey_info[c]); } printf("Enumerating certificates... "); fflush(stdout); i = sc_pkcs15_enum_certificates(p15card); if (i < 0) { fprintf(stderr, "failed: %s\n", sc_strerror(i)); return 1; } printf("done.\n"); for (c = 0; c < p15card->cert_count; c++) { sc_pkcs15_print_cert_info(&p15card->cert_info[c]); } return 0; }