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

openssl_cms_decrypt

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

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

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

function.openssl-cms-decrypt.php

openssl_cms_decrypt

(PHP 8)

openssl_cms_decryptДешифрирај CMS порака

= NULL

Ги дешифрира CMS пораките.

Параметри

input_filename

Името на датотеката што содржи шифрирана содржина.

output_filename

Името на датотеката за депонирање на дешифрираната содржина.

certificate

Името на датотеката што содржи сертификат на примачот.

private_key

Името на датотеката што содржи а PKCS#8 клуч.

encoding

Кодирањето на влезниот датотека. Еден од OPENSSL_ENCODING_SMIME, OPENSSL_ENCODING_DER or OPENSSL_ENCODING_PEM.

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

Патеката до PHP скриптата што треба да се провери. true на успех или false при неуспех.

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

). Претходно, се користеше PKCS7/CMS (
пред 5 години
It took me a while to find out the correct way how to decrypt and verify data with these functions.
I needed that to communicate with German Health Insurance Providers as part of a DiGA. Maybe someone finds that useful.

<?php
function decryptAndVerify($signedAndEncryptedRawData): string
{
    $tempDir = __DIR__ . '/tmp';
    $originalFile = tempnam($tempDir, 'original');
    $decryptedFile = tempnam($tempDir, 'decrypted');
    $verifiedFile = tempnam($tempDir, 'verified');

    file_put_contents($originalFile, $signedAndEncryptedRawData);
    
    // One file with all possible certificates one after the other
    // -----BEGIN CERTIFICATE----- ...-----END CERTIFICATE-----
    $allPossibleSenderCertificates = __DIR__ . '/untrusted.pem';

    // Certificate:
    //    Data:
    //        Version: 3 (0x2)...
    $myCertificate = file_get_contents(__DIR__ . '/my.crt');
    $myPrivateKey = openssl_pkey_get_private(
    // -----BEGIN RSA PRIVATE KEY----- ... -----END RSA PRIVATE KEY-----
        file_get_contents(__DIR__ . '/my.prv.key.pem')
    );
    
    openssl_cms_decrypt(
        input_filename: $originalFile,
        output_filename: $decryptedFile,
        certificate: $myCertificate,
        private_key: $myPrivateKey,
        encoding: OPENSSL_ENCODING_DER
    );

    openssl_cms_verify(
        input_filename: $decryptedFile,
        flags: OPENSSL_CMS_BINARY | OPENSSL_CMS_NOSIGS | OPENSSL_CMS_NOVERIFY,
        ca_info: [],
        untrusted_certificates_filename: $allPossibleSenderCertificates,
        content: $verifiedFile,
        encoding: OPENSSL_ENCODING_DER
    );
    return file_get_contents($verifiedFile);
}
На оваа страница

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

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

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

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

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