On 07-07-2025 04:13 pm, Jean-Pierre
Fortune wrote:
Hi Thillai,
Since we've eliminated several common causes, and
considering the SAM-S1 E1 is an older generation, I have a
suspicion that the issue might stem from its behavior during
session opening. It might not be compatible or correctly
handled in your current setup.
Could you please try an additional modification in your
code? I would like to ask you to try calling the
`disableReadOnSessionOpening()` method on the
`SymmetricCryptoSecuritySetting` object, immediately
following your `assignDefaultKif(...)` calls. The updated
code snippet would look like this:
private static void
initSecuritySetting() {
LegacySam sam =
selectSam(samReader);
symmetricCryptoSecuritySetting =
calypsoCardApiFactory
.createSymmetricCryptoSecuritySetting(
LegacySamExtensionService.getInstance()
.getLegacySamApiFactory()
.createSymmetricCryptoCardTransactionManagerFactory(samReader,
sam))
.assignDefaultKif(PERSONALIZATION,
(byte) 0x21)
.assignDefaultKif(LOAD, (byte) 0x27)
.assignDefaultKif(DEBIT, (byte) 0x30)
.disableReadOnSessionOpening();
// Add this line
}
Please implement this change for Use Case 4 and let me
know if it resolves the `6988` error. If it does, we can
then apply the same logic to Use Case 10.
As I initially mentioned the Calypso Contactless card
sample is labelled as ST23ZR08 Calypso CD21 Rev 3.1
and
The SAM sample is labelled as INTEROP vFF.E0.42
SAM-S1 E1.
We got two SAMs and 4 Contactless Card samples from
them and I tried with all combinations with them; it
always yields to 6988 error.
Also tried them with Cardman 5321 (OMNIKEY reader) for
the Contactless and the uTrust 2700R (Identiv) for the
Contact without successful.
Infact it failed much earlier with them and I can't get
more details.
Perhaps, do you have some cards from ISRA to try on
your side which could give some clue on the failure ?
On 07-07-2025 03:34 pm, Jean-Pierre Fortune wrote:
Hi Thillai,
My apologies for the confusion regarding the
`>` and `<` characters. I was not referring to
those, but rather to the `02` and `03` bytes that
appear immediately after them, as the very first
byte of the hexadecimal dump in the contactless
reader captures (ex. 02 00 A4 04 00 08).
These bytes are not visible in the SAM exchanges.
These bytes might be part of a reader-specific
protocol. If they were indeed being sent to the
card, the card would not have responded in the way
it did, as it would likely interpret them as an
invalid command or an unexpected part of the APDU.
This leads me back to our discussion about the
potential inconsistency between the card and the
SAM. Could you please provide more details regarding
the origin of the card and the SAM you are using?
Specifically, do you have any assurance that they
are a consistent pair, meaning they were designed to
work together? Furthermore, have you had success
using this specific card and SAM combination in
other environments or with other tools?
Understanding their history and compatibility will
be very helpful in narrowing down the root cause of
the `6988` error.
The '> '
before CLA is merely a debug representation to
indicate command to card. And the '< ' to
indicate response from card. Of course, they are
not part of the card exchange.
So I assume that it is related to mismatch in
card combinations. We will soon procure test
cards from CNA and start testing with them.
On 07-07-2025 03:15 pm, Jean-Pierre Fortune
wrote:
Hi Thillai,
Thank you for sending over these new
logs.
Upon reviewing the new logs, I've
noticed an additional byte preceding the
CLA byte in the contactless card exchanges
(02/03). Could you please clarify what
this first byte represents? If it's merely
an indicator that doesn't directly
participate in the card exchanges, it
shouldn't be influencing the transaction.
At first glance, I haven't detected any
issues, particularly parasitic exchanges,
that would explain the signature error.
Another potential cause for this
signature error could be the combination
of a production card with a test SAM, or
vice-versa. In such scenarios, the key
identifiers might be the same, but the
actual key values used for cryptographic
calculations would differ, leading to a
signature mismatch.
Best regards,
Jean-Pierre Fortune
Keyple-Dev Team
Le lun. 7
juil. 2025 à 11:24, Thillai Elayaraja S
via keyple-dev <keyple-dev@xxxxxxxxxxx>
a écrit :
Dear Jean-Pierre,
Here below are the low-captures from
our Contactless and Contact reader:
Please note that both of them are two
different sessions as our debug system
does not allow us to capture both
Contactless and Contact APDUs at the
same time.
On 04-07-2025 09:21 pm,
Jean-Pierre Fortune wrote:
Hi Thillai,
The DIGEST_INIT [6A83] issue being
resolved, it is clear that the
initial missing configuration for
the default KIFs in Use Case 4,
already present in Use Case 10,
was indeed the root cause of that
particular problem.
We now seem to be back to the
issue of the card's verification
of the signature generated by the
SAM failing, indicated by the
`6988` status word.
If we are certain that no APDU
commands other than those visible
in the logs were sent to either
the card or the SAM, then this
situation might suggest a
potential inconsistency between
the SAM and the card. However, I
assume that you are using a
consistent set of SAM and card
samples.
Given that you are the
manufacturer of the reader, do you
have any means to trace the
low-level exchanges directly from
the reader(s) themselves? It would
be highly beneficial to compare
these low-level traces with the
APDU commands we are seeing in the
logs. This could help us pinpoint
any discrepancies or unexpected
behaviors that might be occurring
at the physical communication
level.
On 04-07-2025 08:13
pm, Jean-Pierre Fortune
wrote:
Hi Thillai,
The error `6A83`
in response to
`DIGEST_INIT`
indicates that the
SAM, which is
being requested to
perform
calculations with
the key (KIF=FF,
KVC=41), does not
possess this
specific key.
My advice to use
`FF` as a KIF was
a
misinterpretation,
as this value is
actually reserved
to indicate an
*unknown* KIF and
should not be used
as a valid key
reference.
Instead, I suggest
retrying Use Case
4 with the
following
configuration,
which corresponds
to the values
commonly used for
the three standard
KIFs:
On
04-07-2025
06:29 pm,
Jean-Pierre
Fortune wrote:
Hi
Thillai,
Upon
closer
examination of
the logs you
sent, it
appears that
the code
execution flow
in both cases
is not the
same, and the
errors
encountered
are of a
different
nature.
My
previous
message was
based on Use
Case 10, which
seems to
correspond to
a transaction
involving two
readings of
the SFI=14h
file. However,
the log for
this case does
not display
DEBUG level
traces, which
would be very
helpful for a
more in-depth
analysis.
On the
other hand,
the log for
Use Case 4
does show
DEBUG traces,
but here the
transaction
concludes with
an
"Unauthorized
key error."
This specific
error suggests
that the card
you are using
requires a
particular
configuration
to specify the
key KIF value
that is not
provided by
this
particular
card.
Based on
the JSON file
generated by
the card
analysis tool,
the KIF value
to be used for
this AID is
0xFF. In the
context of the
Use Case 4
code, this
would
translate to
an adjustment
within the
`initSecuritySetting()`
method,
similar to the
following:
On
04-07-2025
05:33 pm,
Jean-Pierre
Fortune wrote:
Hi
Thillai,
This is a
significant
step forward!
The fact that
the secure
transaction
now goes all
the way
through is
excellent
news, as it
confirms good
communication
between your
reader, the
card, and the
SAM.
The final
error you're
encountering,
related to the
card's
verification
of the
signature
calculated by
the SAM, isn't
necessarily
directly
related to the
software
you're
running.
Most
frequently,
this problem
is linked to
interference
from Windows
smart card
services.
Specifically,
these are the
"Smart Card
Device
Enumeration
Service" (ScDeviceEnum)
and the
"Certificate
Propagation
Service" (CertPropSvc).
These services
can
unfortunately
insert
invisible
exchanges with
the card or
the SAM,
causing the
cryptographic
calculations
to fail.
Could you
please try
disabling
these services
and let us
know if this
resolves the
issue?
To check
their status
before
disabling
them, you can
run the
following
commands in an
elevated
Command Prompt
(Run as
Administrator):
sc query ScDeviceEnum
sc query CertPropSvc
This will
tell you
whether the
services are
currently
running. You
can also check
their startup
configuration
using:
sc qc ScDeviceEnum
sc qc CertPropSvc
To stop and
disable the
services
(again, in an
elevated
Command
Prompt), use:
I tried to
adapt both of
the examples
and attached
the Console
log received.
The
adaptation I
made was to
change the AID
to
"304554502E494341"
and the SFI_ENVIRONMENT_AND_HOLDER
to 0x14
(with
UseCase10 used
SFI_CONTRACTS
as 0x15 but
unsure about SFI_EVENTS_LOG
and SFI_CONTRACT_LIST)
With that
it seems it
has progressed
a bit more in
either of the
examples but I
can't make it
work to see it
complete
gracefully.
It seems to
me that the
card is not
personalized
on my side.
Could you
confirm and
guide me on
the right
example to
start with ?
By the way,
it is my first
few days
working with
Calypso:
I see that
although a bit
of learning
curve is
required
(atleast for
me), Keyple is
making it far
more easier
than I
thought. Kudos
to all of you.
On
04-07-2025
01:27 pm,
Jean-Pierre
Fortune wrote:
Hi Thillai,
Thanks for
reaching out
to the
Keyple-Dev
community and
for providing
these detailed
logs.
Based on
our analysis
of the logs,
the issue
doesn't seem
to be at the
physical
communication
level. The
exchanges
between your
reader and the
card appear to
be correct.
The errors
you're
encountering
are happening
at a higher,
application
command level.
Specifically,
in the log for
UseCase10,
the OPEN_SECURE_SESSION
command fails
with a 6A82
status word,
which means
"File not
found". This
command is
trying to read
record 1 of
the file
located by SFI
(Short File
Identifier) 0x06.
However,
the JSON file
generated by
the card
analysis tool
shows that a
file with
SFI=0x06 does
not actually
exist on your
card sample.
This mismatch
is the direct
cause of the
error.
This leads
us to the main
question: have
you adapted
the APDU
commands in
the examples
to match the
specific file
structure of
the card you
are using?
It seems
likely that
adapting the
SFI and record
parameters
within the
commands to
align with
your card's
actual file
system should
resolve the
issue. The
good news is
that this
suggests your
reader is
indeed capable
of handling
the low-level
Calypso
protocol
correctly.
Let us know
if adjusting
the commands
solves the
problem.
Best
regards,
Jean-Pierre
Fortune
Keyple-Dev
Team
Le ven. 4 juil. 2025 à 09:32, Thillai Elayaraja S via
keyple-dev
<keyple-dev@xxxxxxxxxxx>
a écrit :
Dear
Keyple-Dev
team,
Good day!
I'm Thillai
Elayaraja, CTO
of ELYCTIS.
Currently I'm
evaluating
Calypso
support with
our PC/SC
readers with a
Calypso card
sample + SAM
acquired from
ISRA.
The Calypso
card sample is
labelled as ST23ZR08
Calypso CD21
Rev 3.1
and
The SAM sample
is labelled as
INTEROP
vFF.E0.42
SAM-S1 E1.
With them I
tried the
examples
UseCase4 and
UseCase10 from
Keyple but
encounter
issues
detailed
below. I tried
to adapt those
examples to
use the reader
regex, Card
AID (taken
from the Card
Configuration
Audit tool)
and also
changed the LegacySamUtil.buildPowerOnDataFilter() to use LegacySam.ProductType.SAM_S1E1,
with vain. I
got to know
from one of
the CNA
contacts to
seek help from
the Keyple-Dev
community and
that's where
here I'am with
the details
given below:
Regarding
the examples:
UseCase4_CardAuthentication:
Attached the UseCase4_CardAuthentication.log
for reference.
For info, the
code stopped
at processCommands
as below:
UseCase10_SessionTrace_TN313:
Attached the UseCase10_SessionTrace_TN313.log
for reference.
Attached
the Tool_AnalyzeCardFileStructure-2.0.3.log
and the
generated 20250626_CardData_1963796046.json
for reference.
Attached
the Tool_CheckCardFileStructure-2.0.3.log
for reference.
With these
logs and info,
could you help
if I need to
adapt the
examples
further to
verify the
intended
use-cases ?
And can we
"tentatively"
say if our
reader is
capable to
support
Calypso
transactions ?
Thanking you.
With best
regards,
Thillai
Elayaraja S
P S : Soon
we will try to
procure the
test kits from
CNA to
validate our
readers with
all usecases
and with the
demonstrator
app.