2016-10-01 4 views
0

이 코드를 사용하여 바이트 스트림에서 X509 PublicKey를 가져 오려고합니다.C# 어떻게 바이트 스트림에서 X509 PublicKey 가져 오기

[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); 
} 

오류 기본적으로

Bad sequence size: 3 
Parameter name: seq 

BouncyCastle.Crypto 

at Org.BouncyCastle.Asn1.X509.SubjectPublicKeyInfo..ctor(Asn1Sequence seq) 
at Org.BouncyCastle.Asn1.X509.SubjectPublicKeyInfo.GetInstance(Object obj) 
at Org.BouncyCastle.Security.PublicKeyFactory.CreateKey(Byte[] keyInfoData) 

다음 얻기 나는 제발 도와주세요 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

죄송합니다. 테스트 입력 데이터가 잘못되었습니다. 아래의 testcase와 함께 작동합니다.

[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); 
     } 

감사