changes by Douglas E. Engert:
change the do_decompress* to sc_decompress* and the initialize_* to sc_pkcs15emu_initialize_* in the new code. git-svn-id: https://www.opensc-project.org/svnp/opensc/trunk@3126 c6295689-39f2-0310-b995-f0e70906c6a9
This commit is contained in:
parent
c6954a9c33
commit
eab8ade2ec
@ -153,6 +153,7 @@ app default {
|
|||||||
# oberthur Oberthur AuthentIC.v2/CosmopolIC.v4
|
# oberthur Oberthur AuthentIC.v2/CosmopolIC.v4
|
||||||
# belpic Belpic cards
|
# belpic Belpic cards
|
||||||
# emv EMV compatible cards
|
# emv EMV compatible cards
|
||||||
|
# piv U.S. NIST 800-73-1 PIV
|
||||||
|
|
||||||
# Generic format: card_atr <hex encoded ATR (case-sensitive!)>
|
# Generic format: card_atr <hex encoded ATR (case-sensitive!)>
|
||||||
|
|
||||||
@ -228,7 +229,6 @@ app default {
|
|||||||
# card_atr 3B:7D:96:00:00:80:31:80:65:B0:83:11:00:AC:83:00:90:00 {
|
# card_atr 3B:7D:96:00:00:80:31:80:65:B0:83:11:00:AC:83:00:90:00 {
|
||||||
# name = "PIV-II";
|
# name = "PIV-II";
|
||||||
# driver = "piv";
|
# driver = "piv";
|
||||||
# pkcs15emu = "PIV-II";
|
|
||||||
# }
|
# }
|
||||||
|
|
||||||
# Estonian ID card and Micardo driver currently play together with T=0
|
# Estonian ID card and Micardo driver currently play together with T=0
|
||||||
@ -279,7 +279,7 @@ app default {
|
|||||||
# Default: yes
|
# Default: yes
|
||||||
# enable_builtin_emulation = yes;
|
# enable_builtin_emulation = yes;
|
||||||
# list of the builtin pkcs15 emulators to test
|
# list of the builtin pkcs15 emulators to test
|
||||||
builtin_emulators = esteid, openpgp, tcos, starcert, infocamere, postecert, actalis, atrust-acos, gemsafe, tccardos;
|
builtin_emulators = esteid, openpgp, tcos, starcert, infocamere, postecert, actalis, atrust-acos, gemsafe, tccardos, PIV-II;
|
||||||
|
|
||||||
# additional settings per driver
|
# additional settings per driver
|
||||||
#
|
#
|
||||||
|
@ -678,7 +678,7 @@ static int piv_handle_certificate_data(sc_card_t *card,
|
|||||||
#ifdef HAVE_ZLIB_H
|
#ifdef HAVE_ZLIB_H
|
||||||
size_t len = count;
|
size_t len = count;
|
||||||
u8* newBuf = NULL;
|
u8* newBuf = NULL;
|
||||||
if(SC_SUCCESS != do_decompress_alloc(&newBuf, &len, tag, taglen, COMPRESSION_AUTO)) {
|
if(SC_SUCCESS != sc_decompress_alloc(&newBuf, &len, tag, taglen, COMPRESSION_AUTO)) {
|
||||||
return SC_ERROR_OBJECT_NOT_VALID;
|
return SC_ERROR_OBJECT_NOT_VALID;
|
||||||
} else {
|
} else {
|
||||||
if(len < count + idx)
|
if(len < count + idx)
|
||||||
|
@ -58,7 +58,7 @@ static int detect_method(const u8* in, size_t inLen) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int do_decompress_gzip(u8* out, size_t* outLen, const u8* in, size_t inLen) {
|
static int sc_decompress_gzip(u8* out, size_t* outLen, const u8* in, size_t inLen) {
|
||||||
/* Since uncompress does not offer a way to make it uncompress gzip... manually set it up */
|
/* Since uncompress does not offer a way to make it uncompress gzip... manually set it up */
|
||||||
z_stream gz;
|
z_stream gz;
|
||||||
int err;
|
int err;
|
||||||
@ -83,7 +83,7 @@ static int do_decompress_gzip(u8* out, size_t* outLen, const u8* in, size_t inLe
|
|||||||
return zerr_to_opensc(err);
|
return zerr_to_opensc(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
int do_decompress(u8* out, size_t* outLen, const u8* in, size_t inLen, int method) {
|
int sc_decompress(u8* out, size_t* outLen, const u8* in, size_t inLen, int method) {
|
||||||
if(method == COMPRESSION_AUTO) {
|
if(method == COMPRESSION_AUTO) {
|
||||||
method = detect_method(in, inLen);
|
method = detect_method(in, inLen);
|
||||||
if(method == COMPRESSION_UNKNOWN) {
|
if(method == COMPRESSION_UNKNOWN) {
|
||||||
@ -94,13 +94,13 @@ int do_decompress(u8* out, size_t* outLen, const u8* in, size_t inLen, int metho
|
|||||||
case COMPRESSION_ZLIB:
|
case COMPRESSION_ZLIB:
|
||||||
return zerr_to_opensc(uncompress(out, outLen, in, inLen));
|
return zerr_to_opensc(uncompress(out, outLen, in, inLen));
|
||||||
case COMPRESSION_GZIP:
|
case COMPRESSION_GZIP:
|
||||||
return do_decompress_gzip(out, outLen, in, inLen);
|
return sc_decompress_gzip(out, outLen, in, inLen);
|
||||||
default:
|
default:
|
||||||
return SC_ERROR_INVALID_ARGUMENTS;
|
return SC_ERROR_INVALID_ARGUMENTS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int do_decompress_zlib_alloc(u8** out, size_t* outLen, const u8* in, size_t inLen, int gzip) {
|
static int sc_decompress_zlib_alloc(u8** out, size_t* outLen, const u8* in, size_t inLen, int gzip) {
|
||||||
/* Since uncompress does not offer a way to make it uncompress gzip... manually set it up */
|
/* Since uncompress does not offer a way to make it uncompress gzip... manually set it up */
|
||||||
z_stream gz;
|
z_stream gz;
|
||||||
int err;
|
int err;
|
||||||
@ -157,7 +157,7 @@ static int do_decompress_zlib_alloc(u8** out, size_t* outLen, const u8* in, size
|
|||||||
inflateEnd(&gz);
|
inflateEnd(&gz);
|
||||||
return zerr_to_opensc(err);
|
return zerr_to_opensc(err);
|
||||||
}
|
}
|
||||||
int do_decompress_alloc(u8** out, size_t* outLen, const u8* in, size_t inLen, int method) {
|
int sc_decompress_alloc(u8** out, size_t* outLen, const u8* in, size_t inLen, int method) {
|
||||||
if(method == COMPRESSION_AUTO) {
|
if(method == COMPRESSION_AUTO) {
|
||||||
method = detect_method(in, inLen);
|
method = detect_method(in, inLen);
|
||||||
if(method == COMPRESSION_UNKNOWN) {
|
if(method == COMPRESSION_UNKNOWN) {
|
||||||
@ -166,9 +166,9 @@ int do_decompress_alloc(u8** out, size_t* outLen, const u8* in, size_t inLen, in
|
|||||||
}
|
}
|
||||||
switch(method) {
|
switch(method) {
|
||||||
case COMPRESSION_ZLIB:
|
case COMPRESSION_ZLIB:
|
||||||
return do_decompress_zlib_alloc(out, outLen, in, inLen, 0);
|
return sc_decompress_zlib_alloc(out, outLen, in, inLen, 0);
|
||||||
case COMPRESSION_GZIP:
|
case COMPRESSION_GZIP:
|
||||||
return do_decompress_zlib_alloc(out, outLen, in, inLen, 1);
|
return sc_decompress_zlib_alloc(out, outLen, in, inLen, 1);
|
||||||
default:
|
default:
|
||||||
return SC_ERROR_INVALID_ARGUMENTS;
|
return SC_ERROR_INVALID_ARGUMENTS;
|
||||||
}
|
}
|
||||||
|
@ -28,8 +28,8 @@
|
|||||||
#define COMPRESSION_GZIP 2
|
#define COMPRESSION_GZIP 2
|
||||||
#define COMPRESSION_UNKNOWN (-1)
|
#define COMPRESSION_UNKNOWN (-1)
|
||||||
|
|
||||||
int do_decompress_alloc(u8** out, size_t* outLen, const u8* in, size_t inLen, int method);
|
int sc_decompress_alloc(u8** out, size_t* outLen, const u8* in, size_t inLen, int method);
|
||||||
int do_decompress(u8* out, size_t* outLen, const u8* in, size_t inLen, int method);
|
int sc_decompress(u8* out, size_t* outLen, const u8* in, size_t inLen, int method);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
#include <openssl/rsa.h>
|
#include <openssl/rsa.h>
|
||||||
#include <openssl/x509.h>
|
#include <openssl/x509.h>
|
||||||
|
|
||||||
int initialize_objects(sc_pkcs15_card_t *p15card, p15data_items *items) {
|
int sc_pkcs15emu_initialize_objects(sc_pkcs15_card_t *p15card, p15data_items *items) {
|
||||||
sc_card_t* card = p15card->card;
|
sc_card_t* card = p15card->card;
|
||||||
const objdata* objects = items->objects;
|
const objdata* objects = items->objects;
|
||||||
int i, r;
|
int i, r;
|
||||||
@ -202,7 +202,7 @@ err:
|
|||||||
SC_FUNC_RETURN(p15card->card->ctx, 1, r);
|
SC_FUNC_RETURN(p15card->card->ctx, 1, r);
|
||||||
}
|
}
|
||||||
|
|
||||||
int initialize_certificates(sc_pkcs15_card_t *p15card, p15data_items* items) {
|
int sc_pkcs15emu_initialize_certificates(sc_pkcs15_card_t *p15card, p15data_items* items) {
|
||||||
/* set certs */
|
/* set certs */
|
||||||
sc_card_t* card = p15card->card;
|
sc_card_t* card = p15card->card;
|
||||||
const cdata* certs = items->certs;
|
const cdata* certs = items->certs;
|
||||||
@ -266,7 +266,7 @@ int initialize_certificates(sc_pkcs15_card_t *p15card, p15data_items* items) {
|
|||||||
return SC_SUCCESS;
|
return SC_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int initialize_pins(sc_pkcs15_card_t *p15card, p15data_items* items) {
|
int sc_pkcs15emu_initialize_pins(sc_pkcs15_card_t *p15card, p15data_items* items) {
|
||||||
/* set pins */
|
/* set pins */
|
||||||
int i,r;
|
int i,r;
|
||||||
const pindata* pins = items->pins;
|
const pindata* pins = items->pins;
|
||||||
@ -298,7 +298,7 @@ int initialize_pins(sc_pkcs15_card_t *p15card, p15data_items* items) {
|
|||||||
return SC_SUCCESS;
|
return SC_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int initialize_private_keys(sc_pkcs15_card_t *p15card, p15data_items* items) {
|
int sc_pkcs15emu_initialize_private_keys(sc_pkcs15_card_t *p15card, p15data_items* items) {
|
||||||
const prdata *prkeys = items->private_keys;
|
const prdata *prkeys = items->private_keys;
|
||||||
int i, r;
|
int i, r;
|
||||||
if(!prkeys) return SC_SUCCESS;
|
if(!prkeys) return SC_SUCCESS;
|
||||||
@ -311,7 +311,7 @@ int initialize_private_keys(sc_pkcs15_card_t *p15card, p15data_items* items) {
|
|||||||
return SC_SUCCESS;
|
return SC_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int initialize_public_keys(sc_pkcs15_card_t *p15card, p15data_items *items) {
|
int sc_pkcs15emu_initialize_public_keys(sc_pkcs15_card_t *p15card, p15data_items *items) {
|
||||||
const pubdata *keys = items->public_keys;
|
const pubdata *keys = items->public_keys;
|
||||||
int i, r;
|
int i, r;
|
||||||
if(!keys) return SC_SUCCESS;
|
if(!keys) return SC_SUCCESS;
|
||||||
@ -325,18 +325,18 @@ int initialize_public_keys(sc_pkcs15_card_t *p15card, p15data_items *items) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int initialize_all(sc_pkcs15_card_t *p15card, p15data_items* items) {
|
int sc_pkcs15emu_initialize_all(sc_pkcs15_card_t *p15card, p15data_items* items) {
|
||||||
int r;
|
int r;
|
||||||
if(SC_SUCCESS != (r = initialize_objects(p15card, items)))
|
if(SC_SUCCESS != (r = sc_pkcs15emu_initialize_objects(p15card, items)))
|
||||||
return r;
|
return r;
|
||||||
if(SC_SUCCESS != (r = initialize_certificates(p15card, items)))
|
if(SC_SUCCESS != (r = sc_pkcs15emu_initialize_certificates(p15card, items)))
|
||||||
return r;
|
return r;
|
||||||
if(SC_SUCCESS != (r = initialize_pins(p15card, items)))
|
if(SC_SUCCESS != (r = sc_pkcs15emu_initialize_pins(p15card, items)))
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
if(items->forced_private && (SC_SUCCESS != (r = initialize_private_keys(p15card, items))))
|
if(items->forced_private && (SC_SUCCESS != (r = sc_pkcs15emu_initialize_private_keys(p15card, items))))
|
||||||
return r;
|
return r;
|
||||||
if(items->forced_public && (SC_SUCCESS != (r = initialize_public_keys(p15card, items))))
|
if(items->forced_public && (SC_SUCCESS != (r = sc_pkcs15emu_initialize_public_keys(p15card, items))))
|
||||||
return r;
|
return r;
|
||||||
return SC_SUCCESS;
|
return SC_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -126,12 +126,12 @@ struct p15data_items {
|
|||||||
|
|
||||||
CERT_HANDLE_FUNCTION(default_cert_handle);
|
CERT_HANDLE_FUNCTION(default_cert_handle);
|
||||||
|
|
||||||
int initialize_objects(sc_pkcs15_card_t *p15card, p15data_items* items);
|
int sc_pkcs15emu_initialize_objects(sc_pkcs15_card_t *p15card, p15data_items* items);
|
||||||
int initialize_certificates(sc_pkcs15_card_t *p15card, p15data_items* items);
|
int sc_pkcs15emu_initialize_certificates(sc_pkcs15_card_t *p15card, p15data_items* items);
|
||||||
int initialize_pins(sc_pkcs15_card_t *p15card, p15data_items *items);
|
int sc_pkcs15emu_initialize_pins(sc_pkcs15_card_t *p15card, p15data_items *items);
|
||||||
int initialize_private_keys(sc_pkcs15_card_t *p15card, p15data_items *items);
|
int sc_pkcs15emu_initialize_private_keys(sc_pkcs15_card_t *p15card, p15data_items *items);
|
||||||
int initialize_public_keys(sc_pkcs15_card_t *p15card, p15data_items *items);
|
int sc_pkcs15emu_initialize_public_keys(sc_pkcs15_card_t *p15card, p15data_items *items);
|
||||||
int initialize_all(sc_pkcs15_card_t *p15card, p15data_items *items);
|
int sc_pkcs15emu_initialize_all(sc_pkcs15_card_t *p15card, p15data_items *items);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -204,7 +204,7 @@ static int sc_pkcs15emu_piv_init(sc_pkcs15_card_t *p15card)
|
|||||||
|
|
||||||
sc_debug(card->ctx, "PIV-II adding objects...");
|
sc_debug(card->ctx, "PIV-II adding objects...");
|
||||||
|
|
||||||
r = initialize_all(p15card, &items);
|
r = sc_pkcs15emu_initialize_all(p15card, &items);
|
||||||
|
|
||||||
SC_FUNC_RETURN(card->ctx, 1, SC_SUCCESS);
|
SC_FUNC_RETURN(card->ctx, 1, SC_SUCCESS);
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ OBJECTS = pkcs11-global.obj pkcs11-session.obj pkcs11-object.obj misc.obj slot
|
|||||||
OBJECTS2 = libpkcs11.obj
|
OBJECTS2 = libpkcs11.obj
|
||||||
OBJECTS3 = pkcs11-spy.obj pkcs11-display.obj libpkcs11.obj
|
OBJECTS3 = pkcs11-spy.obj pkcs11-display.obj libpkcs11.obj
|
||||||
|
|
||||||
all: install-headers install-headers-dir $(TARGET) $(TARGET2) $(TARGET3)
|
all: install-headers $(TARGET) $(TARGET2) $(TARGET3)
|
||||||
|
|
||||||
!INCLUDE $(TOPDIR)\win32\Make.rules.mak
|
!INCLUDE $(TOPDIR)\win32\Make.rules.mak
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user