如何将base64导出的公钥转换为我可以在php中使用的东西?

时间:2015-02-01 02:20:54

标签: php swift pki

我可以导出在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有点新鲜,任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

如果您的pub键符合X.509,则可以使用PHP解析:

$keydata = base64decode($_GET['base64PublicKey']);
$info = openssl_x509_parse($keydata,true);
print_r($info);

PHP包含OpenSSl and X.509

的库