6

希望在 iOS 设备上安全地存储公钥/私钥信息。我知道我想将它存储在 KeyChain 中,但是我不能 100% 确定我需要在SecRecord. 我打算做类似的事情:

// private key
SecKeyChain.Add(new SecRecord(SecKind.Key)
{
    Accessible = SecAccessible.AlwaysThisDeviceOnly,
    KeySizeInBits = 512,
    KeyClass = SecKeyClass.Private,
    CanSign = true,
    ValueData = privateKeyValue,
    Account = publicKeyValue
});

它将存储私钥,然后对公钥遵循类似的方法,将Account属性替换为用户唯一的值,例如用户名。但是,不确定这是否是使用它的正确方法。

有没有人有一个很好的例子来说明你将如何专门为钥匙做这件事?

4

1 回答 1

4

决定采用以下方法:

// store public key
SecKeyChain.Add(new SecRecord(SecKind.Key)
{
    ApplicationLabel = userName,
    Accessible = SecAccessible.AlwaysThisDeviceOnly,
    KeySizeInBits = 512,
    KeyClass = SecKeyClass.Public,
    ValueData = NSData.FromString(publicKey)
});

// store private key
SecKeyChain.Add(new SecRecord(SecKind.Key)
{
    ApplicationLabel = publicKey,
    Accessible = SecAccessible.AlwaysThisDeviceOnly,
    KeySizeInBits = 512,
    KeyClass = SecKeyClass.Private,
    CanSign = true,
    ValueData = NSData.FromString(secretKey)
});

这意味着每个公钥都映射到一个单独的用户,每个私钥都映射到一个公钥,这允许我存储多个用户密钥(而不是只存储当前登录的用户)。

似乎工作正常,但是,仍然不能 100% 确定这是做这种事情的正确方法,所以一些澄清会很好。

于 2012-09-28T19:33:57.937 回答