Changeset 3152 for releases

Show
Ignore:
Timestamp:
04/23/07 19:19:31 (21 months ago)
Author:
nils
Message:

authenticate if data object is protected

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • releases/opensc-0.11.2/src/tools/pkcs15-tool.c

    r3090 r3152  
    325325                if (verbose) 
    326326                        printf("Reading data object with label '%s'\n", opt_data); 
    327                 r = sc_pkcs15_read_data_object(p15card, cinfo, &data_object); 
    328                 if (r) { 
    329                         fprintf(stderr, "Data object read failed: %s\n", sc_strerror(r)); 
    330                         if (r == SC_ERROR_FILE_NOT_FOUND) 
    331                                 continue; /* DEE emulation may say there is a file */ 
     327                r = authenticate(objs[i]); 
     328                if (r >= 0) { 
     329                        r = sc_pkcs15_read_data_object(p15card, cinfo, &data_object); 
     330                        if (r) { 
     331                                fprintf(stderr, "Data object read failed: %s\n", sc_strerror(r)); 
     332                                if (r == SC_ERROR_FILE_NOT_FOUND) 
     333                                        continue; /* DEE emulation may say there is a file */ 
     334                                return 1; 
     335                        } 
     336                        r = print_data_object("Data Object", data_object->data, data_object->data_len); 
     337                        sc_pkcs15_free_data_object(data_object); 
     338                        return r; 
     339                } else { 
     340                        fprintf(stderr, "Authentication error: %s\n", sc_strerror(r)); 
    332341                        return 1; 
    333342                } 
    334                 r = print_data_object("Data Object", data_object->data, data_object->data_len); 
    335                 sc_pkcs15_free_data_object(data_object); 
    336                 return r; 
    337343        } 
    338344        fprintf(stderr, "Data object with label '%s' not found.\n", opt_data); 
     
    354360                int idx; 
    355361                struct sc_pkcs15_data_info *cinfo = (struct sc_pkcs15_data_info *) objs[i]->data; 
    356                 struct sc_pkcs15_data *data_object; 
    357362 
    358363                printf("Reading data object <%i>\n", i); 
     
    370375                } else 
    371376                        printf("NONE\n"); 
    372                 printf("Path :           %s\n", sc_print_path(&cinfo->path)); 
    373                 r = sc_pkcs15_read_data_object(p15card, cinfo, &data_object); 
    374                 if (r) { 
    375                         fprintf(stderr, "Data object read failed: %s\n", sc_strerror(r)); 
    376                         if (r == SC_ERROR_FILE_NOT_FOUND) 
    377                                  continue; /* DEE emulation may say there is a file */ 
    378                         return 1; 
    379                 } 
    380                 r = list_data_object("Data Object", data_object->data, data_object->data_len); 
    381                 sc_pkcs15_free_data_object(data_object); 
     377                printf("Path:            %s\n", sc_print_path(&cinfo->path)); 
     378                printf("Auth ID:         %s\n", sc_pkcs15_print_id(&objs[i]->auth_id)); 
     379                if (objs[i]->auth_id.len == 0) { 
     380                        struct sc_pkcs15_data *data_object; 
     381                        r = sc_pkcs15_read_data_object(p15card, cinfo, &data_object); 
     382                        if (r) { 
     383                                fprintf(stderr, "Data object read failed: %s\n", sc_strerror(r)); 
     384                                if (r == SC_ERROR_FILE_NOT_FOUND) 
     385                                         continue; /* DEE emulation may say there is a file */ 
     386                                return 1; 
     387                        } 
     388                        r = list_data_object("Data Object", data_object->data, data_object->data_len); 
     389                        sc_pkcs15_free_data_object(data_object); 
     390                } 
    382391        } 
    383392        return 0; 
     
    855864 
    856865        pin_info = (sc_pkcs15_pin_info_t *) pin_obj->data; 
    857         pin = get_pin("Please enter PIN", pin_obj); 
     866        if (opt_pin != NULL) 
     867                pin = opt_pin; 
     868        else 
     869                pin = get_pin("Please enter PIN", pin_obj); 
    858870 
    859871        return sc_pkcs15_verify_pin(p15card, pin_info,