在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()-关于ECPublicKey与Java ECPublicKey的xamarin表示形式。

xamarin ECPublicKey

java ECPublicKey

我的问题是-如何访问-将公共密钥投射到Xamarin中的ECPublicKey?我想访问X和Y坐标。

有没有办法添加此丢失的声明?

最佳答案

而不是强制转换为ECPublicKey,而是将其强制转换为ECPublicKeySpec。 IE浏览器

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

10-08 12:09