1SMIME::JA(3)          User Contributed Perl Documentation         SMIME::JA(3)
2
3
4

NAME

6       Crypt::SMIME::JA - S/MIMEの署名、検証、暗号化、復号
7

概要

9         use Crypt::SMIME;
10
11         my $plain = <<'EOF';
12         From: alice@example.org
13         To: bob@example.com
14         Subject: Crypt::SMIME test
15
16         This is a test mail. Please ignore...
17         EOF
18
19         my $smime = Crypt::SMIME->new();
20         $smime->setPrivateKey($privkey, $crt);
21         # $smime->setPublicKey([$icacert]); # if need be.
22
23         my $signed = $smime->sign($plain);
24         print $signed;
25

説明

27       S/MIMEの署名、検証、暗号化、復号を行うクラス。 libcrypto
28       (<http://www.openssl.org>) が必要。
29

エクスポート

31       既定でエクスポートされるシンボルは無いが、次のシンボルはエクスポート可能である。
32
33       "NO_CHECK_CERTIFICATE"
34           "check()" を参照。
35
36       "FORMAT_SMIME"
37       "FORMAT_ASN1"
38       "FORMAT_PEM"
39           "extractCertificates()" を参照。
40
41       ":constants"
42           上記のもの全てをエクスポートする。
43

メソッド

45       new()
46             my $smime = Crypt::SMIME->new();
47
48           引数無し
49
50       setPrivateKey()
51             $smime->setPrivateKey($key, $crt);
52             $smime->setPrivateKey($key, $crt, $password);
53
54           秘密鍵を設定する。ここで設定された秘密鍵は署名と復号の際に用いられる。
55           ファイル名ではなく、鍵本体を渡す。
56
57           対応しているフォーマットは PEM
58           のみ。鍵の読み込みに失敗した場合はdieする。
59
60       setPrivateKeyPkcs12()
61             $smime->setPrivateKeyPkcs12($key, $pkcs12);
62             $smime->setPrivateKeyPkcs12($key, $pkcs12, $password);
63
64           秘密鍵およびその X.509 証明書を PKCS#12
65           から読み込んで設定する。秘密鍵は署名と復号の際に用いられる。
66           読み込みに失敗した場合は die する。
67
68       setPublicKey()
69             $smime->setPublicKey($crt);
70             $smime->setPublicKey([$crt1, $crt2, ...]);
71
72           公開鍵を設定する。ここで設定された公開鍵は署名への添付、署名の検証、
73           そして暗号化の際に用いられる。
74
75           対応しているフォーマットは PEM
76           のみ。鍵の読み込みに失敗した場合はdieする。
77
78       setPublicKeyStore()
79             $smime->setPublicKeyStore($path, ...);
80
81           信頼している証明書 (複数可) が入ったファイルやディレクトリのパス
82           (複数可)
83           を設定する。ここで設定された証明書ストアは、署名の検証の際に用いられる。
84
85           証明書ストアの読み込みに失敗した場合はdieする。
86
87       sign()
88             $signed_mime = $smime->sign($raw_mime);
89
90           署名を行い、MIMEメッセージを返す。可能な署名はクリア署名のみ。
91
92           "Content-*", "MIME-*" 及び "Subject" を除いたヘッダは
93           multipartのトップレベルに移される。 "Subject"
94           はS/MIMEを認識できないメーラのために, multipartの
95           トップレベルと保護されるメッセージの両側に配置される。
96
97           元の MIME
98           メッセージ、秘密鍵、またはその証明書のいずれかが汚染されている
99           (tainted) ならば、署名されたメッセージも汚染される。
100
101       signonly()
102             $sign = $smime->signonly($prepared_mime);
103
104           署名の計算を行う。 $sign はBASE64でエンコードされて返る。
105           $prepared_mime には, "prepareSmimeMessage" で返される値を渡す。
106
107           元の MIME
108           メッセージ、秘密鍵、またはその証明書のいずれかが汚染されている
109           (tainted) ならば、生成された署名も汚染される。
110
111       prepareSmimeMessage()
112             ($prepared_mime, $outer_header)
113                 = $smime->prepareSmimeMessage($source_mime);
114
115           署名用のメッセージを準備する。 $prepared_mime
116           には署名用に修正されたMIMEメッセージを返す。 $outer_header
117           は、S/MIMEの外側に付与するヘッダを返す。
118
119           $prepared_mime の本文は$source_mimeと同じ物となるが、
120           ヘッダに関しては"Content-*", "MIME-*", "Subject" を除く全てが
121           取り除かれる。取り除かれたヘッダは $outer_header に返される。
122           S/MIMEメッセージを構築する際にはこれをS/MIMEメッセージのヘッダに追加する。
123           "Subject" ヘッダのみは $prepared_mime と $outer_header の両方に
124           現れる点に注意。
125
126       check()
127             use Crypt::SMIME qw(:constants);
128
129             $source_mime = $smime->check($signed_mime);
130             $source_mime = $smime->check($signed_mime, $flags);
131
132           検証を行う。検証に失敗した場合はその理由と共にdieする。
133
134           $flags として "Crypt::SMIME::NO_CHECK_CERTIFICATE"
135           オプションを指定した場合には、署名者の証明書チェーンを検証しない。
136           $flags のデフォルト値は 0
137           であり、この場合には全ての整合性についての検証を行う。
138
139           元の S/MIME メッセージ, $flags, 検証時刻 ("setAtTime"), または
140           公開鍵の少なくとも一つが汚染されている(tainted)
141           ならば、検証されたメッセージも汚染される。
142
143       encrypt()
144             $encrypted_mime = $smime->encrypt($raw_mime);
145
146           暗号化を行う。
147
148           "Content-*", "MIME-*" 及び "Subject" を除いたヘッダは
149           multipartのトップレベルにコピーされる。 "Subject"
150           はS/MIMEを認識できないメーラのために, multipartの
151           トップレベルと保護されるメッセージの両側に配置される。
152
153           元の MIME メッセージ、または公開鍵の少なくとも一つが汚染されている
154           (tainted) ならば、暗号化されたメッセージも汚染される。
155
156       decrypt()
157             $decrypted_mime = $smime->decrypt($encrypted_mime);
158
159           復号を行う。復号に失敗した場合はその理由と共にdieする。
160
161           元の S/MIME
162           メッセージ、秘密鍵、またはその証明書のいずれかが汚染されている
163           (tainted) ならば、復号されたメッセージも汚染される。
164
165       isSigned()
166             $is_signed = $smime->isSigned($mime);
167
168           渡されたMIMEメッセージがS/MIMEで署名されたものなら真を返す。
169           クリア署名かどうかは問わない。
170           署名後に暗号化したメッセージを渡した場合は、署名が直接見えない為、
171           偽を返す事に注意。
172
173       isEncrypted()
174             $is_encrypted = $smime->isEncrypted($mime);
175
176           渡されたMIMEメッセージがS/MIMEで暗号化されたものなら真を返す。
177           暗号化後に署名したメッセージを渡した場合は、暗号文が直接見えない為、
178           偽を返す事に注意。
179
180       setAtTime()
181             $yesterday = time - (60*60*24);
182             $smime->setAtTime($yesterday);
183
184           検証時に用いる時刻を設定する。デフォルトは現在時刻。 UNIX epoch
185           形式でなければならない。
186

関数

188       extractCertificates()
189             use Crypt::SMIME qw(:constants);
190
191             @certs = @{Crypt::SMIME::extractCertificates($data)};
192             @certs = @{Crypt::SMIME::extractCertificates($data, FORMAT_SMIME)};
193
194           <S/MIMEメッセージまたはPKCS#7オブジェクトに含まれるX.509証明書
195           (や証明書失効リスト) をすべて取得する。 オプションの $type
196           パラメータでデータの種類を指定できる。 "Crypt::SMIME::FORMAT_SMIME"
197           (初期値) はS/MIMEメッセージ、
198           "Crypt::SMIME::FORMAT_ASN1"はバイナリ形式、
199           "Crypt::SMIME::FORMAT_PEM"はPEM形式。
200
201       getSigners()
202             @certs = @{Crypt::SMIME::getSigners($data)};
203             @certs = @{Crypt::SMIME::getSigners($data, $type)};
204
205           S/MIMEメッセージまたはPKCS#7オブジェクトに含まれる、署名者の
206           X.509証明書を取得する。オプションの$typeパラメータでデータの種類を指定できる。
207
208           この関数が返す公開鍵は検証されていないことに注意。
209           公開鍵が有効であることを確かめるにはcheck()を実行すること。
210

著者

212       Copyright 2006-2014 YMIRLINK Inc. All Rights Reserved.
213
214       This library is free software; you can redistribute it and/or modify it
215       under the same terms as Perl itself
216
217       Bug reports and comments to: tl@tripletail.jp
218
219
220
221perl v5.32.0                      2020-09-24                      SMIME::JA(3)
Impressum