SEEK-for-Android 文档说列出的设备支持 SmartCard API。
我想通过我的 Android 应用程序访问基于 SIM 卡的安全元件 (SE)。我可以在不植根任何这些受支持的设备且不重建其 Android 系统映像的情况下实现这一目标吗?就我而言,该设备是三星 Galaxy S3。
是的,您可以使用 SEEK-for-Android,而无需 root 系统。但是,这项技术非常依赖设备;系统中必须存在一些供应商特定的库。索尼 Xperia 对我来说效果很好,没有必要的改变。添加一些库后(三星公司根据我们的要求做了),三星手机也还可以。
您唯一需要做的就是使用特殊的 SDK 构建您的应用程序。使用 Giesecke & Devrient GmbH 的 SDK Open Mobile API 并org.simalliance.openmobileapi
在清单 XML 中声明库:
<application android:label="@string/app_name">
<uses-library android:name="org.simalliance.openmobileapi" android:required="true" />
<activity android:name=".MainActivity">
...
</activity>
</application>
看看这个教程:https ://github.com/seek-for-android/pool/wiki/UsingSmartCardAPI 。我跟着它,我成功了。
到今天为止,一些智能手机(尤其是三星和索尼的智能手机)配备了 Open Mobile API(由 SEEK-for-Android 实现),用于访问至少基于 UICC/SIM 的安全元素(有些可能提供对其他类型的安全元素)。例如,Galaxy S3 的库存 ROM 确实包含可用于访问 UICC 的 Open Mobile API。
Open Mobile API 可通过包访问org.simalliance.openmobileapi
。因此,为了使用 Open Mobile API,您只需要针对该库编译您的项目(请参阅此说明)。但请注意不要将该库包含在您的 APK 文件中,因为设备上的实现通常与您从 SEEK-for-Android 项目中获得的略有不同。
请注意,替代/自定义 ROM(例如 CyanogenMod)通常不包含 Open Mobile API,即使对于那些拥有库存 ROM 的平台也是如此。对于 S3,您可以在此处找到有关如何在 CyanogenMod 中包含必要调整的教程。
到目前为止,这使您可以访问 Open Mobile API。但是,为了真正访问 UICC 上的应用程序,您的 Android 应用程序需要通过 Open Mobile API 的访问控制机制。请参阅此说明。通常,库存 ROM 实现比 ARA 小程序机制更喜欢访问规则文件库方法。所以你必须在 UICC/SIM 卡上正确配置这些访问规则。
Android APK 和 UICC/SIM 卡之间的工作连接有两个依赖项。
这确保没有人可以从 UICC/SIM 访问文件/服务。正如在上述答案之一中所说的那样,我们需要 UICC/SIM 所有者的许可才能允许我们的应用程序驻留在它上面。
PKCS#15 规范由 GlobalPlatform 发布,免费提供(名义注册后)