mirror of
https://github.com/novatiq/packages.git
synced 2026-04-30 07:28:39 +01:00
add OpenSC package
OpenSC is a smart card middleware. Patches for support of the GnuK USB token have been added. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
From fbf8e392db4456de97796259a62ccb972fe24df8 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Nguy=E1=BB=85n=20H=E1=BB=93ng=20Qu=C3=A2n?=
|
||||
<ng.hong.quan@gmail.com>
|
||||
Date: Tue, 26 Feb 2013 17:37:16 +0700
|
||||
Subject: [PATCH 04/18] PKCS15-OpenPGP: Declare DATA objects.
|
||||
|
||||
Begin to support read/write DATA object for PKCS-OpenPGP binding.
|
||||
This object is used by TrueCrypt.
|
||||
---
|
||||
src/libopensc/pkcs15-openpgp.c | 35 +++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 35 insertions(+)
|
||||
|
||||
diff --git a/src/libopensc/pkcs15-openpgp.c b/src/libopensc/pkcs15-openpgp.c
|
||||
index 5a8a1ca..9f239ef 100644
|
||||
--- a/src/libopensc/pkcs15-openpgp.c
|
||||
+++ b/src/libopensc/pkcs15-openpgp.c
|
||||
@@ -36,6 +36,7 @@ typedef USHORT ushort;
|
||||
#endif
|
||||
|
||||
int sc_pkcs15emu_openpgp_init_ex(sc_pkcs15_card_t *, sc_pkcs15emu_opt_t *);
|
||||
+static int sc_pkcs15emu_openpgp_add_data(sc_pkcs15_card_t *);
|
||||
|
||||
|
||||
#define PGP_USER_PIN_FLAGS (SC_PKCS15_PIN_FLAG_CASE_SENSITIVE \
|
||||
@@ -45,6 +46,8 @@ int sc_pkcs15emu_openpgp_init_ex(sc_pkcs15_card_t *, sc_pkcs15emu_opt_t *);
|
||||
| SC_PKCS15_PIN_FLAG_UNBLOCK_DISABLED \
|
||||
| SC_PKCS15_PIN_FLAG_SO_PIN)
|
||||
|
||||
+#define PGP_NUM_PRIVDO 4
|
||||
+
|
||||
typedef struct _pgp_pin_cfg {
|
||||
const char *label;
|
||||
int reference;
|
||||
@@ -359,6 +362,9 @@ sc_pkcs15emu_openpgp_init(sc_pkcs15_card_t *p15card)
|
||||
goto failed;
|
||||
}
|
||||
|
||||
+ /* PKCS#15 DATA object from OpenPGP private DOs */
|
||||
+ r = sc_pkcs15emu_openpgp_add_data(p15card);
|
||||
+
|
||||
return 0;
|
||||
|
||||
failed: sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "Failed to initialize OpenPGP emulation: %s\n",
|
||||
@@ -366,6 +372,35 @@ failed: sc_debug(card->ctx, SC_LOG_DEBUG_NORMAL, "Failed to initialize OpenPGP e
|
||||
return r;
|
||||
}
|
||||
|
||||
+static int
|
||||
+sc_pkcs15emu_openpgp_add_data(sc_pkcs15_card_t *p15card)
|
||||
+{
|
||||
+ sc_context_t *ctx = p15card->card->ctx;
|
||||
+ int i, r;
|
||||
+
|
||||
+ LOG_FUNC_CALLED(ctx);
|
||||
+ /* There is 4 private DO from 0101 to 0104 */
|
||||
+ for (i = 1; i <= PGP_NUM_PRIVDO; i++) {
|
||||
+ sc_pkcs15_data_info_t dat_info;
|
||||
+ sc_pkcs15_object_t dat_obj;
|
||||
+ char name[8];
|
||||
+ char path[9];
|
||||
+ memset(&dat_info, 0, sizeof(dat_info));
|
||||
+ memset(&dat_obj, 0, sizeof(dat_obj));
|
||||
+
|
||||
+ sprintf(name, "PrivDO%d", i);
|
||||
+ sprintf(path, "3F00010%d", i);
|
||||
+
|
||||
+ sc_format_path(path, &dat_info.path);
|
||||
+ strlcpy(dat_obj.label, name, sizeof(dat_obj.label));
|
||||
+ strlcpy(dat_info.app_label, name, sizeof(dat_info.app_label));
|
||||
+
|
||||
+ sc_log(ctx, "Add %s data object", name);
|
||||
+ r = sc_pkcs15emu_add_data_object(p15card, &dat_obj, &dat_info);
|
||||
+ }
|
||||
+ LOG_FUNC_RETURN(ctx, r);
|
||||
+}
|
||||
+
|
||||
static int openpgp_detect_card(sc_pkcs15_card_t *p15card)
|
||||
{
|
||||
if (p15card->card->type == SC_CARD_TYPE_OPENPGP_V1 || p15card->card->type == SC_CARD_TYPE_OPENPGP_V2
|
||||
--
|
||||
1.9.3
|
||||
|
||||
Reference in New Issue
Block a user