TL::SMIME - S/MIMEの署名、検証、暗号化、復号化

# NAME

TL::SMIME - S/MIMEの署名、検証、暗号化、復号化

# SYNOPSIS

      use TL::SMIME;

      my $plain = <<'EOF';
      From: alice@example.org
      To: bob@example.com
      Subject: TL::SMIME test

      This is a test mail. Please ignore...
      EOF

      my $smime = TL::SMIME->new();
      $smime->setPrivateKey($privkey, $crt);
      # $smime->setPublicKey([$icacert]); # if needed.

      my $signed = $smime->sign($plain);
      print $signed;

# DESCRIPTION

S/MIMEの署名、検証、暗号化、復号化を行うクラス。

cryptoライブラリ(http://www.openssl.org)が必要。

## METHODS

new

  引数無し

setPrivateKey

        $smime->setPrivateKey($key, $crt);
        $smime->setPrivateKey($key, $crt, $password);

  秘密鍵を設定する。ここで設定された秘密鍵は署名と復号化の際に用いられる。 ファイル名ではなく、鍵本体を渡す。

  対応しているフォーマットは PEM のみ。鍵の読み込みに失敗した場合はdieする。

setPublicKey

        $smime->setPublicKey($crt);
        $smime->setPublicKey([$crt1, $crt2, ...]);

  公開鍵を設定する。ここで設定された公開鍵は署名への添付、署名の検証、 そして暗号化の際に用いられる。

  対応しているフォーマットは PEM のみ。鍵の読み込みに失敗した場合はdieする。

sign

        $signed_mime = $smime->sign($raw_mime);

  署名を行い、MIMEメッセージを返す。可能な署名はクリア署名のみ。

  `Content-*`, `MIME-*` 及び `Subject` を除いたヘッダは multipartのトップレベルにコピーされる。 `Subject` はS/MIMEを認識できないメーラのために, multipartの トップレベルと保護されるメッセージの両側に配置される。

signonly

        $sign = $smime->signonly($prepared_mime);

  署名の計算を行う。 `$sign` はBASE64でエンコードされて返る。 `$prepared_mime` には, "prepareSmimeMessage" で返される値を渡す。

prepareSmimeMessage

        ($prepared_mime,$outer_header) = $smime->prepareSmimeMessage($source_mime);

  署名用のメッセージを準備する。 `$mime` には著名用に修正されたMIMEメッセージを返す。 `$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する。

encrypt

        $encrypted_mime = $smime->encrypt($raw_mime);

  暗号化を行う。

  `Content-*`, `MIME-*` 及び `Subject` を除いたヘッダは multipartのトップレベルにコピーされる。 `Subject` はS/MIMEを認識できないメーラのために, multipartの トップレベルと保護されるメッセージの両側に配置される。

decrypt

        $decrypted_mime = $smime->decrypt($encrypted_mime);

  復号化を行う。復号化に失敗した場合はその理由と共にdieする。

isSigned

        $is_signed = $smime->isSigned($mime);

  渡されたMIMEメッセージがS/MIMEで署名されたものなら真を返す。 クリア署名かどうかは問わない。 署名後に暗号化したメッセージを渡した場合は、署名が直接見えない為、 偽を返す事に注意。

isEncrypted

        $is_encrypted = $smime->isEncrypted($mime);

  渡されたMIMEメッセージがS/MIMEで暗号化されたものなら真を返す。 暗号化後に署名したメッセージを渡した場合は、暗号文が直接見えない為、 偽を返す事に注意。

TL::SMIME - S/MIMEの署名、検証、暗号化、復号化

# INDEX

- DESCRIPTION
- METHODS
- NAME
- SYNOPSIS
- check
- decrypt
- encrypt
- isEncrypted
- isSigned
- new
- prepareSmimeMessage
- setPrivateKey
- setPublicKey
- sign
- signonly

TL::SMIME - S/MIMEの署名、検証、暗号化、復号化