【问题标题】:difference in xamarin vs java documentation for ECPublicKeyXamarin 与 ECPublicKey 的 java 文档的区别
【发布时间】:2018-02-22 06:28:15
【问题描述】:

在 andorid xamarin 项目中,我正在使用 EC 曲线生成密钥对

generator = KeyPairGenerator.GetInstance(KeyProperties.KeyAlgorithmEc, AndroidKeyStoreContants.AndroidKeyStore);

            paramSpec = new KeyGenParameterSpec.Builder(
                    alias,
                    KeyStorePurpose.Sign | KeyStorePurpose.Verify)
                        .SetAlgorithmParameterSpec(new ECGenParameterSpec("secp256r1"))
                        .SetDigests(KeyProperties.DigestSha256)
                        .Build();

            generator.Initialize(paramSpec);


            var keyPair = generator.GenerateKeyPair();

这很好,当我想访问公钥keyPair.Public 时问题就开始了。这给了我一个IPublicKey 接口。在 java 上,您只需将其转换为 ECPublicKey,而在 Xamarin 上您就无法做到。

我还注意到缺少一个成员 - 对我来说很重要的成员 - getW()- 在 xamarin 表示 ECPublicKey vs java ECPublicKey

xamarin ECPublicKey

java ECPublicKey

我的问题是 - 如何访问 - 并将公钥转换为 Xamarin 中的 ECPublicKey?我想访问 X 和 Y 坐标。

有没有办法添加这个缺失的声明?

【问题讨论】:

    标签: java android xamarin xamarin.android ecdsa


    【解决方案1】:

    不是转换为ECPublicKey,而是转换为ECPublicKeySpec。即,

    var pubKeySpec = (Java.Security.Spec.ECPublicKeySpec)keyPair.Public;
    var w = pubKeySpec.GetW();
    

    【讨论】:

    • 嗨,我最终得到:指定的演员表无效。
    猜你喜欢
    • 2018-03-23
    • 2021-05-16
    • 2014-09-18
    • 2016-07-21
    • 2017-05-12
    • 1970-01-01
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    相关资源
    最近更新 更多