PHP.mk документација

openssl_pkey_get_public

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

function.openssl-pkey-get-public.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека function.openssl-pkey-get-public.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
openssl_pkey_get_public

Референца за `function.openssl-pkey-get-public.php` со подобрена типографија и навигација.

function.openssl-pkey-get-public.php

openssl_pkey_get_public

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

openssl_pkey_get_publicИзвлечете ја јавниот клуч од сертификатот и подгответе го за употреба

= NULL

openssl_pkey_get_public() извлекува јавниот клуч од public_key и го подготвува за употреба од други функции.

Параметри

public_key

public_key може да биде една од следниве:

  1. an OpenSSLAsymmetricKey instance
  2. низ што го има форматот file://path/to/file.pem. Именуваната датотека мора да содржи PEM кодиран сертификат/јавен клуч (може да содржи и двете).
  3. А PEM форматиран јавен клуч.

Вратени вредности

Враќа OpenSSLAsymmetricKey инстанца при успех, или false при грешка.

Дневник на промени

Верзија = NULL
8.0.0 При успех, оваа функција враќа OpenSSLAsymmetricKey инстанца сега; претходно, а resource од тип OpenSSL key .
8.0.0 public_key прифаќа OpenSSLAsymmetricKey or OpenSSLCertificate инстанца сега; претходно, а resource од тип OpenSSL key or OpenSSL X.509 беше прифатено.

Белешки од корисници 6 белешки

info на steyla dot com
пред 15 години
If you are trying to read a PKCS#1 RSA public key you run into trouble, because openssl wants the public key in X.509 style.

The PKCS#1 RSA public key

-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEAgYxTW5Yj+5QiQtlPMnS9kqQ/HVp+T2KtmvShe68cm8luR7Dampmb
[...]
cbn6n2FsV91BlEnrAKq65PGJxcwcH5+aJwIDAQAB
-----END RSA PUBLIC KEY-----

.. is  not readable while the X.509 style public key

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgYxTW5Yj+5QiQtlPMnS9
[..]
JwIDAQAB
-----END PUBLIC KEY-----

is. You can use an easy (and dirty) work around to read the PKCS#1 RSA anyway. The first few bytes of the X.509 style public key contain header information and can shamelessly be copied.

In other words: Delete everything after the first 32 bytes from the above X.509 key (starting behind Q8A) and attach your PKCS#1 data, reformat to 64 bytes length and use it with openssl.

Please note: The above example only works for 2048 bit length.

Like I said - it's kind of dirty - but hey - if you're as desperate as I was.

Michaela
Qiibow
пред 9 години
I spent a few hours raging with this function and hitting my head on the desk trying to get it to load a public PEM key.

This function can leave errors in openssl_error_string even if it succeeded so this can cause a lot of confusion further down. Especially if you're prototyping and haven't put full checks on return values in yet. The error will not be cleared either when calling other functions successfully.

To avoid confusion, you should always check the return result and only call openssl_error_string after calling an openssl function that returned failure (false).
Анонимен
пред 18 години
you can get (and save to file) public key using openssl_pkey_get_details(resource $key ) function:

<?php
$pub_key = openssl_pkey_get_public(file_get_contents('./cert.crt'));
$keyData = openssl_pkey_get_details($pub_key);
file_put_contents('./key.pub', $keyData['key']);
?>
Анонимен
21 години пред
This documentation notes it can take a PEM-formatted private key, but as per bug #25614, this is not possible in any form. The function simply returns a FALSE.

The only thing you can get public keys out of are X.509 certificates.

Furthermore, there is NO way to export a public key into a PEM-encoded form.
GeniusLe на zslm dot org
пред 5 години
You may need to export a public key from the private key, because the public key provided by the key generated by other tools is in pem format, and we need openssh format

```
<?php
$public = openssl_pkey_get_details(openssl_pkey_get_private(OPENSSL_USER_PRIVATE_KYE))['key'];

// save $public

```
dankybastard на hotmail
21 години пред
You must also use the string representation of the certificate to get the public key resource:

$dn = array();  // use defaults
$res_privkey = openssl_pkey_new();
$res_csr = openssl_csr_new($dn, $res_privkey);
$res_cert = openssl_csr_sign($res_csr, null, $res_privkey, $ndays);

openssl_x509_export($res_cert, $str_cert);

$res_pubkey = openssl_pkey_get_public($str_cert);
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.