在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();