El dom, 15-05-2011 a las 14:02 +0200, Viktor TARASOV escribió:
> Hello,
> 
> Le 15/05/2011 02:47, Juan Antonio Martinez a écrit :
> > I'm unsure about status of last svn changes (r5443,r5442,r5441,r5439,
> > and r5438) that introduces 'remote data' handling headers and SM related
> > error codes.
> 'Remote data' is for the communication with the external SM modules.
> It's hardly concerns the dnie card.
Well, pin change and cert renewal are operations that require a remote
SM session. At current dnie stage it's not supported but I expect some
day to do.
[...]
> The SM error codes are stable. You can freely use them and add your own ones.
OK. Let me propose several additional defines 
> > BTW: there are some SM related APDU responses that aren't included
> > in iso7816.c file. I can provide you proper patch to add them.
> Yes, some code are missing, your proper patch are heartily welcome .
Attached comes my proposed patch.
- Add sw12 response 6688 "Cryptographic checksum invalid"
- Defines some SC_ERROR_SM_xx error codes
- Changes sw12 6987 and 6988 error codes to SM related ones 

[...]
> > Provide functions for start/stop/testAndSet SM
> New card member 'SM context' will be added to sc_card structure.
> There will be the placeholder for the SM related card/exrternal-module 
> handlers, session data, etc.
> Every one will find the possibility to implement what he looks for 
> -- integrated or external SM handlers, 'transmit' or/and 'acl' modes, CWA or 
> GP protocols, ...
OK. I missunderstood meaning of SM context :-(

> > do not wrap/unwrap at do_single_transmit(), but at sc_transmit_apdu() level,
> > by providing an extra wrap/unwrap card operation.
> Personally I do not see big difference where to insert the call for the
> card specific SM encoder handler -- in do_sigle_transmit() or in 
> sc_transmit_apdu() .
> There already was discussion on this subject and I do not get the answers on 
> the last questions.
> 
> For me the common procedure contains already the code to manage 61xx, 6Cxx, 
> chaining.
> If the apdu is deviated to the 'SM wrapping' in sc_transmit_apdu(), it means 
> that
> all this has to be repeated in the card specific part.

Perhaps you're right: as DNIe uses ENVELOPE apdu instead of apdu
chaining, I had to manually split & send enveloped apdu... so no need
to call sc_transmit_apdu(), as their main issue is apdu chaining...
Oh...wait a moment... I can see in sc_transmit_apdu() a lock/unlock pair
to take care on...

[...]

OK. Fine for me. I'll adapt OpenDNIe code to keep in sync with changes
Thanks for the work

Juan Antonio

Index: /home/jantonio/work/dnie/opensc/src/libopensc/errors.c
===================================================================
--- /home/jantonio/work/dnie/opensc/src/libopensc/errors.c	(revisión: 5445)
+++ /home/jantonio/work/dnie/opensc/src/libopensc/errors.c	(copia de trabajo)
@@ -130,7 +130,9 @@
 		"Cannot authenticate card",
 		"Random generation error",
 		"Secure messaging keyset not found",
-		"IFD data missing"
+		"IFD data missing",
+		"Missing SM Data object",
+		"Invalid SM Data object"
 	};
 
 
Index: /home/jantonio/work/dnie/opensc/src/libopensc/iso7816.c
===================================================================
--- /home/jantonio/work/dnie/opensc/src/libopensc/iso7816.c	(revisión: 5445)
+++ /home/jantonio/work/dnie/opensc/src/libopensc/iso7816.c	(copia de trabajo)
@@ -41,6 +41,8 @@
 
 	{ 0x6581, SC_ERROR_MEMORY_FAILURE,	"Memory failure" },
 
+	{ 0x6688, SC_ERROR_SM_ENCRYPT_FAILED,	"Verification of cryptographic checksum failed" },
+
 	{ 0x6700, SC_ERROR_WRONG_LENGTH,	"Wrong length" },
 
 	{ 0x6800, SC_ERROR_NO_CARD_SUPPORT,	"Functions in CLA not supported" },
@@ -54,8 +56,8 @@
 	{ 0x6984, SC_ERROR_CARD_CMD_FAILED,	"Referenced data invalidated" },
 	{ 0x6985, SC_ERROR_NOT_ALLOWED,		"Conditions of use not satisfied" },
 	{ 0x6986, SC_ERROR_NOT_ALLOWED,		"Command not allowed (no current EF)" },
-	{ 0x6987, SC_ERROR_INCORRECT_PARAMETERS,"Expected SM data objects missing" },
-	{ 0x6988, SC_ERROR_INCORRECT_PARAMETERS,"SM data objects incorrect" },
+	{ 0x6987, SC_ERROR_SM_DATA_OBJECT_MISSING, "Expected SM data objects missing" },
+	{ 0x6988, SC_ERROR_SM_DATA_OBJECT_INVALID, "SM data objects incorrect" },
 
 	{ 0x6A00, SC_ERROR_INCORRECT_PARAMETERS,"Wrong parameter(s) P1-P2" },
 	{ 0x6A80, SC_ERROR_INCORRECT_PARAMETERS,"Incorrect parameters in the data field" },
Index: /home/jantonio/work/dnie/opensc/src/libopensc/errors.h
===================================================================
--- /home/jantonio/work/dnie/opensc/src/libopensc/errors.h	(revisión: 5445)
+++ /home/jantonio/work/dnie/opensc/src/libopensc/errors.h	(copia de trabajo)
@@ -119,6 +119,8 @@
 #define SC_ERROR_SM_RAND_FAILED                 -1607
 #define SC_ERROR_SM_KEYSET_NOT_FOUND            -1608
 #define SC_ERROR_SM_IFD_DATA_MISSING            -1609
+#define SC_ERROR_SM_DATA_OBJECT_MISSING         -1610
+#define SC_ERROR_SM_DATA_OBJECT_INVALID         -1611
 
 
 /* Errors that do not fit the categories above */
_______________________________________________
opensc-devel mailing list
opensc-devel@lists.opensc-project.org
http://www.opensc-project.org/mailman/listinfo/opensc-devel

Reply via email to