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 key,它仍然有效。 (您甚至可以将 PEM 传递给它)。
但是...您确实需要知道您是否有 public 或私钥。如果您向 FromPrivateKey 传递 public 键,调用将失败。原因是密钥的私有部分根本不存在,如果你想加载一个私钥,那一定是你在做一些需要私钥的事情。
另一方面,public 密钥只是完整私钥的一部分。如果您有私钥,根据定义您也有 public 密钥。 (例如,RSA public 密钥由模数和指数组成,但 RSA 私钥包含模数、指数和其他部分。如果你有私钥,那么你就有模数和指数,并且定义你也有 public 键。)因此..将私钥传递给加载 public 键的方法仍然有效。你只是传递了超过必要的东西。
我想知道是否可以在不直接知道类型的情况下通过 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 key,它仍然有效。 (您甚至可以将 PEM 传递给它)。
但是...您确实需要知道您是否有 public 或私钥。如果您向 FromPrivateKey 传递 public 键,调用将失败。原因是密钥的私有部分根本不存在,如果你想加载一个私钥,那一定是你在做一些需要私钥的事情。
另一方面,public 密钥只是完整私钥的一部分。如果您有私钥,根据定义您也有 public 密钥。 (例如,RSA public 密钥由模数和指数组成,但 RSA 私钥包含模数、指数和其他部分。如果你有私钥,那么你就有模数和指数,并且定义你也有 public 键。)因此..将私钥传递给加载 public 键的方法仍然有效。你只是传递了超过必要的东西。