]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - secure/lib/libcrypto/man/PKCS7_sign.3
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / secure / lib / libcrypto / man / PKCS7_sign.3
1 .\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.20)
2 .\"
3 .\" Standard preamble:
4 .\" ========================================================================
5 .de Sp \" Vertical space (when we can't use .PP)
6 .if t .sp .5v
7 .if n .sp
8 ..
9 .de Vb \" Begin verbatim text
10 .ft CW
11 .nf
12 .ne \\$1
13 ..
14 .de Ve \" End verbatim text
15 .ft R
16 .fi
17 ..
18 .\" Set up some character translations and predefined strings.  \*(-- will
19 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
20 .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
21 .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
22 .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
23 .\" nothing in troff, for use with C<>.
24 .tr \(*W-
25 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
26 .ie n \{\
27 .    ds -- \(*W-
28 .    ds PI pi
29 .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
30 .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
31 .    ds L" ""
32 .    ds R" ""
33 .    ds C` ""
34 .    ds C' ""
35 'br\}
36 .el\{\
37 .    ds -- \|\(em\|
38 .    ds PI \(*p
39 .    ds L" ``
40 .    ds R" ''
41 'br\}
42 .\"
43 .\" Escape single quotes in literal strings from groff's Unicode transform.
44 .ie \n(.g .ds Aq \(aq
45 .el       .ds Aq '
46 .\"
47 .\" If the F register is turned on, we'll generate index entries on stderr for
48 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
49 .\" entries marked with X<> in POD.  Of course, you'll have to process the
50 .\" output yourself in some meaningful fashion.
51 .ie \nF \{\
52 .    de IX
53 .    tm Index:\\$1\t\\n%\t"\\$2"
54 ..
55 .    nr % 0
56 .    rr F
57 .\}
58 .el \{\
59 .    de IX
60 ..
61 .\}
62 .\"
63 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
64 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
65 .    \" fudge factors for nroff and troff
66 .if n \{\
67 .    ds #H 0
68 .    ds #V .8m
69 .    ds #F .3m
70 .    ds #[ \f1
71 .    ds #] \fP
72 .\}
73 .if t \{\
74 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
75 .    ds #V .6m
76 .    ds #F 0
77 .    ds #[ \&
78 .    ds #] \&
79 .\}
80 .    \" simple accents for nroff and troff
81 .if n \{\
82 .    ds ' \&
83 .    ds ` \&
84 .    ds ^ \&
85 .    ds , \&
86 .    ds ~ ~
87 .    ds /
88 .\}
89 .if t \{\
90 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
91 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
92 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
93 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
94 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
95 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
96 .\}
97 .    \" troff and (daisy-wheel) nroff accents
98 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
99 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
100 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
101 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
102 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
103 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
104 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
105 .ds ae a\h'-(\w'a'u*4/10)'e
106 .ds Ae A\h'-(\w'A'u*4/10)'E
107 .    \" corrections for vroff
108 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
109 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
110 .    \" for low resolution devices (crt and lpr)
111 .if \n(.H>23 .if \n(.V>19 \
112 \{\
113 .    ds : e
114 .    ds 8 ss
115 .    ds o a
116 .    ds d- d\h'-1'\(ga
117 .    ds D- D\h'-1'\(hy
118 .    ds th \o'bp'
119 .    ds Th \o'LP'
120 .    ds ae ae
121 .    ds Ae AE
122 .\}
123 .rm #[ #] #H #V #F C
124 .\" ========================================================================
125 .\"
126 .IX Title "PKCS7_sign 3"
127 .TH PKCS7_sign 3 "2013-02-05" "0.9.8y" "OpenSSL"
128 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
129 .\" way too many mistakes in technical documents.
130 .if n .ad l
131 .nh
132 .SH "NAME"
133 PKCS7_sign \- create a PKCS#7 signedData structure
134 .SH "SYNOPSIS"
135 .IX Header "SYNOPSIS"
136 .Vb 1
137 \& #include <openssl/pkcs7.h>
138 \&
139 \& PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, int flags);
140 .Ve
141 .SH "DESCRIPTION"
142 .IX Header "DESCRIPTION"
143 \&\fIPKCS7_sign()\fR creates and returns a PKCS#7 signedData structure. \fBsigncert\fR
144 is the certificate to sign with, \fBpkey\fR is the corresponsding private key.
145 \&\fBcerts\fR is an optional additional set of certificates to include in the
146 PKCS#7 structure (for example any intermediate CAs in the chain).
147 .PP
148 The data to be signed is read from \s-1BIO\s0 \fBdata\fR.
149 .PP
150 \&\fBflags\fR is an optional set of flags.
151 .SH "NOTES"
152 .IX Header "NOTES"
153 Any of the following flags (ored together) can be passed in the \fBflags\fR parameter.
154 .PP
155 Many S/MIME clients expect the signed content to include valid \s-1MIME\s0 headers. If
156 the \fB\s-1PKCS7_TEXT\s0\fR flag is set \s-1MIME\s0 headers for type \fBtext/plain\fR are prepended
157 to the data.
158 .PP
159 If \fB\s-1PKCS7_NOCERTS\s0\fR is set the signer's certificate will not be included in the
160 \&\s-1PKCS7\s0 structure, the signer's certificate must still be supplied in the \fBsigncert\fR
161 parameter though. This can reduce the size of the signature if the signers certificate
162 can be obtained by other means: for example a previously signed message.
163 .PP
164 The data being signed is included in the \s-1PKCS7\s0 structure, unless \fB\s-1PKCS7_DETACHED\s0\fR 
165 is set in which case it is omitted. This is used for \s-1PKCS7\s0 detached signatures
166 which are used in S/MIME plaintext signed messages for example.
167 .PP
168 Normally the supplied content is translated into \s-1MIME\s0 canonical format (as required
169 by the S/MIME specifications) if \fB\s-1PKCS7_BINARY\s0\fR is set no translation occurs. This
170 option should be used if the supplied data is in binary format otherwise the translation
171 will corrupt it.
172 .PP
173 The signedData structure includes several PKCS#7 autenticatedAttributes including
174 the signing time, the PKCS#7 content type and the supported list of ciphers in
175 an SMIMECapabilities attribute. If \fB\s-1PKCS7_NOATTR\s0\fR is set then no authenticatedAttributes
176 will be used. If \fB\s-1PKCS7_NOSMIMECAP\s0\fR is set then just the SMIMECapabilities are
177 omitted.
178 .PP
179 If present the SMIMECapabilities attribute indicates support for the following
180 algorithms: triple \s-1DES\s0, 128 bit \s-1RC2\s0, 64 bit \s-1RC2\s0, \s-1DES\s0 and 40 bit \s-1RC2\s0. If any
181 of these algorithms is disabled then it will not be included.
182 .PP
183 If the flags \fB\s-1PKCS7_PARTSIGN\s0\fR is set then the returned \fB\s-1PKCS7\s0\fR structure
184 is just initialized ready to perform the signing operation. The signing
185 is however \fBnot\fR performed and the data to be signed is not read from
186 the \fBdata\fR parameter. Signing is deferred until after the data has been
187 written. In this way data can be signed in a single pass. Currently the
188 flag \fB\s-1PKCS7_DETACHED\s0\fR \fBmust\fR also be set.
189 .SH "NOTES"
190 .IX Header "NOTES"
191 Currently the flag \fB\s-1PKCS7_PARTSIGN\s0\fR is only supported for detached
192 data. If this flag is set the returned \fB\s-1PKCS7\s0\fR structure is \fBnot\fR
193 complete and outputting its contents via a function that does not
194 properly finalize the \fB\s-1PKCS7\s0\fR structure will give unpredictable 
195 results.
196 .PP
197 At present only the \fISMIME_write_PKCS7()\fR function properly finalizes the
198 structure.
199 .SH "BUGS"
200 .IX Header "BUGS"
201 \&\fIPKCS7_sign()\fR is somewhat limited. It does not support multiple signers, some
202 advanced attributes such as counter signatures are not supported.
203 .PP
204 The \s-1SHA1\s0 digest algorithm is currently always used.
205 .PP
206 When the signed data is not detached it will be stored in memory within the
207 \&\fB\s-1PKCS7\s0\fR structure. This effectively limits the size of messages which can be
208 signed due to memory restraints. There should be a way to sign data without
209 having to hold it all in memory, this would however require fairly major
210 revisions of the OpenSSL \s-1ASN1\s0 code.
211 .SH "RETURN VALUES"
212 .IX Header "RETURN VALUES"
213 \&\fIPKCS7_sign()\fR returns either a valid \s-1PKCS7\s0 structure or \s-1NULL\s0 if an error occurred.
214 The error can be obtained from \fIERR_get_error\fR\|(3).
215 .SH "SEE ALSO"
216 .IX Header "SEE ALSO"
217 \&\fIERR_get_error\fR\|(3), \fIPKCS7_verify\fR\|(3)
218 .SH "HISTORY"
219 .IX Header "HISTORY"
220 \&\fIPKCS7_sign()\fR was added to OpenSSL 0.9.5
221 .PP
222 The \fB\s-1PKCS7_PARTSIGN\s0\fR flag was added in OpenSSL 0.9.8