2016-10-01 83 views
0

试图使用此代码从字节流中获取X509 PublicKey。C#如何从字节流中获取X509公共密钥

[Fact] 
public void CreatePublicKeyParameters__ShouldReturnPublicKey__WhenPassPublicKeyBytes() 
{ 
    ApplePay applePay = new ApplePay(new MOBSHOPApplePayRequest()); 
    byte[] privateKey = Base64.Decode("MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgjyo3fzxT7j+CFxC7I4B5iVee2FUyn2vfOSjcgp2/g6qhRANCAARdoBFEtnuapXFKw4DYWsW0yV4bavpdWKszkefi19AhlIRE3WSNWSn25W5tZNFjMWtLISBmqANyufx2xP19oRvy"); 
    var publickey = applePay.CreatePublicKeyParameters(privateKey); 
} 

public AsymmetricKeyParameter CreatePublicKeyParameters(byte[] ephemeralPublicKeyBytes) 
{ 
     return (ECPublicKeyParameters)PublicKeyFactory.CreateKey(ephemeralPublicKeyBytes); 
} 

获得以下错误

​​

基本上,我想这下面的Java代码转换为C#

public ECPublicKey CreatePublicKeyParameters(byte[] ephemeralPublicKeyBytes) 
    { 
    KeyFactory keyFactory = KeyFactory.getInstance("ECDH", "BC"); 
    X509EncodedKeySpec encodedKeySpec = new X509EncodedKeySpec(ephemeralPublicKeyBytes); 
    ECPublicKey ephemeralPublicKey = (ECPublicKey) keyFactory.generatePublic(encodedKeySpec); 
    return ECPublicKey 
    } 

请帮助我。

回答

0

对不起,这是错误的测试输入数据。它正在处理这个下面的测试用例。

[Fact] 
     public void CreatePublicKeyParameters__ShouldReturnPublicKey__WhenPassPublicKeyBytes() 
     { 

      ApplePay applePay = new ApplePay(new MOBSHOPApplePayRequest()); 
      byte[] privateKey = Base64.Decode(
       "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEl/XAbOgrSCupps/QbIxJ3u4QZ1PlbO5uGDD1zj/JGMoephYSEgw+63gHQHekx3T8duXN3CoYafUpuQlwOeK6/w=="); 
      var publickey = applePay.CreatePublicKeyParameters(privateKey); 
     } 

感谢