Create new type "privdata" in all profiles with different

ACL settings, and check C_CreateObject parameter CKA_PRIVATE aka
pkcs15_create_data args.auth_id variable, aka sc_pkcs15init_new_object
object->flags & SC_PKCS15_CO_FLAG_PRIVATE to decide if "data" or "privdata"
profile needs to be used.

Tested with cryptoflex 32k and opensc-explorer, now I no longer can
"get" the data object file stored with "--private".


git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3605 c6295689-39f2-0310-b995-f0e70906c6a9
This commit is contained in:
aj 2008-12-28 16:07:51 +00:00
parent a89b14668f
commit 8a6bc59e66
11 changed files with 81 additions and 2 deletions

View File

@ -102,7 +102,15 @@ filesystem {
UPDATE=$PIN, UPDATE=$PIN,
ERASE=$PIN; ERASE=$PIN;
} }
# private data objects are stored in transparent EFs.
EF privdata {
file-id = 3402;
structure = transparent;
ACL = *=NEVER,
READ=$PIN,
UPDATE=$PIN,
ERASE=$PIN;
}
} }
} }

View File

@ -97,6 +97,16 @@ filesystem {
ERASE=$PIN; ERASE=$PIN;
} }
# private data objects are stored in transparent EFs.
EF privdata {
file-id = 3403;
structure = transparent;
ACL = *=NEVER,
READ=$PIN,
UPDATE=$PIN,
ERASE=$PIN;
}
} }
# This is needed when generating a key on-card. # This is needed when generating a key on-card.

View File

@ -111,6 +111,10 @@ filesystem {
file-id = 4600; file-id = 4600;
ACL = *=$PIN, READ=NONE; ACL = *=$PIN, READ=NONE;
} }
EF privdata {
file-id = 4700;
ACL = *=$PIN;
}
} }
} }
} }

View File

@ -174,6 +174,13 @@ filesystem {
ACL = *=NEVER,READ=NONE,UPDATE=$PIN; ACL = *=NEVER,READ=NONE,UPDATE=$PIN;
} }
# private data objects are stored in transparent EFs.
EF data {
file-id = 3401;
structure = transparent;
ACL = *=NEVER,READ=$PIN,UPDATE=$PIN;
}
} }
} }

View File

@ -115,6 +115,10 @@ filesystem {
file-id = 4600; file-id = 4600;
ACL = *=$PIN, READ=NONE; ACL = *=$PIN, READ=NONE;
} }
EF privdata {
file-id = 4700;
ACL = *=$PIN;
}
} }
} }
} }

View File

@ -72,6 +72,16 @@ filesystem {
WRITE=$PIN; WRITE=$PIN;
} }
# private data objects are stored in transparent EFs.
EF privdata {
file-id = 3300;
structure = transparent;
ACL = *=NEVER,
READ=$PIN,
UPDATE=$PIN,
WRITE=$PIN;
}
EF public-key { EF public-key {
file-id = 3300; file-id = 3300;
structure = transparent; structure = transparent;

View File

@ -92,6 +92,16 @@ filesystem {
ERASE=$PIN; ERASE=$PIN;
} }
# private data objects are stored in transparent EFs.
EF privdata {
file-id = 3402;
structure = transparent;
ACL = *=NEVER,
READ=$PIN,
UPDATE=$PIN,
ERASE=$PIN;
}
} }
# This is needed when generating a key on-card. # This is needed when generating a key on-card.

View File

@ -41,6 +41,11 @@ filesystem {
file-id = 3200; file-id = 3200;
acl = *=NEVER, UPDATE=$PIN, READ=NONE, acl = *=NEVER, UPDATE=$PIN, READ=NONE,
ERASE=$SOPIN; ERASE=$SOPIN;
}
EF privdata {
file-id = 3500;
acl = *=NEVER, UPDATE=$PIN, READ=$PIN,
ERASE=$SOPIN;
} }
EF public-key { EF public-key {
file-id = 3300; file-id = 3300;

View File

@ -162,6 +162,15 @@ filesystem {
READ=NONE, READ=NONE,
UPDATE=$PIN, UPDATE=$PIN,
ERASE=$PIN; ERASE=$PIN;
}
# private data objects are stored in transparent EFs.
EF privdata {
file-id = 3400;
structure = transparent;
ACL = *=NEVER,
READ=$PIN,
UPDATE=$PIN,
ERASE=$PIN;
} }
} }

View File

@ -2339,7 +2339,10 @@ static int select_object_path(sc_pkcs15_card_t *p15card, sc_profile_t *profile,
name = "certificate"; name = "certificate";
break; break;
case SC_PKCS15_TYPE_DATA_OBJECT: case SC_PKCS15_TYPE_DATA_OBJECT:
name = "data"; if (obj->flags & SC_PKCS15_CO_FLAG_PRIVATE)
name = "privdata";
else
name = "data";
break; break;
default: default:
return 0; return 0;

View File

@ -122,6 +122,15 @@ filesystem {
READ=NONE, READ=NONE,
UPDATE=$PIN, UPDATE=$PIN,
ERASE=$PIN; ERASE=$PIN;
}
# private data objects are stored in transparent EFs.
EF privdata {
file-id = 3401;
structure = transparent;
ACL = *=NEVER,
READ=$PIN,
UPDATE=$PIN,
ERASE=$PIN;
} }
} }