From aacda52c78990266a3cd8447626493f24b1df671 Mon Sep 17 00:00:00 2001 From: petrs Date: Mon, 20 May 2019 16:47:39 +0200 Subject: [PATCH 01/11] APDU metadata collection implements #47 getInBlockSize getOutBlockSize getProtocol getNAD --- .../src/algtestjclient/CardMngr.java | 31 ++++++++++++++++++- .../src/algtestjclient/SingleModeTest.java | 4 ++- .../src/AlgTest/AlgSupportTest.java | 9 ++++++ 3 files changed, 42 insertions(+), 2 deletions(-) diff --git a/AlgTest_JClient/src/algtestjclient/CardMngr.java b/AlgTest_JClient/src/algtestjclient/CardMngr.java index e6744918..75659866 100644 --- a/AlgTest_JClient/src/algtestjclient/CardMngr.java +++ b/AlgTest_JClient/src/algtestjclient/CardMngr.java @@ -690,6 +690,17 @@ public int GetJCSystemInfo(StringBuilder pValue, FileOutputStream pFile) throws int ramDeselectSize = (temp[7] << 8) + (temp[8] & 0xff); int maxCommitSize = (temp[9] << 8) + (temp[10] & 0xff); + int apduInBlockSize = -1; + int apduOutBlockSize = -1; + int apduProtocol = -1; + int apduNAD = -1; + if (temp.length > 11) { + apduInBlockSize = (temp[11] << 8) + (temp[12] & 0xff); + apduOutBlockSize = (temp[13] << 8) + (temp[14] & 0xff); + apduProtocol = temp[15]; + apduNAD = temp[16]; + } + String message; @@ -717,8 +728,26 @@ public int GetJCSystemInfo(StringBuilder pValue, FileOutputStream pFile) throws pFile.write(message.getBytes()); pValue.append(message); + // APDU properties + message = String.format("\r\n%s;%dB;", Utils.GetAlgorithmName(SingleModeTest.JCSYSTEM_STR[7]), apduInBlockSize); + m_SystemOutLogger.println(message); + pFile.write(message.getBytes()); + pValue.append(message); + message = String.format("\r\n%s;%dB;", Utils.GetAlgorithmName(SingleModeTest.JCSYSTEM_STR[8]), apduOutBlockSize); + m_SystemOutLogger.println(message); + pFile.write(message.getBytes()); + pValue.append(message); + message = String.format("\r\n%s;%dB;", Utils.GetAlgorithmName(SingleModeTest.JCSYSTEM_STR[9]), apduProtocol); + m_SystemOutLogger.println(message); + pFile.write(message.getBytes()); + pValue.append(message); + message = String.format("\r\n%s;%dB;", Utils.GetAlgorithmName(SingleModeTest.JCSYSTEM_STR[10]), apduNAD); + m_SystemOutLogger.println(message); + pFile.write(message.getBytes()); + pValue.append(message); + - message += "\r\n"; + message = "\r\n"; pFile.write(message.getBytes()); pValue.append(message); diff --git a/AlgTest_JClient/src/algtestjclient/SingleModeTest.java b/AlgTest_JClient/src/algtestjclient/SingleModeTest.java index d604cc68..51a97f0f 100644 --- a/AlgTest_JClient/src/algtestjclient/SingleModeTest.java +++ b/AlgTest_JClient/src/algtestjclient/SingleModeTest.java @@ -231,7 +231,8 @@ public class SingleModeTest { public static final String JCSYSTEM_STR[] = {"javacard.framework.JCSystem", "JCSystem.getVersion()[Major.Minor]#≤2.1", "JCSystem.isObjectDeletionSupported#2.2.0", "JCSystem.MEMORY_TYPE_PERSISTENT#2.2.1", "JCSystem.MEMORY_TYPE_TRANSIENT_RESET#2.2.1", - "JCSystem.MEMORY_TYPE_TRANSIENT_DESELECT#2.2.1", "JCSystem.getMaxCommitCapacity()#2.1"}; + "JCSystem.MEMORY_TYPE_TRANSIENT_DESELECT#2.2.1", "JCSystem.getMaxCommitCapacity()#2.1", + "APDU.getInBlockSize()#2.1", "APDU.getOutBlockSize()#2.1", "APDU.getProtocol()#2.1", "APDU.getNAD()#2.1"}; public static final String RAWRSA_1024_STR[] = {"Variable RSA 1024 - support for variable public exponent. If supported, user-defined fast modular exponentiation can be executed on the smart card via cryptographic coprocessor. This is very specific feature and you will probably not need it", "Allocate RSA 1024 objects", "Set random modulus", "Set random public exponent", "Initialize cipher with public key with random exponent", "Use random public exponent"}; @@ -268,6 +269,7 @@ public class SingleModeTest { "000108A000000062020804#3.0.4", // javacardx.framework.string "000107A0000000620209#2.2.2", // javacardx.apdu "000108A000000062020901#3.0.5" // javacardx.apdu.util + // org. }; public static final Map PACKAGE_AID_NAMES_STR; diff --git a/AlgTest_JavaCard/src/AlgTest/AlgSupportTest.java b/AlgTest_JavaCard/src/AlgTest/AlgSupportTest.java index 8b5941e1..da5f58fc 100644 --- a/AlgTest_JavaCard/src/AlgTest/AlgSupportTest.java +++ b/AlgTest_JavaCard/src/AlgTest/AlgSupportTest.java @@ -247,6 +247,15 @@ void JCSystemInfo(APDU apdu) { } Util.setShort(apdubuf, offset, JCSystem.getMaxCommitCapacity()); offset = (short)(offset + 2); + // APDU information + Util.setShort(apdubuf, offset, APDU.getInBlockSize()); + offset = (short) (offset + 2); + Util.setShort(apdubuf, offset, APDU.getOutBlockSize()); + offset = (short) (offset + 2); + apdubuf[offset] = APDU.getProtocol(); + offset++; + apdubuf[offset] = apdu.getNAD(); + offset++; apdu.setOutgoingAndSend((byte) 0, offset); } From 0b1268715aae201ab490205bfb5ff2075bc67524 Mon Sep 17 00:00:00 2001 From: petrs Date: Wed, 22 May 2019 10:42:44 +0200 Subject: [PATCH 02/11] updated CPLC info --- ... 00 62 02 02 02 01_(provided_by_PetrS).csv | 22 +++++++++ ..._43_52_02_00_25_c3_(provided_by_PetrS).csv | 22 +++++++++ ...3 00 90 00_(provided by Martin Paljak).csv | 21 +++++++- ...d0 a9 83 00 90 00 _(provided_by_PetrS).csv | 22 +++++++++ ... 01 01 3D 72 D6 43_(provided_by_PetrS).csv | 21 ++++++++ ...80 10 21 00 01 08_(provided_by_PetrS).csv} | 21 ++++++++ ... 02 90 83 00 90 00_(provided_by_PetrS).csv | 22 +++++++++ ...02 90 83 00 90 00_(provided_by_PetrS).csv} | 21 ++++++++ ... 01 51 83 07 90 00_(provided_by_PetrS).csv | 21 ++++++++ ... 33 36 47 44 54 78_(provided_by_PetrS).csv | 21 ++++++++ ...vided_by_Adam_Zhang_and_Richard_Mitev).csv | 42 ++++++++-------- ...provided_by_Rowland_Watkins_and_PetrS).csv | 48 ++++++++++--------- ...a_Logar_and_Rowland_Watkins_and_PetrS).csv | 22 ++++++++- ...31 56 32 32 31 9d _(provided_by_PetrS).csv | 21 ++++++++ ... E3 03 00 82 90 00_(provided_by_PetrS).csv | 21 ++++++++ ..._00_83_f0_90_00_bb_(provided_by_PetrS).csv | 22 +++++++++ 16 files changed, 345 insertions(+), 45 deletions(-) rename Profiles/results/{Gemplus_GXPE64PK_3B 7E 94 00 00 80 25 A0 00 00 00 28 56 80 10 21 00 01 08_(provided_by_PetrS).csv => Gemplus_GXPE64PK_TOP_IM_GX3_3B 7E 94 00 00 80 25 A0 00 00 00 28 56 80 10 21 00 01 08_(provided_by_PetrS).csv} (89%) rename Profiles/results/{Gemplus_GXPR3r32_3B 7D 94 00 00 80 31 80 65 B0 83 01 02 90 83 00 90 00_(provided_by_PetrS).csv => Gemplus_GXPR3r32_TOP_IS_GX3_3B 7D 94 00 00 80 31 80 65 B0 83 01 02 90 83 00 90 00_(provided_by_PetrS).csv} (88%) diff --git a/Profiles/results/Axalto_Cyberflex32_3B 75 94 00 00 62 02 02 02 01_(provided_by_PetrS).csv b/Profiles/results/Axalto_Cyberflex32_3B 75 94 00 00 62 02 02 02 01_(provided_by_PetrS).csv index 59641db1..ba653121 100644 --- a/Profiles/results/Axalto_Cyberflex32_3B 75 94 00 00 62 02 02 02 01_(provided_by_PetrS).csv +++ b/Profiles/results/Axalto_Cyberflex32_3B 75 94 00 00 62 02 02 02 01_(provided_by_PetrS).csv @@ -8,6 +8,28 @@ JavaCard support version;2.1.2; javacardx.apdu.ExtendedLength; Extended APDU;no +CPLC; 9f 7f 2a 40 90 00 62 00 11 02 02 01 00 70 74 00 02 e0 12 ff 02 19 82 70 74 19 83 70 74 19 84 70 74 00 03 00 01 ff ff ff ff ff ff ff ff +CPLC.ICFabricator;4090;Infineon +CPLC.ICType;0062 +CPLC.OperatingSystemID;0011 +CPLC.OperatingSystemReleaseDate;0202 +CPLC.OperatingSystemReleaseLevel;0100 +CPLC.ICFabricationDate;7074;(Y DDD) date in that year +CPLC.ICSerialNumber;0002e012 +CPLC.ICBatchIdentifier;ff02 +CPLC.ICModuleFabricator;1982 +CPLC.ICModulePackagingDate;7074 +CPLC.ICCManufacturer;1983 +CPLC.ICEmbeddingDate;7074 +CPLC.ICPrePersonalizer;1984 +CPLC.ICPrePersonalizationEquipmentDate;7074 +CPLC.ICPrePersonalizationEquipmentID;00030001 +CPLC.ICPersonalizer;ffff +CPLC.ICPersonalizationDate;ffff +CPLC.ICPersonalizationEquipmentID;ffffffff +CPLC.ICPersonalizationEquipmentID;ffffffff + + javacard.security.Signature; ALG_DES_MAC4_NOPAD;no ALG_DES_MAC8_NOPAD;yes diff --git a/Profiles/results/Feitian_Java_Card_D11CR_ALGSUPPORT__3b_6a_00_00_09_44_31_31_43_52_02_00_25_c3_(provided_by_PetrS).csv b/Profiles/results/Feitian_Java_Card_D11CR_ALGSUPPORT__3b_6a_00_00_09_44_31_31_43_52_02_00_25_c3_(provided_by_PetrS).csv index c50bd24e..a010ff11 100644 --- a/Profiles/results/Feitian_Java_Card_D11CR_ALGSUPPORT__3b_6a_00_00_09_44_31_31_43_52_02_00_25_c3_(provided_by_PetrS).csv +++ b/Profiles/results/Feitian_Java_Card_D11CR_ALGSUPPORT__3b_6a_00_00_09_44_31_31_43_52_02_00_25_c3_(provided_by_PetrS).csv @@ -18,6 +18,28 @@ JCSystem.MEMORY_TYPE_TRANSIENT_RESET;1236B; JCSystem.MEMORY_TYPE_TRANSIENT_DESELECT;9984B; JCSystem.getMaxCommitCapacity();9984B; + +CPLC; 9f 7f 2a 53 54 00 33 25 c3 d3 51 20 04 00 00 88 99 27 9c 00 00 00 00 d3 51 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +CPLC.ICFabricator;5354;unknown +CPLC.ICType;0033 +CPLC.OperatingSystemID;25c3 +CPLC.OperatingSystemReleaseDate;d351 +CPLC.OperatingSystemReleaseLevel;2004 +CPLC.ICFabricationDate;0000;(Y DDD) date in that year +CPLC.ICSerialNumber;8899279c +CPLC.ICBatchIdentifier;0000 +CPLC.ICModuleFabricator;0000 +CPLC.ICModulePackagingDate;d351 +CPLC.ICCManufacturer;0000 +CPLC.ICEmbeddingDate;0000 +CPLC.ICPrePersonalizer;0000 +CPLC.ICPrePersonalizationEquipmentDate;0000 +CPLC.ICPrePersonalizationEquipmentID;00000000 +CPLC.ICPersonalizer;0000 +CPLC.ICPersonalizationDate;0000 +CPLC.ICPersonalizationEquipmentID;00000000 +CPLC.ICPersonalizationEquipmentID;00000000 + javacardx.crypto.Cipher ALG_DES_CBC_NOPAD;yes;0.874000 ALG_DES_CBC_ISO9797_M1;yes;0.827000 diff --git a/Profiles/results/Gemalto IDCore 10_3b 7d 96 00 00 80 31 80 65 b0 83 11 d0 a9 83 00 90 00_(provided by Martin Paljak).csv b/Profiles/results/Gemalto IDCore 10_3b 7d 96 00 00 80 31 80 65 b0 83 11 d0 a9 83 00 90 00_(provided by Martin Paljak).csv index 95aae4a3..750d7f34 100644 --- a/Profiles/results/Gemalto IDCore 10_3b 7d 96 00 00 80 31 80 65 b0 83 11 d0 a9 83 00 90 00_(provided by Martin Paljak).csv +++ b/Profiles/results/Gemalto IDCore 10_3b 7d 96 00 00 80 31 80 65 b0 83 11 d0 a9 83 00 90 00_(provided by Martin Paljak).csv @@ -9,13 +9,32 @@ Used protocol; T=0 JavaCard support version;2.2.1; - JCSystem.getVersion()[Major.Minor];2.2; JCSystem.isObjectDeletionSupported;yes; JCSystem.MEMORY_TYPE_PERSISTENT;>32767B; JCSystem.MEMORY_TYPE_TRANSIENT_RESET;5098B; JCSystem.MEMORY_TYPE_TRANSIENT_DESELECT;5098B; +CPLC; 9f 7f 2a 47 90 50 81 12 91 11 02 02 01 33 47 00 00 8f 90 74 ca 40 82 40 76 12 93 40 76 20 04 40 76 00 00 00 14 00 00 00 00 00 00 00 00 +CPLC.ICFabricator;4790;NXP +CPLC.ICType;5081 +CPLC.OperatingSystemID;1291 +CPLC.OperatingSystemReleaseDate;1102 +CPLC.OperatingSystemReleaseLevel;0201 +CPLC.ICFabricationDate;3347;(Y DDD) date in that year +CPLC.ICSerialNumber;00008f90 +CPLC.ICBatchIdentifier;74ca +CPLC.ICModuleFabricator;4082 +CPLC.ICModulePackagingDate;4076 +CPLC.ICCManufacturer;1293 +CPLC.ICEmbeddingDate;4076 +CPLC.ICPrePersonalizer;2004 +CPLC.ICPrePersonalizationEquipmentDate;4076 +CPLC.ICPrePersonalizationEquipmentID;00000014 +CPLC.ICPersonalizer;0000 +CPLC.ICPersonalizationDate;0000 +CPLC.ICPersonalizationEquipmentID;00000000 +CPLC.ICPersonalizationEquipmentID;00000000 javacardx.crypto.Cipher; ALG_DES_CBC_NOPAD;yes; diff --git a/Profiles/results/Gemalto_TOP_IM_GXP4_3b 7d 94 00 00 80 31 80 65 b0 83 11 d0 a9 83 00 90 00 _(provided_by_PetrS).csv b/Profiles/results/Gemalto_TOP_IM_GXP4_3b 7d 94 00 00 80 31 80 65 b0 83 11 d0 a9 83 00 90 00 _(provided_by_PetrS).csv index f34aff05..1a842f49 100644 --- a/Profiles/results/Gemalto_TOP_IM_GXP4_3b 7d 94 00 00 80 31 80 65 b0 83 11 d0 a9 83 00 90 00 _(provided_by_PetrS).csv +++ b/Profiles/results/Gemalto_TOP_IM_GXP4_3b 7d 94 00 00 80 31 80 65 b0 83 11 d0 a9 83 00 90 00 _(provided_by_PetrS).csv @@ -10,6 +10,28 @@ JavaCard support version;2.2.1; javacardx.apdu.ExtendedLength; Extended APDU;no +CPLC; 9f 7f 2a 42 50 30 72 12 91 60 95 05 00 81 26 02 02 4c 85 21 33 00 00 82 60 03 33 82 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +CPLC.ICFabricator;4250;Samsung +CPLC.ICType;3072 +CPLC.OperatingSystemID;1291 +CPLC.OperatingSystemReleaseDate;6095 +CPLC.OperatingSystemReleaseLevel;0500 +CPLC.ICFabricationDate;8126;(Y DDD) date in that year +CPLC.ICSerialNumber;02024c85 +CPLC.ICBatchIdentifier;2133 +CPLC.ICModuleFabricator;0000 +CPLC.ICModulePackagingDate;8260 +CPLC.ICCManufacturer;0333 +CPLC.ICEmbeddingDate;8260 +CPLC.ICPrePersonalizer;0000 +CPLC.ICPrePersonalizationEquipmentDate;0000 +CPLC.ICPrePersonalizationEquipmentID;00000000 +CPLC.ICPersonalizer;0000 +CPLC.ICPersonalizationDate;0000 +CPLC.ICPersonalizationEquipmentID;00000000 +CPLC.ICPersonalizationEquipmentID;00000000 + + javacardx.crypto.Cipher; ALG_DES_CBC_NOPAD;yes; ALG_DES_CBC_ISO9797_M1;yes; diff --git a/Profiles/results/Gemalto_TwinGCX4_72k_PK_3B 7A 94 00 00 80 65 A2 01 01 01 3D 72 D6 43_(provided_by_PetrS).csv b/Profiles/results/Gemalto_TwinGCX4_72k_PK_3B 7A 94 00 00 80 65 A2 01 01 01 3D 72 D6 43_(provided_by_PetrS).csv index 8dc592ee..c1d31956 100644 --- a/Profiles/results/Gemalto_TwinGCX4_72k_PK_3B 7A 94 00 00 80 65 A2 01 01 01 3D 72 D6 43_(provided_by_PetrS).csv +++ b/Profiles/results/Gemalto_TwinGCX4_72k_PK_3B 7A 94 00 00 80 65 A2 01 01 01 3D 72 D6 43_(provided_by_PetrS).csv @@ -8,6 +8,27 @@ JavaCard support version;2.2.1; javacardx.apdu.ExtendedLength; Extended APDU;no +CPLC; 9f 7f 2a 40 70 50 72 12 91 51 81 01 00 60 05 00 00 12 77 2e a0 40 82 63 02 12 93 63 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +CPLC.ICFabricator;4070;unknown +CPLC.ICType;5072 +CPLC.OperatingSystemID;1291 +CPLC.OperatingSystemReleaseDate;5181 +CPLC.OperatingSystemReleaseLevel;0100 +CPLC.ICFabricationDate;6005;(Y DDD) date in that year +CPLC.ICSerialNumber;00001277 +CPLC.ICBatchIdentifier;2ea0 +CPLC.ICModuleFabricator;4082 +CPLC.ICModulePackagingDate;6302 +CPLC.ICCManufacturer;1293 +CPLC.ICEmbeddingDate;6302 +CPLC.ICPrePersonalizer;0000 +CPLC.ICPrePersonalizationEquipmentDate;0000 +CPLC.ICPrePersonalizationEquipmentID;00000000 +CPLC.ICPersonalizer;0000 +CPLC.ICPersonalizationDate;0000 +CPLC.ICPersonalizationEquipmentID;00000000 +CPLC.ICPersonalizationEquipmentID;00000000 + javacardx.crypto.Cipher;;time;;; ALG_DES_CBC_NOPAD;yes;;;; ALG_DES_CBC_ISO9797_M1;yes;;;; diff --git a/Profiles/results/Gemplus_GXPE64PK_3B 7E 94 00 00 80 25 A0 00 00 00 28 56 80 10 21 00 01 08_(provided_by_PetrS).csv b/Profiles/results/Gemplus_GXPE64PK_TOP_IM_GX3_3B 7E 94 00 00 80 25 A0 00 00 00 28 56 80 10 21 00 01 08_(provided_by_PetrS).csv similarity index 89% rename from Profiles/results/Gemplus_GXPE64PK_3B 7E 94 00 00 80 25 A0 00 00 00 28 56 80 10 21 00 01 08_(provided_by_PetrS).csv rename to Profiles/results/Gemplus_GXPE64PK_TOP_IM_GX3_3B 7E 94 00 00 80 25 A0 00 00 00 28 56 80 10 21 00 01 08_(provided_by_PetrS).csv index 2fe5023e..68bc0f5b 100644 --- a/Profiles/results/Gemplus_GXPE64PK_3B 7E 94 00 00 80 25 A0 00 00 00 28 56 80 10 21 00 01 08_(provided_by_PetrS).csv +++ b/Profiles/results/Gemplus_GXPE64PK_TOP_IM_GX3_3B 7E 94 00 00 80 25 A0 00 00 00 28 56 80 10 21 00 01 08_(provided_by_PetrS).csv @@ -12,6 +12,27 @@ JavaCard support version;2.1.2; javacardx.apdu.ExtendedLength; Extended APDU;no +CPLC; 9f 7f 2a 40 90 66 42 12 91 42 14 03 02 40 82 68 09 11 1d 25 71 40 82 00 00 12 93 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +CPLC.ICFabricator;4090;Infineon +CPLC.ICType;6642 +CPLC.OperatingSystemID;1291 +CPLC.OperatingSystemReleaseDate;4214 +CPLC.OperatingSystemReleaseLevel;0302 +CPLC.ICFabricationDate;4082;(Y DDD) date in that year +CPLC.ICSerialNumber;6809111d +CPLC.ICBatchIdentifier;2571 +CPLC.ICModuleFabricator;4082 +CPLC.ICModulePackagingDate;0000 +CPLC.ICCManufacturer;1293 +CPLC.ICEmbeddingDate;0000 +CPLC.ICPrePersonalizer;0000 +CPLC.ICPrePersonalizationEquipmentDate;0000 +CPLC.ICPrePersonalizationEquipmentID;00000000 +CPLC.ICPersonalizer;0000 +CPLC.ICPersonalizationDate;0000 +CPLC.ICPersonalizationEquipmentID;00000000 +CPLC.ICPersonalizationEquipmentID;00000000 + javacardx.crypto.Cipher; ALG_DES_CBC_NOPAD;yes; ALG_DES_CBC_ISO9797_M1;yes; diff --git a/Profiles/results/Gemplus_GXPLiteGeneric_3B 7D 94 00 00 80 31 80 65 B0 83 01 02 90 83 00 90 00_(provided_by_PetrS).csv b/Profiles/results/Gemplus_GXPLiteGeneric_3B 7D 94 00 00 80 31 80 65 B0 83 01 02 90 83 00 90 00_(provided_by_PetrS).csv index 3e3ff235..4c70e0f1 100644 --- a/Profiles/results/Gemplus_GXPLiteGeneric_3B 7D 94 00 00 80 31 80 65 B0 83 01 02 90 83 00 90 00_(provided_by_PetrS).csv +++ b/Profiles/results/Gemplus_GXPLiteGeneric_3B 7D 94 00 00 80 31 80 65 B0 83 01 02 90 83 00 90 00_(provided_by_PetrS).csv @@ -7,6 +7,28 @@ JavaCard support version;2.1.2; javacardx.apdu.ExtendedLength; Extended APDU;no + +CPLC; 9f 7f 2a 40 90 66 22 12 91 33 49 03 02 40 82 b7 0c 2c 08 24 56 40 82 42 95 12 93 42 95 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +CPLC.ICFabricator;4090;Infineon +CPLC.ICType;6622 +CPLC.OperatingSystemID;1291 +CPLC.OperatingSystemReleaseDate;3349 +CPLC.OperatingSystemReleaseLevel;0302 +CPLC.ICFabricationDate;4082;(Y DDD) date in that year +CPLC.ICSerialNumber;b70c2c08 +CPLC.ICBatchIdentifier;2456 +CPLC.ICModuleFabricator;4082 +CPLC.ICModulePackagingDate;4295 +CPLC.ICCManufacturer;1293 +CPLC.ICEmbeddingDate;4295 +CPLC.ICPrePersonalizer;0000 +CPLC.ICPrePersonalizationEquipmentDate;0000 +CPLC.ICPrePersonalizationEquipmentID;00000000 +CPLC.ICPersonalizer;0000 +CPLC.ICPersonalizationDate;0000 +CPLC.ICPersonalizationEquipmentID;00000000 +CPLC.ICPersonalizationEquipmentID;00000000 + javacardx.crypto.Cipher;supported ALG_DES_CBC_NOPAD;yes ALG_DES_CBC_ISO9797_M1;yes diff --git a/Profiles/results/Gemplus_GXPR3r32_3B 7D 94 00 00 80 31 80 65 B0 83 01 02 90 83 00 90 00_(provided_by_PetrS).csv b/Profiles/results/Gemplus_GXPR3r32_TOP_IS_GX3_3B 7D 94 00 00 80 31 80 65 B0 83 01 02 90 83 00 90 00_(provided_by_PetrS).csv similarity index 88% rename from Profiles/results/Gemplus_GXPR3r32_3B 7D 94 00 00 80 31 80 65 B0 83 01 02 90 83 00 90 00_(provided_by_PetrS).csv rename to Profiles/results/Gemplus_GXPR3r32_TOP_IS_GX3_3B 7D 94 00 00 80 31 80 65 B0 83 01 02 90 83 00 90 00_(provided_by_PetrS).csv index 6485c618..efce8adf 100644 --- a/Profiles/results/Gemplus_GXPR3r32_3B 7D 94 00 00 80 31 80 65 B0 83 01 02 90 83 00 90 00_(provided_by_PetrS).csv +++ b/Profiles/results/Gemplus_GXPR3r32_TOP_IS_GX3_3B 7D 94 00 00 80 31 80 65 B0 83 01 02 90 83 00 90 00_(provided_by_PetrS).csv @@ -7,6 +7,27 @@ JavaCard support version;2.1.2; javacardx.apdu.ExtendedLength; Extended APDU;no +CPLC; 9f 7f 2a 40 90 66 42 12 91 42 14 03 02 40 82 f7 0a 0c 19 26 04 40 82 63 02 12 93 63 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +CPLC.ICFabricator;4090;Infineon +CPLC.ICType;6642 +CPLC.OperatingSystemID;1291 +CPLC.OperatingSystemReleaseDate;4214 +CPLC.OperatingSystemReleaseLevel;0302 +CPLC.ICFabricationDate;4082;(Y DDD) date in that year +CPLC.ICSerialNumber;f70a0c19 +CPLC.ICBatchIdentifier;2604 +CPLC.ICModuleFabricator;4082 +CPLC.ICModulePackagingDate;6302 +CPLC.ICCManufacturer;1293 +CPLC.ICEmbeddingDate;6302 +CPLC.ICPrePersonalizer;0000 +CPLC.ICPrePersonalizationEquipmentDate;0000 +CPLC.ICPrePersonalizationEquipmentID;00000000 +CPLC.ICPersonalizer;0000 +CPLC.ICPersonalizationDate;0000 +CPLC.ICPersonalizationEquipmentID;00000000 +CPLC.ICPersonalizationEquipmentID;00000000 + javacardx.crypto.Cipher;supported;time ALG_DES_CBC_NOPAD;yes; ALG_DES_CBC_ISO9797_M1;yes; diff --git a/Profiles/results/Infineon_JTOPV2_16K_3B 6D 00 00 80 31 80 65 40 90 86 01 51 83 07 90 00_(provided_by_PetrS).csv b/Profiles/results/Infineon_JTOPV2_16K_3B 6D 00 00 80 31 80 65 40 90 86 01 51 83 07 90 00_(provided_by_PetrS).csv index f7979195..d138c22e 100644 --- a/Profiles/results/Infineon_JTOPV2_16K_3B 6D 00 00 80 31 80 65 40 90 86 01 51 83 07 90 00_(provided_by_PetrS).csv +++ b/Profiles/results/Infineon_JTOPV2_16K_3B 6D 00 00 80 31 80 65 40 90 86 01 51 83 07 90 00_(provided_by_PetrS).csv @@ -7,6 +7,27 @@ JavaCard support version;2.1.2; javacardx.apdu.ExtendedLength; Extended APDU;no +CPLC; 9f 7f 2a 40 90 66 56 40 91 32 34 05 01 63 57 27 0b 05 1a 2e ea 40 92 33 12 40 93 33 19 21 34 71 43 44 47 03 43 00 00 00 00 00 00 00 00 +CPLC.ICFabricator;4090;Infineon +CPLC.ICType;6656 +CPLC.OperatingSystemID;4091 +CPLC.OperatingSystemReleaseDate;3234 +CPLC.OperatingSystemReleaseLevel;0501 +CPLC.ICFabricationDate;6357;(Y DDD) date in that year +CPLC.ICSerialNumber;270b051a +CPLC.ICBatchIdentifier;2eea +CPLC.ICModuleFabricator;4092 +CPLC.ICModulePackagingDate;3312 +CPLC.ICCManufacturer;4093 +CPLC.ICEmbeddingDate;3319 +CPLC.ICPrePersonalizer;2134 +CPLC.ICPrePersonalizationEquipmentDate;7143 +CPLC.ICPrePersonalizationEquipmentID;44470343 +CPLC.ICPersonalizer;0000 +CPLC.ICPersonalizationDate;0000 +CPLC.ICPersonalizationEquipmentID;00000000 +CPLC.ICPersonalizationEquipmentID;00000000 + javacardx.crypto.Cipher; ALG_DES_CBC_NOPAD;yes; ALG_DES_CBC_ISO9797_M1;yes; diff --git a/Profiles/results/NXP_JCOP31_3B EB 00 00 81 31 20 45 4A 43 4F 50 33 31 33 36 47 44 54 78_(provided_by_PetrS).csv b/Profiles/results/NXP_JCOP31_3B EB 00 00 81 31 20 45 4A 43 4F 50 33 31 33 36 47 44 54 78_(provided_by_PetrS).csv index 91bf11ba..8d318683 100644 --- a/Profiles/results/NXP_JCOP31_3B EB 00 00 81 31 20 45 4A 43 4F 50 33 31 33 36 47 44 54 78_(provided_by_PetrS).csv +++ b/Profiles/results/NXP_JCOP31_3B EB 00 00 81 31 20 45 4A 43 4F 50 33 31 33 36 47 44 54 78_(provided_by_PetrS).csv @@ -7,6 +7,27 @@ JavaCard support version;2.2.1; javacardx.apdu.ExtendedLength; Extended APDU;no +CPLC; 9f 7f 2a 47 90 50 15 40 51 51 58 24 00 63 06 00 19 57 91 06 77 48 10 63 13 00 00 00 00 02 2d 2d 30 31 39 35 37 00 00 00 00 00 00 00 00 +CPLC.ICFabricator;4790;NXP +CPLC.ICType;5015 +CPLC.OperatingSystemID;4051 +CPLC.OperatingSystemReleaseDate;5158 +CPLC.OperatingSystemReleaseLevel;2400 +CPLC.ICFabricationDate;6306;(Y DDD) date in that year +CPLC.ICSerialNumber;00195791 +CPLC.ICBatchIdentifier;0677 +CPLC.ICModuleFabricator;4810 +CPLC.ICModulePackagingDate;6313 +CPLC.ICCManufacturer;0000 +CPLC.ICEmbeddingDate;0000 +CPLC.ICPrePersonalizer;022d +CPLC.ICPrePersonalizationEquipmentDate;2d30 +CPLC.ICPrePersonalizationEquipmentID;31393537 +CPLC.ICPersonalizer;0000 +CPLC.ICPersonalizationDate;0000 +CPLC.ICPersonalizationEquipmentID;00000000 +CPLC.ICPersonalizationEquipmentID;00000000 + javacardx.crypto.Cipher,supported,time ALG_DES_CBC_NOPAD,yes, ALG_DES_CBC_ISO9797_M1,yes, diff --git a/Profiles/results/NXP_JCOP3_J3H081_EMV_ICFabDate_2016_355_ALGSUPPORT__3b_f8_18_00_00_81_31_fe_45_00_73_c8_40_00_00_90_00_80_(provided_by_Adam_Zhang_and_Richard_Mitev).csv b/Profiles/results/NXP_JCOP3_J3H081_EMV_ICFabDate_2016_355_ALGSUPPORT__3b_f8_18_00_00_81_31_fe_45_00_73_c8_40_00_00_90_00_80_(provided_by_Adam_Zhang_and_Richard_Mitev).csv index 954eb907..1161e15e 100644 --- a/Profiles/results/NXP_JCOP3_J3H081_EMV_ICFabDate_2016_355_ALGSUPPORT__3b_f8_18_00_00_81_31_fe_45_00_73_c8_40_00_00_90_00_80_(provided_by_Adam_Zhang_and_Richard_Mitev).csv +++ b/Profiles/results/NXP_JCOP3_J3H081_EMV_ICFabDate_2016_355_ALGSUPPORT__3b_f8_18_00_00_81_31_fe_45_00_73_c8_40_00_00_90_00_80_(provided_by_Adam_Zhang_and_Richard_Mitev).csv @@ -8,7 +8,9 @@ Card ATR; 3b f8 18 00 00 81 31 fe 45 00 73 c8 40 00 00 90 00 80, Card name; J3H081 EMV, Card provider; Used protocol; T=1, -, + +JavaCard support version;3.0.4; + JCSystem.getVersion()[Major.Minor];3.0;, JCSystem.isObjectDeletionSupported;yes;, JCSystem.MEMORY_TYPE_PERSISTENT;32140B;, @@ -17,26 +19,26 @@ JCSystem.MEMORY_TYPE_TRANSIENT_DESELECT;1960B;, JCSystem.MEMORY_TYPE_TRANSIENT_DESELECT;1960B;, , CPLC; 9f 7f 2a 47 90 6b 64 47 00 e4 d8 03 00 63 55 02 22 23 98 58 13 00 00 00 00 00 00 00 00 02 26 5b 32 32 32 32 33 00 00 00 00 00 00 00 00, -CPLC.ICFabricator;4790;NXP, -CPLC.ICType;6b64, -CPLC.OperatingSystemID;4700, -CPLC.OperatingSystemReleaseDate;e4d8, -CPLC.OperatingSystemReleaseLevel;0300, +CPLC.ICFabricator;4790;NXP +CPLC.ICType;6b64 +CPLC.OperatingSystemID;4700 +CPLC.OperatingSystemReleaseDate;e4d8 +CPLC.OperatingSystemReleaseLevel;0300 CPLC.ICFabricationDate;6355;(Y DDD) date in that year, -CPLC.ICSerialNumber;02222398, -CPLC.ICBatchIdentifier;5813, -CPLC.ICModuleFabricator;0000, -CPLC.ICModulePackagingDate;0000, -CPLC.ICCManufacturer;0000, -CPLC.ICEmbeddingDate;0000, -CPLC.ICPrePersonalizer;0226, -CPLC.ICPrePersonalizationEquipmentDate;5b32, -CPLC.ICPrePersonalizationEquipmentID;32323233, -CPLC.ICPersonalizer;0000, -CPLC.ICPersonalizationDate;0000, -CPLC.ICPersonalizationEquipmentID;00000000, -CPLC.ICPersonalizationEquipmentID;00000000, -, +CPLC.ICSerialNumber;02222398 +CPLC.ICBatchIdentifier;5813 +CPLC.ICModuleFabricator;0000 +CPLC.ICModulePackagingDate;0000 +CPLC.ICCManufacturer;0000 +CPLC.ICEmbeddingDate;0000 +CPLC.ICPrePersonalizer;0226 +CPLC.ICPrePersonalizationEquipmentDate;5b32 +CPLC.ICPrePersonalizationEquipmentID;32323233 +CPLC.ICPersonalizer;0000 +CPLC.ICPersonalizationDate;0000 +CPLC.ICPersonalizationEquipmentID;00000000 +CPLC.ICPersonalizationEquipmentID;00000000 + javacardx.crypto.Cipher, ALG_DES_CBC_NOPAD;yes;0.184000, ALG_DES_CBC_ISO9797_M1;yes;0.184000, diff --git a/Profiles/results/NXP_JCOP3_J3H081_EMV_ICFabDate_2018_ALGSUPPORT__3b_fa_18_00_00_81_31_fe_45_50_56_4a_43_4f_50_33_45_4d_56_94_(provided_by_Rowland_Watkins_and_PetrS).csv b/Profiles/results/NXP_JCOP3_J3H081_EMV_ICFabDate_2018_ALGSUPPORT__3b_fa_18_00_00_81_31_fe_45_50_56_4a_43_4f_50_33_45_4d_56_94_(provided_by_Rowland_Watkins_and_PetrS).csv index 3a2fb599..c91bd674 100644 --- a/Profiles/results/NXP_JCOP3_J3H081_EMV_ICFabDate_2018_ALGSUPPORT__3b_fa_18_00_00_81_31_fe_45_50_56_4a_43_4f_50_33_45_4d_56_94_(provided_by_Rowland_Watkins_and_PetrS).csv +++ b/Profiles/results/NXP_JCOP3_J3H081_EMV_ICFabDate_2018_ALGSUPPORT__3b_fa_18_00_00_81_31_fe_45_50_56_4a_43_4f_50_33_45_4d_56_94_(provided_by_Rowland_Watkins_and_PetrS).csv @@ -8,35 +8,37 @@ Card ATR; 3b fa 18 00 00 81 31 fe 45 50 56 4a 43 4f 50 33 45 4d 56 94, Card name; NXP JCOP3 J3H081, Card provider; MoTechno: https://www.motechno.com/buy/j3h081-jcop3/, Used protocol; T=1, -, + +JavaCard support version;3.0.4; + JCSystem.getVersion()[Major.Minor];3.0;, JCSystem.isObjectDeletionSupported;yes;, JCSystem.MEMORY_TYPE_PERSISTENT;20052B;, JCSystem.MEMORY_TYPE_TRANSIENT_RESET;977B;, JCSystem.MEMORY_TYPE_TRANSIENT_DESELECT;1960B;, JCSystem.MEMORY_TYPE_TRANSIENT_DESELECT;1960B;, -, -CPLC; 9f 7f 2a 47 90 6b 64 47 00 e4 d8 03 00 81 39 08 55 29 99 04 43 00 00 00 00 00 00 00 00 0a 7a 49 38 35 35 32 39 00 00 00 00 00 00 00 00, -CPLC.ICFabricator;4790;NXP, -CPLC.ICType;6b64, -CPLC.OperatingSystemID;4700, -CPLC.OperatingSystemReleaseDate;e4d8, -CPLC.OperatingSystemReleaseLevel;0300, -CPLC.ICFabricationDate;8139;(Y DDD) date in that year, -CPLC.ICSerialNumber;08552999, -CPLC.ICBatchIdentifier;0443, -CPLC.ICModuleFabricator;0000, -CPLC.ICModulePackagingDate;0000, -CPLC.ICCManufacturer;0000, -CPLC.ICEmbeddingDate;0000, -CPLC.ICPrePersonalizer;0a7a, -CPLC.ICPrePersonalizationEquipmentDate;4938, -CPLC.ICPrePersonalizationEquipmentID;35353239, -CPLC.ICPersonalizer;0000, -CPLC.ICPersonalizationDate;0000, -CPLC.ICPersonalizationEquipmentID;00000000, -CPLC.ICPersonalizationEquipmentID;00000000, -, + +CPLC; 9f 7f 2a 47 90 6b 64 47 00 e4 d8 03 00 63 55 02 22 23 98 58 13 00 00 00 00 00 00 00 00 02 26 5b 32 32 32 32 33 00 00 00 00 00 00 00 00, +CPLC.ICFabricator;4790;NXP +CPLC.ICType;6b64 +CPLC.OperatingSystemID;4700 +CPLC.OperatingSystemReleaseDate;e4d8 +CPLC.OperatingSystemReleaseLevel;0300 +CPLC.ICFabricationDate;6355;(Y DDD) date in that year, +CPLC.ICSerialNumber;02222398 +CPLC.ICBatchIdentifier;5813 +CPLC.ICModuleFabricator;0000 +CPLC.ICModulePackagingDate;0000 +CPLC.ICCManufacturer;0000 +CPLC.ICEmbeddingDate;0000 +CPLC.ICPrePersonalizer;0226 +CPLC.ICPrePersonalizationEquipmentDate;5b32 +CPLC.ICPrePersonalizationEquipmentID;32323233 +CPLC.ICPersonalizer;0000 +CPLC.ICPersonalizationDate;0000 +CPLC.ICPersonalizationEquipmentID;00000000 +CPLC.ICPersonalizationEquipmentID;00000000 + javacardx.crypto.Cipher, ALG_DES_CBC_NOPAD;yes;0.184000, ALG_DES_CBC_ISO9797_M1;yes;0.184000, diff --git a/Profiles/results/NXP_JCOP3_J3H145_SECID_P60_ALGSUPPORT__3b_11_95_80_(provided_by_Luka_Logar_and_Rowland_Watkins_and_PetrS).csv b/Profiles/results/NXP_JCOP3_J3H145_SECID_P60_ALGSUPPORT__3b_11_95_80_(provided_by_Luka_Logar_and_Rowland_Watkins_and_PetrS).csv index 6fbefed0..80f57ba9 100644 --- a/Profiles/results/NXP_JCOP3_J3H145_SECID_P60_ALGSUPPORT__3b_11_95_80_(provided_by_Luka_Logar_and_Rowland_Watkins_and_PetrS).csv +++ b/Profiles/results/NXP_JCOP3_J3H145_SECID_P60_ALGSUPPORT__3b_11_95_80_(provided_by_Luka_Logar_and_Rowland_Watkins_and_PetrS).csv @@ -20,7 +20,27 @@ JCSystem.MEMORY_TYPE_TRANSIENT_RESET;2792B; JCSystem.MEMORY_TYPE_TRANSIENT_DESELECT;32767B; JCSystem.getMaxCommitCapacity();32767B; -CPLC; failed to obtain CPLC +CPLC; 9f 7f 2a 47 90 05 03 82 11 63 51 03 02 81 92 00 16 82 07 41 19 4e 30 50 38 32 38 44 52 49 31 30 30 31 36 38 32 02 00 01 21 87 a9 3c c3 +CPLC.ICFabricator;4790;NXP +CPLC.ICType;0503 +CPLC.OperatingSystemID;8211 +CPLC.OperatingSystemReleaseDate;6351 +CPLC.OperatingSystemReleaseLevel;0302 +CPLC.ICFabricationDate;8192;(Y DDD) date in that year +CPLC.ICSerialNumber;00168207 +CPLC.ICBatchIdentifier;4119 +CPLC.ICModuleFabricator;4e30 +CPLC.ICModulePackagingDate;5038 +CPLC.ICCManufacturer;3238 +CPLC.ICEmbeddingDate;4452 +CPLC.ICPrePersonalizer;4931 +CPLC.ICPrePersonalizationEquipmentDate;3030 +CPLC.ICPrePersonalizationEquipmentID;31363832 +CPLC.ICPersonalizer;0200 +CPLC.ICPersonalizationDate;0121 +CPLC.ICPersonalizationEquipmentID;87a93cc3 +CPLC.ICPersonalizationEquipmentID;87a93cc3 + javacardx.crypto.Cipher ALG_DES_CBC_NOPAD;yes;0.114000 ALG_DES_CBC_ISO9797_M1;yes;0.104000 diff --git a/Profiles/results/NXP_JCOP41_v221_3b fa 18 00 00 81 31 fe 45 4a 43 4f 50 34 31 56 32 32 31 9d _(provided_by_PetrS).csv b/Profiles/results/NXP_JCOP41_v221_3b fa 18 00 00 81 31 fe 45 4a 43 4f 50 34 31 56 32 32 31 9d _(provided_by_PetrS).csv index 466f6c68..6a30ce59 100644 --- a/Profiles/results/NXP_JCOP41_v221_3b fa 18 00 00 81 31 fe 45 4a 43 4f 50 34 31 56 32 32 31 9d _(provided_by_PetrS).csv +++ b/Profiles/results/NXP_JCOP41_v221_3b fa 18 00 00 81 31 fe 45 4a 43 4f 50 34 31 56 32 32 31 9d _(provided_by_PetrS).csv @@ -19,6 +19,27 @@ JCSystem.MEMORY_TYPE_TRANSIENT_DESELECT;1975B; javacardx.apdu.ExtendedLength; Extended APDU;no +CPLC; 9f 7f 2a 47 90 50 17 40 51 61 38 27 00 81 29 00 01 52 91 36 54 00 00 00 00 00 00 00 00 03 28 04 30 30 31 35 32 00 00 00 00 00 00 00 00 +CPLC.ICFabricator;4790;NXP +CPLC.ICType;5017 +CPLC.OperatingSystemID;4051 +CPLC.OperatingSystemReleaseDate;6138 +CPLC.OperatingSystemReleaseLevel;2700 +CPLC.ICFabricationDate;8129;(Y DDD) date in that year +CPLC.ICSerialNumber;00015291 +CPLC.ICBatchIdentifier;3654 +CPLC.ICModuleFabricator;0000 +CPLC.ICModulePackagingDate;0000 +CPLC.ICCManufacturer;0000 +CPLC.ICEmbeddingDate;0000 +CPLC.ICPrePersonalizer;0328 +CPLC.ICPrePersonalizationEquipmentDate;0430 +CPLC.ICPrePersonalizationEquipmentID;30313532 +CPLC.ICPersonalizer;0000 +CPLC.ICPersonalizationDate;0000 +CPLC.ICPersonalizationEquipmentID;00000000 +CPLC.ICPersonalizationEquipmentID;00000000 + javacardx.crypto.Cipher; ALG_DES_CBC_NOPAD;yes; ALG_DES_CBC_ISO9797_M1;yes; diff --git a/Profiles/results/Oberthur_CosmoDual72K_3B 7B 18 00 00 00 31 C0 64 77 E3 03 00 82 90 00_(provided_by_PetrS).csv b/Profiles/results/Oberthur_CosmoDual72K_3B 7B 18 00 00 00 31 C0 64 77 E3 03 00 82 90 00_(provided_by_PetrS).csv index 1bfd17e5..6793a941 100644 --- a/Profiles/results/Oberthur_CosmoDual72K_3B 7B 18 00 00 00 31 C0 64 77 E3 03 00 82 90 00_(provided_by_PetrS).csv +++ b/Profiles/results/Oberthur_CosmoDual72K_3B 7B 18 00 00 00 31 C0 64 77 E3 03 00 82 90 00_(provided_by_PetrS).csv @@ -8,6 +8,27 @@ JavaCard support version;2.2.1; javacardx.apdu.ExtendedLength; Extended APDU;no +CPLC; 9f 7f 2a 20 50 50 00 40 41 40 91 00 5f 71 58 00 00 03 18 00 00 19 12 71 58 19 13 71 58 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +CPLC.ICFabricator;2050;unknown +CPLC.ICType;5000 +CPLC.OperatingSystemID;4041 +CPLC.OperatingSystemReleaseDate;4091 +CPLC.OperatingSystemReleaseLevel;005f +CPLC.ICFabricationDate;7158;(Y DDD) date in that year +CPLC.ICSerialNumber;00000318 +CPLC.ICBatchIdentifier;0000 +CPLC.ICModuleFabricator;1912 +CPLC.ICModulePackagingDate;7158 +CPLC.ICCManufacturer;1913 +CPLC.ICEmbeddingDate;7158 +CPLC.ICPrePersonalizer;0000 +CPLC.ICPrePersonalizationEquipmentDate;0000 +CPLC.ICPrePersonalizationEquipmentID;00000000 +CPLC.ICPersonalizer;0000 +CPLC.ICPersonalizationDate;0000 +CPLC.ICPersonalizationEquipmentID;00000000 +CPLC.ICPersonalizationEquipmentID;00000000 + javacardx.crypto.Cipher,supported,time ALG_DES_CBC_NOPAD,yes, ALG_DES_CBC_ISO9797_M1,yes, diff --git a/Profiles/results/Taisys_SIMoME_VAULT_ICFabDate_2016_ALGSUPPORT__3b_9f_95_80_3f_c7_a0_80_31_e0_73_fa_21_10_63_00_00_00_83_f0_90_00_bb_(provided_by_PetrS).csv b/Profiles/results/Taisys_SIMoME_VAULT_ICFabDate_2016_ALGSUPPORT__3b_9f_95_80_3f_c7_a0_80_31_e0_73_fa_21_10_63_00_00_00_83_f0_90_00_bb_(provided_by_PetrS).csv index 92bd82d8..1fef27d6 100644 --- a/Profiles/results/Taisys_SIMoME_VAULT_ICFabDate_2016_ALGSUPPORT__3b_9f_95_80_3f_c7_a0_80_31_e0_73_fa_21_10_63_00_00_00_83_f0_90_00_bb_(provided_by_PetrS).csv +++ b/Profiles/results/Taisys_SIMoME_VAULT_ICFabDate_2016_ALGSUPPORT__3b_9f_95_80_3f_c7_a0_80_31_e0_73_fa_21_10_63_00_00_00_83_f0_90_00_bb_(provided_by_PetrS).csv @@ -18,6 +18,28 @@ JCSystem.MEMORY_TYPE_TRANSIENT_RESET;12252B; JCSystem.getMaxCommitCapacity();16128B; JCSystem.getMaxCommitCapacity();16128B; + +CPLC; 9f 7f 2a ff ff ff ff ff ff ff ff ff ff 61 94 0a 7d 21 88 66 5d ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff +CPLC.ICFabricator;ffff;unknown +CPLC.ICType;ffff +CPLC.OperatingSystemID;ffff +CPLC.OperatingSystemReleaseDate;ffff +CPLC.OperatingSystemReleaseLevel;ffff +CPLC.ICFabricationDate;6194;(Y DDD) date in that year +CPLC.ICSerialNumber;0a7d2188 +CPLC.ICBatchIdentifier;665d +CPLC.ICModuleFabricator;ffff +CPLC.ICModulePackagingDate;ffff +CPLC.ICCManufacturer;ffff +CPLC.ICEmbeddingDate;ffff +CPLC.ICPrePersonalizer;ffff +CPLC.ICPrePersonalizationEquipmentDate;ffff +CPLC.ICPrePersonalizationEquipmentID;ffffffff +CPLC.ICPersonalizer;ffff +CPLC.ICPersonalizationDate;ffff +CPLC.ICPersonalizationEquipmentID;ffffffff +CPLC.ICPersonalizationEquipmentID;ffffffff + javacardx.crypto.Cipher ALG_DES_CBC_NOPAD;yes;0.142000 ALG_DES_CBC_ISO9797_M1;yes;0.141000 From 5843394dd653eb0810f2e9ee330d6d687660edde Mon Sep 17 00:00:00 2001 From: petrs Date: Wed, 22 May 2019 10:43:13 +0200 Subject: [PATCH 03/11] removed non-ascii character in name --- ...3_4f_50_33_31_56_32_33_32_7a_(provided_by_Martin_Omacka).csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Profiles/results/NXP_JCOP_31_V2.3.2_ICFabDate_2011_016_ALGSUPPORT__3b_8a_80_01_4a_43_4f_50_33_31_56_32_33_32_7a_(provided_by_Martin_Omacka).csv b/Profiles/results/NXP_JCOP_31_V2.3.2_ICFabDate_2011_016_ALGSUPPORT__3b_8a_80_01_4a_43_4f_50_33_31_56_32_33_32_7a_(provided_by_Martin_Omacka).csv index 23561899..5b6a39b0 100644 --- a/Profiles/results/NXP_JCOP_31_V2.3.2_ICFabDate_2011_016_ALGSUPPORT__3b_8a_80_01_4a_43_4f_50_33_31_56_32_33_32_7a_(provided_by_Martin_Omacka).csv +++ b/Profiles/results/NXP_JCOP_31_V2.3.2_ICFabDate_2011_016_ALGSUPPORT__3b_8a_80_01_4a_43_4f_50_33_31_56_32_33_32_7a_(provided_by_Martin_Omacka).csv @@ -1,5 +1,5 @@ INFO: This file was generated by AlgTest utility. See http://www.fi.muni.cz/~xsvenda/jcsupport.html for more results, source codes and other details.; -Tested and provided by; Martin Vomáčka; +Tested and provided by; Martin Vomacka; Execution date/time; 2015/10/26 16:32:35 AlgTestJClient version; 1.6.0 AlgTest applet version; 1.6.0 From cb5b196faaf7618b11fa59bc676878f892a02775 Mon Sep 17 00:00:00 2001 From: petrs Date: Wed, 22 May 2019 10:43:50 +0200 Subject: [PATCH 04/11] profiles with CPLC only --- ..._00_44_04_01_08_03_(provided_by_PetrS).csv | 32 +++++++++++++++++++ ..._00_d0_00_37_00_80_(provided_by_PetrS).csv | 32 +++++++++++++++++++ ...00_11_f7_b1_46_49_44_45_53_4d_4f_31_0f.csv | 32 +++++++++++++++++++ ..._48_61_31_48_00_50_(provided_by_PetrS).csv | 32 +++++++++++++++++++ 4 files changed, 128 insertions(+) create mode 100644 Profiles/results/only_cplc/Cyberflex_Palmera_V3_ALGSUPPORT__3b_65_00_00_44_04_01_08_03_(provided_by_PetrS).csv create mode 100644 Profiles/results/only_cplc/Cyberflex_Palmera_V4_ALGSUPPORT__3b_65_00_00_d0_00_37_00_80_(provided_by_PetrS).csv create mode 100644 Profiles/results/only_cplc/Fidesmo_card_ALGSUPPORT__3b_fe_91_00_ff_91_81_71_fe_40_00_41_38_00_11_f7_b1_46_49_44_45_53_4d_4f_31_0f.csv create mode 100644 Profiles/results/only_cplc/G+D_SmartCafe_Expert_64_ALGSUPPORT__3b_fd_18_00_ff_80_b1_fe_45_1f_07_80_73_00_21_13_57_4a_54_48_61_31_48_00_50_(provided_by_PetrS).csv diff --git a/Profiles/results/only_cplc/Cyberflex_Palmera_V3_ALGSUPPORT__3b_65_00_00_44_04_01_08_03_(provided_by_PetrS).csv b/Profiles/results/only_cplc/Cyberflex_Palmera_V3_ALGSUPPORT__3b_65_00_00_44_04_01_08_03_(provided_by_PetrS).csv new file mode 100644 index 00000000..eba3cb50 --- /dev/null +++ b/Profiles/results/only_cplc/Cyberflex_Palmera_V3_ALGSUPPORT__3b_65_00_00_44_04_01_08_03_(provided_by_PetrS).csv @@ -0,0 +1,32 @@ +INFO: This file was generated by AlgTest utility. See http://www.fi.muni.cz/~xsvenda/jcsupport.html for more results, source codes and other details.; +Tested and provided by; insert your name please.; +Execution date/time; 2019/05/22 09:16:35 +AlgTestJClient version; 1.7.8 +AlgTest applet version; error +Used reader; Generic EMV Smartcard Reader 0 +Card ATR; 3b 65 00 00 44 04 01 08 03 +Card name; Cyberflex Palmera V3 +Card provider; please insert link/description of shop where card was bought +Used protocol; T=0 +High-power mode supported (relevant only to SIM cards according to ETSI 102 221); no + +CPLC; 9f 7f 2a 42 20 45 01 19 81 30 52 02 00 51 73 21 79 b5 c5 48 51 61 92 60 77 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff +CPLC.ICFabricator;4220;unknown +CPLC.ICType;4501 +CPLC.OperatingSystemID;1981 +CPLC.OperatingSystemReleaseDate;3052 +CPLC.OperatingSystemReleaseLevel;0200 +CPLC.ICFabricationDate;5173;(Y DDD) date in that year +CPLC.ICSerialNumber;2179b5c5 +CPLC.ICBatchIdentifier;4851 +CPLC.ICModuleFabricator;6192 +CPLC.ICModulePackagingDate;6077 +CPLC.ICCManufacturer;ffff +CPLC.ICEmbeddingDate;ffff +CPLC.ICPrePersonalizer;ffff +CPLC.ICPrePersonalizationEquipmentDate;ffff +CPLC.ICPrePersonalizationEquipmentID;ffffffff +CPLC.ICPersonalizer;ffff +CPLC.ICPersonalizationDate;ffff +CPLC.ICPersonalizationEquipmentID;ffffffff +CPLC.ICPersonalizationEquipmentID;ffffffff diff --git a/Profiles/results/only_cplc/Cyberflex_Palmera_V4_ALGSUPPORT__3b_65_00_00_d0_00_37_00_80_(provided_by_PetrS).csv b/Profiles/results/only_cplc/Cyberflex_Palmera_V4_ALGSUPPORT__3b_65_00_00_d0_00_37_00_80_(provided_by_PetrS).csv new file mode 100644 index 00000000..2a248938 --- /dev/null +++ b/Profiles/results/only_cplc/Cyberflex_Palmera_V4_ALGSUPPORT__3b_65_00_00_d0_00_37_00_80_(provided_by_PetrS).csv @@ -0,0 +1,32 @@ +INFO: This file was generated by AlgTest utility. See http://www.fi.muni.cz/~xsvenda/jcsupport.html for more results, source codes and other details.; +Tested and provided by; insert your name please.; +Execution date/time; 2019/05/22 09:20:30 +AlgTestJClient version; 1.7.8 +AlgTest applet version; error +Used reader; Generic EMV Smartcard Reader 0 +Card ATR; 3b 65 00 00 d0 00 37 00 80 +Card name; Cyberflex Palmera V4 +Card provider; please insert link/description of shop where card was bought +Used protocol; T=0 +High-power mode supported (relevant only to SIM cards according to ETSI 102 221); no + +CPLC; 9f 7f 2a 40 90 61 72 20 41 53 14 00 06 53 14 9e 10 2e 35 56 69 19 42 62 50 21 33 70 93 21 34 70 93 44 47 03 42 ff ff ff ff ff ff ff ff +CPLC.ICFabricator;4090;Infineon +CPLC.ICType;6172 +CPLC.OperatingSystemID;2041 +CPLC.OperatingSystemReleaseDate;5314 +CPLC.OperatingSystemReleaseLevel;0006 +CPLC.ICFabricationDate;5314;(Y DDD) date in that year +CPLC.ICSerialNumber;9e102e35 +CPLC.ICBatchIdentifier;5669 +CPLC.ICModuleFabricator;1942 +CPLC.ICModulePackagingDate;6250 +CPLC.ICCManufacturer;2133 +CPLC.ICEmbeddingDate;7093 +CPLC.ICPrePersonalizer;2134 +CPLC.ICPrePersonalizationEquipmentDate;7093 +CPLC.ICPrePersonalizationEquipmentID;44470342 +CPLC.ICPersonalizer;ffff +CPLC.ICPersonalizationDate;ffff +CPLC.ICPersonalizationEquipmentID;ffffffff +CPLC.ICPersonalizationEquipmentID;ffffffff diff --git a/Profiles/results/only_cplc/Fidesmo_card_ALGSUPPORT__3b_fe_91_00_ff_91_81_71_fe_40_00_41_38_00_11_f7_b1_46_49_44_45_53_4d_4f_31_0f.csv b/Profiles/results/only_cplc/Fidesmo_card_ALGSUPPORT__3b_fe_91_00_ff_91_81_71_fe_40_00_41_38_00_11_f7_b1_46_49_44_45_53_4d_4f_31_0f.csv new file mode 100644 index 00000000..0a70c3d6 --- /dev/null +++ b/Profiles/results/only_cplc/Fidesmo_card_ALGSUPPORT__3b_fe_91_00_ff_91_81_71_fe_40_00_41_38_00_11_f7_b1_46_49_44_45_53_4d_4f_31_0f.csv @@ -0,0 +1,32 @@ +INFO: This file was generated by AlgTest utility. See http://www.fi.muni.cz/~xsvenda/jcsupport.html for more results, source codes and other details.; +Tested and provided by; insert your name please.; +Execution date/time; 2019/05/22 10:26:34 +AlgTestJClient version; 1.7.8 +AlgTest applet version; error +Used reader; SCM Microsystems Inc. SDI010 Contactless Reader 0 +Card ATR; 3b fe 91 00 ff 91 81 71 fe 40 00 41 38 00 11 f7 b1 46 49 44 45 53 4d 4f 31 0f +Card name; Fidesmo card +Card provider; please insert link/description of shop where card was bought +Used protocol; T=1 +High-power mode supported (relevant only to SIM cards according to ETSI 102 221); no + +CPLC; 9f 7f 2a 47 90 50 75 47 91 20 81 3b 00 72 72 01 36 21 98 82 16 48 12 72 79 00 00 00 00 17 3a 10 31 33 36 32 31 00 00 00 00 00 00 00 00 +CPLC.ICFabricator;4790;NXP +CPLC.ICType;5075 +CPLC.OperatingSystemID;4791 +CPLC.OperatingSystemReleaseDate;2081 +CPLC.OperatingSystemReleaseLevel;3b00 +CPLC.ICFabricationDate;7272;(Y DDD) date in that year +CPLC.ICSerialNumber;01362198 +CPLC.ICBatchIdentifier;8216 +CPLC.ICModuleFabricator;4812 +CPLC.ICModulePackagingDate;7279 +CPLC.ICCManufacturer;0000 +CPLC.ICEmbeddingDate;0000 +CPLC.ICPrePersonalizer;173a +CPLC.ICPrePersonalizationEquipmentDate;1031 +CPLC.ICPrePersonalizationEquipmentID;33363231 +CPLC.ICPersonalizer;0000 +CPLC.ICPersonalizationDate;0000 +CPLC.ICPersonalizationEquipmentID;00000000 +CPLC.ICPersonalizationEquipmentID;00000000 diff --git a/Profiles/results/only_cplc/G+D_SmartCafe_Expert_64_ALGSUPPORT__3b_fd_18_00_ff_80_b1_fe_45_1f_07_80_73_00_21_13_57_4a_54_48_61_31_48_00_50_(provided_by_PetrS).csv b/Profiles/results/only_cplc/G+D_SmartCafe_Expert_64_ALGSUPPORT__3b_fd_18_00_ff_80_b1_fe_45_1f_07_80_73_00_21_13_57_4a_54_48_61_31_48_00_50_(provided_by_PetrS).csv new file mode 100644 index 00000000..82897101 --- /dev/null +++ b/Profiles/results/only_cplc/G+D_SmartCafe_Expert_64_ALGSUPPORT__3b_fd_18_00_ff_80_b1_fe_45_1f_07_80_73_00_21_13_57_4a_54_48_61_31_48_00_50_(provided_by_PetrS).csv @@ -0,0 +1,32 @@ +INFO: This file was generated by AlgTest utility. See http://www.fi.muni.cz/~xsvenda/jcsupport.html for more results, source codes and other details.; +Tested and provided by; insert your name please.; +Execution date/time; 2019/05/22 10:14:12 +AlgTestJClient version; 1.7.8 +AlgTest applet version; error +Used reader; Generic EMV Smartcard Reader 0 +Card ATR; 3b fd 18 00 ff 80 b1 fe 45 1f 07 80 73 00 21 13 57 4a 54 48 61 31 48 00 50 +Card name; G+D SmartCafe Expert 64 +Card provider; please insert link/description of shop where card was bought +Used protocol; T=1 +High-power mode supported (relevant only to SIM cards according to ETSI 102 221); no + +CPLC; 9f 7f 2a 00 03 03 07 a0 06 33 11 01 00 42 43 10 6f ca 27 64 49 42 32 42 51 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff +CPLC.ICFabricator;0003;unknown +CPLC.ICType;0307 +CPLC.OperatingSystemID;a006 +CPLC.OperatingSystemReleaseDate;3311 +CPLC.OperatingSystemReleaseLevel;0100 +CPLC.ICFabricationDate;4243;(Y DDD) date in that year +CPLC.ICSerialNumber;106fca27 +CPLC.ICBatchIdentifier;6449 +CPLC.ICModuleFabricator;4232 +CPLC.ICModulePackagingDate;4251 +CPLC.ICCManufacturer;ffff +CPLC.ICEmbeddingDate;ffff +CPLC.ICPrePersonalizer;ffff +CPLC.ICPrePersonalizationEquipmentDate;ffff +CPLC.ICPrePersonalizationEquipmentID;ffffffff +CPLC.ICPersonalizer;ffff +CPLC.ICPersonalizationDate;ffff +CPLC.ICPersonalizationEquipmentID;ffffffff +CPLC.ICPersonalizationEquipmentID;ffffffff From 003255b9d50a5c10a9b436d5d020c16377530148 Mon Sep 17 00:00:00 2001 From: petrs Date: Wed, 22 May 2019 10:45:15 +0200 Subject: [PATCH 05/11] return card atr,reader name and protocol even when applet is not present --- AlgTest_JClient/src/algtestjclient/CardMngr.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/AlgTest_JClient/src/algtestjclient/CardMngr.java b/AlgTest_JClient/src/algtestjclient/CardMngr.java index 75659866..b4b22b81 100644 --- a/AlgTest_JClient/src/algtestjclient/CardMngr.java +++ b/AlgTest_JClient/src/algtestjclient/CardMngr.java @@ -456,10 +456,11 @@ public boolean ConnectToCard(CardTerminal targetReader, StringBuilder selectedRe } } + if (selectedATR != null) { selectedATR.append(getATR()); } + if (selectedReader != null) { selectedReader.append(getTerminalName()); } + if (usedProtocol != null) { usedProtocol.append(getProtocol()); } + if (cardFound) { - if (selectedATR != null) { selectedATR.append(getATR()); } - if (selectedReader != null) { selectedReader.append(getTerminalName()); } - if (usedProtocol != null) { usedProtocol.append(getProtocol()); } return true; } } From 241f795b4a1c51e3adfbbab84211a364540a0aa6 Mon Sep 17 00:00:00 2001 From: petrs Date: Fri, 24 May 2019 18:34:17 +0200 Subject: [PATCH 06/11] updated card profiles --- ...3BF91300008131FE454A434F503234325233A2.csv | 145 +++++++++ ...3_J3H145_SECID_P60_AIDSUPPORT_3B119580.csv | 20 ++ ...11_ac_83_00_90_00_(provided_by_PetrS).csv} | 0 ... 01 01 3D 72 D6 43_(provided_by_PetrS).csv | 215 ------------- ... 01 74 83 00 90 00_(provided_by_PetrS).csv | 22 ++ ..._32_34_32_52_33_a2_(provided_by_PetrS).csv | 295 ++++++++++++++++++ ... 33 36 47 44 54 78_(provided_by_PetrS).csv | 214 ------------- ...0_11_f7_b1_46_49_44_45_53_4d_4f_31_0f.csv} | 0 ...80_31_80_65_b0_05_01_02_5e_83_00_90_00.csv | 32 ++ ...18_00_00_01_a5_(privided_by_promovicz).csv | 257 +++++++++++++++ 10 files changed, 771 insertions(+), 429 deletions(-) create mode 100644 Profiles/aid/NXP_J2E081_AIDSUPPORT_3BF91300008131FE454A434F503234325233A2.csv rename Profiles/results/{Gemplus_unknown_jc2.1.2_ICFabDate_2006_005_ALGSUPPORT__3b_7d_94_00_00_80_31_80_65_b0_83_11_11_ac_83_00_90_00_(provided_by_PetrS).csv => Gemalto_TwinGCX4_72k_ICFabDate_2006_005_ALGSUPPORT__3b_7d_94_00_00_80_31_80_65_b0_83_11_11_ac_83_00_90_00_(provided_by_PetrS).csv} (100%) delete mode 100644 Profiles/results/Gemalto_TwinGCX4_72k_PK_3B 7A 94 00 00 80 65 A2 01 01 01 3D 72 D6 43_(provided_by_PetrS).csv create mode 100644 Profiles/results/NXP_J2E081_ALGSUPPORT__3b_f9_13_00_00_81_31_fe_45_4a_43_4f_50_32_34_32_52_33_a2_(provided_by_PetrS).csv delete mode 100644 Profiles/results/NXP_JCOP31_3B EB 00 00 81 31 20 45 4A 43 4F 50 33 31 33 36 47 44 54 78_(provided_by_PetrS).csv rename Profiles/results/only_cplc/{Fidesmo_card_ALGSUPPORT__3b_fe_91_00_ff_91_81_71_fe_40_00_41_38_00_11_f7_b1_46_49_44_45_53_4d_4f_31_0f.csv => Fidesmo_card_JCOP 2.4.2 R2_ALGSUPPORT__3b_fe_91_00_ff_91_81_71_fe_40_00_41_38_00_11_f7_b1_46_49_44_45_53_4d_4f_31_0f.csv} (100%) create mode 100644 Profiles/results/only_cplc/Gemplus_GemXpresso_211PK_ALGSUPPORT__3f_6d_00_00_80_31_80_65_b0_05_01_02_5e_83_00_90_003f_6d_00_00_80_31_80_65_b0_05_01_02_5e_83_00_90_00.csv create mode 100644 Profiles/results/sysmocom_sysmoUSIM-SJS1-3FF_ALGSUPPORT__3b_9f_96_80_1f_c7_80_31_a0_73_be_21_13_67_43_20_07_18_00_00_01_a5_(privided_by_promovicz).csv diff --git a/Profiles/aid/NXP_J2E081_AIDSUPPORT_3BF91300008131FE454A434F503234325233A2.csv b/Profiles/aid/NXP_J2E081_AIDSUPPORT_3BF91300008131FE454A434F503234325233A2.csv new file mode 100644 index 00000000..ecebb67d --- /dev/null +++ b/Profiles/aid/NXP_J2E081_AIDSUPPORT_3BF91300008131FE454A434F503234325233A2.csv @@ -0,0 +1,145 @@ +jcAIDScan version; 0.1.2 +Card ATR; 3BF91300008131FE454A434F503234325233A2 +Card name; NXP J2E081 +CPLC;; + +ICFabricator; 4790 +ICType; 5167 +OperatingSystemID; 4791 +OperatingSystemReleaseDate; 2348 +OperatingSystemReleaseLevel; 4000 +ICFabricationDate; 6007 +ICSerialNumber; 00079898 +ICBatchIdentifier; 1963 +ICModuleFabricator; 4812 +ICModulePackagingDate; 6014 +ICCManufacturer; 0000 +ICEmbeddingDate; 0000 +ICPrePersonalizer; 012A +ICPrePersonalizationEquipmentDate; 1930 +ICPrePersonalizationEquipmentID; 30373938 +ICPersonalizer; 0000 +ICPersonalizationDate; 0000 +ICPersonalizationEquipmentID; 00000000 +***** CARD DATA +GlobalPlatform card +Version; 2.2 +TAG3; 1.2.840.114283.3 +SCP version; SCP_02_55 +TAG5; 1.3.656.840.100.2.1.3 +TAG6; 1.3.6.1.4.1.42.2.110.1.2 +***** KEY INFO +VER;255 ID;1 TYPE;DES3 LEN;16 +VER;255 ID;2 TYPE;DES3 LEN;16 +VER;255 ID;3 TYPE;DES3 LEN;16 +Key version suggests factory keys + +PACKAGE AID; MAJOR VERSION; MINOR VERSION; PACKAGE NAME; INTRODUCING JC API VERSION; +a00000015100; 1; 0; org.globalplatform; GP 2.1.1 +a00000015100; 1; 1; org.globalplatform; GP 2.2 +a00000015100; 1; 2; org.globalplatform; GP 2.2 +a00000015100; 1; 3; org.globalplatform; GP 2.2 +a00000015100; 1; 4; org.globalplatform; GP 2.2 +a00000015100; 1; 5; org.globalplatform; GP 2.2.1 +a0000000030000; 1; 0; visa.openplatform; OP 2.0 +a0000000620001; 1; 0; java.lang; JC 2.1 +a0000000620002; 1; 0; java.io; JC 2.2.0 +a0000000620003; 1; 0; java.rmi; JC 2.2.0 +a0000000620101; 1; 0; javacard.framework; JC 2.1 +a0000000620101; 1; 1; javacard.framework; JC 2.2.0 +a0000000620101; 1; 2; javacard.framework; JC 2.2.1 +a0000000620101; 1; 3; javacard.framework; JC 2.2.2 +a0000000620101; 1; 4; javacard.framework; JC 3.0.1 +a000000062010101; 1; 0; javacard.framework.service; JC 2.2.0 +a0000000620102; 1; 0; javacard.security; JC 2.1 +a0000000620102; 1; 1; javacard.security; JC 2.1.1 +a0000000620102; 1; 2; javacard.security; JC 2.2.1 +a0000000620102; 1; 3; javacard.security; JC 2.2.2 +a0000000620102; 1; 4; javacard.security; JC 3.0.1 +a0000000620201; 1; 0; javacardx.crypto; JC 2.1 +a0000000620201; 1; 1; javacardx.crypto; JC 2.1.1 +a0000000620201; 1; 2; javacardx.crypto; JC 2.2.1 +a0000000620201; 1; 3; javacardx.crypto; JC 2.2.2 +a0000000620201; 1; 4; javacardx.crypto; JC 3.0.1 +a0000000620203; 1; 0; javacardx.external; JC 2.2.2 +a0000000620209; 1; 0; javacardx.apdu; JC 2.2.2 + +FULL PACKAGE AID; IS SUPPORTED?; PACKAGE NAME WITH VERSION; +000106A00000015100; yes; org.globalplatform v1.0 a00000015100; +010106A00000015100; yes; org.globalplatform v1.1 a00000015100; +020106A00000015100; yes; org.globalplatform v1.2 a00000015100; +030106A00000015100; yes; org.globalplatform v1.3 a00000015100; +040106A00000015100; yes; org.globalplatform v1.4 a00000015100; +050106A00000015100; yes; org.globalplatform v1.5 a00000015100; +060106A00000015100; no; org.globalplatform v1.6 a00000015100; +070106A00000015100; no; org.globalplatform v1.7 a00000015100; +000107A0000000030000; yes; visa.openplatform v1.0 a0000000030000; +010107A0000000030000; no; visa.openplatform v1.1 a0000000030000; +020107A0000000030000; no; visa.openplatform v1.2 a0000000030000; +000107A0000000620001; yes; java.lang v1.0 a0000000620001; +010107A0000000620001; no; java.lang v1.1 a0000000620001; +000107A0000000620002; yes; java.io v1.0 a0000000620002; +010107A0000000620002; no; java.io v1.1 a0000000620002; +000107A0000000620003; yes; java.rmi v1.0 a0000000620003; +010107A0000000620003; no; java.rmi v1.1 a0000000620003; +000107A0000000620101; yes; javacard.framework v1.0 a0000000620101; +010107A0000000620101; yes; javacard.framework v1.1 a0000000620101; +020107A0000000620101; yes; javacard.framework v1.2 a0000000620101; +030107A0000000620101; yes; javacard.framework v1.3 a0000000620101; +040107A0000000620101; yes; javacard.framework v1.4 a0000000620101; +050107A0000000620101; no; javacard.framework v1.5 a0000000620101; +060107A0000000620101; no; javacard.framework v1.6 a0000000620101; +070107A0000000620101; no; javacard.framework v1.7 a0000000620101; +000108A000000062010101; yes; javacard.framework.service v1.0 a000000062010101; +010108A000000062010101; no; javacard.framework.service v1.1 a000000062010101; +000107A0000000620102; yes; javacard.security v1.0 a0000000620102; +010107A0000000620102; yes; javacard.security v1.1 a0000000620102; +020107A0000000620102; yes; javacard.security v1.2 a0000000620102; +030107A0000000620102; yes; javacard.security v1.3 a0000000620102; +040107A0000000620102; yes; javacard.security v1.4 a0000000620102; +050107A0000000620102; no; javacard.security v1.5 a0000000620102; +060107A0000000620102; no; javacard.security v1.6 a0000000620102; +070107A0000000620102; no; javacard.security v1.7 a0000000620102; +000107A0000000620201; yes; javacardx.crypto v1.0 a0000000620201; +010107A0000000620201; yes; javacardx.crypto v1.1 a0000000620201; +020107A0000000620201; yes; javacardx.crypto v1.2 a0000000620201; +030107A0000000620201; yes; javacardx.crypto v1.3 a0000000620201; +040107A0000000620201; yes; javacardx.crypto v1.4 a0000000620201; +050107A0000000620201; no; javacardx.crypto v1.5 a0000000620201; +060107A0000000620201; no; javacardx.crypto v1.6 a0000000620201; +070107A0000000620201; no; javacardx.crypto v1.7 a0000000620201; +000107A0000000620202; no; javacardx.biometry v1.0 a0000000620202; +010107A0000000620202; no; javacardx.biometry v1.1 a0000000620202; +020107A0000000620202; no; javacardx.biometry v1.2 a0000000620202; +030107A0000000620202; no; javacardx.biometry v1.3 a0000000620202; +040107A0000000620202; no; javacardx.biometry v1.4 a0000000620202; +000107A0000000620203; yes; javacardx.external v1.0 a0000000620203; +010107A0000000620203; no; javacardx.external v1.1 a0000000620203; +000107A0000000620204; no; javacardx.biometry1toN v1.0 a0000000620204; +010107A0000000620204; no; javacardx.biometry1toN v1.1 a0000000620204; +000107A0000000620205; no; javacardx.security v1.0 a0000000620205; +010107A0000000620205; no; javacardx.security v1.1 a0000000620205; +000108A000000062020801; no; javacardx.framework.util v1.0 a000000062020801; +010108A000000062020801; no; javacardx.framework.util v1.1 a000000062020801; +020108A000000062020801; no; javacardx.framework.util v1.2 a000000062020801; +000109A00000006202080101; no; javacardx.framework.util.intx v1.0 a00000006202080101; +010109A00000006202080101; no; javacardx.framework.util.intx v1.1 a00000006202080101; +000108A000000062020802; no; javacardx.framework.math v1.0 a000000062020802; +010108A000000062020802; no; javacardx.framework.math v1.1 a000000062020802; +000108A000000062020803; no; javacardx.framework.tlv v1.0 a000000062020803; +010108A000000062020803; no; javacardx.framework.tlv v1.1 a000000062020803; +000108A000000062020804; no; javacardx.framework.string v1.0 a000000062020804; +010108A000000062020804; no; javacardx.framework.string v1.1 a000000062020804; +000107A0000000620209; yes; javacardx.apdu v1.0 a0000000620209; +010107A0000000620209; no; javacardx.apdu v1.1 a0000000620209; +000108A000000062020901; no; javacardx.apdu.util v1.0 a000000062020901; +010108A000000062020901; no; javacardx.apdu.util v1.1 a000000062020901; + +JC CONVERTOR VERSION; CAP SUCCESSFULLY UPLOADED?;; +2.1.1; yes; +2.2.0; yes; +2.2.1; yes; +2.2.2; yes; +3.0.1; yes; +3.0.4; no; +3.0.5; no; diff --git a/Profiles/aid/NXP_JCOP3_J3H145_SECID_P60_AIDSUPPORT_3B119580.csv b/Profiles/aid/NXP_JCOP3_J3H145_SECID_P60_AIDSUPPORT_3B119580.csv index 810ecb57..ae55ee5c 100644 --- a/Profiles/aid/NXP_JCOP3_J3H145_SECID_P60_AIDSUPPORT_3B119580.csv +++ b/Profiles/aid/NXP_JCOP3_J3H145_SECID_P60_AIDSUPPORT_3B119580.csv @@ -61,6 +61,14 @@ a0000000620202; 1; 3; javacardx.biometry; 3.0.5 a0000000620202; 1; 4; javacardx.biometry; unknown a0000000620203; 1; 0; javacardx.external; 2.2.2 a0000000620209; 1; 0; javacardx.apdu; 2.2.2 +a00000015100; 1; 0; org.globalplatform; GP 2.1.1 +a00000015100; 1; 1; org.globalplatform; GP 2.2 +a00000015100; 1; 2; org.globalplatform; GP 2.2 +a00000015100; 1; 3; org.globalplatform; GP 2.2 +a00000015100; 1; 4; org.globalplatform; GP 2.2 +a00000015100; 1; 5; org.globalplatform; GP 2.2.1 +a00000015100; 1; 6; org.globalplatform; GP 2.2.1 +a0000000030000; 1; 0; visa.openplatform; OP 2.0 FULL PACKAGE AID; IS SUPPORTED?; PACKAGE NAME WITH VERSION; 000107A0000000620001; yes; java.lang v1.0 a0000000620001; @@ -122,6 +130,18 @@ FULL PACKAGE AID; IS SUPPORTED?; PACKAGE NAME WITH VERSION; 000108A000000062020901; no; javacardx.apdu.util v1.0 a000000062020901; 010108A000000062020901; no; javacardx.apdu.util v1.1 a000000062020901; +000106A00000015100; yes; org.globalplatform v1.0 a00000015100; +010106A00000015100; yes; org.globalplatform v1.1 a00000015100; +020106A00000015100; yes; org.globalplatform v1.2 a00000015100; +030106A00000015100; yes; org.globalplatform v1.3 a00000015100; +040106A00000015100; yes; org.globalplatform v1.4 a00000015100; +050106A00000015100; yes; org.globalplatform v1.5 a00000015100; +060106A00000015100; yes; org.globalplatform v1.6 a00000015100; +070106A00000015100; no; org.globalplatform v1.7 a00000015100; +000107A0000000030000; yes; visa.openplatform v1.0 a0000000030000; +010107A0000000030000; no; visa.openplatform v1.1 a0000000030000; + + JC CONVERTOR VERSION; CAP SUCCESSFULLY UPLOADED?;; 2.1.1; yes; 2.2.0; yes; diff --git a/Profiles/results/Gemplus_unknown_jc2.1.2_ICFabDate_2006_005_ALGSUPPORT__3b_7d_94_00_00_80_31_80_65_b0_83_11_11_ac_83_00_90_00_(provided_by_PetrS).csv b/Profiles/results/Gemalto_TwinGCX4_72k_ICFabDate_2006_005_ALGSUPPORT__3b_7d_94_00_00_80_31_80_65_b0_83_11_11_ac_83_00_90_00_(provided_by_PetrS).csv similarity index 100% rename from Profiles/results/Gemplus_unknown_jc2.1.2_ICFabDate_2006_005_ALGSUPPORT__3b_7d_94_00_00_80_31_80_65_b0_83_11_11_ac_83_00_90_00_(provided_by_PetrS).csv rename to Profiles/results/Gemalto_TwinGCX4_72k_ICFabDate_2006_005_ALGSUPPORT__3b_7d_94_00_00_80_31_80_65_b0_83_11_11_ac_83_00_90_00_(provided_by_PetrS).csv diff --git a/Profiles/results/Gemalto_TwinGCX4_72k_PK_3B 7A 94 00 00 80 65 A2 01 01 01 3D 72 D6 43_(provided_by_PetrS).csv b/Profiles/results/Gemalto_TwinGCX4_72k_PK_3B 7A 94 00 00 80 65 A2 01 01 01 3D 72 D6 43_(provided_by_PetrS).csv deleted file mode 100644 index c1d31956..00000000 --- a/Profiles/results/Gemalto_TwinGCX4_72k_PK_3B 7A 94 00 00 80 65 A2 01 01 01 3D 72 D6 43_(provided_by_PetrS).csv +++ /dev/null @@ -1,215 +0,0 @@ -Used reader;Gemplus USB Smart Card Reader 0;;;; -Card ATR;3B 7A 94 00 00 80 65 A2 01 01 01 3D 72 D6 43;;;; - -AlgTestJClient version; 1.1 -AlgTest applet version; 1.1 - -JavaCard support version;2.2.1; -javacardx.apdu.ExtendedLength; -Extended APDU;no - -CPLC; 9f 7f 2a 40 70 50 72 12 91 51 81 01 00 60 05 00 00 12 77 2e a0 40 82 63 02 12 93 63 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -CPLC.ICFabricator;4070;unknown -CPLC.ICType;5072 -CPLC.OperatingSystemID;1291 -CPLC.OperatingSystemReleaseDate;5181 -CPLC.OperatingSystemReleaseLevel;0100 -CPLC.ICFabricationDate;6005;(Y DDD) date in that year -CPLC.ICSerialNumber;00001277 -CPLC.ICBatchIdentifier;2ea0 -CPLC.ICModuleFabricator;4082 -CPLC.ICModulePackagingDate;6302 -CPLC.ICCManufacturer;1293 -CPLC.ICEmbeddingDate;6302 -CPLC.ICPrePersonalizer;0000 -CPLC.ICPrePersonalizationEquipmentDate;0000 -CPLC.ICPrePersonalizationEquipmentID;00000000 -CPLC.ICPersonalizer;0000 -CPLC.ICPersonalizationDate;0000 -CPLC.ICPersonalizationEquipmentID;00000000 -CPLC.ICPersonalizationEquipmentID;00000000 - -javacardx.crypto.Cipher;;time;;; -ALG_DES_CBC_NOPAD;yes;;;; -ALG_DES_CBC_ISO9797_M1;yes;;;; -ALG_DES_CBC_ISO9797_M2;yes;;;; -ALG_DES_CBC_PKCS5;no;;;; -ALG_DES_ECB_NOPAD;yes;;;; -ALG_DES_ECB_ISO9797_M1;yes;;;; -ALG_DES_ECB_ISO9797_M2;yes;;;; -ALG_DES_ECB_PKCS5;no;;;; -ALG_RSA_ISO14888;no;;;; -ALG_RSA_PKCS1;yes;;;; -ALG_RSA_ISO9796;no;;;; -ALG_RSA_NOPAD;yes;;;; -ALG_AES_BLOCK_128_CBC_NOPAD;yes;;;; -ALG_AES_BLOCK_128_ECB_NOPAD;yes;;;; -ALG_RSA_PKCS1_OAEP;no;;;; -ALG_KOREAN_SEED_ECB_NOPAD;no;;;; -ALG_KOREAN_SEED_CBC_NOPAD;no;;;; -;;;;; -javacard.crypto.Signature;;;;; -ALG_DES_MAC4_NOPAD;yes;;;; -ALG_DES_MAC8_NOPAD;yes;;;; -ALG_DES_MAC4_ISO9797_M1;yes;;;; -ALG_DES_MAC8_ISO9797_M1;yes;;;; -ALG_DES_MAC4_ISO9797_M2;yes;;;; -ALG_DES_MAC8_ISO9797_M2;yes;;;; -ALG_DES_MAC4_PKCS5;no;;;; -ALG_DES_MAC8_PKCS5;no;;;; -ALG_RSA_SHA_ISO9796;yes;;;; -ALG_RSA_SHA_PKCS1;yes;;;; -ALG_RSA_MD5_PKCS1;yes;;;; -ALG_RSA_RIPEMD160_ISO9796;no;;;; -ALG_RSA_RIPEMD160_PKCS1;no;;;; -ALG_DSA_SHA;no;;;; -ALG_RSA_SHA_RFC2409;no;;;; -ALG_RSA_MD5_RFC2409;no;;;; -ALG_ECDSA_SHA;no;;;; -ALG_AES_MAC_128_NOPAD;yes;;;; -ALG_DES_MAC4_ISO9797_1_M2_ALG3;yes;;;; -ALG_DES_MAC8_ISO9797_1_M2_ALG3;yes;;;; -ALG_RSA_SHA_PKCS1_PSS;no;;;; -ALG_RSA_MD5_PKCS1_PSS;no;;;; -ALG_RSA_RIPEMD160_PKCS1_PSS;no;;;; -ALG_HMAC_SHA1;no;;;; -ALG_HMAC_SHA_256;no;;;; -ALG_HMAC_SHA_384;no;;;; -ALG_HMAC_SHA_512;no;;;; -ALG_HMAC_MD5;no;;;; -ALG_HMAC_RIPEMD160;no;;;; -ALG_RSA_SHA_ISO9796_MR;no;;;; -ALG_RSA_RIPEMD160_ISO9796_MR;no;;;; -ALG_SEED_MAC_NOPAD;no;;;; -;;;;; -javacard.security.MessageDigest;;;;; -ALG_SHA;yes;;;; -ALG_MD5;yes;;;; -ALG_RIPEMD160;no;;;; -ALG_SHA_256;no;;;; -ALG_SHA_384;no;;;; -ALG_SHA_512;no;;;; -;;;;; -javacard.security.RandomData;;;;; -ALG_PSEUDO_RANDOM;yes;;;; -ALG_SECURE_RANDOM;yes;;;; -;;;;; -javacard.security.KeyBuilder;;;;; -TYPE_DES_TRANSIENT_RESET;yes;;;; -TYPE_DES_TRANSIENT_DESELECT;yes;;;; -TYPE_DES LENGTH_DES;yes;;;; -TYPE_DES LENGTH_DES3_2KEY;yes;;;; -TYPE_DES LENGTH_DES3_3KEY;yes;;;; -TYPE_AES_TRANSIENT_RESET;yes;;;; -TYPE_AES_TRANSIENT_DESELECT;yes;;;; -TYPE_AES LENGTH_AES_128;yes;;;; -TYPE_AES LENGTH_AES_192;yes;;;; -TYPE_AES LENGTH_AES_256;yes;;;; -TYPE_RSA_PUBLIC LENGTH_RSA_512;yes;;;; -TYPE_RSA_PUBLIC LENGTH_RSA_736;yes;;;; -TYPE_RSA_PUBLIC LENGTH_RSA_768;yes;;;; -TYPE_RSA_PUBLIC LENGTH_RSA_896;yes;;;; -TYPE_RSA_PUBLIC LENGTH_RSA_1024;yes;;;; -TYPE_RSA_PUBLIC LENGTH_RSA_1280;yes;;;; -TYPE_RSA_PUBLIC LENGTH_RSA_1536;yes;;;; -TYPE_RSA_PUBLIC LENGTH_RSA_1984;yes;;;; -TYPE_RSA_PUBLIC LENGTH_RSA_2048;yes;;;; -TYPE_RSA_PUBLIC LENGTH_RSA_3072;no; -TYPE_RSA_PUBLIC LENGTH_RSA_4096;no; -TYPE_RSA_PRIVATE LENGTH_RSA_512;yes;;;; -TYPE_RSA_PRIVATE LENGTH_RSA_736;yes;;;; -TYPE_RSA_PRIVATE LENGTH_RSA_768;yes;;;; -TYPE_RSA_PRIVATE LENGTH_RSA_896;yes;;;; -TYPE_RSA_PRIVATE LENGTH_RSA_1024;yes;;;; -TYPE_RSA_PRIVATE LENGTH_RSA_1280;yes;;;; -TYPE_RSA_PRIVATE LENGTH_RSA_1536;yes;;;; -TYPE_RSA_PRIVATE LENGTH_RSA_1984;yes;;;; -TYPE_RSA_PRIVATE LENGTH_RSA_2048;yes;;;; -TYPE_RSA_PRIVATE LENGTH_RSA_3072;no; -TYPE_RSA_PRIVATE LENGTH_RSA_4096;no; -TYPE_RSA_CRT_PRIVATE LENGTH_RSA_512;yes;;;; -TYPE_RSA_CRT_PRIVATE LENGTH_RSA_736;yes;;;; -TYPE_RSA_CRT_PRIVATE LENGTH_RSA_768;yes;;;; -TYPE_RSA_CRT_PRIVATE LENGTH_RSA_896;yes;;;; -TYPE_RSA_CRT_PRIVATE LENGTH_RSA_1024;yes;;;; -TYPE_RSA_CRT_PRIVATE LENGTH_RSA_1280;yes;;;; -TYPE_RSA_CRT_PRIVATE LENGTH_RSA_1536;yes;;;; -TYPE_RSA_CRT_PRIVATE LENGTH_RSA_1984;yes;;;; -TYPE_RSA_CRT_PRIVATE LENGTH_RSA_2048;yes;;;; -TYPE_RSA_CRT_PRIVATE LENGTH_RSA_3072;no; -TYPE_RSA_CRT_PRIVATE LENGTH_RSA_4096;no; -TYPE_DSA_PRIVATE LENGTH_DSA_512;no;;;; -TYPE_DSA_PRIVATE LENGTH_DSA_768;no;;;; -TYPE_DSA_PRIVATE LENGTH_DSA_1024;no;;;; -TYPE_DSA_PUBLIC LENGTH_DSA_512;no;;;; -TYPE_DSA_PUBLIC LENGTH_DSA_768;no;;;; -TYPE_DSA_PUBLIC LENGTH_DSA_1024;no;;;; -TYPE_EC_F2M_PRIVATE LENGTH_EC_F2M_113;no;;;; -TYPE_EC_F2M_PRIVATE LENGTH_EC_F2M_131;no;;;; -TYPE_EC_F2M_PRIVATE LENGTH_EC_F2M_163;no;;;; -TYPE_EC_F2M_PRIVATE LENGTH_EC_F2M_193;no;;;; -TYPE_EC_FP_PRIVATE LENGTH_EC_FP_112;no;;;; -TYPE_EC_FP_PRIVATE LENGTH_EC_FP_128;no;;;; -TYPE_EC_FP_PRIVATE LENGTH_EC_FP_160;no;;;; -TYPE_EC_FP_PRIVATE LENGTH_EC_FP_192;no;;;; -TYPE_KOREAN_SEED_TRANSIENT_RESET;no;;;; -TYPE_KOREAN_SEED_TRANSIENT_DESELECT;no;;;; -TYPE_KOREAN_SEED LENGTH_KOREAN_SEED_128;no;;;; -TYPE_HMAC_TRANSIENT_RESET;no;;;; -TYPE_HMAC_TRANSIENT_DESELECT;no;;;; -TYPE_HMAC LENGTH_HMAC_SHA_1_BLOCK_64;no;;;; -TYPE_HMAC LENGTH_HMAC_SHA_256_BLOCK_64;no;;;; -TYPE_HMAC LENGTH_HMAC_SHA_384_BLOCK_64;no;;;; -TYPE_HMAC LENGTH_HMAC_SHA_512_BLOCK_64;no;;;; -;;;;; -javacard.security.KeyPair ALG_RSA on-card generation;;;;; -ALG_RSA LENGTH_RSA_512;yes;4.391000;;; -ALG_RSA LENGTH_RSA_736;no;;;; -ALG_RSA LENGTH_RSA_768;yes;1.922000;;; -ALG_RSA LENGTH_RSA_896;yes;9.812000;;; -ALG_RSA LENGTH_RSA_1024;yes;5.766000;;; -ALG_RSA LENGTH_RSA_1280;yes;21.547000;;; -ALG_RSA LENGTH_RSA_1536;yes;34.765000;;; -ALG_RSA LENGTH_RSA_1984;yes;55.188000;;; -ALG_RSA LENGTH_RSA_2048;yes;44.828000;;; -ALG_RSA LENGTH_RSA_3072;no; -ALG_RSA LENGTH_RSA_4096;no; -;;;;; -javacard.security.KeyPair ALG_RSA_CRT on-card generation;;;;; -ALG_RSA_CRT LENGTH_RSA_512;yes;1.844000;;; -ALG_RSA_CRT LENGTH_RSA_736;no;;;; -ALG_RSA_CRT LENGTH_RSA_768;yes;2.562000;;; -ALG_RSA_CRT LENGTH_RSA_896;yes;8.703000;;; -ALG_RSA_CRT LENGTH_RSA_1024;yes;10.985000;;; -ALG_RSA_CRT LENGTH_RSA_1280;yes;7.484000;;; -ALG_RSA_CRT LENGTH_RSA_1536;yes;7.016000;;; -ALG_RSA_CRT LENGTH_RSA_1984;yes;41.734000;;; -ALG_RSA_CRT LENGTH_RSA_2048;yes;66.141000;;; -ALG_RSA_CRT LENGTH_RSA_3072;no; -ALG_RSA_CRT LENGTH_RSA_4096;no; -;;;;; -javacard.security.KeyPair ALG_DSA on-card generation;;;;; -ALG_DSA LENGTH_DSA_512;no;;;; -ALG_DSA LENGTH_DSA_768;no;;;; -ALG_DSA LENGTH_DSA_1024;no;;;; -;;;;; -javacard.security.KeyPair ALG_EC_F2M on-card generation;;;;; -ALG_EC_F2M LENGTH_EC_F2M_113;no;;;; -ALG_EC_F2M LENGTH_EC_F2M_131;no;;;; -ALG_EC_F2M LENGTH_EC_F2M_163;no;;;; -ALG_EC_F2M LENGTH_EC_F2M_193;no;;;; -;;;;; -javacard.security.KeyPair ALG_EC_FP on-card generation;;;;; -ALG_EC_FP LENGTH_EC_FP_112;no;;;; -ALG_EC_FP LENGTH_EC_FP_128;no;;;; -ALG_EC_FP LENGTH_EC_FP_160;no;;;; -ALG_EC_FP LENGTH_EC_FP_192;no;;;; - - -javacard.security.KeyAgreement -ALG_EC_SVDP_DH/ALG_EC_SVDP_DH_KDF;no; -ALG_EC_SVDP_DHC/ALG_EC_SVDP_DHC_KDF;no; - -javacard.security.Checksum; -ALG_ISO3309_CRC16;?; -ALG_ISO3309_CRC32;?; diff --git a/Profiles/results/Gemplus_GXPR3_3B 7B 94 00 00 80 65 B0 83 01 01 74 83 00 90 00_(provided_by_PetrS).csv b/Profiles/results/Gemplus_GXPR3_3B 7B 94 00 00 80 65 B0 83 01 01 74 83 00 90 00_(provided_by_PetrS).csv index e15d4058..cf8c9f84 100644 --- a/Profiles/results/Gemplus_GXPR3_3B 7B 94 00 00 80 65 B0 83 01 01 74 83 00 90 00_(provided_by_PetrS).csv +++ b/Profiles/results/Gemplus_GXPR3_3B 7B 94 00 00 80 65 B0 83 01 01 74 83 00 90 00_(provided_by_PetrS).csv @@ -6,6 +6,28 @@ JavaCard support version;2.1.2; javacardx.apdu.ExtendedLength; Extended APDU;no +CPLC; 9f 7f 2a 40 90 66 40 12 91 03 56 33 30 10 15 3b 0f 2b 14 25 5f 40 82 71 55 12 93 71 55 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +CPLC.ICFabricator;4090;Infineon +CPLC.ICType;6640 +CPLC.OperatingSystemID;1291 +CPLC.OperatingSystemReleaseDate;0356 +CPLC.OperatingSystemReleaseLevel;3330 +CPLC.ICFabricationDate;1015;(Y DDD) date in that year +CPLC.ICSerialNumber;3b0f2b14 +CPLC.ICBatchIdentifier;255f +CPLC.ICModuleFabricator;4082 +CPLC.ICModulePackagingDate;7155 +CPLC.ICCManufacturer;1293 +CPLC.ICEmbeddingDate;7155 +CPLC.ICPrePersonalizer;0000 +CPLC.ICPrePersonalizationEquipmentDate;0000 +CPLC.ICPrePersonalizationEquipmentID;00000000 +CPLC.ICPersonalizer;0000 +CPLC.ICPersonalizationDate;0000 +CPLC.ICPersonalizationEquipmentID;00000000 +CPLC.ICPersonalizationEquipmentID;00000000 + + javacardx.crypto.Cipher;supported;time ALG_DES_CBC_NOPAD;yes; ALG_DES_CBC_ISO9797_M1;no; diff --git a/Profiles/results/NXP_J2E081_ALGSUPPORT__3b_f9_13_00_00_81_31_fe_45_4a_43_4f_50_32_34_32_52_33_a2_(provided_by_PetrS).csv b/Profiles/results/NXP_J2E081_ALGSUPPORT__3b_f9_13_00_00_81_31_fe_45_4a_43_4f_50_32_34_32_52_33_a2_(provided_by_PetrS).csv new file mode 100644 index 00000000..2baa7c2a --- /dev/null +++ b/Profiles/results/NXP_J2E081_ALGSUPPORT__3b_f9_13_00_00_81_31_fe_45_4a_43_4f_50_32_34_32_52_33_a2_(provided_by_PetrS).csv @@ -0,0 +1,295 @@ +INFO: This file was generated by AlgTest utility. See http://www.fi.muni.cz/~xsvenda/jcsupport.html for more results, source codes and other details.; +Tested and provided by; insert your name please.; +Execution date/time; 2019/05/24 16:10:26 +AlgTestJClient version; 1.7.8 +AlgTest applet version; 1.7.8 +Used reader; Gemplus USB Key Smart Card Reader 0 +Card ATR; 3b f9 13 00 00 81 31 fe 45 4a 43 4f 50 32 34 32 52 33 a2 +Card name; NXP J2E081 +Card provider; please insert link/description of shop where card was bought +Used protocol; T=1 +High-power mode supported (relevant only to SIM cards according to ETSI 102 221); no +Package_AID_test; NXP_J2E081_AIDSUPPORT_3BF91300008131FE454A434F503234325233A2.csv + +JCSystem.getVersion()[Major.Minor];3.0; +JCSystem.isObjectDeletionSupported;yes; +JCSystem.MEMORY_TYPE_PERSISTENT;>32767B; +JCSystem.MEMORY_TYPE_TRANSIENT_RESET;3273B; +JCSystem.getMaxCommitCapacity();512B; +APDU.getInBlockSize();254B; +APDU.getOutBlockSize();254B; +APDU.getProtocol();1B; +APDU.getNAD();0B; + +CPLC; 9f 7f 2a 47 90 51 67 47 91 23 48 40 00 60 07 00 07 98 98 19 63 48 12 60 14 00 00 00 00 01 2a 19 30 30 37 39 38 00 00 00 00 00 00 00 00 +CPLC.ICFabricator;4790;NXP +CPLC.ICType;5167 +CPLC.OperatingSystemID;4791 +CPLC.OperatingSystemReleaseDate;2348 +CPLC.OperatingSystemReleaseLevel;4000 +CPLC.ICFabricationDate;6007;(Y DDD) date in that year +CPLC.ICSerialNumber;00079898 +CPLC.ICBatchIdentifier;1963 +CPLC.ICModuleFabricator;4812 +CPLC.ICModulePackagingDate;6014 +CPLC.ICCManufacturer;0000 +CPLC.ICEmbeddingDate;0000 +CPLC.ICPrePersonalizer;012a +CPLC.ICPrePersonalizationEquipmentDate;1930 +CPLC.ICPrePersonalizationEquipmentID;30373938 +CPLC.ICPersonalizer;0000 +CPLC.ICPersonalizationDate;0000 +CPLC.ICPersonalizationEquipmentID;00000000 +CPLC.ICPersonalizationEquipmentID;00000000 + +javacardx.crypto.Cipher +ALG_DES_CBC_NOPAD;yes;0.095000 +ALG_DES_CBC_ISO9797_M1;yes;0.087000 +ALG_DES_CBC_ISO9797_M2;yes;0.086000 +ALG_DES_CBC_PKCS5;no; +ALG_DES_ECB_NOPAD;yes;0.087000 +ALG_DES_ECB_ISO9797_M1;yes;0.078000 +ALG_DES_ECB_ISO9797_M2;yes;0.081000 +ALG_DES_ECB_PKCS5;no; +ALG_RSA_ISO14888;no; +ALG_RSA_PKCS1;yes;0.103000 +ALG_RSA_ISO9796;no; +ALG_RSA_NOPAD;yes;0.113000 +ALG_AES_BLOCK_128_CBC_NOPAD;yes;0.096000 +ALG_AES_BLOCK_128_ECB_NOPAD;yes;0.087000 +ALG_RSA_PKCS1_OAEP;no; +ALG_KOREAN_SEED_ECB_NOPAD;yes;0.095000 +ALG_KOREAN_SEED_CBC_NOPAD;yes;0.094000 +ALG_AES_BLOCK_192_CBC_NOPAD;no; +ALG_AES_BLOCK_192_ECB_NOPAD;no; +ALG_AES_BLOCK_256_CBC_NOPAD;no; +ALG_AES_BLOCK_256_ECB_NOPAD;no; +ALG_AES_CBC_ISO9797_M1;no; +ALG_AES_CBC_ISO9797_M2;no; +ALG_AES_CBC_PKCS5;no; +ALG_AES_ECB_ISO9797_M1;no; +ALG_AES_ECB_ISO9797_M2;no; +ALG_AES_ECB_PKCS5;no; + +javacard.crypto.Signature +ALG_DES_MAC4_NOPAD;no; +ALG_DES_MAC8_NOPAD;yes;0.085000 +ALG_DES_MAC4_ISO9797_M1;no; +ALG_DES_MAC8_ISO9797_M1;yes;0.087000 +ALG_DES_MAC4_ISO9797_M2;no; +ALG_DES_MAC8_ISO9797_M2;yes;0.089000 +ALG_DES_MAC4_PKCS5;no; +ALG_DES_MAC8_PKCS5;no; +ALG_RSA_SHA_ISO9796;yes;0.147000 +ALG_RSA_SHA_PKCS1;yes;0.121000 +ALG_RSA_MD5_PKCS1;yes;0.121000 +ALG_RSA_RIPEMD160_ISO9796;no; +ALG_RSA_RIPEMD160_PKCS1;no; +ALG_DSA_SHA;no; +ALG_RSA_SHA_RFC2409;no; +ALG_RSA_MD5_RFC2409;no; +ALG_ECDSA_SHA;yes;0.088000 +ALG_AES_MAC_128_NOPAD;yes;0.094000 +ALG_DES_MAC4_ISO9797_1_M2_ALG3;no; +ALG_DES_MAC8_ISO9797_1_M2_ALG3;yes;0.087000 +ALG_RSA_SHA_PKCS1_PSS;yes;0.146000 +ALG_RSA_MD5_PKCS1_PSS;no; +ALG_RSA_RIPEMD160_PKCS1_PSS;no; +ALG_HMAC_SHA1;no; +ALG_HMAC_SHA_256;no; +ALG_HMAC_SHA_384;no; +ALG_HMAC_SHA_512;no; +ALG_HMAC_MD5;no; +ALG_HMAC_RIPEMD160;no; +ALG_RSA_SHA_ISO9796_MR;no; +ALG_RSA_RIPEMD160_ISO9796_MR;no; +ALG_SEED_MAC_NOPAD;yes;0.104000 +ALG_ECDSA_SHA_256;yes;0.089000 +ALG_ECDSA_SHA_384;no; +ALG_AES_MAC_192_NOPAD;no; +ALG_AES_MAC_256_NOPAD;no; +ALG_ECDSA_SHA_224;yes;0.087000 +ALG_ECDSA_SHA_512;no; +ALG_RSA_SHA_224_PKCS1;no; +ALG_RSA_SHA_256_PKCS1;yes;0.146000 +ALG_RSA_SHA_384_PKCS1;no; +ALG_RSA_SHA_512_PKCS1;no; +ALG_RSA_SHA_224_PKCS1_PSS;yes;0.122000 +ALG_RSA_SHA_256_PKCS1_PSS;yes;0.122000 +ALG_RSA_SHA_384_PKCS1_PSS;no; +ALG_RSA_SHA_512_PKCS1_PSS;no; +ALG_DES_MAC4_ISO9797_1_M1_ALG3;no; +ALG_DES_MAC8_ISO9797_1_M1_ALG3;no; +ALG_AES_CMAC_128;no; + +javacard.security.MessageDigest +ALG_SHA;yes;0.078000 +ALG_MD5;yes;0.080000 +ALG_RIPEMD160;no; +ALG_SHA_256;yes;0.080000 +ALG_SHA_384;no; +ALG_SHA_512;no; +ALG_SHA_224;yes;0.080000 +ALG_SHA3_224;no; +ALG_SHA3_256;no; +ALG_SHA3_384;no; +ALG_SHA3_512;no; + +javacard.security.RandomData +ALG_PSEUDO_RANDOM;yes;0.020000 +ALG_SECURE_RANDOM;yes;0.013000 +ALG_TRNG;no; +ALG_ALG_PRESEEDED_DRBG;no; +ALG_FAST;no; +ALG_KEYGENERATION;no; + +javacard.security.KeyBuilder +TYPE_DES_TRANSIENT_RESET;yes;0.116000 +TYPE_DES_TRANSIENT_DESELECT;yes;0.117000 +TYPE_DES LENGTH_DES;yes;0.124000 +TYPE_DES LENGTH_DES3_2KEY;yes;0.125000 +TYPE_DES LENGTH_DES3_3KEY;yes;0.127000 +TYPE_AES_TRANSIENT_RESET;yes;0.118000 +TYPE_AES_TRANSIENT_DESELECT;yes;0.117000 +TYPE_AES LENGTH_AES_128;yes;0.123000 +TYPE_AES LENGTH_AES_192;yes;0.125000 +TYPE_AES LENGTH_AES_256;yes;0.124000 +TYPE_RSA_PUBLIC LENGTH_RSA_512;yes;0.119000 +TYPE_RSA_PUBLIC LENGTH_RSA_736;yes;0.120000 +TYPE_RSA_PUBLIC LENGTH_RSA_768;yes;0.121000 +TYPE_RSA_PUBLIC LENGTH_RSA_896;yes;0.121000 +TYPE_RSA_PUBLIC LENGTH_RSA_1024;yes;0.120000 +TYPE_RSA_PUBLIC LENGTH_RSA_1280;yes;0.121000 +TYPE_RSA_PUBLIC LENGTH_RSA_1536;yes;0.121000 +TYPE_RSA_PUBLIC LENGTH_RSA_1984;yes;0.122000 +TYPE_RSA_PUBLIC LENGTH_RSA_2048;yes;0.122000 +TYPE_RSA_PUBLIC LENGTH_RSA_3072;no; +TYPE_RSA_PUBLIC LENGTH_RSA_4096;no; +TYPE_RSA_PRIVATE LENGTH_RSA_512;yes;0.121000 +TYPE_RSA_PRIVATE LENGTH_RSA_736;yes;0.120000 +TYPE_RSA_PRIVATE LENGTH_RSA_768;yes;0.121000 +TYPE_RSA_PRIVATE LENGTH_RSA_896;yes;0.122000 +TYPE_RSA_PRIVATE LENGTH_RSA_1024;yes;0.121000 +TYPE_RSA_PRIVATE LENGTH_RSA_1280;yes;0.121000 +TYPE_RSA_PRIVATE LENGTH_RSA_1536;yes;0.122000 +TYPE_RSA_PRIVATE LENGTH_RSA_1984;yes;0.122000 +TYPE_RSA_PRIVATE LENGTH_RSA_2048;yes;0.122000 +TYPE_RSA_PRIVATE LENGTH_RSA_3072;no; +TYPE_RSA_PRIVATE LENGTH_RSA_4096;no; +TYPE_RSA_PRIVATE_TRANSIENT_RESET;no; +TYPE_RSA_PRIVATE_TRANSIENT_DESELECT;no; +TYPE_RSA_CRT_PRIVATE LENGTH_RSA_512;yes;0.120000 +TYPE_RSA_CRT_PRIVATE LENGTH_RSA_736;yes;0.122000 +TYPE_RSA_CRT_PRIVATE LENGTH_RSA_768;yes;0.122000 +TYPE_RSA_CRT_PRIVATE LENGTH_RSA_896;yes;0.122000 +TYPE_RSA_CRT_PRIVATE LENGTH_RSA_1024;yes;0.122000 +TYPE_RSA_CRT_PRIVATE LENGTH_RSA_1280;yes;0.121000 +TYPE_RSA_CRT_PRIVATE LENGTH_RSA_1536;yes;0.122000 +TYPE_RSA_CRT_PRIVATE LENGTH_RSA_1984;yes;0.123000 +TYPE_RSA_CRT_PRIVATE LENGTH_RSA_2048;yes;0.124000 +TYPE_RSA_CRT_PRIVATE LENGTH_RSA_3072;no; +TYPE_RSA_CRT_PRIVATE LENGTH_RSA_4096;no; +TYPE_RSA_CRT_PRIVATE_TRANSIENT_RESET;no; +TYPE_RSA_CRT_PRIVATE_TRANSIENT_DESELECT;no; +TYPE_DSA_PRIVATE LENGTH_DSA_512;no; +TYPE_DSA_PRIVATE LENGTH_DSA_768;no; +TYPE_DSA_PRIVATE LENGTH_DSA_1024;no; +TYPE_DSA_PRIVATE_TRANSIENT_RESET;no; +TYPE_DSA_PRIVATE_TRANSIENT_DESELECT;no; +TYPE_DSA_PUBLIC LENGTH_DSA_512;no; +TYPE_DSA_PUBLIC LENGTH_DSA_768;no; +TYPE_DSA_PUBLIC LENGTH_DSA_1024;no; +TYPE_EC_F2M_PRIVATE LENGTH_EC_F2M_113;no; +TYPE_EC_F2M_PRIVATE LENGTH_EC_F2M_131;no; +TYPE_EC_F2M_PRIVATE LENGTH_EC_F2M_163;no; +TYPE_EC_F2M_PRIVATE LENGTH_EC_F2M_193;no; +TYPE_EC_F2M_PRIVATE_TRANSIENT_RESET;no; +TYPE_EC_F2M_PRIVATE_TRANSIENT_DESELECT;no; +TYPE_EC_FP_PRIVATE LENGTH_EC_FP_112;no; +TYPE_EC_FP_PRIVATE LENGTH_EC_FP_128;yes;0.120000 +TYPE_EC_FP_PRIVATE LENGTH_EC_FP_160;yes;0.120000 +TYPE_EC_FP_PRIVATE LENGTH_EC_FP_192;yes;0.121000 +TYPE_EC_FP_PRIVATE LENGTH_EC_FP_224;yes;0.121000 +TYPE_EC_FP_PRIVATE LENGTH_EC_FP_256;yes;0.121000 +TYPE_EC_FP_PRIVATE LENGTH_EC_FP_320;yes;0.122000 +TYPE_EC_FP_PRIVATE LENGTH_EC_FP_384;no; +TYPE_EC_FP_PRIVATE LENGTH_EC_FP_512;no; +TYPE_EC_FP_PRIVATE LENGTH_EC_FP_521;no; +TYPE_EC_FP_PRIVATE_TRANSIENT_RESET;no; +TYPE_EC_FP_PRIVATE_TRANSIENT_DESELECT;no; +TYPE_KOREAN_SEED_TRANSIENT_RESET;yes;0.117000 +TYPE_KOREAN_SEED_TRANSIENT_DESELECT;yes;0.117000 +TYPE_KOREAN_SEED LENGTH_KOREAN_SEED_128;yes;0.124000 +TYPE_HMAC_TRANSIENT_RESET;no; +TYPE_HMAC_TRANSIENT_DESELECT;no; +TYPE_HMAC LENGTH_HMAC_SHA_1_BLOCK_64;no; +TYPE_HMAC LENGTH_HMAC_SHA_256_BLOCK_64;no; +TYPE_HMAC LENGTH_HMAC_SHA_384_BLOCK_64;no; +TYPE_HMAC LENGTH_HMAC_SHA_512_BLOCK_64;no; + +javacard.security.KeyAgreement +ALG_EC_SVDP_DH/ALG_EC_SVDP_DH_KDF;yes;0.110000 +ALG_EC_SVDP_DHC/ALG_EC_SVDP_DHC_KDF;no; +ALG_EC_SVDP_DH_PLAIN;yes;0.047000 +ALG_EC_SVDP_DHC_PLAIN;no; +ALG_EC_PACE_GM;no; +ALG_EC_SVDP_DH_PLAIN_XY;no; +ALG_DH_PLAIN;no; + +javacard.security.Checksum +ALG_ISO3309_CRC16;yes;0.072000 +ALG_ISO3309_CRC32;no; + +javacard.security.KeyPair ALG_RSA on-card generation +ALG_RSA LENGTH_RSA_512;yes;1.598000 +ALG_RSA LENGTH_RSA_736;yes;2.422000 +ALG_RSA LENGTH_RSA_768;yes;2.178000 +ALG_RSA LENGTH_RSA_896;yes;2.516000 +ALG_RSA LENGTH_RSA_1024;yes;3.002000 +ALG_RSA LENGTH_RSA_1280;yes;11.724000 +ALG_RSA LENGTH_RSA_1536;yes;6.398000 +ALG_RSA LENGTH_RSA_1984;yes;36.945000 +ALG_RSA LENGTH_RSA_2048;yes;25.443000 +ALG_RSA LENGTH_RSA_3072;no; +ALG_RSA LENGTH_RSA_4096;no; + +javacard.security.KeyPair ALG_RSA_CRT on-card generation +ALG_RSA_CRT LENGTH_RSA_512;yes;1.431000 +ALG_RSA_CRT LENGTH_RSA_736;yes;1.271000 +ALG_RSA_CRT LENGTH_RSA_768;yes;1.595000 +ALG_RSA_CRT LENGTH_RSA_896;yes;2.937000 +ALG_RSA_CRT LENGTH_RSA_1024;yes;2.325000 +ALG_RSA_CRT LENGTH_RSA_1280;yes;3.828000 +ALG_RSA_CRT LENGTH_RSA_1536;yes;13.789000 +ALG_RSA_CRT LENGTH_RSA_1984;yes;39.899000 +ALG_RSA_CRT LENGTH_RSA_2048;yes;30.026000 +ALG_RSA_CRT LENGTH_RSA_3072;no; +ALG_RSA_CRT LENGTH_RSA_4096;no; + +javacard.security.KeyPair ALG_DSA on-card generation +ALG_DSA LENGTH_DSA_512;no; +ALG_DSA LENGTH_DSA_768;no; +ALG_DSA LENGTH_DSA_1024;no; + +javacard.security.KeyPair ALG_EC_F2M on-card generation +ALG_EC_F2M LENGTH_EC_F2M_113;no; +ALG_EC_F2M LENGTH_EC_F2M_131;no; +ALG_EC_F2M LENGTH_EC_F2M_163;no; +ALG_EC_F2M LENGTH_EC_F2M_193;no; + +javacard.security.KeyPair ALG_EC_FP on-card generation +ALG_EC_FP LENGTH_EC_FP_112;no; +ALG_EC_FP LENGTH_EC_FP_128;yes;1.039000 +ALG_EC_FP LENGTH_EC_FP_160;yes;1.089000 +ALG_EC_FP LENGTH_EC_FP_192;yes;1.162000 +ALG_EC_FP LENGTH_EC_FP_224;yes;1.259000 +ALG_EC_FP LENGTH_EC_FP_256;yes;1.481000 +ALG_EC_FP LENGTH_EC_FP_384;no; +ALG_EC_FP LENGTH_EC_FP_521;no; + +javacardx.crypto.AEADCipher +CIPHER_AES_CCM;no; +CIPHER_AES_GCM;no; + + +Total test time:; 596 seconds. \ No newline at end of file diff --git a/Profiles/results/NXP_JCOP31_3B EB 00 00 81 31 20 45 4A 43 4F 50 33 31 33 36 47 44 54 78_(provided_by_PetrS).csv b/Profiles/results/NXP_JCOP31_3B EB 00 00 81 31 20 45 4A 43 4F 50 33 31 33 36 47 44 54 78_(provided_by_PetrS).csv deleted file mode 100644 index 8d318683..00000000 --- a/Profiles/results/NXP_JCOP31_3B EB 00 00 81 31 20 45 4A 43 4F 50 33 31 33 36 47 44 54 78_(provided_by_PetrS).csv +++ /dev/null @@ -1,214 +0,0 @@ -NXP JCOP31 V2.2 36K,, -Card ATR: 3B:EB:00:00:81:31:20:45:4A:43:4F:50:33:31:33:36:47:44:54:78,, -AlgTestJClient version; 1.2 -AlgTest applet version; 1.2 - -JavaCard support version;2.2.1; -javacardx.apdu.ExtendedLength; -Extended APDU;no - -CPLC; 9f 7f 2a 47 90 50 15 40 51 51 58 24 00 63 06 00 19 57 91 06 77 48 10 63 13 00 00 00 00 02 2d 2d 30 31 39 35 37 00 00 00 00 00 00 00 00 -CPLC.ICFabricator;4790;NXP -CPLC.ICType;5015 -CPLC.OperatingSystemID;4051 -CPLC.OperatingSystemReleaseDate;5158 -CPLC.OperatingSystemReleaseLevel;2400 -CPLC.ICFabricationDate;6306;(Y DDD) date in that year -CPLC.ICSerialNumber;00195791 -CPLC.ICBatchIdentifier;0677 -CPLC.ICModuleFabricator;4810 -CPLC.ICModulePackagingDate;6313 -CPLC.ICCManufacturer;0000 -CPLC.ICEmbeddingDate;0000 -CPLC.ICPrePersonalizer;022d -CPLC.ICPrePersonalizationEquipmentDate;2d30 -CPLC.ICPrePersonalizationEquipmentID;31393537 -CPLC.ICPersonalizer;0000 -CPLC.ICPersonalizationDate;0000 -CPLC.ICPersonalizationEquipmentID;00000000 -CPLC.ICPersonalizationEquipmentID;00000000 - -javacardx.crypto.Cipher,supported,time -ALG_DES_CBC_NOPAD,yes, -ALG_DES_CBC_ISO9797_M1,yes, -ALG_DES_CBC_ISO9797_M2,yes, -ALG_DES_CBC_PKCS5,no, -ALG_DES_ECB_NOPAD,yes, -ALG_DES_ECB_ISO9797_M1,yes, -ALG_DES_ECB_ISO9797_M2,yes, -ALG_DES_ECB_PKCS5,no, -ALG_RSA_ISO14888,no, -ALG_RSA_PKCS1,yes, -ALG_RSA_ISO9796,no, -ALG_RSA_NOPAD,yes, -ALG_AES_BLOCK_128_CBC_NOPAD,yes, -ALG_AES_BLOCK_128_ECB_NOPAD,yes, -ALG_RSA_PKCS1_OAEP,no, -ALG_KOREAN_SEED_ECB_NOPAD,no, -ALG_KOREAN_SEED_CBC_NOPAD,no, -,, -javacard.crypto.Signature,, -ALG_DES_MAC4_NOPAD,no, -ALG_DES_MAC8_NOPAD,yes, -ALG_DES_MAC4_ISO9797_M1,no, -ALG_DES_MAC8_ISO9797_M1,yes, -ALG_DES_MAC4_ISO9797_M2,no, -ALG_DES_MAC8_ISO9797_M2,yes, -ALG_DES_MAC4_PKCS5,no, -ALG_DES_MAC8_PKCS5,no, -ALG_RSA_SHA_ISO9796,yes, -ALG_RSA_SHA_PKCS1,yes, -ALG_RSA_MD5_PKCS1,yes, -ALG_RSA_RIPEMD160_ISO9796,no, -ALG_RSA_RIPEMD160_PKCS1,no, -ALG_DSA_SHA,no, -ALG_RSA_SHA_RFC2409,no, -ALG_RSA_MD5_RFC2409,no, -ALG_ECDSA_SHA,yes, -ALG_AES_MAC_128_NOPAD,yes, -ALG_DES_MAC4_ISO9797_1_M2_ALG3,no, -ALG_DES_MAC8_ISO9797_1_M2_ALG3,yes, -ALG_RSA_SHA_PKCS1_PSS,no, -ALG_RSA_MD5_PKCS1_PSS,no, -ALG_RSA_RIPEMD160_PKCS1_PSS,no, -ALG_HMAC_SHA1,no, -ALG_HMAC_SHA_256,no, -ALG_HMAC_SHA_384,no, -ALG_HMAC_SHA_512,no, -ALG_HMAC_MD5,no, -ALG_HMAC_RIPEMD160,no, -ALG_RSA_SHA_ISO9796_MR,no, -ALG_RSA_RIPEMD160_ISO9796_MR,no, -ALG_SEED_MAC_NOPAD,no, -,, -javacard.security.MessageDigest,, -ALG_SHA,yes, -ALG_MD5,yes, -ALG_RIPEMD160,no, -ALG_SHA_256,no, -ALG_SHA_384,no, -ALG_SHA_512,no, -,, -javacard.security.RandomData,, -ALG_PSEUDO_RANDOM,yes, -ALG_SECURE_RANDOM,yes, -,, -javacard.security.KeyBuilder,, -TYPE_DES_TRANSIENT_RESET,yes, -TYPE_DES_TRANSIENT_DESELECT,yes, -TYPE_DES LENGTH_DES,yes, -TYPE_DES LENGTH_DES3_2KEY,yes, -TYPE_DES LENGTH_DES3_3KEY,yes, -TYPE_AES_TRANSIENT_RESET,no, -TYPE_AES_TRANSIENT_DESELECT,no, -TYPE_AES LENGTH_AES_128,no, -TYPE_AES LENGTH_AES_192,no, -TYPE_AES LENGTH_AES_256,no, -TYPE_RSA_PUBLIC LENGTH_RSA_512,yes, -TYPE_RSA_PUBLIC LENGTH_RSA_736,yes, -TYPE_RSA_PUBLIC LENGTH_RSA_768,yes, -TYPE_RSA_PUBLIC LENGTH_RSA_896,yes, -TYPE_RSA_PUBLIC LENGTH_RSA_1024,yes, -TYPE_RSA_PUBLIC LENGTH_RSA_1280,yes, -TYPE_RSA_PUBLIC LENGTH_RSA_1536,yes, -TYPE_RSA_PUBLIC LENGTH_RSA_1984,yes, -TYPE_RSA_PUBLIC LENGTH_RSA_2048,yes, -TYPE_RSA_PUBLIC LENGTH_RSA_3072;no; -TYPE_RSA_PUBLIC LENGTH_RSA_4096;no; -TYPE_RSA_PRIVATE LENGTH_RSA_512,yes, -TYPE_RSA_PRIVATE LENGTH_RSA_736,yes, -TYPE_RSA_PRIVATE LENGTH_RSA_768,yes, -TYPE_RSA_PRIVATE LENGTH_RSA_896,yes, -TYPE_RSA_PRIVATE LENGTH_RSA_1024,yes, -TYPE_RSA_PRIVATE LENGTH_RSA_1280,yes, -TYPE_RSA_PRIVATE LENGTH_RSA_1536,yes, -TYPE_RSA_PRIVATE LENGTH_RSA_1984,yes, -TYPE_RSA_PRIVATE LENGTH_RSA_2048,yes, -TYPE_RSA_PRIVATE LENGTH_RSA_3072;no; -TYPE_RSA_PRIVATE LENGTH_RSA_4096;no; -TYPE_RSA_CRT_PRIVATE LENGTH_RSA_512,yes, -TYPE_RSA_CRT_PRIVATE LENGTH_RSA_736,no, -TYPE_RSA_CRT_PRIVATE LENGTH_RSA_768,yes, -TYPE_RSA_CRT_PRIVATE LENGTH_RSA_896,yes, -TYPE_RSA_CRT_PRIVATE LENGTH_RSA_1024,yes, -TYPE_RSA_CRT_PRIVATE LENGTH_RSA_1280,yes, -TYPE_RSA_CRT_PRIVATE LENGTH_RSA_1536,yes, -TYPE_RSA_CRT_PRIVATE LENGTH_RSA_1984,yes, -TYPE_RSA_CRT_PRIVATE LENGTH_RSA_2048,yes, -TYPE_RSA_CRT_PRIVATE LENGTH_RSA_3072;no; -TYPE_RSA_CRT_PRIVATE LENGTH_RSA_4096;no; -TYPE_DSA_PRIVATE LENGTH_DSA_512,no, -TYPE_DSA_PRIVATE LENGTH_DSA_768,no, -TYPE_DSA_PRIVATE LENGTH_DSA_1024,no, -TYPE_DSA_PUBLIC LENGTH_DSA_512,no, -TYPE_DSA_PUBLIC LENGTH_DSA_768,no, -TYPE_DSA_PUBLIC LENGTH_DSA_1024,no, -TYPE_EC_F2M_PRIVATE LENGTH_EC_F2M_113,yes, -TYPE_EC_F2M_PRIVATE LENGTH_EC_F2M_131,yes, -TYPE_EC_F2M_PRIVATE LENGTH_EC_F2M_163,yes, -TYPE_EC_F2M_PRIVATE LENGTH_EC_F2M_193,yes, -TYPE_EC_FP_PRIVATE LENGTH_EC_FP_112,no, -TYPE_EC_FP_PRIVATE LENGTH_EC_FP_128,no, -TYPE_EC_FP_PRIVATE LENGTH_EC_FP_160,no, -TYPE_EC_FP_PRIVATE LENGTH_EC_FP_192,no, -TYPE_KOREAN_SEED_TRANSIENT_RESET,no, -TYPE_KOREAN_SEED_TRANSIENT_DESELECT,no, -TYPE_KOREAN_SEED LENGTH_KOREAN_SEED_128,no, -TYPE_HMAC_TRANSIENT_RESET,no, -TYPE_HMAC_TRANSIENT_DESELECT,no, -TYPE_HMAC LENGTH_HMAC_SHA_1_BLOCK_64,no, -TYPE_HMAC LENGTH_HMAC_SHA_256_BLOCK_64,no, -TYPE_HMAC LENGTH_HMAC_SHA_384_BLOCK_64,no, -TYPE_HMAC LENGTH_HMAC_SHA_512_BLOCK_64,no, -,, -javacard.security.KeyPair ALG_RSA on-card generation,, -ALG_RSA LENGTH_RSA_512,no, -ALG_RSA LENGTH_RSA_736,no, -ALG_RSA LENGTH_RSA_768,no, -ALG_RSA LENGTH_RSA_896,no, -ALG_RSA LENGTH_RSA_1024,no, -ALG_RSA LENGTH_RSA_1280,no, -ALG_RSA LENGTH_RSA_1536,no, -ALG_RSA LENGTH_RSA_1984,no, -ALG_RSA LENGTH_RSA_2048,no, -ALG_RSA LENGTH_RSA_3072;no; -ALG_RSA LENGTH_RSA_4096;no; - -,, -javacard.security.KeyPair ALG_RSA_CRT on-card generation,, -ALG_RSA_CRT LENGTH_RSA_512,yes,0.75 -ALG_RSA_CRT LENGTH_RSA_736,no, -ALG_RSA_CRT LENGTH_RSA_768,yes,0.844 -ALG_RSA_CRT LENGTH_RSA_896,yes,2.171 -ALG_RSA_CRT LENGTH_RSA_1024,yes,1.329 -ALG_RSA_CRT LENGTH_RSA_1280,yes,10.25 -ALG_RSA_CRT LENGTH_RSA_1536,yes,11.891 -ALG_RSA_CRT LENGTH_RSA_1984,yes,12.531 -ALG_RSA_CRT LENGTH_RSA_2048,yes,20.641 -ALG_RSA_CRT LENGTH_RSA_3072;no; -ALG_RSA_CRT LENGTH_RSA_4096;no; -,, -javacard.security.KeyPair ALG_DSA on-card generation,, -ALG_DSA LENGTH_DSA_512,no, -ALG_DSA LENGTH_DSA_768,no, -ALG_DSA LENGTH_DSA_1024,no, -,, -javacard.security.KeyPair ALG_EC_F2M on-card generation,, -ALG_EC_F2M LENGTH_EC_F2M_113,yes,0.985 -ALG_EC_F2M LENGTH_EC_F2M_131,yes,1 -ALG_EC_F2M LENGTH_EC_F2M_163,yes,1.032 -ALG_EC_F2M LENGTH_EC_F2M_193,yes,1.031 -,, -javacard.security.KeyPair ALG_EC_FP on-card generation,, -ALG_EC_FP LENGTH_EC_FP_112,no, -ALG_EC_FP LENGTH_EC_FP_128,no, -ALG_EC_FP LENGTH_EC_FP_160,no, -ALG_EC_FP LENGTH_EC_FP_192,no, - -javacard\.security\.KeyAgreement -ALG_EC_SVDP_DH/ALG_EC_SVDP_DH_KDF;no; -ALG_EC_SVDP_DHC/ALG_EC_SVDP_DHC_KDF;no; - -javacard.security.Checksum; -ALG_ISO3309_CRC16;no; -ALG_ISO3309_CRC32;no; \ No newline at end of file diff --git a/Profiles/results/only_cplc/Fidesmo_card_ALGSUPPORT__3b_fe_91_00_ff_91_81_71_fe_40_00_41_38_00_11_f7_b1_46_49_44_45_53_4d_4f_31_0f.csv b/Profiles/results/only_cplc/Fidesmo_card_JCOP 2.4.2 R2_ALGSUPPORT__3b_fe_91_00_ff_91_81_71_fe_40_00_41_38_00_11_f7_b1_46_49_44_45_53_4d_4f_31_0f.csv similarity index 100% rename from Profiles/results/only_cplc/Fidesmo_card_ALGSUPPORT__3b_fe_91_00_ff_91_81_71_fe_40_00_41_38_00_11_f7_b1_46_49_44_45_53_4d_4f_31_0f.csv rename to Profiles/results/only_cplc/Fidesmo_card_JCOP 2.4.2 R2_ALGSUPPORT__3b_fe_91_00_ff_91_81_71_fe_40_00_41_38_00_11_f7_b1_46_49_44_45_53_4d_4f_31_0f.csv diff --git a/Profiles/results/only_cplc/Gemplus_GemXpresso_211PK_ALGSUPPORT__3f_6d_00_00_80_31_80_65_b0_05_01_02_5e_83_00_90_003f_6d_00_00_80_31_80_65_b0_05_01_02_5e_83_00_90_00.csv b/Profiles/results/only_cplc/Gemplus_GemXpresso_211PK_ALGSUPPORT__3f_6d_00_00_80_31_80_65_b0_05_01_02_5e_83_00_90_003f_6d_00_00_80_31_80_65_b0_05_01_02_5e_83_00_90_00.csv new file mode 100644 index 00000000..eca0077d --- /dev/null +++ b/Profiles/results/only_cplc/Gemplus_GemXpresso_211PK_ALGSUPPORT__3f_6d_00_00_80_31_80_65_b0_05_01_02_5e_83_00_90_003f_6d_00_00_80_31_80_65_b0_05_01_02_5e_83_00_90_00.csv @@ -0,0 +1,32 @@ +INFO: This file was generated by AlgTest utility. See http://www.fi.muni.cz/~xsvenda/jcsupport.html for more results, source codes and other details.; +Tested and provided by; insert your name please.; +Execution date/time; 2019/05/24 15:20:59 +AlgTestJClient version; 1.7.8 +AlgTest applet version; error +Used reader; Generic EMV Smartcard Reader 0Generic EMV Smartcard Reader 0 +Card ATR; 3f 6d 00 00 80 31 80 65 b0 05 01 02 5e 83 00 90 003f 6d 00 00 80 31 80 65 b0 05 01 02 5e 83 00 90 00 +Card name; Gemplus GemXpresso 211PK +Card provider; please insert link/description of shop where card was bought +Used protocol; T=0T=0 +High-power mode supported (relevant only to SIM cards according to ETSI 102 221); no + +CPLC; 9f 7f 2a 00 04 00 15 32 31 03 00 33 30 03 49 00 00 77 59 00 cb 12 92 21 90 12 93 21 90 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +CPLC.ICFabricator;0004;unknown +CPLC.ICType;0015 +CPLC.OperatingSystemID;3231 +CPLC.OperatingSystemReleaseDate;0300 +CPLC.OperatingSystemReleaseLevel;3330 +CPLC.ICFabricationDate;0349;(Y DDD) date in that year +CPLC.ICSerialNumber;00007759 +CPLC.ICBatchIdentifier;00cb +CPLC.ICModuleFabricator;1292 +CPLC.ICModulePackagingDate;2190 +CPLC.ICCManufacturer;1293 +CPLC.ICEmbeddingDate;2190 +CPLC.ICPrePersonalizer;0000 +CPLC.ICPrePersonalizationEquipmentDate;0000 +CPLC.ICPrePersonalizationEquipmentID;00000000 +CPLC.ICPersonalizer;0000 +CPLC.ICPersonalizationDate;0000 +CPLC.ICPersonalizationEquipmentID;00000000 +CPLC.ICPersonalizationEquipmentID;00000000 diff --git a/Profiles/results/sysmocom_sysmoUSIM-SJS1-3FF_ALGSUPPORT__3b_9f_96_80_1f_c7_80_31_a0_73_be_21_13_67_43_20_07_18_00_00_01_a5_(privided_by_promovicz).csv b/Profiles/results/sysmocom_sysmoUSIM-SJS1-3FF_ALGSUPPORT__3b_9f_96_80_1f_c7_80_31_a0_73_be_21_13_67_43_20_07_18_00_00_01_a5_(privided_by_promovicz).csv new file mode 100644 index 00000000..886de246 --- /dev/null +++ b/Profiles/results/sysmocom_sysmoUSIM-SJS1-3FF_ALGSUPPORT__3b_9f_96_80_1f_c7_80_31_a0_73_be_21_13_67_43_20_07_18_00_00_01_a5_(privided_by_promovicz).csv @@ -0,0 +1,257 @@ +INFO: This file was generated by AlgTest utility. See http://www.fi.muni.cz/~xsvenda/jcsupport.html for more results, source codes and other details.; +Tested and provided by; insert your name please.; +Execution date/time; 2019/04/28 08:40:02 +AlgTestJClient version; 1.7.1 +AlgTest applet version; 1.7.1 +Used reader; PC/SC terminal Lenovo Integrated Smart Card Reader 00 00 +Card ATR; 3b 9f 96 80 1f c7 80 31 a0 73 be 21 13 67 43 20 07 18 00 00 01 a5 +Card name; sysmocom sysmoUSIM-SJS1-3FF +Used protocol; T=0 + +JCSystem.getVersion()[Major.Minor];2.2; +JCSystem.isObjectDeletionSupported;yes; +JCSystem.MEMORY_TYPE_PERSISTENT;>32767B; +JCSystem.MEMORY_TYPE_TRANSIENT_RESET;2724B; +JCSystem.MEMORY_TYPE_TRANSIENT_DESELECT;2009B; +JCSystem.MEMORY_TYPE_TRANSIENT_DESELECT;2009B; + +javacardx.crypto.Cipher +ALG_DES_CBC_NOPAD;yes;11.384000 +ALG_DES_CBC_ISO9797_M1;yes;11.554000 +ALG_DES_CBC_ISO9797_M2;yes;11.596000 +ALG_DES_CBC_PKCS5;no; +ALG_DES_ECB_NOPAD;yes;6.256000 +ALG_DES_ECB_ISO9797_M1;yes;11.502000 +ALG_DES_ECB_ISO9797_M2;yes;11.506000 +ALG_DES_ECB_PKCS5;no; +ALG_RSA_ISO14888;no; +ALG_RSA_PKCS1;yes;6.244000 +ALG_RSA_ISO9796;no; +ALG_RSA_NOPAD;yes;6.244000 +ALG_AES_BLOCK_128_CBC_NOPAD;yes;11.544000 +ALG_AES_BLOCK_128_ECB_NOPAD;yes;11.571000 +ALG_RSA_PKCS1_OAEP;no; +ALG_KOREAN_SEED_ECB_NOPAD;no; +ALG_KOREAN_SEED_CBC_NOPAD;no; +ALG_AES_BLOCK_192_CBC_NOPAD;no; +ALG_AES_BLOCK_192_ECB_NOPAD;no; +ALG_AES_BLOCK_256_CBC_NOPAD;no; +ALG_AES_BLOCK_256_ECB_NOPAD;no; +ALG_AES_CBC_ISO9797_M1;no; +ALG_AES_CBC_ISO9797_M2;no; +ALG_AES_CBC_PKCS5;no; +ALG_AES_ECB_ISO9797_M1;no; +ALG_AES_ECB_ISO9797_M2;no; +ALG_AES_ECB_PKCS5;no; + +javacard.crypto.Signature +ALG_DES_MAC4_NOPAD;yes;6.275000 +ALG_DES_MAC8_NOPAD;yes;11.684000 +ALG_DES_MAC4_ISO9797_M1;yes;11.705000 +ALG_DES_MAC8_ISO9797_M1;yes;11.719000 +ALG_DES_MAC4_ISO9797_M2;yes;16.885000 +ALG_DES_MAC8_ISO9797_M2;yes;16.931000 +ALG_DES_MAC4_PKCS5;no; +ALG_DES_MAC8_PKCS5;no; +ALG_RSA_SHA_ISO9796;no; +ALG_RSA_SHA_PKCS1;no; +ALG_RSA_MD5_PKCS1;no; +ALG_RSA_RIPEMD160_ISO9796;no; +ALG_RSA_RIPEMD160_PKCS1;no; +ALG_DSA_SHA;no; +ALG_RSA_SHA_RFC2409;no; +ALG_RSA_MD5_RFC2409;no; +ALG_ECDSA_SHA;no; +ALG_AES_MAC_128_NOPAD;yes;6.390000 +ALG_DES_MAC4_ISO9797_1_M2_ALG3;no; +ALG_DES_MAC8_ISO9797_1_M2_ALG3;no; +ALG_RSA_SHA_PKCS1_PSS;no; +ALG_RSA_MD5_PKCS1_PSS;no; +ALG_RSA_RIPEMD160_PKCS1_PSS;no; +ALG_HMAC_SHA1;no; +ALG_HMAC_SHA_256;no; +ALG_HMAC_SHA_384;no; +ALG_HMAC_SHA_512;no; +ALG_HMAC_MD5;no; +ALG_HMAC_RIPEMD160;no; +ALG_RSA_SHA_ISO9796_MR;no; +ALG_RSA_RIPEMD160_ISO9796_MR;no; +ALG_SEED_MAC_NOPAD;no; +ALG_ECDSA_SHA_256;no; +ALG_ECDSA_SHA_384;no; +ALG_AES_MAC_192_NOPAD;no; +ALG_AES_MAC_256_NOPAD;no; +ALG_ECDSA_SHA_224;no; +ALG_ECDSA_SHA_512;no; +ALG_RSA_SHA_224_PKCS1;no; +ALG_RSA_SHA_256_PKCS1;no; +ALG_RSA_SHA_384_PKCS1;no; +ALG_RSA_SHA_512_PKCS1;no; +ALG_RSA_SHA_224_PKCS1_PSS;no; +ALG_RSA_SHA_256_PKCS1_PSS;no; +ALG_RSA_SHA_384_PKCS1_PSS;no; +ALG_RSA_SHA_512_PKCS1_PSS;no; +ALG_DES_MAC4_ISO9797_1_M1_ALG3;no; +ALG_DES_MAC8_ISO9797_1_M1_ALG3;no; + +javacard.security.MessageDigest +ALG_SHA;yes;6.314000 +ALG_MD5;yes;11.634000 +ALG_RIPEMD160;yes;11.703000 +ALG_SHA_256;no; +ALG_SHA_384;no; +ALG_SHA_512;no; +ALG_SHA_224;no; + +javacard.security.RandomData +ALG_PSEUDO_RANDOM;yes;6.193000 +ALG_SECURE_RANDOM;yes;6.216000 + +javacard.security.KeyBuilder +TYPE_DES_TRANSIENT_RESET;yes;11.631000 +TYPE_DES_TRANSIENT_DESELECT;yes;6.507000 +TYPE_DES LENGTH_DES;yes;11.891000 +TYPE_DES LENGTH_DES3_2KEY;yes;17.194000 +TYPE_DES LENGTH_DES3_3KEY;yes;11.871000 +TYPE_AES_TRANSIENT_RESET;yes;17.196000 +TYPE_AES_TRANSIENT_DESELECT;yes;11.895000 +TYPE_AES LENGTH_AES_128;yes;17.186000 +TYPE_AES LENGTH_AES_192;no; +TYPE_AES LENGTH_AES_256;no; +TYPE_RSA_PUBLIC LENGTH_RSA_512;no; +TYPE_RSA_PUBLIC LENGTH_RSA_736;no; +TYPE_RSA_PUBLIC LENGTH_RSA_768;no; +TYPE_RSA_PUBLIC LENGTH_RSA_896;no; +TYPE_RSA_PUBLIC LENGTH_RSA_1024;no; +TYPE_RSA_PUBLIC LENGTH_RSA_1280;no; +TYPE_RSA_PUBLIC LENGTH_RSA_1536;no; +TYPE_RSA_PUBLIC LENGTH_RSA_1984;no; +TYPE_RSA_PUBLIC LENGTH_RSA_2048;no; +TYPE_RSA_PUBLIC LENGTH_RSA_3072;no; +TYPE_RSA_PUBLIC LENGTH_RSA_4096;no; +TYPE_RSA_PRIVATE LENGTH_RSA_512;no; +TYPE_RSA_PRIVATE LENGTH_RSA_736;no; +TYPE_RSA_PRIVATE LENGTH_RSA_768;no; +TYPE_RSA_PRIVATE LENGTH_RSA_896;no; +TYPE_RSA_PRIVATE LENGTH_RSA_1024;no; +TYPE_RSA_PRIVATE LENGTH_RSA_1280;no; +TYPE_RSA_PRIVATE LENGTH_RSA_1536;no; +TYPE_RSA_PRIVATE LENGTH_RSA_1984;no; +TYPE_RSA_PRIVATE LENGTH_RSA_2048;no; +TYPE_RSA_PRIVATE LENGTH_RSA_3072;no; +TYPE_RSA_PRIVATE LENGTH_RSA_4096;no; +TYPE_RSA_PRIVATE_TRANSIENT_RESET;no; +TYPE_RSA_PRIVATE_TRANSIENT_DESELECT;no; +TYPE_RSA_CRT_PRIVATE LENGTH_RSA_512;no; +TYPE_RSA_CRT_PRIVATE LENGTH_RSA_736;no; +TYPE_RSA_CRT_PRIVATE LENGTH_RSA_768;no; +TYPE_RSA_CRT_PRIVATE LENGTH_RSA_896;no; +TYPE_RSA_CRT_PRIVATE LENGTH_RSA_1024;no; +TYPE_RSA_CRT_PRIVATE LENGTH_RSA_1280;no; +TYPE_RSA_CRT_PRIVATE LENGTH_RSA_1536;no; +TYPE_RSA_CRT_PRIVATE LENGTH_RSA_1984;no; +TYPE_RSA_CRT_PRIVATE LENGTH_RSA_2048;no; +TYPE_RSA_CRT_PRIVATE LENGTH_RSA_3072;no; +TYPE_RSA_CRT_PRIVATE LENGTH_RSA_4096;no; +TYPE_RSA_CRT_PRIVATE_TRANSIENT_RESET;no; +TYPE_RSA_CRT_PRIVATE_TRANSIENT_DESELECT;no; +TYPE_DSA_PRIVATE LENGTH_DSA_512;no; +TYPE_DSA_PRIVATE LENGTH_DSA_768;no; +TYPE_DSA_PRIVATE LENGTH_DSA_1024;no; +TYPE_DSA_PRIVATE_TRANSIENT_RESET;no; +TYPE_DSA_PRIVATE_TRANSIENT_DESELECT;no; +TYPE_DSA_PUBLIC LENGTH_DSA_512;no; +TYPE_DSA_PUBLIC LENGTH_DSA_768;no; +TYPE_DSA_PUBLIC LENGTH_DSA_1024;no; +TYPE_EC_F2M_PRIVATE LENGTH_EC_F2M_113;no; +TYPE_EC_F2M_PRIVATE LENGTH_EC_F2M_131;no; +TYPE_EC_F2M_PRIVATE LENGTH_EC_F2M_163;no; +TYPE_EC_F2M_PRIVATE LENGTH_EC_F2M_193;no; +TYPE_EC_F2M_PRIVATE_TRANSIENT_RESET;no; +TYPE_EC_F2M_PRIVATE_TRANSIENT_DESELECT;no; +TYPE_EC_FP_PRIVATE LENGTH_EC_FP_112;no; +TYPE_EC_FP_PRIVATE LENGTH_EC_FP_128;no; +TYPE_EC_FP_PRIVATE LENGTH_EC_FP_160;no; +TYPE_EC_FP_PRIVATE LENGTH_EC_FP_192;no; +TYPE_EC_FP_PRIVATE LENGTH_EC_FP_224;no; +TYPE_EC_FP_PRIVATE LENGTH_EC_FP_256;no; +TYPE_EC_FP_PRIVATE LENGTH_EC_FP_384;no; +TYPE_EC_FP_PRIVATE LENGTH_EC_FP_521;no; +TYPE_EC_FP_PRIVATE_TRANSIENT_RESET;no; +TYPE_EC_FP_PRIVATE_TRANSIENT_DESELECT;no; +TYPE_KOREAN_SEED_TRANSIENT_RESET;no; +TYPE_KOREAN_SEED_TRANSIENT_DESELECT;no; +TYPE_KOREAN_SEED LENGTH_KOREAN_SEED_128;no; +TYPE_HMAC_TRANSIENT_RESET;no; +TYPE_HMAC_TRANSIENT_DESELECT;no; +TYPE_HMAC LENGTH_HMAC_SHA_1_BLOCK_64;no; +TYPE_HMAC LENGTH_HMAC_SHA_256_BLOCK_64;no; +TYPE_HMAC LENGTH_HMAC_SHA_384_BLOCK_64;no; +TYPE_HMAC LENGTH_HMAC_SHA_512_BLOCK_64;no; + +javacard.security.KeyAgreement +ALG_EC_SVDP_DH;no; +ALG_EC_SVDP_DHC;no; +ALG_EC_SVDP_DH_KDF;no; +ALG_EC_SVDP_DH_PLAIN;no; +ALG_EC_SVDP_DHC_KDF;no; +ALG_EC_SVDP_DHC_PLAIN;no; +javacard.security.Checksum +ALG_ISO3309_CRC16;no; +ALG_ISO3309_CRC32;no; + +javacard.security.KeyPair ALG_RSA on-card generation +ALG_RSA LENGTH_RSA_512;no; +ALG_RSA LENGTH_RSA_736;no; +ALG_RSA LENGTH_RSA_768;no; +ALG_RSA LENGTH_RSA_896;no; +ALG_RSA LENGTH_RSA_1024;no; +ALG_RSA LENGTH_RSA_1280;no; +ALG_RSA LENGTH_RSA_1536;no; +ALG_RSA LENGTH_RSA_1984;no; +ALG_RSA LENGTH_RSA_2048;no; +ALG_RSA LENGTH_RSA_3072;no; +ALG_RSA LENGTH_RSA_4096;no; + +javacard.security.KeyPair ALG_RSA_CRT on-card generation +ALG_RSA_CRT LENGTH_RSA_512;no; +ALG_RSA_CRT LENGTH_RSA_736;no; +ALG_RSA_CRT LENGTH_RSA_768;no; +ALG_RSA_CRT LENGTH_RSA_896;no; +ALG_RSA_CRT LENGTH_RSA_1024;no; +ALG_RSA_CRT LENGTH_RSA_1280;no; +ALG_RSA_CRT LENGTH_RSA_1536;no; +ALG_RSA_CRT LENGTH_RSA_1984;no; +ALG_RSA_CRT LENGTH_RSA_2048;no; +ALG_RSA_CRT LENGTH_RSA_3072;no; +ALG_RSA_CRT LENGTH_RSA_4096;no; + +javacard.security.KeyPair ALG_DSA on-card generation +ALG_DSA LENGTH_DSA_512;no; +ALG_DSA LENGTH_DSA_768;no; +ALG_DSA LENGTH_DSA_1024;no; + +javacard.security.KeyPair ALG_EC_F2M on-card generation +ALG_EC_F2M LENGTH_EC_F2M_113;no; +ALG_EC_F2M LENGTH_EC_F2M_131;no; +ALG_EC_F2M LENGTH_EC_F2M_163;no; +ALG_EC_F2M LENGTH_EC_F2M_193;no; + +javacard.security.KeyPair ALG_EC_FP on-card generation +ALG_EC_FP LENGTH_EC_FP_112;no; +ALG_EC_FP LENGTH_EC_FP_128;no; +ALG_EC_FP LENGTH_EC_FP_160;no; +ALG_EC_FP LENGTH_EC_FP_192;no; +ALG_EC_FP LENGTH_EC_FP_224;no; +ALG_EC_FP LENGTH_EC_FP_256;no; +ALG_EC_FP LENGTH_EC_FP_384;no; +ALG_EC_FP LENGTH_EC_FP_521;no; + +Support for variable public exponent for RSA 1024. If supported, user-defined fast modular exponentiation can be executed on the smart card via cryptographic coprocessor. This is very specific feature and you will probably not need it; +Allocate RSA 1024 objects;no; +Set random modulus;no; +Set random public exponent;no; +Initialize cipher with public key with random exponent;no; +Use random public exponent;no; + +Total test time:; 1675 seconds. \ No newline at end of file From 70499e78ac2c04c5ea6277c9089b0dc20101b818 Mon Sep 17 00:00:00 2001 From: petrs Date: Wed, 29 May 2019 21:14:51 +0200 Subject: [PATCH 07/11] idemia cosmo fly profile name update --- ..._c0_64_08_44_03_04_00_90_00_44_(provided_by_Kevin_Osborn).csv} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Profiles/results/{COSMO_FLY_v5.8_ICFabDate_2006_253_ALGSUPPORT__3b_8b_80_01_00_31_c0_64_08_44_03_04_00_90_00_44_(provided_by_Kevin_Osborn).csv => Idemia_COSMO_FLY_v5.8_ICFabDate_2016_253_ALGSUPPORT__3b_8b_80_01_00_31_c0_64_08_44_03_04_00_90_00_44_(provided_by_Kevin_Osborn).csv} (100%) diff --git a/Profiles/results/COSMO_FLY_v5.8_ICFabDate_2006_253_ALGSUPPORT__3b_8b_80_01_00_31_c0_64_08_44_03_04_00_90_00_44_(provided_by_Kevin_Osborn).csv b/Profiles/results/Idemia_COSMO_FLY_v5.8_ICFabDate_2016_253_ALGSUPPORT__3b_8b_80_01_00_31_c0_64_08_44_03_04_00_90_00_44_(provided_by_Kevin_Osborn).csv similarity index 100% rename from Profiles/results/COSMO_FLY_v5.8_ICFabDate_2006_253_ALGSUPPORT__3b_8b_80_01_00_31_c0_64_08_44_03_04_00_90_00_44_(provided_by_Kevin_Osborn).csv rename to Profiles/results/Idemia_COSMO_FLY_v5.8_ICFabDate_2016_253_ALGSUPPORT__3b_8b_80_01_00_31_c0_64_08_44_03_04_00_90_00_44_(provided_by_Kevin_Osborn).csv From 98954d0bb7cd02d3df647d4dbc83c743a2cca850 Mon Sep 17 00:00:00 2001 From: petrs Date: Wed, 29 May 2019 21:15:24 +0200 Subject: [PATCH 08/11] cplc processing and visualization script --- AlgTest_Process/cplc.py | 355 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 355 insertions(+) create mode 100644 AlgTest_Process/cplc.py diff --git a/AlgTest_Process/cplc.py b/AlgTest_Process/cplc.py new file mode 100644 index 00000000..abf254eb --- /dev/null +++ b/AlgTest_Process/cplc.py @@ -0,0 +1,355 @@ +#%% +import random +import graphviz, re, time, os, sys, glob, json, ntpath +import matplotlib.cbook as cbook +from pathlib import Path +from graphviz import Digraph + + +def search_files(folder): + for root, dirs, files in os.walk(folder): + yield from [os.path.join(root, x) for x in files] + +def path_leaf(path): + head, tail = ntpath.split(path) + return tail or ntpath.basename(head) + +# CPLC info collected from: +# own analysis +# https://www.javatips.net/api/bankomatinfos-master/src/at/zweng/bankomatinfos/iso7816emv/CPLC.java +# NIST FIPS140, CC EAKL certificates +''' +Returns human-readable name of fabricator based on provided ICFabricator id +@param icfab: string realization of 2 bytes ICFabricator (in hexadecimal, e.g., '4090') +@returns human-readable fabricator string +''' +def get_fab_name(icfab): + if icfab.find('0003') != -1: return 'Renesas' # https://www.cryptsoft.com/fips140/vendors/140sp485.pdf + if icfab.find('0005') != -1: return 'Infineon' # https://csrc.nist.gov/csrc/media/projects/cryptographic-module-validation-program/documents/security-policies/140sp2327.pdf + if icfab.find('2050') != -1: return 'Philips' # https://www.commoncriteriaportal.org/files/epfiles/ANSSI-CC-2007-02-M02fr.pdf, pp. 2 + if icfab.find('3060') != -1: return 'Renesas' + if icfab.find('4070') != -1: return 'NXP' # https://csrc.nist.rip/groups/STM/cmvp/documents/140-1/140sp/140sp963.pdf, pp. 4 + if icfab.find('4090') != -1: return 'Infineon' + if icfab.find('4180') != -1: return 'Atmel' + if icfab.find('4250') != -1: return 'Samsung' + if icfab.find('4790') != -1: return 'NXP' + if icfab.find('4830') != -1: return 'Infineon' + if icfab.find('5354') != -1: return 'STMicro' # Feitian D11CR https://docs.google.com/spreadsheets/d/10s3dA_qGvWMajv8RhCWa00x-h-1Dx6SdF9rEKN-1RIg/edit#gid=952816161 + if icfab.find('0004') != -1: return 'Philips' # Philips P8WE5032, https://www.commoncriteriaportal.org/files/epfiles/2000_06.pdf + + #if icfab == '4220': return '?? Palmera V3' + + return 'unknown (' + icfab + ')' + +''' +Returns human-readable name of card vendor based on provided card name +@param cardname: string with card name, e.g., 'NXP JCOP J2A080 80K' +@returns human-readable vendor string +''' +def get_vendor_name(cardname): + if cardname.find('Feitian') != -1: return 'Feitian' + if cardname.find('G+D') != -1: return 'G&D' + if cardname.find('Oberthur') != -1: return 'Oberthur/Idemia' + if cardname.find('COSMO') != -1: return 'Oberthur/Idemia' + #if cardname.find('Gemalto') != -1: return 'Gemalto' + #if cardname.find('Gemplus') != -1: return 'Gemplus' + if cardname.find('Gemalto') != -1: return 'Gemplus/Gemalto' + if cardname.find('Gemplus') != -1: return 'Gemplus/Gemalto' + if cardname.find('Athena') != -1: return 'Athena' + if cardname.find('Axalto') != -1: return 'Schlumberger/Axalto' + if cardname.find('Cyberflex') != -1: return 'Schlumberger/Axalto' + if cardname.find('Taisys') != -1: return 'Taisys' + if cardname.find('Athena') != -1: return 'Athena' + if cardname.find('Fidesmo') != -1: return 'Fidesmo' + if cardname.find('Infineon') != -1: return 'Infineon' + if cardname.find('NXP') != -1: return 'NXP' + + return 'unknown vendor' + +''' +Returns human-readable name of operating system based on provided OperatingSystemID +@param os_id: string realization of 2 bytes OperatingSystemID (in hexadecimal, e.g., '1291') +@returns human-readable OS string +''' +def get_os_name(os_id): + os_id = os_id.lower() + if os_id.find('0000') != -1: return '(not provided)' + if os_id.find('ffff') != -1: return '(not provided)' + if os_id.find('0011') != -1: return 'Schlumberger' + if os_id.find('0027') != -1: return 'STM027' + if os_id.find('0230') != -1: return 'G230' + if os_id.find('1291') != -1: return 'Gemplus/Gemalto TOP' + if os_id.find('1671') != -1: return 'G&D Sm@rtCafe' + if os_id.find('1981') != -1: return 'Schlumberger' + if os_id.find('2041') != -1: return 'Axalto' + if os_id.find('3231') != -1: return 'Gemplus TOP' + if os_id.find('4041') != -1: return 'Oberthur OCS' + if os_id.find('4051') != -1: return 'IBM JCOP2' + if os_id.find('4070') != -1: return 'JCOP ?' + if os_id.find('4091') != -1: return 'Trusted Logic jTOP' + if os_id.find('4700') != -1: return 'NXP JCOP4' + if os_id.find('4791') != -1: return 'NXP JCOP2' + if os_id.find('4A5A') != -1: return 'JCOP ?' + if os_id.find('544c') != -1: return 'Trusted Logic jTOP' + if os_id.find('8211') != -1: return 'Athena SCS OS' + if os_id.find('8231') != -1: return 'Oberthur OCS' + if os_id.find('86aa') != -1: return 'JavaCOS' + if os_id.find('a006') != -1: return 'G&D Sm@rtCafe' + if os_id.find('d000') != -1: return 'Gemalto OS' + if os_id.find('d001') != -1: return 'G&D Sm@rtCafe 7' + + return '' + + +''' +Returns human-readable name of operating system based on provided OperatingSystemID and OperatingSystemReleaseDate +@param os_id: string realization of 2 bytes OperatingSystemID (in hexadecimal, e.g., '1291') +@param os_date: string realization of 2 bytes OperatingSystemReleaseDate (in hexadecimal, e.g., '6138') +@returns human-readable os string with release date (if known) +''' +def get_osiddate_name(os_id, os_date): + if os_id.find('4051') != -1: + if os_date.find('5158') != -1:return 'JCOP 2.2 (2005)' + if os_date.find('6138') != -1:return 'JCOP 2.2.1 (2006)' + if os_date.find('6345') != -1:return 'JCOP 2.3.1 (2006)' + if os_date.find('7095') != -1:return 'JCOP 2.3.1R? (2007)' + if os_id.find('4700') != -1: + if os_date.find('0000') != -1:return 'JCOP4 (??)' + if os_date.find('e4d8') != -1:return 'JCOP3/4? (??)' + if os_id.find('4791') != -1: + if os_date.find('7351') != -1:return 'JCOP 2.3.2 (2007)' + if os_date.find('8102') != -1:return 'JCOP 2.?.? (2008)' + if os_date.find('0078') != -1:return 'JCOP 2.4.1 (2010)' + if os_date.find('2081') != -1:return 'JCOP 2.4.2R2 (2012)' + if os_date.find('2348') != -1:return 'JCOP 2.4.2R3 (2012)' + if os_id.find('1671') != -1: + if os_date.find('7354') != -1: return 'G&D Sm@rtCafe (2007)' + if os_date.find('8197') != -1: return 'G&D Sm@rtCafe (2008)' + if os_date.find('1146') != -1: return 'G&D Sm@rtCafe (2011)' + if os_id.find('d001') != -1: + if os_date.find('4021') != -1: return 'G&D Sm@rtCafe (2014)' + if os_date.find('4212') != -1: return 'G&D Sm@rtCafe (2014)' + if os_id.find('a006') != -1: + if os_date.find('3311') != -1: return 'G&D Sm@rtCafe (2003)' + if os_id.find('8211') != -1: + if os_date.find('0352') != -1:return 'Athena (2010)' + if os_date.find('6351') != -1:return 'Athena/JCOP3 (2016)' + if os_id.find('544c') != -1: + if os_date.find('2151') != -1: return 'Trusted Logic jTOP (2012)' + if os_id.find('4091') != -1: + if os_date.find('2013') != -1: return 'Trusted Logic jTOP (2012)' + if os_date.find('3234') != -1: return 'Trusted Logic jTOP (2003)' + if os_id.find('86aa') != -1: + if os_date.find('6028') != -1: return 'JavaCOS (2016)' + if os_date.find('6083') != -1: return 'JavaCOS (2016)' + if os_date.find('6153') != -1: return 'JavaCOS (2016)' + if os_date.find('6188') != -1: return 'JavaCOS (2016)' + if os_date.find('7311') != -1: return 'JavaCOS (2017)' + if os_id.find('1291') != -1: + if os_date.find('3349') != -1: return 'Gemplus TOP (2003)' + if os_date.find('0356') != -1: return 'Gemplus TOP (2000)' + if os_date.find('1102') != -1: return 'Gemalto TOP (2011)' + if os_date.find('6095') != -1: return 'Gemplus TOP (2006)' + if os_date.find('5181') != -1: return 'Gemplus TOP (2005)' + if os_date.find('4214') != -1: return 'Gemplus TOP (2004)' + if os_id.find('3231') != -1: + if os_date.find('0300') != -1: return 'Gemplus TOP (2000)' + if os_id.find('8231') != -1: + if os_date.find('5343') != -1: return 'Oberthur OCS (2015)' + if os_date.find('8150') != -1: return 'Oberthur OCS (2008)' + if os_id.find('4041') != -1: + if os_date.find('4091') != -1: return 'Oberthur OCS (2004)' + if os_date.find('5273') != -1: return 'Oberthur OCS (2005)' + if os_id.find('0011') != -1: + if os_date.find('5273') != -1: return 'Schlumberger (2000)' + if os_id.find('2041') != -1: + if os_date.find('5314') != -1: return 'Axalto (2005)' + if os_id.find('1981') != -1: + if os_date.find('3052') != -1: return 'Schlumberger (2003)' + + return '' + +def get_ictype_name(icfab, ictype): + icfab = icfab.lower() + ictype = ictype.lower() + if icfab.find('0003') != -1: + if ictype.find('0307') != -1: return 'Renesas AE46C1' # https://csrc.nist.gov/csrc/media/projects/cryptographic-module-validation-program/documents/security-policies/140sp2327.pdf + if icfab.find('0004') != -1: + if ictype.find('0015') != -1: return 'Philips P8WE5032' # Philips P8WE5032, https://www.commoncriteriaportal.org/files/epfiles/2000_06.pdf + if icfab.find('0005') != -1: + if ictype.find('0045') != -1: return 'Infineon M7892 B11' # https://csrc.nist.gov/csrc/media/projects/cryptographic-module-validation-program/documents/security-policies/140sp2327.pdf + if icfab.find('2050') != -1: + if ictype.find('5000') != -1: return 'Philips P5CD072VOP' # ID-One Cosmo 64 RSA v5.4.1, https://www.commoncriteriaportal.org/files/epfiles/ANSSI-CC-2007-02-M02fr.pdf, pp. 2 + if icfab.find('4070') != -1: + if ictype.find('5072') != -1: return 'NXP P5CD144' # https://csrc.nist.gov/csrc/media/projects/cryptographic-module-validation-program/documents/security-policies/140sp2774.pdf + if icfab.find('5354') != -1: + if ictype.find('0033') != -1: return 'STM ST31 ARM' # Feitian D11CR https://docs.google.com/spreadsheets/d/10s3dA_qGvWMajv8RhCWa00x-h-1Dx6SdF9rEKN-1RIg/edit#gid=952816161 + if icfab.find('4180') != -1: + if ictype.find('0106') != -1: return 'Atmel AT90SC25672RCT' # https://csrc.nist.gov/CSRC/media/projects/cryptographic-module-validation-program/documents/security-policies/140sp925.pdf + return '' +''' +Returns randomly selected color out of defined +@returns color string +''' +def get_random_color(): + colors = ['green','red', 'blue', 'magenta', 'brown', 'darkgreen', 'black', 'gray', 'gold', 'chocolate', 'darkorange1', 'deeppink1', 'cadetblue'] + return colors[random.randint(0, len(colors) - 1)] + +''' +Returns randomly selected edge style +@returns edge style string +''' +def get_random_edge_style(): + edge_styles = ['solid', 'dashed', 'bold'] + return edge_styles[random.randint(0, len(edge_styles) - 1)] + +''' +Recursively reads files with CPLC info from the provided directory. +@param walk_dir: directory with stored results for cards +@param files_with_cplc: list which will contain hash maps for the cards with CPLC defined +@param files_without_cplc: list of card names without the CPLC info +''' +def process_jcalgtest_files(walk_dir, files_with_cplc, files_without_cplc): + files = [] + print(json.dumps(list(search_files(walk_dir)), indent=2)) + + for filename in search_files(walk_dir): + if not os.path.isfile(filename): + continue + + files.append(filename) + print(filename) + + with open(filename) as f: + values = {} + has_cplc = False + for line in f: + items = line.split(':') + if len(items) < 2: + items = line.split(';') + if len(items) < 2: + continue + + if items[0].find('ICFabricator') > -1: + has_cplc = True + + items[0] = items[0].replace('CPLC.', '') + + values[items[0]] = items[1].strip() + + filenameshort = path_leaf(filename) + if has_cplc: + pos = filenameshort.find('ALGSUPPORT') + if pos == -1: + pos = filenameshort.find('_3b') + if pos == -1: + pos = filenameshort.find('_3B') + + + values['CardName'] = filenameshort[:pos] + values['CardName'] = values['CardName'].replace('_', ' ') + files_with_cplc[filename] = values + else: + files_without_cplc.append(filenameshort) + +#%% + +# Pick suitable seed so that different lines in graph are rendered with different colors/types (needs manual testing) +random.seed(10) + +""" +Visualize CPLC information from the list of cards +@param cplc_list: list of hash maps (with CPLC metadata) for the cards to process and visualize +@param vendor_name_filter: if empty string '', then all vendors are printed, otherwise only the provided vendor is generated +""" +def generate_graph(cplc_list, vendor_name_filter): + dot2 = Digraph(comment='Vendor={}, CPLC from JCAlgTest.org'.format(vendor_name_filter)) + dot2.attr('graph', label='Vendor={}, CPLC visualization (JCAlgTest database)\nICFabricator -> ICFab_ICType -> OperatingSystemID -> OperatingSystemID_OperatingSystemReleaseDate -> OperatingSystemReleaseLevel -> CardName -> Vendor'.format(vendor_name_filter), labelloc='t', fontsize='30') + dot2.attr(rankdir='LR', size='8,5') + + ic_fabs_types = [] # information in CSV format + for file_cplc in cplc_list: + cplc_values = cplc_list[file_cplc] + + if 'ICFabricator' in cplc_values: + fab = cplc_values['ICFabricator'] + ictype = cplc_values['ICType'] + os_id = cplc_values['OperatingSystemID'] + os_date = cplc_values['OperatingSystemReleaseDate'] + os_level = cplc_values['OperatingSystemReleaseLevel'] + cardname = cplc_values['CardName'] + + if fab == '0000' and os_id == '0000' or fab == 'ffff' and os_id == 'ffff': + continue + + if len(fab) > 2: + # Prepare CSV entry + ic_fabs_types.append('{}:{}:{}:{}: {}'.format(fab, ictype, os_id, os_date, cardname)) + + # Prepare .dot source + dotfab = ' ICFab_' + fab + dottype = ' ICType_' + ictype + dotosid = ' OSID_' + os_id + dotosdate = ' OSDate_' + os_date + dotosdatelevel = dotosdate + ' OSLevel_' + os_level + + + if vendor_name_filter == '' or get_vendor_name(cardname) == vendor_name_filter: + #ICFab_ICType -> OSID_OSDate -> CardName -> Vendor + dot2.attr('node', color='lightgray') + dot2.attr('node', style='filled') + dot2.attr('node', fontsize='20') + dot2.node(get_fab_name(fab)) + vendor_name = 'Vendor=' + get_vendor_name(cardname) + dot2.node(vendor_name) + dot2.node(dotosid, dotosid + '\n' + get_os_name(os_id)) + dot2.attr('node', color='lightgray') + dot2.attr('node', style='solid') + dot2.attr('node', fontsize='14') + dot2.node(dotfab+dottype, '{}\n{}'.format(dotfab+dottype, get_ictype_name(fab, ictype))) + dot2.node(dotosid+dotosdate, dotosid+dotosdate + '\n' + get_osiddate_name(os_id, os_date)) + dot2.node(dotosdatelevel, os_level) + dot2.node(cardname) + + dot2.attr('edge', color='lightgray') + # assign connection line color and type correctly to allow for tracking the + rndcolor = get_random_color() + rndedgestyle = get_random_edge_style() + dot2.edge(get_fab_name(fab), dotfab+dottype, color=rndcolor, style=rndedgestyle) + dot2.edge(dotfab+dottype, dotosid, color=rndcolor, style=rndedgestyle) + dot2.edge(dotosid, dotosid+dotosdate, color=rndcolor, style=rndedgestyle) + dot2.edge(dotosid+dotosdate, dotosdatelevel, color=rndcolor, style=rndedgestyle) + dot2.edge(dotosdatelevel, cardname, color=rndcolor, style=rndedgestyle) + #dot2.edge(dotosid+dotosdate, cardname, color=rndcolor, style=rndedgestyle) + dot2.edge(cardname, vendor_name, color=rndcolor, style=rndedgestyle) + + # Generate dot graph using GraphViz into pdf + vendor_name_filter = vendor_name_filter.replace('/', '_') + dot2.render('test-output/cplc_{}'.format(vendor_name_filter), view=True) + + # Print CSV formated lines + ic_fabs_types.sort() + for pair in ic_fabs_types: + print(pair) + + +def render_all_vendors(): + files_with_cplc = {} + files_without_cplc = [] + + walk_dir = '..\\Profiles\\results\\' + process_jcalgtest_files(walk_dir, files_with_cplc, files_without_cplc) + + print('Cards with CPLS: {}'.format(len(files_with_cplc))) + print('Cards without CPLS: {}'.format(len(files_without_cplc))) + + #vendors = ['', 'NXP', 'Infineon', 'Gemplus/Gemalto', 'Feitian', 'G&D', 'Oberthur/Idemia'] + vendors = [''] + for vendor in vendors: + generate_graph(files_with_cplc, vendor) + +def main(): + render_all_vendors() + +if __name__ == "__main__": + main() From ef0f0db44932a5bc979a512593d78a1f627d9948 Mon Sep 17 00:00:00 2001 From: Petr Svenda Date: Mon, 22 Jul 2019 13:33:27 +0200 Subject: [PATCH 09/11] collection of apdu info, improved ecc testing --- .../src/AlgTest/AlgPerformanceTest.java | 62 +++++++++++++++---- .../src/AlgTest/AlgSupportTest.java | 45 +++++++++++--- AlgTest_JavaCard/src/AlgTest/EC_Consts.java | 2 +- .../src/AlgTest/JCAlgTestApplet.java | 12 +++- 4 files changed, 95 insertions(+), 26 deletions(-) diff --git a/AlgTest_JavaCard/src/AlgTest/AlgPerformanceTest.java b/AlgTest_JavaCard/src/AlgTest/AlgPerformanceTest.java index f8716ff0..b1059ccd 100644 --- a/AlgTest_JavaCard/src/AlgTest/AlgPerformanceTest.java +++ b/AlgTest_JavaCard/src/AlgTest/AlgPerformanceTest.java @@ -570,6 +570,33 @@ KeyPair getKeyPairObject(byte typeRSA, short keyPairIndex, short keyLength) { return tmp; } + KeyPair getECCKeyPairObject(byte typeECC, short keyLength) { + KeyPair keyPair = null; + // Try two alternatives for EC key construction - new KeyPair() emit exception on some cards + try { + // Make KeyPair object first, then initialize curve + keyPair = new KeyPair(typeECC, keyLength); + EC_Consts.ensureInitializedECCurve(typeECC, keyLength, keyPair, m_ram1); + } catch (Exception e) { + // Make public and private keys first, then initialize curve and finally create KeyPair + ECPrivateKey ecPrivKey; + ECPublicKey ecPubKey; + if (typeECC == KeyPair.ALG_EC_FP) { + ecPrivKey = (ECPrivateKey) KeyBuilder.buildKey(KeyBuilder.TYPE_EC_FP_PRIVATE, keyLength, false); + ecPubKey = (ECPublicKey) KeyBuilder.buildKey(KeyBuilder.TYPE_EC_FP_PUBLIC, keyLength, false); + } + else if (typeECC == KeyPair.ALG_EC_F2M) { + ecPrivKey = (ECPrivateKey) KeyBuilder.buildKey(KeyBuilder.TYPE_EC_F2M_PRIVATE, keyLength, false); + ecPubKey = (ECPublicKey) KeyBuilder.buildKey(KeyBuilder.TYPE_EC_F2M_PUBLIC, keyLength, false); + } else { + return null; + } + EC_Consts.setECKeyParams(ecPubKey, ecPrivKey, typeECC, keyLength, m_ram1); + keyPair = new KeyPair(ecPubKey, ecPrivKey); + } + return keyPair; + } + void prepare_class_Key(APDU apdu) { byte[] apdubuf = apdu.getBuffer(); m_testSettings.parse(apdu); @@ -686,7 +713,7 @@ short prepare_Key(APDU apdu, TestSettings testSet, byte bSetKeyValue) { if (bSetKeyValue == Consts.TRUE){ m_keyPair1 = getKeyPairObject((byte) m_testSettings.keyClass, (short) 1, m_testSettings.keyLength); //m_keyPair1 = new KeyPair((byte) m_testSettings.keyClass, m_testSettings.keyLength); - //m_keyPair1.genKeyPair(); + //m_keyPair1.genKeyPair(); m_key1 = m_keyPair1.getPublic(); m_rsapublic_key = (RSAPublicKey) m_keyPair1.getPublic(); m_keyPair2 = getKeyPairObject((byte) m_testSettings.keyClass, (short) 2, m_testSettings.keyLength); @@ -711,16 +738,18 @@ short prepare_Key(APDU apdu, TestSettings testSet, byte bSetKeyValue) { case JCConsts.KeyBuilder_TYPE_EC_F2M_PRIVATE: // no break case JCConsts.KeyBuilder_TYPE_EC_FP_PRIVATE: if (bSetKeyValue == Consts.TRUE) { - m_keyPair1 = new KeyPair((byte) m_testSettings.keyClass, m_testSettings.keyLength); - EC_Consts.ensureInitializedECCurve((byte) m_testSettings.keyClass, m_testSettings.keyLength, m_keyPair1, m_ram1); + m_keyPair1 = getECCKeyPairObject((byte) m_testSettings.keyClass, m_testSettings.keyLength); + //m_keyPair1 = new KeyPair((byte) m_testSettings.keyClass, m_testSettings.keyLength); + //EC_Consts.ensureInitializedECCurve((byte) m_testSettings.keyClass, m_testSettings.keyLength, m_keyPair1, m_ram1); m_keyPair1.genKeyPair(); // TODO: use fixed key value to shorten time required for key generation? m_key1 = m_keyPair1.getPrivate(); m_ecprivate_key = (ECPrivateKey) m_keyPair1.getPrivate(); m_ecpublic_key = (ECPublicKey) m_keyPair1.getPublic(); m_keyInv1 = m_ecpublic_key; - - m_keyPair2 = new KeyPair((byte) m_testSettings.keyClass, m_testSettings.keyLength); - EC_Consts.ensureInitializedECCurve((byte) m_testSettings.keyClass, m_testSettings.keyLength, m_keyPair2, m_ram1); + + m_keyPair2 = getECCKeyPairObject((byte) m_testSettings.keyClass, m_testSettings.keyLength); + //m_keyPair2 = new KeyPair((byte) m_testSettings.keyClass, m_testSettings.keyLength); + //EC_Consts.ensureInitializedECCurve((byte) m_testSettings.keyClass, m_testSettings.keyLength, m_keyPair2, m_ram1); m_keyPair2.genKeyPair(); // TODO: use fixed key value to shorten time required for key generation? m_key2 = m_keyPair2.getPrivate(); m_ecprivate_key2 = (ECPrivateKey) m_keyPair2.getPrivate(); @@ -763,15 +792,17 @@ short prepare_Key(APDU apdu, TestSettings testSet, byte bSetKeyValue) { case JCConsts.KeyBuilder_TYPE_EC_F2M_PUBLIC: // no break case JCConsts.KeyBuilder_TYPE_EC_FP_PUBLIC: if (bSetKeyValue == Consts.TRUE){ - m_keyPair1 = new KeyPair((byte) m_testSettings.keyClass, m_testSettings.keyLength); - EC_Consts.ensureInitializedECCurve((byte) m_testSettings.keyClass, m_testSettings.keyLength, m_keyPair1, m_ram1); + m_keyPair1 = getECCKeyPairObject((byte) m_testSettings.keyClass, m_testSettings.keyLength); + //m_keyPair1 = new KeyPair((byte) m_testSettings.keyClass, m_testSettings.keyLength); + //EC_Consts.ensureInitializedECCurve((byte) m_testSettings.keyClass, m_testSettings.keyLength, m_keyPair1, m_ram1); m_keyPair1.genKeyPair(); m_key1 = m_keyPair1.getPublic(); m_ecpublic_key = (ECPublicKey) m_keyPair1.getPublic(); m_ecprivate_key = (ECPrivateKey) m_keyPair1.getPrivate(); m_keyInv1 = m_ecprivate_key; - m_keyPair2 = new KeyPair((byte) m_testSettings.keyClass, m_testSettings.keyLength); - EC_Consts.ensureInitializedECCurve((byte) m_testSettings.keyClass, m_testSettings.keyLength, m_keyPair2, m_ram1); + m_keyPair2 = getECCKeyPairObject((byte) m_testSettings.keyClass, m_testSettings.keyLength); + //m_keyPair2 = new KeyPair((byte) m_testSettings.keyClass, m_testSettings.keyLength); + //EC_Consts.ensureInitializedECCurve((byte) m_testSettings.keyClass, m_testSettings.keyLength, m_keyPair2, m_ram1); m_keyPair2.genKeyPair(); m_key2 = m_keyPair2.getPublic(); m_ecpublic_key2 = (ECPublicKey) m_keyPair2.getPublic(); @@ -1468,8 +1499,14 @@ void prepare_class_KeyPair(APDU apdu) { m_testSettings.parse(apdu); try { - m_keyPair1 = new KeyPair((byte) m_testSettings.keyClass, m_testSettings.keyLength); - // Make sure that for EC, we will have initailized curve + if (((byte) m_testSettings.keyClass == KeyPair.ALG_EC_FP) || ((byte) m_testSettings.keyClass == KeyPair.ALG_EC_F2M)) { + m_keyPair1 = getECCKeyPairObject((byte) m_testSettings.keyClass, m_testSettings.keyLength); + } + else { + m_keyPair1 = new KeyPair((byte) m_testSettings.keyClass, m_testSettings.keyLength); + } + /* + // Make sure that for EC, we will have initialized curve switch (m_testSettings.keyClass) { case JCConsts.KeyPair_ALG_EC_F2M: // no break case JCConsts.KeyPair_ALG_EC_FP: @@ -1478,6 +1515,7 @@ void prepare_class_KeyPair(APDU apdu) { default: // do nothing } + */ apdubuf[(short) (ISO7816.OFFSET_CDATA)] = SUCCESS; apdu.setOutgoingAndSend(ISO7816.OFFSET_CDATA, (byte)1); } diff --git a/AlgTest_JavaCard/src/AlgTest/AlgSupportTest.java b/AlgTest_JavaCard/src/AlgTest/AlgSupportTest.java index da5f58fc..573690a3 100644 --- a/AlgTest_JavaCard/src/AlgTest/AlgSupportTest.java +++ b/AlgTest_JavaCard/src/AlgTest/AlgSupportTest.java @@ -173,15 +173,39 @@ void TestSupportedModeSingle(APDU apdu) { case (byte) 0x19: // no break case (byte) 0x1C: { // no break - TODO remove this constant, unused try { - offset++; m_keyPair1 = new KeyPair(algorithmClass, algorithmParam1); - - if ((algorithmClass == KeyPair.ALG_EC_FP) || (algorithmClass == KeyPair.ALG_EC_F2M)) { - // Key pair for ECC need to be initialized by proper curve for some cards in some cases - EC_Consts.ensureInitializedECCurve(algorithmClass, algorithmParam1, m_keyPair1, m_ramArray); - } - - m_keyPair1.genKeyPair(); - apdubuf[(short) (ISO7816.OFFSET_CDATA + offset)] = SUPP_ALG_SUPPORTED; + offset++; + m_keyPair1 = null; + if ((algorithmClass == KeyPair.ALG_EC_FP) || (algorithmClass == KeyPair.ALG_EC_F2M)) { + // Try two alternatives for EC key construction - new KeyPair() emit exception on some cards + try { + // Make KeyPair object first, then initialize curve + m_keyPair1 = new KeyPair(algorithmClass, algorithmParam1); + EC_Consts.ensureInitializedECCurve(algorithmClass, algorithmParam1, m_keyPair1, m_ramArray); + } catch (Exception e) { + // Make public and private keys first, then iniatlize curve and finally create KeyPair + ECPrivateKey ecPrivKey = null; + ECPublicKey ecPubKey = null; + if (algorithmClass == KeyPair.ALG_EC_FP) { + ecPrivKey = (ECPrivateKey) KeyBuilder.buildKey(KeyBuilder.TYPE_EC_FP_PRIVATE, algorithmParam1, false); + ecPubKey = (ECPublicKey) KeyBuilder.buildKey(KeyBuilder.TYPE_EC_FP_PUBLIC, algorithmParam1, false); + } + if (algorithmClass == KeyPair.ALG_EC_F2M) { + ecPrivKey = (ECPrivateKey) KeyBuilder.buildKey(KeyBuilder.TYPE_EC_F2M_PRIVATE, algorithmParam1, false); + ecPubKey = (ECPublicKey) KeyBuilder.buildKey(KeyBuilder.TYPE_EC_F2M_PUBLIC, algorithmParam1, false); + } + if ((ecPrivKey != null) && (ecPubKey != null)) { + EC_Consts.setECKeyParams(ecPubKey, ecPrivKey, algorithmClass, algorithmParam1, m_ramArray); + m_keyPair1 = new KeyPair(ecPubKey, ecPrivKey); + } + } + } + else{ + // Other non-ECC keypairs + m_keyPair1 = new KeyPair(algorithmClass, algorithmParam1); + } + + m_keyPair1.genKeyPair(); + apdubuf[(short) (ISO7816.OFFSET_CDATA + offset)] = SUPP_ALG_SUPPORTED; } catch (CryptoException e) {apdubuf[(short) (ISO7816.OFFSET_CDATA + offset)] = (byte) (e.getReason() + SUPP_ALG_EXCEPTION_CODE_OFFSET); } break; @@ -202,12 +226,13 @@ void TestSupportedModeSingle(APDU apdu) { catch (CryptoException e) { apdubuf[(short) (ISO7816.OFFSET_CDATA + offset)] = (byte) (e.getReason() + SUPP_ALG_EXCEPTION_CODE_OFFSET);} break; } + case Consts.CLASS_AEADCIPHER: { try { offset++; m_object = javacardx.crypto.AEADCipher.getInstance(algorithmClass, false); apdubuf[(short) (ISO7816.OFFSET_CDATA + offset)] = SUPP_ALG_SUPPORTED;} catch (CryptoException e) { apdubuf[(short) (ISO7816.OFFSET_CDATA + offset)] = (byte) (e.getReason() + SUPP_ALG_EXCEPTION_CODE_OFFSET);} break; } -*/ +/**/ } // ENDING 0xFF offset++; diff --git a/AlgTest_JavaCard/src/AlgTest/EC_Consts.java b/AlgTest_JavaCard/src/AlgTest/EC_Consts.java index f6f7443a..a5b47eb1 100644 --- a/AlgTest_JavaCard/src/AlgTest/EC_Consts.java +++ b/AlgTest_JavaCard/src/AlgTest/EC_Consts.java @@ -603,7 +603,7 @@ public class EC_Consts { public static final short EC163_F2M_K = 2; */ - private static void setECKeyParams(ECPublicKey ecPubKey, ECPrivateKey ecPrivKey, byte ecClass, short ecLength, byte[] auxBuffer) { + static void setECKeyParams(ECPublicKey ecPubKey, ECPrivateKey ecPrivKey, byte ecClass, short ecLength, byte[] auxBuffer) { if (ecClass == KeyPair.ALG_EC_FP) { // Select proper courve parameters boolean bParamReady = false; diff --git a/AlgTest_JavaCard/src/AlgTest/JCAlgTestApplet.java b/AlgTest_JavaCard/src/AlgTest/JCAlgTestApplet.java index 71678437..5c6c7805 100644 --- a/AlgTest_JavaCard/src/AlgTest/JCAlgTestApplet.java +++ b/AlgTest_JavaCard/src/AlgTest/JCAlgTestApplet.java @@ -54,12 +54,18 @@ may be distributed under the terms of the GNU General Public License (GPL), public class JCAlgTestApplet extends javacard.framework.Applet { // NOTE: when incrementing version, don't forget to update ALGTEST_JAVACARD_VERSION_CURRENT value + /** + * Version 1.7.9 (22.07.2019) + * + added collection of APDU informations + * + improved ECC testing for cards failing at new KeyPair() + */ + final static byte ALGTEST_JAVACARD_VERSION_1_7_9[] = {(byte) 0x31, (byte) 0x2e, (byte) 0x37, (byte) 0x2e, (byte) 0x39}; /** - * Version 1.7.8 (18.05.2019) + * Version 1.7.8 (18.05.2019) * + added caching of already generated RSA keys to speedup perf test preparation * - fixed bug preventing preparation of performance measurement for RSA_CRT (introduced in version 1.7.0) */ - final static byte ALGTEST_JAVACARD_VERSION_1_7_8[] = {(byte) 0x31, (byte) 0x2e, (byte) 0x37, (byte) 0x2e, (byte) 0x38}; + //final static byte ALGTEST_JAVACARD_VERSION_1_7_8[] = {(byte) 0x31, (byte) 0x2e, (byte) 0x37, (byte) 0x2e, (byte) 0x38}; /** * Version 1.7.7 (17.04.2019) * - fixed problem with incorrect reporting for KeyAgreement object @@ -169,7 +175,7 @@ public class JCAlgTestApplet extends javacard.framework.Applet */ //final static byte ALGTEST_JAVACARD_VERSION_1_0[] = {(byte) 0x31, (byte) 0x2e, (byte) 0x30}; - byte ALGTEST_JAVACARD_VERSION_CURRENT[] = ALGTEST_JAVACARD_VERSION_1_7_8; + byte ALGTEST_JAVACARD_VERSION_CURRENT[] = ALGTEST_JAVACARD_VERSION_1_7_9; // lower byte of exception is value as defined in JCSDK/api_classic/constant-values.htm final static short SW_Exception = (short) 0xff01; From ff42edf1e2c4f6a9dd5f214711a53d825451b243 Mon Sep 17 00:00:00 2001 From: Petr Svenda Date: Mon, 22 Jul 2019 13:33:51 +0200 Subject: [PATCH 10/11] updated version 1.7.9 --- .../src/algtestjclient/AlgTestJClient.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/AlgTest_JClient/src/algtestjclient/AlgTestJClient.java b/AlgTest_JClient/src/algtestjclient/AlgTestJClient.java index 1b2ddbba..d452ad94 100644 --- a/AlgTest_JClient/src/algtestjclient/AlgTestJClient.java +++ b/AlgTest_JClient/src/algtestjclient/AlgTestJClient.java @@ -53,13 +53,19 @@ public class AlgTestJClient { /* Arguments for choosing which AlgTest version to run. */ public static final String ALGTEST_SINGLEPERAPDU = "AT_SINGLEPERAPDU"; // for 'New' AlgTest public static final String ALGTEST_PERFORMANCE = "AT_PERFORMANCE"; // for performance testing - public static final String ALGTEST_USE_SIMULATOR = "JCARDSIM"; // use simulator instead of real card - + public static final String ALGTEST_USE_SIMULATOR = "JCARDSIM"; // use simulator instead of real card + public static final String ALGTEST_USE_CUSTOM_AID = "AID="; // use custom AID for applet (if default one is changed for some reason) + + /** + * Version 1.7.9 (22.07.2019) + * - no changes, updating version with card applet + */ + public final static String ALGTEST_JCLIENT_VERSION_1_7_9 = "1.7.9"; /** - * Version 1.7.8 (18.05.2019) + * Version 1.7.8 (18.05.2019) * - no changes, updating version with card applet */ - public final static String ALGTEST_JCLIENT_VERSION_1_7_8 = "1.7.8"; + //public final static String ALGTEST_JCLIENT_VERSION_1_7_8 = "1.7.8"; /** * Version 1.7.7 (17.04.2019) * - removed testing for high-power mode for SIM cards as some cards stop responding till reset @@ -149,12 +155,13 @@ public class AlgTestJClient { /** * Current version */ - public final static String ALGTEST_JCLIENT_VERSION = ALGTEST_JCLIENT_VERSION_1_7_8; + public final static String ALGTEST_JCLIENT_VERSION = ALGTEST_JCLIENT_VERSION_1_7_9; public final static int STAT_OK = 0; // If required to be run with simulator, run as: >java -cp "AlgTestJClient.jar;jcardsim-3.0.5-SNAPSHOT.jar" -noverify algtestjclient.AlgTestJClient JCARDSIM static boolean USE_JCARDSIM = false; + /** * @param args the command line arguments */ From df6184ded9a959067e81559111a2729ba0a0ddb3 Mon Sep 17 00:00:00 2001 From: Petr Svenda Date: Mon, 22 Jul 2019 13:56:35 +0200 Subject: [PATCH 11/11] new version 1.7.9 --- AlgTest_JavaCard/AlgTest_v1.7.9_jc222.cap | Bin 0 -> 29593 bytes AlgTest_dist_1.7.9.zip | Bin 0 -> 169211 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 AlgTest_JavaCard/AlgTest_v1.7.9_jc222.cap create mode 100644 AlgTest_dist_1.7.9.zip diff --git a/AlgTest_JavaCard/AlgTest_v1.7.9_jc222.cap b/AlgTest_JavaCard/AlgTest_v1.7.9_jc222.cap new file mode 100644 index 0000000000000000000000000000000000000000..93aeedc9acad1b369327ee227caa405d29d96158 GIT binary patch literal 29593 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 literal 0 HcmV?d00001 diff --git a/AlgTest_dist_1.7.9.zip b/AlgTest_dist_1.7.9.zip new file mode 100644 index 0000000000000000000000000000000000000000..cfe8de8d78f85c304055c58efeefebe1bf752206 GIT binary patch literal 169211 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 literal 0 HcmV?d00001