adjust key usage bits

git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@2545 c6295689-39f2-0310-b995-f0e70906c6a9
This commit is contained in:
nils 2005-09-06 21:18:26 +00:00
parent 08a640c94b
commit 13a3e699e5
1 changed files with 17 additions and 14 deletions

View File

@ -2043,15 +2043,18 @@ static void set_userpin_ref()
static void
parse_x509_usage(const char *list, unsigned int *res)
{
static const char * x509_usage_names[] = {
"digitalSignature",
"nonRepudiation",
"keyEncipherment",
"dataEncipherment",
"keyAgreement",
"keyCertSign",
"cRLSign",
NULL
static struct {
const char* name;
unsigned int flag;
} x509_usage_names[] = {
{ "digitalSignature", 0x0080 },
{ "nonRepudiation", 0x0040 },
{ "keyEncipherment", 0x0020 },
{ "dataEncipherment", 0x0010 },
{ "keyAgreement", 0x0008 },
{ "keyCertSign", 0x0004 },
{ "cRLSign", 0x0002 },
{ NULL, 0 }
};
static struct {
const char * name;
@ -2072,8 +2075,8 @@ parse_x509_usage(const char *list, unsigned int *res)
len = strcspn(list, ",");
if (len == 4 && !strncasecmp(list, "help", 4)) {
printf("Valid X.509 usage names (case-insensitive):\n");
for (n = 0; x509_usage_names[n]; n++)
printf(" %s\n", x509_usage_names[n]);
for (n = 0; x509_usage_names[n].name; n++)
printf(" %s\n", x509_usage_names[n].name);
printf("\nAliases:\n");
for (n = 0; x509_usage_aliases[n].name; n++) {
printf(" %-12s %s\n",
@ -2084,9 +2087,9 @@ parse_x509_usage(const char *list, unsigned int *res)
"Abbreviated names are okay if unique (e.g. dataEnc)\n");
exit(0);
}
for (n = 0; x509_usage_names[n]; n++) {
if (!strncasecmp(x509_usage_names[n], list, len)) {
*res |= (1 << n);
for (n = 0; x509_usage_names[n].name != NULL; n++) {
if (!strncasecmp(x509_usage_names[n].name, list, len)) {
*res |= x509_usage_names[n].flag;
match++;
}
}