我能够导出ios中生成的公钥并将其转换为base64:
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)
我还可以将它发送到我的lamp服务器。现在我在想怎么把它当作公共密钥。
我试过:
$keydata = base64decode($_GET['base64PublicKey']);
$res = gnupg_init();
$info = gnupg_import($res,$keydata);
print_r($info);
这是正确的方向吗?我知道数据的大小是270,not the same as block size of the key。我对pki还不太熟悉,如果有任何帮助,我将不胜感激。
最佳答案
如果pub键与x.509一致,则可以使用php进行如下解析:
$keydata = base64decode($_GET['base64PublicKey']);
$info = openssl_x509_parse($keydata,true);
print_r($info);
php包含OpenSSl and X.509的库