2016-10-01 37 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); 
     } 

感謝