2015-03-03 99 views
0

現在,我已經有一個密鑰對。Swift如何導入rsa密鑰

我要導入我的雨燕這個密鑰對,並使用該密鑰對加密

東西或解密的東西,我從restclint得到

我看到很多紙是說如何通用密鑰對,但我有它已經。

什麼是kSecAttrApplicationTag?

plz幫助我

var dataPtr:Unmanaged<AnyObject>? 
let query: [String:AnyObject] = [ 
kSecClass: kSecClassKey, 
kSecAttrApplicationTag: "com.example.site.public", 
kSecReturnData: kCFBooleanTrue 
] 
let qResult = SecItemCopyMatching(query, &dataPtr) 
// error handling with `qResult` ... 
let publicKeyData = dataPtr!.takeRetainedValue() as NSData 
// convert to Base64 string 
let base64PublicKey = publicKeyData.base64EncodedStringWithOptions(nil) 

回答

4

看一看Swift-RSAUtils,它提供了你所需要的。我無法感謝Thanh Ba Nguyen,因爲他在這個領域的傑出先驅工作足夠。蘋果,恥辱你讓開發者的生活如此悲慘!

基本上,故事是這樣的:您必須將密鑰加載到他們的DER或PEM格式(並在PEM情況下解碼base64),然後從中剝離一些部件,然後將密鑰導入系統的鑰匙環。完成此操作後,您可以從密鑰環中獲取並使用它們。不幸的是,Apple沒有記錄這一點,特別是Swift。我能找到的唯一參考文檔是Certificate, Key, and Trust Services Reference,並且確保您不僅單擊「Swift」,而且您也不會看到太多內容。或者忘了它,並使用Swift-RSAUtils,代碼非常自我解釋。

0

最簡單的解釋:當你在keychain中存儲某些東西時,它有一個唯一的鍵(用於識別目的)。 kSecAttrApplicationTag: 「com.example.site.public」 表示 「哎,獨特的按鍵我用的是 'com.example.site.public'」

乾杯,