2017-07-21 12 views
0

我们组织最近采用Box来替换Windows共享文件夹。我参与的小型开发小组需要上传和下载至少一个Box共享文件,因此我们刚刚开始使用API​​。无法通过Box C#SDK项目使用Box创建的RSA密钥投射错误

我们集团目前使用的Visual Studio 2013中的C#开发与.NET 4.0的首选目标。当前版本的SDK(2.15.6)与我们的平台不兼容,但是看到之前的版本,我们应该能够在现有平台上使用2.12.1版本。 SDK包含一个使用C#方法访问API调用的解决方案和一个包含示例代码的解决方案。

目前我正在试图让样本代码来使用我的证书和认证的服务器。

内箱的开发工具我已经创建了一个应用程序,并使用内置式箱体配置选项来生成被表现为一个JSON文件中的公钥/私钥对。

给我带来了挂了是,当我尝试使用密钥对与Box.V2.Samples.JWTAuth项目。我复制了私钥了JSON文件,替换成\ n与实际的回车符,贴吧到private_key.pem文件:

Private Key

我放在app.config中的其他价值,并开始控制台应用程序,这会产生错误Unable to cast

Error message

如何从一个BouncyCastle的RsaPrivateCrtKeyParamaters反对一个BouncyCastle的AsymmetricCipherKeyPair对象得到什么?

编辑

我能够追查有问题的代码块。从SDK\Box.V2.JWTAuth\BoxJWTAuth.cs

 var pwf = new PEMPasswordFinder(this.boxConfig.JWTPrivateKeyPassword); 
     AsymmetricCipherKeyPair key; 
     using (var reader = new StringReader(this.boxConfig.JWTPrivateKey)) 
     { 
      key = (AsymmetricCipherKeyPair)new PemReader(reader, pwf).ReadObject(); 
     } 
     var rsa = DotNetUtilities.ToRSA((RsaPrivateCrtKeyParameters)key.Private); 
     this.credentials = new SigningCredentials(new RsaSecurityKey(rsa), SecurityAlgorithms.RsaSha256Signature, SecurityAlgorithms.Sha256Digest); 

从我的阅读,好像代码预期不必提取公/私对其中是不是有什么盒子是提供(至少目前没有)私钥和我'供应似乎已经是RsaPrivateCrtKeyParameters类型,所以这个演员可能(不再)是必要的。

+0

听起来你在盒装也许。你可以发布你的代码。 –

+0

我看到你在那里做了什么。代码位于并添加。 –

回答

0

您是否想编写代码来做到这一点,或者尝试配置的工具,而是程序这不是从你的问题明确,那就是:

RSAPrivateCrtKeyParameters priv = ...; 
RSAKeyParameters pub = new RSAKeyParameters(false, priv.getModulus(), priv.getPublicExponent()); 
AsymmetricCipherKeyPair kp = new AsymmetricCipherKeyPair(pub, priv); 
+0

我试图澄清;现在我试图使用SDK中提供的示例代码。 –

+0

看来,那么ReadObject已经返回一个RsaPrivateCrtKeyParameters,在这种情况下,只需将其转换为ToRSA,而不需要AsymmetricCipherKeyPair。 –