3

在我的tizen werable Web 应用程序(目标:tizen 2.3.2)中,我需要获取作者证书的公钥(用于签名应用程序),以便在SAP [三星附件协议] 身份验证实现中检查配对智能手机应用程序的令牌。

可穿戴应用程序和智能手机应用程序 (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);
        }
   });
4

2 回答 2

1

成立。首先在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权限需要签署PARTNER级别的AuthorCertificate才能使用,对于PUBLIC AuthorCertificate它在应用程序安装期间返回此异常:

-   [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 参考: 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

于 2017-10-31T14:20:19.350 回答
-1

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

使用 Android Keystore 创建 Gear Author 证书的教程>>附录 D

在此处输入图像描述

创建证书后,您可以从您的机器中找到作者证书的公钥,

/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 的示例应用程序

于 2017-10-25T06:22:00.790 回答