无法将 Box 创建的 RSA 密钥与 Box C# SDK 项目一起使用时转换错误



我们的组织最近采用了Box来取代Windows共享文件夹。 我所在的小型开发小组需要从至少一个 Box 共享中上传和下载文件,因此我们才刚刚开始使用 API。

我们的团队目前使用 Visual Studio 2013 进行 C# 开发,首选目标是 .NET 4.0。当前版本的SDK(2.15.6(与我们的平台不兼容,但从以前的版本来看,我们似乎应该能够在现有平台上利用2.12.1版本。 SDK 包括一个具有用于访问 API 调用的 C# 方法的解决方案和一个包含示例代码的解决方案。

目前,我正在尝试获取示例代码以使用我的凭据并向服务器进行身份验证。

在 Box 开发人员工具中,我创建了一个应用程序,并使用内置的 Box 配置选项生成一个公钥/私钥对,该密钥对显示为 JSON 文件。

当我尝试将密钥对与Box.V2.Samples.JWTAuth项目一起使用时,我感到挂断了。 我将私钥从 JSON 文件中复制出来,将 替换为实际的回车符,并将其粘贴到private_key.pem文件中:

私钥

我将其他值放在 app.config 中并启动控制台应用程序,这会产生Unable to cast错误:

错误信息

如何从 BouncyCastle RsaPrivateCrtKeyParamaters 对象获取到 BouncyCastle AsymmetricCipherKeyPair 对象?

编辑

我能够追踪有问题的代码块。 从SDKBox.V2.JWTAuthBoxJWTAuth.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);

从我的阅读来看,代码似乎预计必须从公共/私有对中提取私钥,这不是 Box 提供的(至少,目前不是(,而且我提供的似乎已经是RsaPrivateCrtKeyParameters类型,所以这个强制转换可能(不再(是必要的。

从您的问题中不清楚您是尝试编写代码来执行此操作,还是尝试配置工具,但以编程方式,它将是:

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

最新更新