如何在 tizen 可穿戴网络应用程序中获取作者证书的 public 密钥?

How can I get public key of author certificate in tizen werable web app?

在我的 tizen werable web 应用程序(目标:tizen 2.3.2)中,我需要获取 public 的密钥SAP [Samsung Accessory Protocol] 身份验证实现中配对智能手机应用程序检查令牌的作者证书(用于签名应用程序)。

可穿戴应用程序和智能手机应用程序 (android) 使用相同的密钥库进行签名。

是否可以通过 packageManager API 或类似的方式实现?

var myAppSigCert = "";//I NEED THIS ONE

SAAgent.authenticatePeerAgent(peerAgent,
    function(peerAgent, authToken){
        if (authToken.key === myAppSigCert ) {
            alert("Service connection request accepted: " + peerAgent.appName);
            SAAgent.acceptServiceConnectionRequest(peerAgent);      
        }else{
            alert("Service connection request REJECT: " + peerAgent.appName);
            SAAgent.rejectServiceConnectionRequest(peerAgent);
        }
   });

作者证书有助于维护 Tizen Gear 应用程序和 Android 之间的安全对等身份验证 移动应用。证书扩展 SDK 支持基于 Android 密钥库文件创建 Tizen 作者证书。

使用以下方法创建 Gear 作者证书的教程 Android 密钥库 >> 附录 D

创建证书后,您可以从您的机器上找到作者证书的 public 密钥,

/tizen-sdk-data/keystore/author-name/author

一样在你的代码中使用它
// from sample app
var authTokenKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhO5x67wRt3Ni5A4n+HBbAczE6p8lAEgnywXInIUMKuCDSaEpM3EwYE6GUGACDbAoCx7EBTS54XbLWrnz10XZAKZyMoQidI+JWiSwlNYOxGlfHJgxVEExr2ZmlKVYedQxlGZNsLjGziYW0Y6UIXmDOeDA1b4g7Grbx0vS1BXC3Mv8s/8zlAl3NPj6BU1mh2hWKJL9+eDaM3bmYK1JJ9jbLlIzCsl0fZ4kR1xlSToZDBk53LxO0n1ekUpsEmMbFcmj1KKGQQn6A+ej0s5iOlXz6dgDfg4PxoTnlutwLOilz4zJLySZA6o3jG2kYls6ZBEjaz9ZeHxQlEV9PKh/Vgq8wwIDAQAB"

    /* Authentication of requesting peer agent */
    if (typeof(SAAgent.authenticatePeerAgent) === 'function') {
        SAAgent.authenticatePeerAgent(
            peerAgent,
            function (peerAgent, authToken) {
                /* Authentication token of peer agent arrives */
                if (authToken.key === authTokenKey) {
                    SAAgent.acceptServiceConnectionRequest(peerAgent);
                    createHTML("Service connection request accepted via authenticatePeerAgent");

                } else {
                    SAAgent.rejectServiceConnectionRequest(peerAgent);
                    createHTML("Service connection request rejected via authenticatePeerAgent");
                }
            },
            function (e) {
                /* Error handling */
                SAAgent.rejectServiceConnectionRequest(peerAgent);
                createHTML("Service connection request rejected due to error:<br />" +
                            "Error name : " + e.name + "<br />" +
                            "Error message : " + e.message);
            }
        );
    }

找到 SAP 的 sample app

找到。首先在 Web 应用程序的 config.xml 中添加 CERTIFICATE 特权:

    <tizen:privilege name="http://tizen.org/privilege/appmanager.certificate"/>

然后只需调用tizen.application:

getAppCert方法
var appCerts = tizen.application.getAppCerts(null);
for (var i = 0; i < appCerts.length; i++) {
    console.log("#" + i + " type:" + appCerts[i].type);
    console.log("#" + i + " value:" + appCerts[i].value);
}

appmanager.certificate 权限需要签署 AuthorCertificate 级别才能使用 PARTNER , 对于 PUBLIC AuthorCertificate 它 return 在应用程序安装期间出现此异常:

-   [MISMATCHED_PRIVILEGE_LEVEL]Signature Level is too low to use http://tizen.org/privilege/appmanager.certificate - Signature Level = public, Privilege Level = partner

有关 Tizen 权限的更多信息,请参见此处: https://www.tizen.org/tv/privilege

关于权限安全系统的信息: https://developer.tizen.org/dev-guide/2.4/org.tizen.gettingstarted/html/web/details/sec_privileges_w.htm

API参考获取Public运行时签署证书的密钥:https://developer.tizen.org/development/api-references/web-application?redirect=https://developer.tizen.org/dev-guide/2.3.2/org.tizen.web.apireference/html/device_api/wearable/tizen/application.html#ApplicationManager::getAppCerts