More cleanup.

This commit is contained in:
Alessio Di Mauro
2015-09-02 16:06:37 +02:00
parent c13426a2e8
commit ee2a364c15
2 changed files with 18 additions and 74 deletions
+12 -41
View File
@@ -142,21 +142,6 @@ static piv_pubk_obj_t pubkey_objects[] = {
{NULL, 1, 1, 0, 0}
};
/*static void get_object_class(CK_OBJECT_HANDLE obj, CK_OBJECT_CLASS_PTR class) {
if (obj >= 0 && obj < PIV_DATA_OBJ_LAST)
*class = CKO_DATA;
else if (obj > PIV_DATA_OBJ_LAST && obj < PIV_CERT_OBJ_LAST)
*class = CKO_CERTIFICATE;
else
*class = CKO_VENDOR_DEFINED | CKO_DATA; // Invalid value
}*/
/*static void get_object_label(CK_OBJECT_HANDLE obj, CK_UTF8CHAR_PTR label) {
strcpy((char *)label, objects[obj].name);
}
*/
// Next two functions based off the code at
// https://github.com/m9aertner/oidConverter/blob/master/oid.c
// TODO: how to give credit? OR JUST STORE THE OID ALREADY ENCODED?
@@ -173,7 +158,7 @@ static void make_base128(unsigned long l, int first, CK_BYTE_PTR buf, CK_ULONG_P
}
static void asn1_encode_oid(CK_CHAR_PTR oid, CK_BYTE_PTR asn1_oid, CK_ULONG_PTR len) {
CK_CHAR_PTR tmp = strdup((char *)oid);
CK_CHAR_PTR tmp = (CK_BYTE_PTR) strdup((char *)oid);
CK_CHAR_PTR p = tmp;
CK_BYTE_PTR q = NULL;
CK_ULONG n = 0;
@@ -229,20 +214,6 @@ static void asn1_encode_oid(CK_CHAR_PTR oid, CK_BYTE_PTR asn1_oid, CK_ULONG_PTR
free(tmp);
}
/*static void get_object_oid(CK_OBJECT_HANDLE obj, CK_UTF8CHAR_PTR oid) {
strcpy((char *)oid, objects[obj].oid);
}
static void get_object_certificate_type(CK_OBJECT_HANDLE obj, CK_CERTIFICATE_TYPE_PTR type) {
if ((objects[obj].flags & PIV_OBJECT_TYPE_CERT))
*type = CKC_X_509;
}
static void get_object_key_id(CK_OBJECT_HANDLE obj, CK_UTF8CHAR_PTR key_id) {
memcpy((char *)key_id, objects[obj].containerid, 2);
}
*/
static CK_KEY_TYPE get_key_type(EVP_PKEY *key) {
return do_get_key_type(key);
}
@@ -292,13 +263,13 @@ CK_RV get_doa(CK_OBJECT_HANDLE obj, CK_ATTRIBUTE_PTR template) {
case CKA_LABEL:
DBG(("LABEL"));
len = strlen(piv_objects[obj].label) + 1;
data = piv_objects[obj].label;
data = (CK_BYTE_PTR) piv_objects[obj].label;
break;
case CKA_APPLICATION:
DBG(("APPLICATION"));
len = strlen(piv_objects[obj].label) + 1;
data = piv_objects[obj].label;
data = (CK_BYTE_PTR) piv_objects[obj].label;
break;
case CKA_VALUE: // TODO: this can be done with -r and -d|-a
@@ -327,7 +298,7 @@ CK_RV get_doa(CK_OBJECT_HANDLE obj, CK_ATTRIBUTE_PTR template) {
/* Just get the length */
if (template->pValue == NULL_PTR) {
template->ulValueLen = len; // TODO: define?
template->ulValueLen = len;
return CKR_OK;
}
@@ -375,7 +346,7 @@ CK_RV get_coa(CK_OBJECT_HANDLE obj, CK_ATTRIBUTE_PTR template) {
case CKA_LABEL:
DBG(("LABEL"));
len = strlen(piv_objects[obj].label) + 1;
data = piv_objects[obj].label;
data = (CK_BYTE_PTR) piv_objects[obj].label;
break;
case CKA_VALUE:
@@ -431,7 +402,7 @@ CK_RV get_coa(CK_OBJECT_HANDLE obj, CK_ATTRIBUTE_PTR template) {
/* Just get the length */
if (template->pValue == NULL_PTR) {
template->ulValueLen = len; // TODO: define?
template->ulValueLen = len;
return CKR_OK;
}
@@ -480,7 +451,7 @@ CK_RV get_proa(CK_OBJECT_HANDLE obj, CK_ATTRIBUTE_PTR template) {
case CKA_LABEL:
DBG(("LABEL"));
len = strlen(piv_objects[obj].label) + 1;
data = piv_objects[obj].label;
data =(CK_BYTE_PTR) piv_objects[obj].label;
break;
case CKA_KEY_TYPE:
@@ -617,7 +588,7 @@ CK_RV get_proa(CK_OBJECT_HANDLE obj, CK_ATTRIBUTE_PTR template) {
/* Just get the length */
if (template->pValue == NULL_PTR) {
template->ulValueLen = len; // TODO: define?
template->ulValueLen = len;
return CKR_OK;
}
@@ -666,11 +637,9 @@ CK_RV get_puoa(CK_OBJECT_HANDLE obj, CK_ATTRIBUTE_PTR template) {
case CKA_LABEL:
DBG(("LABEL"));
len = strlen(piv_objects[obj].label) + 1;
data = piv_objects[obj].label;
data = (CK_BYTE_PTR)piv_objects[obj].label;
break;
// case CKA_VALUE: // TODO: this can be done with -r and -d|-a
case CKA_KEY_TYPE:
DBG(("KEY TYPE"));
len = sizeof(CK_ULONG);
@@ -774,7 +743,7 @@ CK_RV get_puoa(CK_OBJECT_HANDLE obj, CK_ATTRIBUTE_PTR template) {
/* Just get the length */
if (template->pValue == NULL_PTR) {
template->ulValueLen = len; // TODO: define?
template->ulValueLen = len;
return CKR_OK;
}
@@ -913,6 +882,8 @@ CK_RV store_cert(piv_obj_id_t cert_id, CK_BYTE_PTR data, CK_ULONG len) {
// Extract and store the public key as an object
rv = do_store_pubk(cert_objects[piv_objects[cert_id].sub_id].data, &pubkey_objects[piv_objects[cert_id].sub_id].data);
if (rv != CKR_OK)
return rv;
return CKR_OK;
}
+6 -33
View File
@@ -110,12 +110,12 @@ CK_DEFINE_FUNCTION(CK_RV, C_GetInfo)(
pInfo->cryptokiVersion = function_list.version;
memset(pInfo->manufacturerID, ' ', sizeof(pInfo->manufacturerID));
strcpy(pInfo->manufacturerID, YKCS11_MANUFACTURER);
strcpy((char *)pInfo->manufacturerID, YKCS11_MANUFACTURER);
pInfo->flags = 0;
memset(pInfo->libraryDescription, ' ', sizeof(pInfo->libraryDescription));
strcpy(pInfo->libraryDescription, YKCS11_LIBDESC);
strcpy((char *)pInfo->libraryDescription, YKCS11_LIBDESC);
pInfo->libraryVersion = ver;
@@ -132,7 +132,7 @@ CK_DEFINE_FUNCTION(CK_RV, C_GetFunctionList)(
DBG(("GetFunctionList called with ppFunctionList = NULL"));
return CKR_ARGUMENTS_BAD;
}
*ppFunctionList = &function_list;
*ppFunctionList = &function_list; // TODO: filter out unsupported functions
DOUT;
return CKR_OK;
@@ -689,7 +689,7 @@ CK_DEFINE_FUNCTION(CK_RV, C_Login)(
return CKR_CRYPTOKI_NOT_INITIALIZED;
}
if (userType != CKU_SO && // TODO: what can SO do?
if (userType != CKU_SO &&
userType != CKU_USER &&
userType != CKU_CONTEXT_SPECIFIC)
return CKR_USER_TYPE_INVALID;
@@ -828,8 +828,6 @@ CK_DEFINE_FUNCTION(CK_RV, C_CreateObject)(
CK_BYTE id;
CK_BYTE_PTR value;
CK_ULONG value_len;
CK_BYTE_PTR ec_params;
CK_ULONG ec_params_len;
CK_BYTE_PTR p;
CK_BYTE_PTR q;
CK_BYTE_PTR dp;
@@ -967,7 +965,7 @@ CK_DEFINE_FUNCTION(CK_RV, C_CreateObject)(
}
DBG(("Key id is %u", id));
DBG(("ITEM LENGTH IS %lu", value_len));
object = PIV_PVTK_OBJ_PIV_AUTH + id;
if (is_rsa == CK_TRUE) {
@@ -1067,9 +1065,6 @@ CK_DEFINE_FUNCTION(CK_RV, C_GetAttributeValue)(
if (pTemplate == NULL_PTR || ulCount == 0)
return CKR_ARGUMENTS_BAD;
/*if (find_obj.active != CK_TRUE)
return CKR_OPERATION_NOT_INITIALIZED; actually this can be called from many other functions*/
rv_final = CKR_OK;
for (i = 0; i < ulCount; i++) {
@@ -1581,7 +1576,7 @@ CK_DEFINE_FUNCTION(CK_RV, C_SignInit)(
}
// The buffer contains an uncompressed point of the form 04, len, 04, x, y
// Where len is the |x| + |y| + 1 bytes
// Where len is |x| + |y| + 1 bytes
op_info.op.sign.key_len = ((buf[1] - 1) / 2) * 8;
@@ -2018,13 +2013,6 @@ CK_DEFINE_FUNCTION(CK_RV, C_GenerateKeyPair)(
return rv;
}
/* rv = token.get_token_objects_num(piv_state, &n_objs, &n_certs); */
/* if (rv != CKR_OK) { */
/* DBG(("Unable to retrieve token objects")); */
/* return rv; */
/* } */
/* DBG(("There were %lu objs and %lu certs, there are %lu objs and %lu certs", session.slot->token->n_objects, session.slot->token->n_certs, n_objs, n_certs)); */
is_new = CK_TRUE;
for (i = 0; i < session.slot->token->n_objects; i++) {
if (session.slot->token->objects[i] == op_info.op.gen.key_id)
@@ -2071,21 +2059,6 @@ CK_DEFINE_FUNCTION(CK_RV, C_GenerateKeyPair)(
return CKR_FUNCTION_FAILED; // TODO: although key generation succeeded at this point
}
/*session.slot->token->n_objects += 4;
session.slot->token->n_certs++;
obj_ptr = realloc(session.slot->token->objects, session.slot->token->n_objects * sizeof(piv_obj_id_t));
if (obj_ptr == NULL) {
DBG(("Unable to store new item in the session"));
return CKR_HOST_MEMORY;
}
obj_ptr = session.slot->token->objects + session.slot->token->n_objects - 4;
*obj_ptr++ = dobj_id;
*obj_ptr++ = cert_id;
*obj_ptr++ = pvtk_id;
*obj_ptr++ = pubk_id;*/
*phPrivateKey = op_info.op.gen.key_id;
*phPublicKey = op_info.op.gen.key_id - PIV_PVTK_OBJ_KM + PIV_PUBK_OBJ_KM; // TODO: make function for these?