سؤال

كيفية الحصول على نسخة بطاقة جافا من البطاقة؟هل هناك أي طريقة للحصول على نسخة JC من البطاقة.أم يجب أن أحاول تثبيت تطبيقات صغيرة ذات خيارات محددة لكل إصدار من إصدارات JC.

هل كانت مفيدة؟

المحلول

الطريقة الكاملة الوحيدة لتحديد إصدارات JavaCard API المدعومة بواسطة البطاقة الذكية "البيضاء" هي إنشاء ملف CAP منفصل لكل إصدار JavaCard.

أقترح عليك أن تجعل كل CAP يحتوي فقط على فئة واحدة بسيطة ممتدة javacard.framework.Applet.قد ترغب في أن تكون قادرًا على تثبيت برنامجك الصغير فعليًا وتبادل وحدات APDU معه فقط للتأكد من أنه يعمل بالفعل؛بقدر ما أعرف، يُسمح لتطبيقات الجهاز الظاهري لـ Java Card بتحميل ملفات CAP حتى لو لم يتم حل جميع عمليات الاستيراد، ولكن يجب أن تفشل إذا حاولت استخدام واجهات برمجة التطبيقات فعليًا.

بمجرد إنشاء ملف CAP، يمكنك التحقق من أنه يرتبط فعليًا بحزمة JavaCard API المقصودة عن طريق تحليل مكون COMPONENT_Import في ملف CAP الذي تم إنشاؤه.تم توضيح تنسيق ملف CAP في مواصفات الجهاز الظاهري لـ JavaCard والحقل الذي تريده هو package_info لحزمة JavaCard المستوردة.

لقد قمت بتجميع قائمة بمعلومات AID - package_version_major.package_version_minor (اسم_الحزمة).قد تكون القائمة غير مكتملة.

بطاقة جافا 2.1.1:A0000000620201 - 1.1 (javacardx.crypto)

بطاقة جافا 2.1.1:A0000000620101 - 1.0 (javacard.framework)

بطاقة جافا 2.1.1:A0000000620001 - 1.0 (java.lang)

بطاقة جافا 2.1.1:A0000000620102 - 1.1 (javacard.security)

بطاقة جافا 2.2.1:A0000000620201 - 1.2 (javacardx.crypto)

بطاقة جافا 2.2.1:A0000000620101 - 1.2 (javacard.framework)

بطاقة جافا 2.2.1:A0000000620002 - 1.0 (java.io)

بطاقة جافا 2.2.1:A0000000620001 - 1.0 (java.lang)

بطاقة جافا 2.2.1:A0000000620003 - 1.0 (java.rmi)

بطاقة جافا 2.2.1:A0000000620102 - 1.2 (javacard.security)

بطاقة جافا 2.2.1:A000000062010101 - 1.0 (javacard.framework.service)

بطاقة جافا 2.2.2:A0000000620209 - 1.0 (javacardx.apdu)

بطاقة جافا 2.2.2:A0000000620202 - 1.2 (javacardx.biometry)

بطاقة جافا 2.2.2:A0000000620201 - 1.3 (javacardx.crypto)

بطاقة جافا 2.2.2:A0000000620203 - 1.0 (javacardx.external)

بطاقة جافا 2.2.2:A0000000620101 - 1.3 (javacard.framework)

بطاقة جافا 2.2.2:A0000000620002 - 1.0 (java.io)

بطاقة جافا 2.2.2:A0000000620001 - 1.0 (java.lang)

بطاقة جافا 2.2.2:A000000062020802 - 1.0 (javacardx.framework.math)

بطاقة جافا 2.2.2:A0000000620003 - 1.0 (java.rmi)

بطاقة جافا 2.2.2:A0000000620102 - 1.3 (javacard.security)

بطاقة جافا 2.2.2:A000000062010101 - 1.0 (javacard.framework.service)

بطاقة جافا 2.2.2:A000000062020803 - 1.0 (javacardx.framework.tlv)

بطاقة جافا 2.2.2:A000000062020801 - 1.0 (javacardx.framework.util)

بطاقة جافا 3.0.1:A0000000620209 - 1.0 (javacardx.apdu)

بطاقة جافا 3.0.1:A0000000620202 - 1.2 (javacardx.biometry)

بطاقة جافا 3.0.1:A0000000620201 - 1.4 (javacardx.crypto)

بطاقة جافا 3.0.1:A0000000620203 - 1.0 (javacardx.external)

بطاقة جافا 3.0.1:A0000000620101 - 1.4 (javacard.framework)

بطاقة جافا 3.0.1:A00000006202080101 - 1.0 (javacardx.framework.util.intx)

بطاقة جافا 3.0.1:A0000000620002 - 1.0 (java.io)

بطاقة جافا 3.0.1:A0000000620001 - 1.0 (java.lang)

بطاقة جافا 3.0.1:A000000062020802 - 1.0 (javacardx.framework.math)

بطاقة جافا 3.0.1:A0000000620003 - 1.0 (java.rmi)

بطاقة جافا 3.0.1:A0000000620102 - 1.4 (javacard.security)

بطاقة جافا 3.0.1:A000000062010101 - 1.0 (javacard.framework.service)

بطاقة جافا 3.0.1:A000000062020803 - 1.0 (javacardx.framework.tlv)

بطاقة جافا 3.0.1:A000000062020801 - 1.0 (javacardx.framework.util)

بطاقة جافا 3.0.4:A0000000620209 - 1.0 (javacardx.apdu)

بطاقة جافا 3.0.4:A0000000620202 - 1.2 (javacardx.biometry)

بطاقة جافا 3.0.4:A0000000620201 - 1.4 (javacardx.crypto)

بطاقة جافا 3.0.4:A0000000620203 - 1.0 (javacardx.external)

بطاقة جافا 3.0.4:A0000000620101 - 1.5 (javacard.framework)

بطاقة جافا 3.0.4:A00000006202080101 - 1.0 (javacardx.framework.util.intx)

بطاقة جافا 3.0.4:A0000000620002 - 1.0 (java.io)

بطاقة جافا 3.0.4:A0000000620001 - 1.0 (java.lang)

بطاقة جافا 3.0.4:A000000062020802 - 1.0 (javacardx.framework.math)

بطاقة جافا 3.0.4:A0000000620003 - 1.0 (java.rmi)

بطاقة جافا 3.0.4:A0000000620102 - 1.5 (javacard.security)

بطاقة جافا 3.0.4:A000000062010101 - 1.0 (javacard.framework.service)

بطاقة جافا 3.0.4:A000000062020804 - 1.0 (javacardx.framework.string)

بطاقة جافا 3.0.4:A000000062020803 - 1.0 (javacardx.framework.tlv)

بطاقة جافا 3.0.4:A000000062020801 - 1.0 (javacardx.framework.util)

بالنظر إلى المعلومات المذكورة أعلاه، اسمحوا لي أن أشير إلى أن الإجابة من مايكل رولاند مضللة بعض الشيء.الاتصال JCSystem.getVersion() لا يساعد في تحديد ما إذا كان إصدار Java Card مدعومًا أم لا؛إذا وصلت إلى النقطة التي يمكنك فيها استدعاء واجهة برمجة التطبيقات (API)، فأنت متأكد بالفعل من أن الإصدار مدعوم.

نصائح أخرى

I'll be bold and advice some way around the issue. If you can load applets you normally also have access to the Global Platform card manager. The card manager should support a command APDU called GET CPLC (DATA). This returns the Card Production Life Cycle data, which includes identifiers for the chip manufacturer (there is a limited number of those), OS manufacturer and version information.

Armed with this information, you should be able to ask the creator of the OS for more information, such as which version is exactly supported, Global Platform support, additional libraries etc. Of course it depends a bit on who and where you are if they actually deem you worthy of support.

A small issue is that Visa seems to maintain the mapping of the identifiers to actual companies. I haven't found a definite list on the internet just yet, but the more common ones seem to be known.

short version = JCSystem.getVersion();

The method getVersion() returns the major and minor version of the Java Card API (each part in one byte). There is no method to distinguish between sub-versions (e.g. between 2.2.1 and 2.2.2).

Only knowing that your chip contains a Java Card runtime environment, there is no means to query more specific information from the chip. (Some chips might expose more specific information though.) In general you should obtain such information from the manufacturer/your supplier.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top