openssl_pkcs7_sign

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

openssl_pkcs7_sign — S/MIME 메시지 서명


설명

openssl_pkcs7_sign(
    string $input_filename,
    string $output_filename,
    OpenSSLCertificate|string $certificate,
    OpenSSLAsymmetricKey|OpenSSLCertificate|array|string $private_key,
    ?array $headers,
    int $flags = PKCS7_DETACHED,
    ?string $untrusted_certificates_filename = null
): bool
                

openssl_pkcs7_sign()input_filename이라는 파일의 내용을 가져와서 인증서와 certificateprivate_key 매개변수로 지정된 일치하는 개인 키를 사용하여 서명합니다.


매개변수

input_filename
디지털 서명하려는 입력 파일입니다.
output_filename
디지털 서명이 기록될 파일입니다.
certificate
input_filename을 디지털 서명하는 데 사용되는 X.509 인증서입니다. 유효한 값 목록은 Key/Certificate parameters 매개변수를 참조하세요.
private_key
private_keycertificate에 해당하는 개인 키입니다. 유효한 값 목록은 Public/Private Key parameters를 참조하십시오.
headers
headers는 서명된 후 데이터 앞에 추가될 헤더 배열입니다(이 매개변수의 형식에 대한 자세한 내용은 openssl_pkcs7_encrypt() 참조).
flags
flags를 사용하여 출력을 변경할 수 있습니다. PKCS7 constants를 참조하십시오.
untrusted_certificates_filename
untrusted_certificates_filename은 예를 들어 수신자가 사용한 인증서를 확인하는 데 사용할 수 있는 서명에 포함할 많은 추가 인증서가 포함된 파일의 이름을 지정합니다.

반환 값

성공하면 true를, 실패하면 false를 반환합니다.


변경 로그

버전 설명
8.0.0 이제 certificateOpenSSLCertificate 인스턴스를 허용합니다. 이전에는 OpenSSL X.509 CSR 유형의 리소스가 허용되었습니다.
8.0.0 private_key는 이제 OpenSSLAsymmetricKey 또는 OpenSSLCertificate 인스턴스를 허용합니다. 이전에는 OpenSSL key 또는 OpenSSL X.509 CSR 유형의 리소스가 허용되었습니다.

Examples

예제 #1 openssl_pkcs7_sign() 예제

                  
<?php
// the message you want to sign so that recipient can be sure it was you that
// sent it
$data = <<<EOD

You have my authorization to spend $10,000 on dinner expenses.

The CEO
EOD;
// save message to file
$fp = fopen("msg.txt", "w");
fwrite($fp, $data);
fclose($fp);
// encrypt it
if (openssl_pkcs7_sign("msg.txt", "signed.txt", "file://mycert.pem",
    array("file://mycert.pem", "mypassphrase"),
    array("To" => "joes@example.com", // keyed syntax
          "From: HQ <ceo@example.com>", // indexed syntax
          "Subject" => "Eyes only")
    )) {
    // message signed - send it!
    exec(ini_get("sendmail_path") . " < signed.txt");
}
?>