Crypt::SMIME::JA - S/MIMEの署名、検証、暗号化、復号 |
Crypt::SMIME::JA - S/MIMEの署名、検証、暗号化、復号
use Crypt::SMIME;
my $plain = <<'EOF'; From: alice@example.org To: bob@example.com Subject: Crypt::SMIME test
This is a test mail. Please ignore... EOF
my $smime = Crypt::SMIME->new(); $smime->setPrivateKey($privkey, $crt); # $smime->setPublicKey([$icacert]); # if need be.
my $signed = $smime->sign($plain); print $signed;
S/MIMEの署名、検証、暗号化、復号を行うクラス。 libcrypto (http://www.openssl.org) が必要。
new()
my $smime = Crypt::SMIME->new();
引数無し
setPrivateKey()
$smime->setPrivateKey($key, $crt); $smime->setPrivateKey($key, $crt, $password);
秘密鍵を設定する。ここで設定された秘密鍵は署名と復号の際に用いられる。 ファイル名ではなく、鍵本体を渡す。
対応しているフォーマットは PEM のみ。鍵の読み込みに失敗した場合はdieする。
setPublicKey()
$smime->setPublicKey($crt); $smime->setPublicKey([$crt1, $crt2, ...]);
公開鍵を設定する。ここで設定された公開鍵は署名への添付、署名の検証、 そして暗号化の際に用いられる。
対応しているフォーマットは PEM のみ。鍵の読み込みに失敗した場合はdieする。
setPublicKeyStore()
$smime->setPublicKeyStore($path, ...);
信頼している証明書 (複数可) が入ったファイルやディレクトリのパス (複数可) を設定する。ここで設定された証明書ストアは、署名の検証の際に用いられる。
証明書ストアの読み込みに失敗した場合はdieする。
sign()
$signed_mime = $smime->sign($raw_mime);
署名を行い、MIMEメッセージを返す。可能な署名はクリア署名のみ。
Content-*
, MIME-*
及び Subject
を除いたヘッダは
multipartのトップレベルに移される。
Subject
はS/MIMEを認識できないメーラのために, multipartの
トップレベルと保護されるメッセージの両側に配置される。
元の MIME メッセージ、秘密鍵、またはその証明書のいずれかが汚染されている (tainted) ならば、署名されたメッセージも汚染される。
signonly()
$sign = $smime->signonly($prepared_mime);
署名の計算を行う。
$sign
はBASE64でエンコードされて返る。
$prepared_mime
には, prepareSmimeMessage で返される値を渡す。
元の MIME メッセージ、秘密鍵、またはその証明書のいずれかが汚染されている (tainted) ならば、生成された署名も汚染される。
prepareSmimeMessage()
($prepared_mime, $outer_header) = $smime->prepareSmimeMessage($source_mime);
署名用のメッセージを準備する。
$prepared_mime
には署名用に修正されたMIMEメッセージを返す。
$outer_header
は、S/MIMEの外側に付与するヘッダを返す。
$prepared_mime
の本文は$source_mime
と同じ物となるが、
ヘッダに関してはContent-*
, MIME-*
, Subject
を除く全てが
取り除かれる。取り除かれたヘッダは $outer_header
に返される。
S/MIMEメッセージを構築する際にはこれをS/MIMEメッセージのヘッダに追加する。
Subject
ヘッダのみは $prepared_mime
と $outer_header
の両方に
現れる点に注意。
check()
$source_mime = $smime->check($signed_mime);
検証を行う。検証に失敗した場合はその理由と共にdieする。
元の S/MIME メッセージ、または公開鍵の少なくとも一つが汚染されている (tainted) ならば、検証されたメッセージも汚染される。
encrypt()
$encrypted_mime = $smime->encrypt($raw_mime);
暗号化を行う。
Content-*
, MIME-*
及び Subject
を除いたヘッダは
multipartのトップレベルにコピーされる。
Subject
はS/MIMEを認識できないメーラのために, multipartの
トップレベルと保護されるメッセージの両側に配置される。
元の MIME メッセージ、または公開鍵の少なくとも一つが汚染されている (tainted) ならば、暗号化されたメッセージも汚染される。
decrypt()
$decrypted_mime = $smime->decrypt($encrypted_mime);
復号を行う。復号に失敗した場合はその理由と共にdieする。
元の S/MIME メッセージ、秘密鍵、またはその証明書のいずれかが汚染されている (tainted) ならば、復号されたメッセージも汚染される。
isSigned()
$is_signed = $smime->isSigned($mime);
渡されたMIMEメッセージがS/MIMEで署名されたものなら真を返す。 クリア署名かどうかは問わない。 署名後に暗号化したメッセージを渡した場合は、署名が直接見えない為、 偽を返す事に注意。
isEncrypted()
$is_encrypted = $smime->isEncrypted($mime);
渡されたMIMEメッセージがS/MIMEで暗号化されたものなら真を返す。 暗号化後に署名したメッセージを渡した場合は、暗号文が直接見えない為、 偽を返す事に注意。
extractCertificates()
@certs = @{Crypt::SMIME::extractCertificates($data)}; @certs = @{Crypt::SMIME::extractCertificates($data, $type)};
S/MIMEメッセージまたはPKCS#7オブジェクトに含まれるX.509証明書
(や証明書失効リスト) をすべて取得する。
オプションの$typeパラメータでデータの種類を指定できる。
Crypt::SMIME::FORMAT_SMIME
(初期値) はS/MIMEメッセージ、
Crypt::SMIME::FORMAT_ASN1
はバイナリ形式、
Crypt::SMIME::FORMAT_PEM
はPEM形式。
getSigners()
@certs = @{Crypt::SMIME::getSigners($data)}; @certs = @{Crypt::SMIME::getSigners($data, $type)};
S/MIMEメッセージまたはPKCS#7オブジェクトに含まれる、署名者の X.509証明書を取得する。オプションの$typeパラメータでデータの種類を指定できる。
この関数が返す公開鍵は検証されていないことに注意。 公開鍵が有効であることを確かめるにはcheck()を実行すること。
Copyright 2006-2014 YMIRLINK Inc. All Rights Reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself
Bug reports and comments to: tl@tripletail.jp
Crypt::SMIME::JA - S/MIMEの署名、検証、暗号化、復号 |