繁体   English   中英

Chilkat 在不知道类型的情况下加载 SSHKey

[英]Chilkat load SSHKey without knowing the type

我想知道是否可以在不直接知道类型的情况下通过 Chilkat 库加载 SSHKey。 目前我需要做这样的事情:

BOOL success = false;
if([privateKey FromOpenSshPublicKey: privateKeyString])
{
    NSLog(@"key is FromOpenSshPublicKey");
    success = true;
}
else if([privateKey FromPuttyPrivateKey: privateKeyString])
{
    NSLog(@"key is FromPuttyPrivateKey");
    success = true;
}
else if([privateKey FromRfc4716PublicKey: privateKeyString])
{
    NSLog(@"key is FromRfc4716PublicKey");
    success = true;
}

但是如果我想使用LastErrorText东西,它会使日志记录有点困难。

这些方法最初是为了加载特定类型的键而编写的。 实际上,所有方法都会自动识别类型并且仍然会成功加载密钥。 例如,您可以使用 PuTTY 私钥调用 FromOpenSshPrivate 密钥,它仍然有效。 (您甚至可以将 PEM 传递给它)。

但是……您确实需要知道您有公钥还是私钥。 如果向 FromPrivateKey 传递公钥,则调用它会失败。 原因是密钥的私有部分根本不存在,如果你想加载一个私有密钥,那一定是你在做一些需要私有密钥的事情。

另一方面,公钥只是完整私钥的一部分。 如果您有私钥,根据定义,您也有公钥。 (例如,RSA 公钥由模数和指数组成,但 RSA 私钥包含模数、指数和其他部分。如果您有私钥,那么您就有了模数和指数,根据定义,您也有公钥。)因此......将私钥传递给加载公钥的方法仍然有效。 你只是通过了比必要的更多的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM