&reftitle.constants;
&extension.constants;
目的を調べるフラグ
X509_PURPOSE_SSL_CLIENT
(int)
X509_PURPOSE_SSL_SERVER
(int)
X509_PURPOSE_NS_SSL_SERVER
(int)
X509_PURPOSE_SMIME_SIGN
(int)
X509_PURPOSE_SMIME_ENCRYPT
(int)
X509_PURPOSE_CRL_SIGN
(int)
X509_PURPOSE_ANY
(int)
非対称暗号化のパディングフラグ
OPENSSL_PKCS1_PADDING
(int)
OPENSSL_SSLV23_PADDING
(int)
OPENSSL_NO_PADDING
(int)
OPENSSL_PKCS1_OAEP_PADDING
(int)
キーの種類
OPENSSL_KEYTYPE_RSA
(int)
OPENSSL_KEYTYPE_DSA
(int)
OPENSSL_KEYTYPE_DH
(int)
OPENSSL_KEYTYPE_EC
(int)
この定数が使えるのは、PHP をコンパイルする際に OpenSSL 0.9.8 以降を使ったときだけです。
PKCS7 フラグ/定数
S/MIME 関数はビットフィールドを使用して指定したフラグを使用します。
このビットフィールドには、以下の値を一つ以上含むことが可能です。
PKCS7 定数
定数
説明
PKCS7_TEXT
(int)
text/plain content type ヘッダを暗号化/署名されたメッセージに
追加します。復号化または認証を行う際には、このヘッダは出力から
取り除かれます。復号化または認証されたメッセージが MIME
型 text/plain でない場合、エラーとなります。
PKCS7_BINARY
(int)
通常は、入力されたメッセージは CR および LF を行端として使用した
「正規化」された形式に変換されます。こらは、S/MIME の規格に
基づくものです。このオプションが指定された場合、変換は行われません。
この機能は、MIME 形式でないバイナリデータを処理する際に
便利です。
PKCS7_NOINTERN
(int)
メッセージを認証する際に、通常、メッセージに含まれる証明書が
証明書にサインする際に検索されます。
このオプションでは、
openssl_pkcs7_verify の
untrusted_certificates_filename パラメータで指定した証明書
のみが使用されます。しかし、指定された証明書を信頼されていな
い CA として使用することも可能です。
PKCS7_NOVERIFY
(int)
サインつきメッセージをサインした証明書の署名について
検証しません。
PKCS7_NOCHAIN
(int)
サインを行った側の証明書の認証の連鎖を行いません。
この場合、サイン付きのメッセージにある証明書を未認証の CA
として使用しません。
PKCS7_NOCERTS
(int)
メッセージにサインする際、通常はサインをする人の証明書が挿入
されますが、このオプションを指定した場合はそうなりません。これに
よりサイン付きのメッセージのサイズは小さくなりますが、認証
側が(例えば、openssl_pkcs7_verify の
untrusted_certificates_filename を用いて渡すことにより)
サインをした人の証明書のコピーをローカルに用意する必要があります。
PKCS7_NOATTR
(int)
通常、メッセージがサインされる時、サインした時間やサポートされる
対象アルゴリズムを含む一連の属性が付加されます。このオプションを
指定した場合、それらの属性は付加されません。
PKCS7_DETACHED
(int)
メッセージにサインをする際、MIME型 "multipart/signed"
を指定してクリアテキストでサインを行います。これは、
openssl_pkcs7_sign において
フラグを指定しなかった場合の flags
パラメータのデフォルトです。このオプションをオフにした場合、
メッセージは不透明なサインによりサインされます。これは、
メールリレイによる変換に対してより耐性がありますが、S/MIME を
サポートしないメールエージェントでは読むことはできません。
PKCS7_NOSIGS
(int)
メッセージにサインや認証を試みません。
PKCS7_NOOLDMIMETYPE
(int)
PHP 8.3.0 以降で利用可能です。
メッセージを暗号化する場合に、content-type の値として
application/x-pkcs7-mime ではなく
application/pkcs7-mime を設定します。
CMS (暗号メッセージシンタックス) 関連のフラグ/定数
CMS 関連の関数は、以下のうちひとつ以上の値をビットフィールドを使って指定することで、フラグを利用します。
CMS 関連の定数
定数
説明
OPENSSL_CMS_TEXT
(int)
暗号化済み/署名済み のメッセージに対して text/plain のヘッダを追加します。
復号化 または 検証する際に、これらのヘッダは出力から削除されます -
もし 複号化済み/検証済み メッセージの MIMEタイプ が text/plain
でない場合、エラーが発生します。
OPENSSL_CMS_BINARY
(int)
通常、入力されるメッセージは
行末を CR と LF として用いる
"canonical" フォーマットに変換されます:
これは、CMS の仕様です。
このオプションが指定されると、変換は行われません。
これは、
CMS フォーマットではない可能性があるバイナリデータを扱うのに便利です。
OPENSSL_CMS_NOINTERN
(int)
メッセージを検証する際、
通常は(もしあれば)メッセージに含まれる証明書を
署名に用いた証明書として探します。
このオプションを使うと、
openssl_cms_verify 関数の
untrusted_certificates_filename
引数で指定した証明書だけを検証に使うようになります。
ここで証明書を指定しても、
それは信頼されない証明書のまま引き続き使われます。
OPENSSL_CMS_NOVERIFY
(int)
署名されたメッセージの、署名者の証明書を検証しません。
OPENSSL_CMS_NOCERTS
(int)
メッセージに署名する場合、
通常は署名者の証明書がメッセージに付加されます -
このオプションを使うと、その証明書を除去できます。
証明書を除去すると、署名済みのメッセージのサイズが減りますが、
(たとえば、openssl_cms_verify
関数に untrusted_certificates_filename
を使って渡すなどして)
検証する側が署名者の証明書をローカルに持っておく必要があります。
OPENSSL_CMS_NOATTR
(int)
通常、メッセージが署名済みの場合、
署名した時刻やサポートされている共通鍵アルゴリズムの情報が含まれる、
一連の属性情報が付加されます。
このオプションを使うと、その属性を含めないようにすることができます。
OPENSSL_CMS_DETACHED
(int)
メッセージに署名する際、
MIMEタイプ "multipart/signed" を使って、
平文で署名します。
これは、openssl_cms_sign
で何も flags
を指定しなかったときのデフォルトの動作です。
このオプションを無効にした場合、メッセージは
opaque 署名を使って署名されます。
これは、メールがリレーされる際の変換を防ぐ一方で、
S/MIME をサポートしていないエージェントでは読めなくなります。
OPENSSL_CMS_NOSIGS
(int)
メッセージの署名を検証しません。
OPENSSL_CMS_OLDMIMETYPE
(int)
PHP 8.3.0 以降で利用可能です。
メッセージを暗号化する場合に、content-type の値として
application/pkcs7-mime ではなく
application/x-pkcs7-mime を設定します。
署名アルゴリズム
OPENSSL_ALGO_DSS1
(int)
OPENSSL_ALGO_SHA1
(int)
openssl_sign および
openssl_verify
のデフォルトアルゴリズムとして用いられます。
OPENSSL_ALGO_SHA224
(int)
OPENSSL_ALGO_SHA256
(int)
OPENSSL_ALGO_SHA384
(int)
OPENSSL_ALGO_SHA512
(int)
OPENSSL_ALGO_RMD160
(int)
OPENSSL_ALGO_MD5
(int)
OPENSSL_ALGO_MD4
(int)
OPENSSL_ALGO_MD2
(int)
この定数が使えるのは
PHP のコンパイル時に MD2 サポートを有効にした場合だけになりました。
MD2 サポートを有効にするには、PHP のコンパイル時に
-DHAVE_OPENSSL_MD2_H CFLAG を渡し、かつ OpenSSL 1.0.0 以降のコンパイル時に
enable-md2 を指定する必要があります。
暗号化方式
OPENSSL_DEFAULT_STREAM_CIPHERS
(string)
デフォルトの暗号リスト
OPENSSL_CIPHER_RC2_40
(int)
OPENSSL_CIPHER_RC2_128
(int)
OPENSSL_CIPHER_RC2_64
(int)
OPENSSL_CIPHER_DES
(int)
OPENSSL_CIPHER_3DES
(int)
OPENSSL_CIPHER_AES_128_CBC
(int)
OPENSSL_CIPHER_AES_192_CBC
(int)
OPENSSL_CIPHER_AES_256_CBC
(int)
バージョン定数
OPENSSL_VERSION_TEXT
(string)
OPENSSL_VERSION_NUMBER
(int)
Server Name Indication 定数
OPENSSL_TLSEXT_SERVER_NAME
(int)
SNI サポートが有効か否か。
この定数を使うには、
OpenSSL 0.9.8j 以降を使って PHP をビルドしている必要があります。
その他の定数
OPENSSL_RAW_DATA
(int)
openssl_encrypt や openssl_decrypt 関数で
この値が設定されると、生のデータがそのまま返されます。
設定されない場合、Base64 エンコードされたデータが呼び出し側に返されます。
OPENSSL_DONT_ZERO_PAD_KEY
(int)
デフォルトのキーの長さより短いキーについて
openssl_encrypt
がパディングを行わないようにします。
OPENSSL_ZERO_PADDING
(int)
デフォルトでは、暗号化の操作は標準的なブロックパディングを使ってパディングされ、
追加されたパディングは、復号化される際にチェックされ、除去されます。
openssl_encrypt や openssl_decrypt の
options に OPENSSL_ZERO_PADDING
が指定された場合、パディングは行われないので、
暗号化または復号化されるデータの総量はブロックサイズの倍数でなければなりません。
そうでない場合、エラーが発生します。
OPENSSL_ENCODING_SMIME
(int)
エンコーディングが S/MIME 形式であることを示します。
OPENSSL_ENCODING_DER
(int)
エンコーディングが DER
形式であることを示します。
OPENSSL_ENCODING_PEM
(int)
エンコーディングが PEM
形式であることを示します。