pkcs11-destroy.c revision 3759f10fc543747668b1ca4b4671f35b0dea8445
/*
* Copyright (C) 2009, 2015 Internet Systems Consortium, Inc. ("ISC")
*
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND ISC AND NETWORK ASSOCIATES DISCLAIMS
* ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE
* FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
* IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*
* Portions copyright (c) 2008 Nominet UK. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/* $Id: pkcs11-destroy.c,v 1.8 2010/01/13 21:19:52 fdupont Exp $ */
/*
* pkcs11-destroy [-m module] [-s $slot] [-i $id | -l $label]
* [-p $pin] [ -w $wait ]
*/
/*! \file */
#include <config.h>
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>
#include <isc/commandline.h>
#ifdef WIN32
#endif
#define getpassphrase(x) getpass(x)
#endif
int
CK_SLOT_ID slot = 0;
int error = 0;
int c, errflg = 0;
CK_ATTRIBUTE search_template[] = {
};
unsigned int j, len;
switch (c) {
case 'm':
break;
case 's':
break;
case 'i':
id &= 0xffff;
break;
case 'l':
break;
case 'p':
break;
case 'w':
break;
case ':':
"Option -%c requires an operand\n",
errflg++;
break;
case '?':
default:
errflg++;
}
}
"[-i id | -l label] [-p pin] [-w waittime]\n");
exit(1);
}
if (id) {
} else if (label) {
}
/* Initialize the CRYPTOKI library */
if (result == PK11_R_NORANDOMSERVICE ||
result == PK11_R_NODIGESTSERVICE ||
result == PK11_R_NOAESSERVICE) {
"using native PKCS#11.\n");
} else if (result != ISC_R_SUCCESS) {
exit(1);
}
error = 1;
goto exit_session;
}
error = 1;
goto exit_search;
}
if (ulObjectCount == 0) {
printf("No matching key objects found.\n");
goto exit_search;
} else
for (i = 0; i < ulObjectCount; i++) {
CK_OBJECT_CLASS oclass = 0;
CK_ATTRIBUTE attr_template[] = {
};
attr_template, 3);
"C_GetAttributeValue[%u]: rv = 0x%.8lX\n",
i, rv);
error = 1;
goto exit_search;
}
printf(" object[%u]: class %lu, label '%s', id[%lu] ",
if (len > 4)
len = 4;
if (len > 0)
printf("0x");
for (j = 0; j < len; j++)
printf("...\n");
else
printf("\n");
}
if (wait != 0) {
printf("WARNING: This action is irreversible! "
"Destroying key objects in %d seconds\n ", wait);
for (i = 0; i < wait; i++) {
printf(".");
sleep(1);
}
printf("\n");
}
for (i = 0; i < ulObjectCount; i++) {
"C_DestroyObject[%u] failed: rv = 0x%.8lX\n",
i, rv);
error = 1;
}
}
if (error == 0)
printf("Destruction complete.\n");
error = 1;
}
(void) pk11_finalize();
}