2012-09-28 110 views
4

想要在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屬性如用戶名。但是,不確定這是否是正確的使用方法。

有沒有人有一個很好的例子,你將如何做這個專門爲鍵?

回答

3

決定採用以下方法:

// 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%確定這是做這種事情的正確方法,所以一些澄清會很好。