Hi.

There seem to be two targets:
a) How to accomplish all functionality via PKCS#11 interface
b) How to remain compatible with as many as possible / select existing 
application implementations.

IMHO,
Exploiting C_Login(CKU_CONTEXT_SPECIFIC) + SetPIN() to achieve target a seems 
reasonably valid, as it does not seem to contradict the 2.20 spec.
Achieving b will be probably anyway difficult, as there are different cards and 
different applications, which most probably have quirks themselves as well or 
work in a specific combination only.

Is there a real life test-case or usage scenario (some "respectable" and common 
application used in the wild)?

To me, C_SetPIN without a logged in user seems somewhat OK solution, even 
though I agree with the possible PUK counter decrease  problem.
Thus implementing the context specific trick for target a is OK, achieving 
target b requires a real life application example and investigation, what other 
implementations do (also to notice that proprietary pkcs#11 interfaces are 
usually tuned to the the specific hardware they support and thus probably can't 
be copied 1:1 into OpensC)


Martin.

On 04.01.2010, at 11:03, Pierre Ossman wrote:
> 
>> On Thu, 03 Dec 2009 14:57:34 +0100
>> Viktor TARASOV <viktor.tara...@opentrust.com> wrote:
>> 
>>> 
>>> Another possible, 'alternative to alternative' scheme is to use C_SetPin()
>>> in the specific context (after C_Login(CKU_SPECIFIC_CONTEXT)).
>>> 
>>> So, in CKU_USER_PIN context C_SetPin() is used to change user PIN,
>>> in CKU_CONTEXT_SPECIFIC it's used to unblock user PIN.
>>> 
>>> Afais, CKU_CONTEXT_SPECIFIC is not actually used.
>>> 
>> 
>> The problem here is that this is not something that's specified in the
>> standard, and it's not the system existing implementations use.
>> 
>> I think that as far as the interface goes, C_Login(CKU_SO) followed by
>> C_InitPin() is set in stone as we want to be compatible with what's
>> already out there.


On Fri, 04 Dec 2009 09:44:36 +0100
Viktor TARASOV <viktor.tara...@opentrust.com> wrote:

> -- if C_SetPIN() is not preceded by C_Login then it's implicitly the 
> User PIN is going to be changed.
>   In this case the 'pOldPin' argument is the unblocking code.
>   For me it's quite logical, because, as you've told,
>   we do not have or cannot use the actual PIN value.
> 



-- 
Martin Paljak
http://martin.paljak.pri.ee
+372.515.6495




_______________________________________________
opensc-devel mailing list
opensc-devel@lists.opensc-project.org
http://www.opensc-project.org/mailman/listinfo/opensc-devel

Reply via email to