在UWP上使用ECDSA进行签名验证 [英] Signature verification with ECDSA on UWP

查看:60
本文介绍了在UWP上使用ECDSA进行签名验证的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在创建一个与Android蓝牙Gatt服务器交互的UWP应用程序。此服务器获取一个哈希值(sha512)并使用其私钥对其进行签名,然后将其发送回UWP应用程序。

I am creating an UWP application that interacts with an Android Bluetooth Gatt Server. This server takes a hash (sha512) and signs it with its private key, then sends it back to the UWP application.

UWP应用程序具有所述服务器的公钥,并将其导入检查数据是否正确签名。

The UWP application has the public key of said server, and imports it to check whether or not the data was correctly signed.

我可以使用任何格式进行此验证(PEM,DER等),甚至是证书。

I can use any format for this verification (PEM, DER, etc...), even the certificate.

我的问题是验证对于我使用的每种方法都不成功。

My problem is that the verification is unsuccessful for every different method I used.

H

var pubkey = Convert.FromBase64String(publicKeyParam); var provider = AsymmetricKeyAlgorithmProvider.OpenAlgorithm(AsymmetricAlgorithmNames.EcdsaSha512); var pk = provider.ImportPublicKey(CryptographicBuffer.CreateFromByteArray(pubkey)); return CryptographicEngine.VerifySignatureWithHashInput(pk, CryptographicBuffer.CreateFromByteArray(originalHash), CryptographicBuffer.CreateFromByteArray(signedHash));

每次都返回false。 / p>

Returns false every time.

var certificateByteArray = Convert.FromBase64String("MIICSDCCAe4CCQCDfN4RV5EYIzAKBggqhkjOPQQDAjCBqzELMAkGA1UEBhMCRlIxETAPBgNVBAgMCEJyZXRhZ25lMQ8wDQYDVQQHDAZWYW5uZXMxEDAOBgNVBAoMB0JZU1RBTVAxJjAkBgNVBAsMHVJlY2hlcmNoZSBldCBkw4PCqXZlbG9wcGVtZW50MRUwEwYDVQQDDAxTaW1vbiBCcnVub3UxJzAlBgkqhkiG9w0BCQEWGHNpbW9uLmJydW5vdUBieXN0YW1wLmNvbTAeFw0xODAzMDUxMDU1MTlaFw0xODA0MDQxMDU1MTlaMIGrMQswCQYDVQQGEwJGUjERMA8GA1UECAwIQnJldGFnbmUxDzANBgNVBAcMBlZhbm5lczEQMA4GA1UECgwHQllTVEFNUDEmMCQGA1UECwwdUmVjaGVyY2hlIGV0IGTDg8KpdmVsb3BwZW1lbnQxFTATBgNVBAMMDFNpbW9uIEJydW5vdTEnMCUGCSqGSIb3DQEJARYYc2ltb24uYnJ1bm91QGJ5c3RhbXAuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE5H4EL1ZuCljCmkCDgjH3sQ8c1tGXla7LpDSX7vKVM5nQqY0x+tA9WlRmZL67o6uiKf0KdCqn6+/fxYE6pu+0djAKBggqhkjOPQQDAgNIADBFAiACZuHXUYufdiFKRCCcQy9BNXeC6swr/kUwYH3IFPJXIgIhAK/LyF35yIU8Tn/uwVrCImyKdOshieebaCHDzUr1SGQi");
    if (certificateByteArray == null) throw new Exception("certificateByteArray is null");
    var certificate = new Certificate(CryptographicBuffer.CreateFromByteArray(certificateByteArray));
    var publicKey = PersistedKeyProvider.OpenPublicKeyFromCertificate(certificate, HashAlgorithmNames.Sha512, CryptographicPadding.RsaPss);
    if (publicKey == null) throw new Exception("publicKey is null");
    return CryptographicEngine.VerifySignatureWithHashInput(publicKey, CryptographicBuffer.CreateFromByteArray(originalHash), CryptographicBuffer.CreateFromByteArray(signedHash));




每次都返回false。


Returns false every time.

UWP中没有一些方法和类,例如RSACryptoServiceProvider,但遗憾的是很多例子都使用了该类。

Some methods and classes are not available in UWP, such as RSACryptoServiceProvider, but sadly a lot of examples make use of that class.

是否有人有一些实际可用于UWP的示例?

Does anybody have some examples that actually work on UWP ?

它在Android和iOS中正常运行相同的参数(Android的公钥和iOS的证书)

It works correctly in Android and iOS with the same parameters (Public key for Android and certificate for iOS)

推荐答案

西蒙,你好b $ b

根据你的问题与UWP有关,我会将线程移到  UWP论坛以获得更好的支持。



如果您有一些语法或代码错误,请随时与我们联系n使用C#。我们会尽力为您提供解决方案。

Hi Simon,

According to your question is more related to UWP, I will move the thread to UWP forum for better support.

If you have some grammar or code errors, please feel free to contact us in using C#. We will try our best to give you a solution.

最好的问候,

Neil Hu


这篇关于在UWP上使用ECDSA进行签名验证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆