ruToken cleanups

Move constants out of standard files.
Create ruToken specific interface.
Update symbols.

Thread at:
http://www.opensc-project.org/pipermail/opensc-devel/2008-March/010917.html

Cleanup of:
http://www.opensc-project.org/pipermail/opensc-devel/2007-December/010617.html



git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3439 c6295689-39f2-0310-b995-f0e70906c6a9
This commit is contained in:
alonbl 2008-03-26 06:24:37 +00:00
parent d0e0dd2820
commit 80a16f686d
14 changed files with 35 additions and 19 deletions

View File

@ -13,7 +13,9 @@ all-local:
@$(LN_S) $(top_srcdir)/src/libopensc/pkcs15.h pkcs15.h
@$(LN_S) $(top_srcdir)/src/libopensc/types.h types.h
@$(LN_S) $(top_srcdir)/src/libopensc/ui.h ui.h
@$(LN_S) $(top_srcdir)/src/libopensc/rutoken.h rutoken.h
@$(LN_S) $(top_srcdir)/src/pkcs11/pkcs11.h pkcs11.h
@$(LN_S) $(top_srcdir)/src/pkcs11/pkcs11-opensc.h pkcs11-opensc.h
@$(LN_S) $(top_srcdir)/src/pkcs15init/keycache.h keycache.h
@$(LN_S) $(top_srcdir)/src/pkcs15init/pkcs15-init.h pkcs15-init.h
@$(LN_S) $(top_srcdir)/src/scconf/scconf.h scconf.h

View File

@ -9,7 +9,8 @@ lib_LTLIBRARIES = libopensc.la
openscinclude_HEADERS = \
opensc.h pkcs15.h emv.h \
cardctl.h asn1.h log.h ui.h \
errors.h types.h compression.h
errors.h types.h compression.h \
rutoken.h
noinst_HEADERS = cards.h ctbcs.h internal.h esteid.h muscle.h muscle-filesystem.h \
internal-winscard.h p15card-helper.h
pkgconfig_DATA = libopensc.pc libpkcs15init.pc libscconf.pc

View File

@ -45,6 +45,7 @@ typedef unsigned __int16 uint16_t;
#include <opensc/asn1.h>
#include <openssl/x509.h>
#include <openssl/err.h>
#include "rutoken.h"
#endif
#define FDESCR_DF 0x38 /*00111000b*/
@ -52,10 +53,6 @@ typedef unsigned __int16 uint16_t;
#define ID_RESERVED_CURDF 0x3FFF /*Reserved ID for current DF*/
#ifdef ENABLE_OPENSSL
int get_prkey_from_bin(const u8 *data, size_t len, struct sc_pkcs15_prkey **key);
#endif
#ifdef BIG_ENDIAN_RUTOKEN
#define MF_PATH "\x3F\x00"
#else
@ -1122,7 +1119,7 @@ static int rutoken_read_prkey(sc_card_t *card, struct sc_pkcs15_prkey **out)
{
r = sc_read_binary(card, 0, data, file->size, 0);
if(r > 0 && (size_t)r == file->size)
r = get_prkey_from_bin(data, file->size, out);
r = sc_rutoken_get_prkey_from_bin(data, file->size, out);
memset(data, 0, file->size);
free(data);
}

View File

@ -184,6 +184,7 @@ sc_release_context
sc_reset
sc_reset_retry_counter
sc_restore_security_env
sc_rutoken_get_prkey_from_bin
sc_rutoken_get_bin_from_prkey
sc_select_file
sc_set_card_driver

View File

@ -28,6 +28,7 @@
#include <assert.h>
#include <opensc/opensc.h>
#include <opensc/pkcs15.h>
#include <opensc/rutoken.h>
#if defined(HAVE_INTTYPES_H)
#include <inttypes.h>
#elif defined(HAVE_STDINT_H)
@ -327,7 +328,7 @@ static int clean_prkey_private_blob(const PRIVATEKEYBLOB* pr_blob)
return 0;
}
int get_prkey_from_bin(const u8 *data, size_t len, struct sc_pkcs15_prkey **key)
int sc_rutoken_get_prkey_from_bin(const u8 *data, size_t len, struct sc_pkcs15_prkey **key)
{
int ret = -1;
PRIVATEKEYBLOB pr_blob;

7
src/libopensc/rutoken.h Normal file
View File

@ -0,0 +1,7 @@
#ifndef RUTOKEN_H
#define RUTOKEN_H
int sc_rutoken_get_prkey_from_bin(const u8 *data, size_t len, struct sc_pkcs15_prkey **key);
int sc_rutoken_get_bin_from_prkey(const struct sc_pkcs15_prkey_rsa *rsa, u8 *key, size_t *keysize);
#endif

View File

@ -5,7 +5,7 @@ CLEANFILES = versioninfo.rc
EXTRA_DIST = Makefile.mak
dist_noinst_SCRIPTS = opensc_pkcs11_install.js
openscinclude_HEADERS = pkcs11.h
openscinclude_HEADERS = pkcs11.h pkcs11-opensc.h
lib_LTLIBRARIES = opensc-pkcs11.la pkcs11-spy.la onepin-opensc-pkcs11.la
noinst_LTLIBRARIES = libpkcs11.la

View File

@ -2079,7 +2079,7 @@ static CK_RV pkcs15_prkey_sign(struct sc_pkcs11_session *ses, void *obj,
case CKM_RSA_X_509:
flags = SC_ALGORITHM_RSA_RAW;
break;
case CKM_GOST:
case CKM_OPENSC_GOST:
flags = SC_ALGORITHM_GOST;
break;
default:
@ -2160,7 +2160,7 @@ pkcs15_prkey_decrypt(struct sc_pkcs11_session *ses, void *obj,
case CKM_RSA_X_509:
flags |= SC_ALGORITHM_RSA_RAW;
break;
case CKM_GOST:
case CKM_OPENSC_GOST:
flags |= SC_ALGORITHM_GOST;
default:
return CKR_MECHANISM_INVALID;
@ -2834,7 +2834,7 @@ static int register_mechanisms(struct sc_pkcs11_card *p11card)
#endif
mech_info.ulMinKeySize = 32;
mech_info.ulMaxKeySize = 32;
mt = sc_pkcs11_new_fw_mechanism(CKM_GOST,
mt = sc_pkcs11_new_fw_mechanism(CKM_OPENSC_GOST,
&mech_info, CKK_RSA, NULL);
rc = sc_pkcs11_register_mechanism(p11card, mt);
sc_debug(card->ctx, "register GOST!!! %d", rc);

View File

@ -0,0 +1,10 @@
#ifndef PKCS11_OPENSC_H
#define PKCS11_OPENSC_H
/* OpenSC specific extensions */
#define CKK_OPENSC_GOST (CKK_VENDOR_DEFINED+1)
#define CKA_OPENSC_GOST (CKA_VENDOR_DEFINED+1)
#define CKM_OPENSC_GOST (CKM_VENDOR_DEFINED+1)
#endif

View File

@ -358,11 +358,6 @@ typedef unsigned long ck_key_type_t;
#define CKK_TWOFISH (0x21)
#define CKK_VENDOR_DEFINED ((unsigned long) (1 << 31))
//rutoken:
#define CKK_GOST (CKK_VENDOR_DEFINED+1)
#define CKA_GOST CKA_VENDOR_DEFINED+1
#define CKM_GOST CKM_VENDOR_DEFINED+1
typedef unsigned long ck_certificate_type_t;
#define CKC_X_509 (0)

View File

@ -33,6 +33,7 @@
#define CRYPTOKI_EXPORTS
#include <pkcs11.h>
#include <pkcs11-opensc.h>
#ifdef __cplusplus
extern "C" {

View File

@ -31,6 +31,7 @@
#include <opensc/cardctl.h>
#include <opensc/log.h>
#include <opensc/pkcs15.h>
#include <opensc/rutoken.h>
#include "pkcs15-init.h"
#include "profile.h"
@ -74,8 +75,6 @@ static const struct
{ AODF_name, AODFid, SC_PKCS15_AODF }
};
int sc_rutoken_get_bin_from_prkey(const struct sc_pkcs15_prkey_rsa *rsa, u8 *key, size_t *keysize);
/*
* Create/override new EF.
*/

View File

@ -23,6 +23,7 @@
#endif
#include <opensc/pkcs11.h>
#include <opensc/pkcs11-opensc.h>
#include <compat_getpass.h>
#include "util.h"
@ -3572,7 +3573,7 @@ static struct mech_info p11_mechanisms[] = {
{ CKM_DSA_PARAMETER_GEN, "DSA-PARAMETER-GEN", NULL },
{ CKM_DH_PKCS_PARAMETER_GEN,"DH-PKCS-PARAMETER-GEN", NULL },
{ CKM_X9_42_DH_PARAMETER_GEN,"X9-42-DH-PARAMETER-GEN", NULL },
{ CKM_GOST,"GOST", NULL },
{ CKM_OPENSC_GOST, "GOST", NULL },
{ NO_MECHANISM, NULL, NULL }
};

View File

@ -33,6 +33,7 @@
#include <fcntl.h>
#include <opensc/opensc.h>
#include <opensc/cardctl.h>
#include <opensc/rutoken.h>
#include "util.h"
#define IV_SIZE 8