*
* Author: Nikos Mavrogiannopoulos
*
-<<<<<<< HEAD:lib/pkcs11.c
* Inspired and some parts based on neon PKCS #11 support by Joe Orton.
* More ideas came from the pkcs11-helper library.
*
-=======
->>>>>>> Added gnutls_pkcs11_privkey_t and gnutls_privkey_t types. Those are:lib/pkcs11.c
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
ck_slot_id_t *slots;
};
-<<<<<<< HEAD:lib/pkcs11.c
struct url_find_data_st {
gnutls_pkcs11_obj_t crt;
};
struct flags_find_data_st {
struct pkcs11_url_info info;
unsigned int slot_flags;
-=======
-struct gnutls_pkcs11_crt_st {
- gnutls_datum_t raw;
- gnutls_certificate_type_t type;
- struct pkcs11_url_info info;
-};
-
-struct url_find_data_st {
- gnutls_pkcs11_crt_t crt;
->>>>>>> Added gnutls_pkcs11_privkey_t and gnutls_privkey_t types. Those are:lib/pkcs11.c
};
struct crt_find_data_st {
struct pkcs11_url_info info;
};
-<<<<<<< HEAD:lib/pkcs11.c
-=======
-
->>>>>>> Added gnutls_pkcs11_privkey_t and gnutls_privkey_t types. Those are:lib/pkcs11.c
static struct gnutls_pkcs11_provider_s providers[MAX_PROVIDERS];
static int active_providers = 0;
gnutls_pkcs11_token_callback_t token_func;
void* token_data;
-<<<<<<< HEAD:lib/pkcs11.c
/* Fake scan */
void pkcs11_rescan_slots(void)
{
* Returns: On success, %GNUTLS_E_SUCCESS is returned, otherwise a
* negative error value.
**/
-=======
->>>>>>> Added gnutls_pkcs11_privkey_t and gnutls_privkey_t types. Those are:lib/pkcs11.c
int gnutls_pkcs11_add_provider (const char * name, const char * params)
{
return pkcs11_get_info(&crt->info, itype, output, output_size);
}
-<<<<<<< HEAD:lib/pkcs11.c
int pkcs11_get_info(struct pkcs11_url_info *info, gnutls_pkcs11_obj_info_t itype,
-=======
-int pkcs11_get_info(struct pkcs11_url_info *info, gnutls_pkcs11_cert_info_t itype,
->>>>>>> Added gnutls_pkcs11_privkey_t and gnutls_privkey_t types. Those are:lib/pkcs11.c
void* output, size_t* output_size)
{
const char* str = NULL;
size_t len;
switch(itype) {
-<<<<<<< HEAD:lib/pkcs11.c
case GNUTLS_PKCS11_OBJ_ID:
-=======
- case GNUTLS_PKCS11_CRT_ID:
->>>>>>> Added gnutls_pkcs11_privkey_t and gnutls_privkey_t types. Those are:lib/pkcs11.c
if (*output_size < info->certid_raw_size) {
*output_size = info->certid_raw_size;
return GNUTLS_E_SHORT_MEMORY_BUFFER;
*output_size = info->certid_raw_size;
return 0;
-<<<<<<< HEAD:lib/pkcs11.c
case GNUTLS_PKCS11_OBJ_ID_HEX:
str = info->id;
break;
str = info->manufacturer;
break;
case GNUTLS_PKCS11_OBJ_TOKEN_MODEL:
-=======
- case GNUTLS_PKCS11_CRT_ID_HEX:
- str = info->id;
- break;
- case GNUTLS_PKCS11_CRT_LABEL:
- str = info->label;
- break;
- case GNUTLS_PKCS11_CRT_TOKEN_LABEL:
- str = info->token;
- break;
- case GNUTLS_PKCS11_CRT_TOKEN_SERIAL:
- str = info->serial;
- break;
- case GNUTLS_PKCS11_CRT_TOKEN_MANUFACTURER:
- str = info->manufacturer;
- break;
- case GNUTLS_PKCS11_CRT_TOKEN_MODEL:
->>>>>>> Added gnutls_pkcs11_privkey_t and gnutls_privkey_t types. Those are:lib/pkcs11.c
str = info->model;
break;
default:
static int init = 0;
-<<<<<<< HEAD:lib/pkcs11.c
/**
* gnutls_pkcs11_init:
* Returns: On success, %GNUTLS_E_SUCCESS is returned, otherwise a
* negative error value.
**/
-=======
->>>>>>> Added gnutls_pkcs11_privkey_t and gnutls_privkey_t types. Those are:lib/pkcs11.c
int gnutls_pkcs11_init(unsigned int flags, const char* configfile)
{
int ret;
pin_data = userdata;
}
-<<<<<<< HEAD:lib/pkcs11.c
/**
* gnutls_pkcs11_set_token_function:
* @fn: The PIN callback
* Returns: On success, %GNUTLS_E_SUCCESS is returned, otherwise a
* negative error value.
**/
-=======
->>>>>>> Added gnutls_pkcs11_privkey_t and gnutls_privkey_t types. Those are:lib/pkcs11.c
void gnutls_pkcs11_set_token_function(gnutls_pkcs11_token_callback_t fn,
void *userdata)
{
gnutls_assert();
goto cleanup;
}
-<<<<<<< HEAD:lib/pkcs11.c
memcpy(info->id, p1, l);
info->id[l] = 0;
-=======
->>>>>>> Added gnutls_pkcs11_privkey_t and gnutls_privkey_t types. Those are:lib/pkcs11.c
}
ret = 0;
**/
int gnutls_pkcs11_obj_init(gnutls_pkcs11_obj_t * crt)
{
-<<<<<<< HEAD:lib/pkcs11.c
*crt = gnutls_calloc(1, sizeof(struct gnutls_pkcs11_obj_st));
-=======
- *crt = gnutls_calloc(1, sizeof(struct gnutls_pkcs11_crt_st));
->>>>>>> Added gnutls_pkcs11_privkey_t and gnutls_privkey_t types. Those are:lib/pkcs11.c
+
if (*crt == NULL) {
gnutls_assert();
return GNUTLS_E_MEMORY_ERROR;
return GNUTLS_E_MEMORY_ERROR;
}
-<<<<<<< HEAD:lib/pkcs11.c
/* Find objects with given class and type */
-=======
- /* Find objects with cert class and X.509 cert type. */
- class = CKO_CERTIFICATE;
- type = CKC_X_509;
->>>>>>> Added gnutls_pkcs11_privkey_t and gnutls_privkey_t types. Those are:lib/pkcs11.c
a[0].type = CKA_CLASS;
a[0].value = &class;
a[0].value_len = sizeof class;
-<<<<<<< HEAD:lib/pkcs11.c
a[1].type = CKA_ID;
a[1].value = find_data->crt->info.certid_raw;
}
rv = pakchois_find_objects_init(pks, a, a_vals);
-=======
- a[1].type = CKA_CERTIFICATE_TYPE;
- a[1].value = &type;
- a[1].value_len = sizeof type;
- a[2].type = CKA_ID;
- a[2].value = find_data->crt->info.certid_raw;
- a[2].value_len = find_data->crt->info.certid_raw_size;
-
-
- rv = pakchois_find_objects_init(pks, a, 3);
->>>>>>> Added gnutls_pkcs11_privkey_t and gnutls_privkey_t types. Those are:lib/pkcs11.c
if (rv != CKR_OK) {
gnutls_assert();
_gnutls_debug_log("pk11: FindObjectsInit failed.\n");
gnutls_datum_t data = { a[0].value, a[0].value_len };
gnutls_datum_t label = { a[1].value, a[1].value_len };
-<<<<<<< HEAD:lib/pkcs11.c
if (class == CKO_PUBLIC_KEY) {
ret = pkcs11_obj_import_pubkey(pks, obj, find_data->crt, &id, &label, &info->tinfo);
} else {
gnutls_assert();
goto cleanup;
}
-=======
- ret = pkcs11_crt_import(find_data->crt, &data, &id, &label, &info->tinfo);
- if (ret < 0) {
- gnutls_assert();
- goto cleanup;
- }
->>>>>>> Added gnutls_pkcs11_privkey_t and gnutls_privkey_t types. Those are:lib/pkcs11.c
found = 1;
break;
return ret;
}
-<<<<<<< HEAD:lib/pkcs11.c
ret = _pkcs11_traverse_tokens(find_obj_url, &find_data, 0);
-=======
- ret = _pkcs11_traverse_tokens(find_cert_url, &find_data, 0);
->>>>>>> Added gnutls_pkcs11_privkey_t and gnutls_privkey_t types. Those are:lib/pkcs11.c
if (ret < 0) {
gnutls_assert();
return ret;
gnutls_assert();
return GNUTLS_E_MEMORY_ERROR;
}
-<<<<<<< HEAD:lib/pkcs11.c
-=======
-
- /* Find objects with cert class and X.509 cert type. */
- class = CKO_CERTIFICATE;
- type = CKC_X_509;
- trusted = 1;
->>>>>>> Added gnutls_pkcs11_privkey_t and gnutls_privkey_t types. Those are:lib/pkcs11.c
/* Find objects with cert class and X.509 cert type. */
&& count == 1) {
gnutls_datum_t label, id, value;
-<<<<<<< HEAD:lib/pkcs11.c
a[0].type = CKA_LABEL;
a[0].value = label_tmp;
a[0].value_len = sizeof label_tmp;
-=======
- a[0].type = CKA_VALUE;
- a[0].value = cert_data;
- a[0].value_len = MAX_CERT_SIZE;
- a[1].type = CKA_ID;
- a[1].value = certid_tmp;
- a[1].value_len = sizeof(certid_tmp);
- a[2].type = CKA_LABEL;
- a[2].value = label_tmp;
- a[2].value_len = sizeof label_tmp;
-
- if (pakchois_get_attribute_value(pks, obj, a, 3) == CKR_OK) {
- gnutls_datum_t data = { a[0].value, a[0].value_len };
- gnutls_datum_t id = { a[1].value, a[1].value_len };
- gnutls_datum_t label = { a[2].value, a[2].value_len };
->>>>>>> Added gnutls_pkcs11_privkey_t and gnutls_privkey_t types. Those are:lib/pkcs11.c
if (pakchois_get_attribute_value(pks, obj, a, 1) == CKR_OK) {
label.data = a[0].value;