summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorschwarze <>2015-02-14 13:54:59 +0000
committerschwarze <>2015-02-14 13:54:59 +0000
commit948b14a55ded39aea589e34e23c19085fd99cac5 (patch)
tree1405d05559e07c92604d649882549c9d103f1bae
parentb8d9c2ac1e0d5ebc096503ffa770326846a8fb7c (diff)
downloadopenbsd-948b14a55ded39aea589e34e23c19085fd99cac5.tar.gz
openbsd-948b14a55ded39aea589e34e23c19085fd99cac5.tar.bz2
openbsd-948b14a55ded39aea589e34e23c19085fd99cac5.zip
While doing development work on pod2mdoc(1),
profit of the occasion to start the conversion of LibreSSL libcrypto manuals from perlpod(1) to mdoc(7). miod@ jmc@ bentley@ agreed to the process when shown this patch.
-rw-r--r--src/lib/libcrypto/man/ASN1_OBJECT_new.361
-rw-r--r--src/lib/libcrypto/man/ASN1_STRING_length.3165
-rw-r--r--src/lib/libcrypto/man/ASN1_STRING_new.358
-rw-r--r--src/lib/libcrypto/man/ASN1_STRING_print_ex.3151
-rw-r--r--src/lib/libcrypto/man/ASN1_generate_nconf.3331
-rw-r--r--src/lib/libcrypto/man/Makefile10
-rw-r--r--src/lib/libssl/src/doc/crypto/ASN1_OBJECT_new.pod46
-rw-r--r--src/lib/libssl/src/doc/crypto/ASN1_STRING_length.pod83
-rw-r--r--src/lib/libssl/src/doc/crypto/ASN1_STRING_new.pod42
-rw-r--r--src/lib/libssl/src/doc/crypto/ASN1_STRING_print_ex.pod95
-rw-r--r--src/lib/libssl/src/doc/crypto/ASN1_generate_nconf.pod265
11 files changed, 773 insertions, 534 deletions
diff --git a/src/lib/libcrypto/man/ASN1_OBJECT_new.3 b/src/lib/libcrypto/man/ASN1_OBJECT_new.3
new file mode 100644
index 0000000000..a636e7182e
--- /dev/null
+++ b/src/lib/libcrypto/man/ASN1_OBJECT_new.3
@@ -0,0 +1,61 @@
1.Dd August 12, 2014
2.Dt ASN1_OBJECT_NEW 3
3.Os
4.Sh NAME
5.Nm ASN1_OBJECT_new ,
6.Nm ASN1_OBJECT_free
7.Nd ASN1 object allocation functions
8.Sh SYNOPSIS
9.In openssl/asn1.h
10.Ft ASN1_OBJECT *
11.Fo ASN1_OBJECT_new
12.Fa void
13.Fc
14.Ft void
15.Fo ASN1_OBJECT_free
16.Fa "ASN1_OBJECT *a"
17.Fc
18.Sh DESCRIPTION
19The ASN1_OBJECT allocation routines allocate and free an
20.Vt ASN1_OBJECT
21structure, which represents an ASN1 OBJECT IDENTIFIER.
22.Pp
23.Fn ASN1_OBJECT_new
24allocates and initializes an
25.Vt ASN1_OBJECT
26structure.
27.Pp
28.Fn ASN1_OBJECT_free
29frees up the
30.Vt ASN1_OBJECT
31structure
32.Fa a .
33.Sh NOTES
34Although
35.Fn ASN1_OBJECT_new
36allocates a new
37.Vt ASN1_OBJECT
38structure, it is almost never used in applications.
39The ASN1 object utility functions such as
40.Xr OBJ_nid2obj 3
41are used instead.
42.Sh RETURN VALUES
43If the allocation fails,
44.Fn ASN1_OBJECT_new
45returns
46.Dv NULL
47and sets an error code that can be obtained by
48.Xr ERR_get_error 3 .
49Otherwise it returns a pointer to the newly allocated structure.
50.Pp
51.Fn ASN1_OBJECT_free
52returns no value.
53.Sh SEE ALSO
54.Xr d2i_ASN1_OBJECT 3 ,
55.Xr ERR_get_error 3 ,
56.Xr OBJ_nid2obj 3
57.Sh HISTORY
58.Fn ASN1_OBJECT_new
59and
60.Fn ASN1_OBJECT_free
61are available in all versions of SSLeay and OpenSSL.
diff --git a/src/lib/libcrypto/man/ASN1_STRING_length.3 b/src/lib/libcrypto/man/ASN1_STRING_length.3
new file mode 100644
index 0000000000..71744587be
--- /dev/null
+++ b/src/lib/libcrypto/man/ASN1_STRING_length.3
@@ -0,0 +1,165 @@
1.Dd July 17, 2014
2.Dt ASN1_STRING_LENGTH 3
3.Os
4.Sh NAME
5.Nm ASN1_STRING_cmp ,
6.Nm ASN1_STRING_data ,
7.Nm ASN1_STRING_dup ,
8.Nm ASN1_STRING_length ,
9.Nm ASN1_STRING_length_set ,
10.Nm ASN1_STRING_set ,
11.Nm ASN1_STRING_to_UTF8 ,
12.Nm ASN1_STRING_type
13.Nd ASN1_STRING utility functions
14.Sh SYNOPSIS
15.In openssl/asn1.h
16.Ft int
17.Fo ASN1_STRING_cmp
18.Fa "ASN1_STRING *a"
19.Fa "ASN1_STRING *b"
20.Fc
21.Ft unsigned char *
22.Fo ASN1_STRING_data
23.Fa "ASN1_STRING *x"
24.Fc
25.Ft ASN1_STRING *
26.Fo ASN1_STRING_dup
27.Fa "ASN1_STRING *a"
28.Fc
29.Ft int
30.Fo ASN1_STRING_length
31.Fa "ASN1_STRING *x"
32.Fc
33.Ft void
34.Fo ASN1_STRING_length_set
35.Fa "ASN1_STRING *x"
36.Fa "int len"
37.Fc
38.Ft int
39.Fo ASN1_STRING_set
40.Fa "ASN1_STRING *str"
41.Fa "const void *data"
42.Fa "int len"
43.Fc
44.Ft int
45.Fo ASN1_STRING_to_UTF8
46.Fa "unsigned char **out"
47.Fa "ASN1_STRING *in"
48.Fc
49.Ft int
50.Fo ASN1_STRING_type
51.Fa "ASN1_STRING *x"
52.Fc
53.Sh DESCRIPTION
54These functions manipulate
55.Vt ASN1_STRING
56structures.
57.Pp
58.Fn ASN1_STRING_cmp
59compares
60.Fa a
61and
62.Fa b
63and returns 0 if the two are identical.
64The string types and the content are compared.
65.Pp
66.Fn ASN1_STRING_data
67returns an internal pointer to the data of
68.Fa x .
69Since this is an internal pointer, it should
70.Em not
71be freed or modified in any way.
72.Pp
73.Fn ASN1_STRING_dup
74returns a copy of the structure
75.Fa a .
76.Pp
77.Fn ASN1_STRING_length
78returns the length of the content of
79.Fa x .
80.Pp
81.Fn ASN1_STRING_length_set
82sets the length attribute of
83.Fa x
84to
85.Fa len .
86It may put
87.Fa x
88into an inconsistent internal state.
89.Pp
90.Fn ASN1_STRING_set
91sets the data of the string
92.Fa str
93to the buffer
94.Fa data
95of length
96.Fa len .
97The supplied data is copied.
98If
99.Fa len
100is -1 then the length is determined by
101.Fn strlen data .
102.Pp
103.Fn ASN1_STRING_to_UTF8
104converts the string
105.Fa in
106to UTF8 format.
107The converted data is copied into a newly allocated buffer
108.Fa out .
109The length of
110.Fa out
111is returned or a negative error code.
112The buffer
113.Fa out
114should be freed using
115.Xr free 3 .
116.Pp
117.Fn ASN1_STRING_type
118returns the type of
119.Fa x ,
120using standard constants such as
121.Dv V_ASN1_OCTET_STRING .
122.Sh NOTES
123Almost all ASN1 types in OpenSSL are represented as
124.Vt ASN1_STRING
125structures.
126Other types such as
127.Vt ASN1_OCTET_STRING
128are simply typedefed to
129.Vt ASN1_STRING
130and the functions call the
131.Vt ASN1_STRING
132equivalents.
133.Vt ASN1_STRING
134is also used for some
135.Sy CHOICE
136types which consist entirely of primitive string types such as
137.Sy DirectoryString
138and
139.Sy Time .
140.Pp
141These functions should
142.Em not
143be used to examine or modify
144.Vt ASN1_INTEGER
145or
146.Vt ASN1_ENUMERATED
147types: the relevant
148.Sy INTEGER
149or
150.Sy ENUMERATED
151utility functions should be used instead.
152.Pp
153In general it cannot be assumed that the data returned by
154.Fn ASN1_STRING_data
155is NUL terminated, and it may contain embedded NUL characters.
156The actual format of the data will depend on the actual string type itself:
157for example for an IA5String the data will be ASCII,
158for a BMPString two bytes per character in big endian format,
159UTF8String will be in UTF8 format.
160.Pp
161Similar care should be take to ensure the data is in the correct format
162when calling
163.Fn ASN1_STRING_set .
164.Sh SEE ALSO
165.Xr ERR_get_error 3
diff --git a/src/lib/libcrypto/man/ASN1_STRING_new.3 b/src/lib/libcrypto/man/ASN1_STRING_new.3
new file mode 100644
index 0000000000..cd28b98af6
--- /dev/null
+++ b/src/lib/libcrypto/man/ASN1_STRING_new.3
@@ -0,0 +1,58 @@
1.Dd July 17, 2014
2.Dt ASN1_STRING_NEW 3
3.Os
4.Sh NAME
5.Nm ASN1_STRING_new ,
6.Nm ASN1_STRING_type_new ,
7.Nm ASN1_STRING_free
8.Nd ASN1_STRING allocation functions
9.Sh SYNOPSIS
10.In openssl/asn1.h
11.Ft ASN1_STRING *
12.Fo ASN1_STRING_new
13.Fa void
14.Fc
15.Ft ASN1_STRING *
16.Fo ASN1_STRING_type_new
17.Fa "int type"
18.Fc
19.Ft void
20.Fo ASN1_STRING_free
21.Fa "ASN1_STRING *a"
22.Fc
23.Sh DESCRIPTION
24.Fn ASN1_STRING_new
25returns an allocated
26.Vt ASN1_STRING
27structure.
28Its type is undefined.
29.Pp
30.Fn ASN1_STRING_type_new
31returns an allocated
32.Vt ASN1_STRING
33structure of type
34.Fa type .
35.Pp
36.Fn ASN1_STRING_free
37frees up
38.Fa a .
39.Sh NOTES
40Other string types call the ASN1_STRING functions.
41For example
42.Fn ASN1_OCTET_STRING_new
43calls
44.Fn ASN1_STRING_type V_ASN1_OCTET_STRING .
45.Sh RETURN VALUES
46.Fn ASN1_STRING_new
47and
48.Fn ASN1_STRING_type_new
49return a valid
50.Vt ASN1_STRING
51structure or
52.Dv NULL
53if an error occurred.
54.Pp
55.Fn ASN1_STRING_free
56does not return a value.
57.Sh SEE ALSO
58.Xr ERR_get_error 3
diff --git a/src/lib/libcrypto/man/ASN1_STRING_print_ex.3 b/src/lib/libcrypto/man/ASN1_STRING_print_ex.3
new file mode 100644
index 0000000000..1d6495d199
--- /dev/null
+++ b/src/lib/libcrypto/man/ASN1_STRING_print_ex.3
@@ -0,0 +1,151 @@
1.Dd July 17, 2014
2.Dt ASN1_STRING_PRINT_EX 3
3.Os
4.Sh NAME
5.Nm ASN1_STRING_print_ex ,
6.Nm ASN1_STRING_print_ex_fp ,
7.Nm ASN1_STRING_print
8.Nd ASN1_STRING output routines
9.Sh SYNOPSIS
10.In openssl/asn1.h
11.Ft int
12.Fo ASN1_STRING_print_ex
13.Fa "BIO *out"
14.Fa "ASN1_STRING *str"
15.Fa "unsigned long flags"
16.Fc
17.Ft int
18.Fo ASN1_STRING_print_ex_fp
19.Fa "FILE *fp"
20.Fa "ASN1_STRING *str"
21.Fa "unsigned long flags"
22.Fc
23.Ft int
24.Fo ASN1_STRING_print
25.Fa "BIO *out"
26.Fa "ASN1_STRING *str"
27.Fc
28.Sh DESCRIPTION
29These functions output an
30.Vt ASN1_STRING
31structure.
32.Vt ASN1_STRING
33is used to
34represent all the ASN1 string types.
35.Pp
36.Fn ASN1_STRING_print_ex
37outputs
38.Fa str
39to
40.Fa out ,
41the format is determined by the options
42.Fa flags .
43.Fn ASN1_STRING_print_ex_fp
44is identical except it outputs to
45.Fa fp
46instead.
47.Pp
48.Fn ASN1_STRING_print
49prints
50.Fa str
51to
52.Fa out
53but using a different format to
54.Fn ASN1_STRING_print_ex .
55It replaces unprintable characters (other than CR, LF) with
56.Sq \&. .
57.Sh NOTES
58.Fn ASN1_STRING_print
59is a legacy function which should be avoided in new
60applications.
61.Pp
62Although there are a large number of options frequently
63.Dv ASN1_STRFLGS_RFC2253
64is suitable, or on UTF8 terminals
65.Dv ASN1_STRFLGS_RFC2253 No &
66.Pf ~ Dv ASN1_STRFLGS_ESC_MSB .
67.Pp
68The complete set of supported options for
69.Fa flags
70is listed below.
71.Pp
72Various characters can be escaped.
73If
74.Dv ASN1_STRFLGS_ESC_2253
75is set, the characters determined by RFC2253 are escaped.
76If
77.Dv ASN1_STRFLGS_ESC_CTRL
78is set, control characters are escaped.
79If
80.Dv ASN1_STRFLGS_ESC_MSB
81is set, characters with the MSB set are escaped: this option should
82.Em not
83be used if the terminal correctly interprets UTF8 sequences.
84.Pp
85Escaping takes several forms.
86.Pp
87If the character being escaped is a 16 bit character then the form "\eUXXXX"
88is used using exactly four characters for the hex representation.
89If it is 32 bits then "\eWXXXXXXXX" is used using eight characters
90of its hex representation.
91These forms will only be used if UTF8 conversion is not set (see below).
92.Pp
93Printable characters are normally escaped using the backslash
94.Pq Sq \e
95character.
96If
97.Dv ASN1_STRFLGS_ESC_QUOTE
98is set, then the whole string is instead surrounded by double quote
99characters: this is arguably more readable than the backslash notation.
100Other characters use the "\eXX" using exactly two characters of the hex
101representation.
102.Pp
103If
104.Dv ASN1_STRFLGS_UTF8_CONVERT
105is set, then characters are converted to UTF8 format first.
106If the terminal supports the display of UTF8 sequences then this
107option will correctly display multi byte characters.
108.Pp
109If
110.Dv ASN1_STRFLGS_IGNORE_TYPE
111is set, then the string type is not interpreted at all:
112everything is assumed to be one byte per character.
113This is primarily for debugging purposes and can result
114in confusing output in multi character strings.
115.Pp
116If
117.Dv ASN1_STRFLGS_SHOW_TYPE
118is set, then the string type itself is printed out before its value
119(for example "BMPSTRING"), this actually uses
120.Fn ASN1_tag2str .
121.Pp
122The content of a string instead of being interpreted can be "dumped":
123this just outputs the value of the string using the form #XXXX
124using hex format for each octet.
125.Pp
126If
127.Dv ASN1_STRFLGS_DUMP_ALL
128is set, then any type is dumped.
129.Pp
130Normally non character string types (such as OCTET STRING)
131are assumed to be one byte per character; if
132.Dv ASN1_STRFLGS_DUMP_UNKNOWN
133is set, then they will be dumped instead.
134.Pp
135When a type is dumped normally just the content octets are printed; if
136.Dv ASN1_STRFLGS_DUMP_DER
137is set, then the complete encoding is dumped
138instead (including tag and length octets).
139.Pp
140.Dv ASN1_STRFLGS_RFC2253
141includes all the flags required by RFC2253.
142It is equivalent to
143.Dv ASN1_STRFLGS_ESC_2253 |
144.Dv ASN1_STRFLGS_ESC_CTRL |
145.Dv ASN1_STRFLGS_ESC_MSB |
146.Dv ASN1_STRFLGS_UTF8_CONVERT |
147.Dv ASN1_STRFLGS_DUMP_UNKNOWN |
148.Dv ASN1_STRFLGS_DUMP_DER .
149.Sh SEE ALSO
150.Xr ASN1_tag2str 3 ,
151.Xr X509_NAME_print_ex 3
diff --git a/src/lib/libcrypto/man/ASN1_generate_nconf.3 b/src/lib/libcrypto/man/ASN1_generate_nconf.3
new file mode 100644
index 0000000000..0f0d3727d4
--- /dev/null
+++ b/src/lib/libcrypto/man/ASN1_generate_nconf.3
@@ -0,0 +1,331 @@
1.Dd July 17, 2014
2.Dt ASN1_GENERATE_NCONF 3
3.Os
4.Sh NAME
5.Nm ASN1_generate_nconf ,
6.Nm ASN1_generate_v3
7.Nd ASN1 generation functions
8.Sh SYNOPSIS
9.In openssl/asn1.h
10.Ft ASN1_TYPE *
11.Fo ASN1_generate_nconf
12.Fa "char *str"
13.Fa "CONF *nconf"
14.Fc
15.Ft ASN1_TYPE *
16.Fo ASN1_generate_v3
17.Fa "char *str"
18.Fa "X509V3_CTX *cnf"
19.Fc
20.Sh DESCRIPTION
21These functions generate the ASN1 encoding of a string in an
22.Vt ASN1_TYPE
23structure.
24.Pp
25.Fa str
26contains the string to encode
27.Fa nconf
28or
29.Fa cnf
30contains the optional configuration information
31where additional strings will be read from.
32.Fa nconf
33will typically come from a config file whereas
34.Fa cnf
35is obtained from an
36.Vt X509V3_CTX
37structure which will typically be used
38by X509 v3 certificate extension functions.
39.Fa cnf
40or
41.Fa nconf
42can be set to
43.Dv NULL
44if no additional configuration will be used.
45.Sh GENERATION STRING FORMAT
46The actual data encoded is determined by the string
47.Fa str
48and the configuration information.
49The general format of the string is:
50.Pp
51.D1 Oo Ar modifier , Oc Ns Ar type Ns Op : Ns Ar value
52.Pp
53That is zero or more comma separated modifiers followed by a type
54followed by an optional colon and a value.
55The formats of
56.Ar type ,
57.Ar value
58and
59.Ar modifier
60are explained below.
61.Ss Supported types
62The supported types are listed below.
63Unless otherwise specified, only the
64.Cm ASCII
65format is permissible.
66.Bl -tag -width Ds
67.It Cm BOOLEAN , BOOL
68This encodes a boolean type.
69The
70.Ar value
71string is mandatory and should be
72.Cm TRUE
73or
74.Cm FALSE .
75Additionally
76.Cm true ,
77.Cm Y ,
78.Cm y ,
79.Cm YES ,
80.Cm yes ,
81.Cm false ,
82.Cm N ,
83.Cm n ,
84.Cm NO
85and
86.Cm no
87are acceptable.
88.It Cm NULL
89Encode the NULL type.
90The
91.Ar value
92string must not be present.
93.It Cm INTEGER , INT
94Encodes an ASN1 INTEGER type.
95The
96.Ar value
97string represents the value of the integer.
98It can be prefaced by a minus sign
99and is normally interpreted as a decimal value unless the prefix
100.Cm 0x
101is included.
102.It Cm ENUMERATED , ENUM
103Encodes the ASN1 ENUMERATED type.
104It is otherwise identical to
105.Cm INTEGER .
106.It Cm OBJECT , OID
107Encodes an ASN1 OBJECT IDENTIFIER.
108The
109.Ar value
110string can be a short name, a long name, or numerical format.
111.It Cm UTCTIME , UTC
112Encodes an ASN1 UTCTime structure.
113The value should be in the format
114.Ar YYMMDDHHMMSSZ .
115.It Cm GENERALIZEDTIME , GENTIME
116Encodes an ASN1 GeneralizedTime structure.
117The value should be in the format
118.Ar YYYYMMDDHHMMSSZ .
119.It Cm OCTETSTRING , OCT
120Encodes an ASN1 OCTET STRING.
121.Ar value
122represents the contents of this structure.
123The format strings
124.Cm ASCII
125and
126.Cm HEX
127can be used to specify the format of
128.Ar value .
129.It Cm BITSTRING , BITSTR
130Encodes an ASN1 BIT STRING.
131.Ar value
132represents the contents of this structure.
133The format strings
134.Cm ASCII ,
135.Cm HEX ,
136and
137.Cm BITLIST
138can be used to specify the format of
139.Ar value .
140.Pp
141If the format is anything other than
142.Cm BITLIST ,
143the number of unused bits is set to zero.
144.It Xo
145.Cm BMPSTRING , BMP ,
146.Cm GeneralString ,
147.Cm IA5STRING , IA5 ,
148.Cm NUMERICSTRING , NUMERIC ,
149.Cm PRINTABLESTRING , PRINTABLE ,
150.Cm T61STRING , T61 ,
151.Cm TELETEXSTRING ,
152.Cm UNIVERSALSTRING , UNIV ,
153.Cm UTF8String , UTF8 ,
154.Cm VISIBLESTRING , VISIBLE
155.Xc
156These encode the corresponding string types.
157.Ar value
158represents the contents of this structure.
159The format can be
160.Cm ASCII
161or
162.Cm UTF8 .
163.It Cm SEQUENCE , SEQ , SET
164Formats the result as an ASN1 SEQUENCE or SET type.
165.Ar value
166should be a section name which will contain the contents.
167The field names in the section are ignored
168and the values are in the generated string format.
169If
170.Ar value
171is absent, then an empty SEQUENCE will be encoded.
172.El
173.Ss Modifiers
174Modifiers affect the following structure.
175They can be used to add EXPLICIT or IMPLICIT tagging, add wrappers,
176or to change the string format of the final type and value.
177The supported formats are:
178.Bl -tag -width Ds
179.It Cm EXPLICIT , EXP
180Add an explicit tag to the following structure.
181This string should be followed by a colon
182and the tag value to use as a decimal value.
183.Pp
184By following the number with
185.Cm U ,
186.Cm A ,
187.Cm P
188or
189.Cm C ,
190UNIVERSAL, APPLICATION, PRIVATE or CONTEXT SPECIFIC tagging can be used.
191The default is CONTEXT SPECIFIC.
192.It Cm IMPLICIT , IMP
193This is the same as
194.Cm EXPLICIT
195except IMPLICIT tagging is used instead.
196.It Cm OCTWRAP , SEQWRAP , SETWRAP , BITWRAP
197The following structure is surrounded by
198an OCTET STRING, a SEQUENCE, a SET, or a BIT STRING, respectively.
199For a BIT STRING the number of unused bits is set to zero.
200.It Cm FORMAT
201This specifies the format of the ultimate value.
202It should be followed by a colon and one of the strings
203.Cm ASCII ,
204.Cm UTF8 ,
205.Cm HEX ,
206or
207.Cm BITLIST .
208.Pp
209If no format specifier is included, then
210.Cm ASCII
211is used.
212If
213.Cm UTF8
214is specified, then the
215.Ar value
216string must be a valid UTF8 string.
217For
218.Cm HEX ,
219the output must be a set of hex digits.
220.Cm BITLIST
221(which is only valid for a BIT STRING) is a comma separated list
222of the indices of the set bits, all other bits are zero.
223.El
224.Sh RETURN VALUES
225.Fn ASN1_generate_nconf
226and
227.Fn ASN1_generate_v3
228return the encoded data as an
229.Vt ASN1_TYPE
230structure or
231.Dv NULL
232if an error occurred.
233.Pp
234The error codes can be obtained by
235.Xr ERR_get_error 3 .
236.Sh EXAMPLES
237A simple IA5String:
238.Pp
239.Dl IA5STRING:Hello World
240.Pp
241An IA5String explicitly tagged:
242.Pp
243.Dl EXPLICIT:0,IA5STRING:Hello World
244.Pp
245An IA5String explicitly tagged using APPLICATION tagging:
246.Pp
247.Dl EXPLICIT:0A,IA5STRING:Hello World
248.Pp
249A BITSTRING with bits 1 and 5 set and all others zero:
250.Pp
251.Dl FORMAT:BITLIST,BITSTRING:1,5
252.Pp
253A more complex example using a config file to produce a
254SEQUENCE consiting of a BOOL an OID and a UTF8String:
255.Bd -literal -offset indent
256asn1 = SEQUENCE:seq_section
257
258[seq_section]
259
260field1 = BOOLEAN:TRUE
261field2 = OID:commonName
262field3 = UTF8:Third field
263.Ed
264.Pp
265This example produces an RSAPrivateKey structure.
266This is the key contained in the file
267.Pa client.pem
268in all OpenSSL distributions.
269Note that the field names such as
270.Qq coeff
271are ignored and are present just for clarity.
272.Bd -literal -offset 2n
273asn1=SEQUENCE:private_key
274[private_key]
275version=INTEGER:0
276
277n=INTEGER:0xBB6FE79432CC6EA2D8F970675A5A87BFBE1AFF0BE63E879F2AFFB93644\e
278D4D2C6D000430DEC66ABF47829E74B8C5108623A1C0EE8BE217B3AD8D36D5EB4FCA1D9
279
280e=INTEGER:0x010001
281
282d=INTEGER:0x6F05EAD2F27FFAEC84BEC360C4B928FD5F3A9865D0FCAAD291E2A52F4A\e
283F810DC6373278C006A0ABBA27DC8C63BF97F7E666E27C5284D7D3B1FFFE16B7A87B51D
284
285p=INTEGER:0xF3929B9435608F8A22C208D86795271D54EBDFB09DDEF539AB083DA912\e
286D4BD57
287
288q=INTEGER:0xC50016F89DFF2561347ED1186A46E150E28BF2D0F539A1594BBD7FE467\e
28946EC4F
290
291exp1=INTEGER:0x9E7D4326C924AFC1DEA40B45650134966D6F9DFA3A7F9D698CD4ABEA\e
2929C0A39B9
293
294exp2=INTEGER:0xBA84003BB95355AFB7C50DF140C60513D0BA51D637272E355E397779\e
295E7B2458F
296
297coeff=INTEGER:0x30B9E4F2AFA5AC679F920FC83F1F2DF1BAF1779CF989447FABC2F5\e
298628657053A
299.Ed
300.Pp
301This example is the corresponding public key in a SubjectPublicKeyInfo
302structure:
303.Bd -literal -offset 2n
304# Start with a SEQUENCE
305asn1=SEQUENCE:pubkeyinfo
306
307# pubkeyinfo contains an algorithm identifier and the public key
308# wrapped in a BIT STRING
309[pubkeyinfo]
310algorithm=SEQUENCE:rsa_alg
311pubkey=BITWRAP,SEQUENCE:rsapubkey
312
313# algorithm ID for RSA is just an OID and a NULL
314[rsa_alg]
315algorithm=OID:rsaEncryption
316parameter=NULL
317
318# Actual public key: modulus and exponent
319[rsapubkey]
320n=INTEGER:0xBB6FE79432CC6EA2D8F970675A5A87BFBE1AFF0BE63E879F2AFFB93644\e
321D4D2C6D000430DEC66ABF47829E74B8C5108623A1C0EE8BE217B3AD8D36D5EB4FCA1D9
322
323e=INTEGER:0x010001
324.Ed
325.Sh SEE ALSO
326.Xr ERR_get_error 3
327.Sh HISTORY
328.Fn ASN1_generate_nconf
329and
330.Fn ASN1_generate_v3
331were added to OpenSSL 0.9.8.
diff --git a/src/lib/libcrypto/man/Makefile b/src/lib/libcrypto/man/Makefile
index c6dc286934..5edbf7e394 100644
--- a/src/lib/libcrypto/man/Makefile
+++ b/src/lib/libcrypto/man/Makefile
@@ -1,4 +1,4 @@
1# $OpenBSD: Makefile,v 1.15 2015/01/16 01:58:18 schwarze Exp $ 1# $OpenBSD: Makefile,v 1.16 2015/02/14 13:54:59 schwarze Exp $
2 2
3.include <bsd.own.mk> # for NOMAN 3.include <bsd.own.mk> # for NOMAN
4 4
@@ -10,7 +10,9 @@ MAN= \
10 ASN1_STRING_length.3 \ 10 ASN1_STRING_length.3 \
11 ASN1_STRING_new.3 \ 11 ASN1_STRING_new.3 \
12 ASN1_STRING_print_ex.3 \ 12 ASN1_STRING_print_ex.3 \
13 ASN1_generate_nconf.3 \ 13 ASN1_generate_nconf.3
14
15GENMAN= \
14 BF_set_key.3 \ 16 BF_set_key.3 \
15 BIO.3 \ 17 BIO.3 \
16 BIO_ctrl.3 \ 18 BIO_ctrl.3 \
@@ -195,6 +197,8 @@ MAN= \
195 ui_compat.3 \ 197 ui_compat.3 \
196 x509.3 \ 198 x509.3 \
197 199
200MAN+= ${GENMAN}
201
198#MAN+= BIO_new_CMS.3 \ 202#MAN+= BIO_new_CMS.3 \
199# CMS_add0_cert.3 \ 203# CMS_add0_cert.3 \
200# CMS_add1_recipient_cert.3 \ 204# CMS_add1_recipient_cert.3 \
@@ -1146,4 +1150,4 @@ maninstall:
1146.include <bsd.subdir.mk> 1150.include <bsd.subdir.mk>
1147 1151
1148clean cleandir: 1152clean cleandir:
1149 rm -f ${MAN} 1153 rm -f ${GENMAN}
diff --git a/src/lib/libssl/src/doc/crypto/ASN1_OBJECT_new.pod b/src/lib/libssl/src/doc/crypto/ASN1_OBJECT_new.pod
deleted file mode 100644
index 1c43494c7d..0000000000
--- a/src/lib/libssl/src/doc/crypto/ASN1_OBJECT_new.pod
+++ /dev/null
@@ -1,46 +0,0 @@
1=pod
2
3=head1 NAME
4
5ASN1_OBJECT_new, ASN1_OBJECT_free - object allocation functions
6
7=head1 SYNOPSIS
8
9 #include <openssl/asn1.h>
10
11 ASN1_OBJECT *ASN1_OBJECT_new(void);
12 void ASN1_OBJECT_free(ASN1_OBJECT *a);
13
14=head1 DESCRIPTION
15
16The ASN1_OBJECT allocation routines, allocate and free an
17ASN1_OBJECT structure, which represents an ASN1 OBJECT IDENTIFIER.
18
19ASN1_OBJECT_new() allocates and initializes a ASN1_OBJECT structure.
20
21ASN1_OBJECT_free() frees up the B<ASN1_OBJECT> structure B<a>.
22
23=head1 NOTES
24
25Although ASN1_OBJECT_new() allocates a new ASN1_OBJECT structure it
26is almost never used in applications. The ASN1 object utility functions
27such as OBJ_nid2obj() are used instead.
28
29=head1 RETURN VALUES
30
31If the allocation fails, ASN1_OBJECT_new() returns B<NULL> and sets an error
32code that can be obtained by L<ERR_get_error(3)|ERR_get_error(3)>.
33Otherwise it returns a pointer to the newly allocated structure.
34
35ASN1_OBJECT_free() returns no value.
36
37=head1 SEE ALSO
38
39L<ERR_get_error(3)|ERR_get_error(3)>, L<d2i_ASN1_OBJECT(3)|d2i_ASN1_OBJECT(3)>
40
41=head1 HISTORY
42
43ASN1_OBJECT_new() and ASN1_OBJECT_free() are available in all versions of
44SSLeay and OpenSSL.
45
46=cut
diff --git a/src/lib/libssl/src/doc/crypto/ASN1_STRING_length.pod b/src/lib/libssl/src/doc/crypto/ASN1_STRING_length.pod
deleted file mode 100644
index f9a47a47dc..0000000000
--- a/src/lib/libssl/src/doc/crypto/ASN1_STRING_length.pod
+++ /dev/null
@@ -1,83 +0,0 @@
1=pod
2
3=head1 NAME
4
5ASN1_STRING_dup, ASN1_STRING_cmp, ASN1_STRING_set, ASN1_STRING_length,
6ASN1_STRING_length_set, ASN1_STRING_type, ASN1_STRING_data, ASN1_STRING_to_UTF8 -
7ASN1_STRING utility functions
8
9=head1 SYNOPSIS
10
11 #include <openssl/asn1.h>
12
13 int ASN1_STRING_length(ASN1_STRING *x);
14 unsigned char * ASN1_STRING_data(ASN1_STRING *x);
15
16 ASN1_STRING * ASN1_STRING_dup(ASN1_STRING *a);
17
18 int ASN1_STRING_cmp(ASN1_STRING *a, ASN1_STRING *b);
19
20 int ASN1_STRING_set(ASN1_STRING *str, const void *data, int len);
21
22 int ASN1_STRING_type(ASN1_STRING *x);
23
24 int ASN1_STRING_to_UTF8(unsigned char **out, ASN1_STRING *in);
25
26=head1 DESCRIPTION
27
28These functions allow an B<ASN1_STRING> structure to be manipulated.
29
30ASN1_STRING_length() returns the length of the content of B<x>.
31
32ASN1_STRING_data() returns an internal pointer to the data of B<x>.
33Since this is an internal pointer it should B<not> be freed or
34modified in any way.
35
36ASN1_STRING_dup() returns a copy of the structure B<a>.
37
38ASN1_STRING_cmp() compares B<a> and B<b> returning 0 if the two
39are identical. The string types and content are compared.
40
41ASN1_STRING_set() sets the data of string B<str> to the buffer
42B<data> or length B<len>. The supplied data is copied. If B<len>
43is -1 then the length is determined by strlen(data).
44
45ASN1_STRING_type() returns the type of B<x>, using standard constants
46such as B<V_ASN1_OCTET_STRING>.
47
48ASN1_STRING_to_UTF8() converts the string B<in> to UTF8 format, the
49converted data is allocated in a buffer in B<*out>. The length of
50B<out> is returned or a negative error code. The buffer B<*out>
51should be free using free().
52
53=head1 NOTES
54
55Almost all ASN1 types in OpenSSL are represented as an B<ASN1_STRING>
56structure. Other types such as B<ASN1_OCTET_STRING> are simply typedefed
57to B<ASN1_STRING> and the functions call the B<ASN1_STRING> equivalents.
58B<ASN1_STRING> is also used for some B<CHOICE> types which consist
59entirely of primitive string types such as B<DirectoryString> and
60B<Time>.
61
62These functions should B<not> be used to examine or modify B<ASN1_INTEGER>
63or B<ASN1_ENUMERATED> types: the relevant B<INTEGER> or B<ENUMERATED>
64utility functions should be used instead.
65
66In general it cannot be assumed that the data returned by ASN1_STRING_data()
67is null terminated or does not contain embedded nulls. The actual format
68of the data will depend on the actual string type itself: for example
69for and IA5String the data will be ASCII, for a BMPString two bytes per
70character in big endian format, UTF8String will be in UTF8 format.
71
72Similar care should be take to ensure the data is in the correct format
73when calling ASN1_STRING_set().
74
75=head1 RETURN VALUES
76
77=head1 SEE ALSO
78
79L<ERR_get_error(3)|ERR_get_error(3)>
80
81=head1 HISTORY
82
83=cut
diff --git a/src/lib/libssl/src/doc/crypto/ASN1_STRING_new.pod b/src/lib/libssl/src/doc/crypto/ASN1_STRING_new.pod
deleted file mode 100644
index b5e72a8347..0000000000
--- a/src/lib/libssl/src/doc/crypto/ASN1_STRING_new.pod
+++ /dev/null
@@ -1,42 +0,0 @@
1=pod
2
3=head1 NAME
4
5ASN1_STRING_new, ASN1_STRING_type_new, ASN1_STRING_free -
6ASN1_STRING allocation functions
7
8=head1 SYNOPSIS
9
10 #include <openssl/asn1.h>
11
12 ASN1_STRING * ASN1_STRING_new(void);
13 ASN1_STRING * ASN1_STRING_type_new(int type);
14 void ASN1_STRING_free(ASN1_STRING *a);
15
16=head1 DESCRIPTION
17
18ASN1_STRING_new() returns an allocated B<ASN1_STRING> structure. Its type
19is undefined.
20
21ASN1_STRING_type_new() returns an allocated B<ASN1_STRING> structure of
22type B<type>.
23
24ASN1_STRING_free() frees up B<a>.
25
26=head1 NOTES
27
28Other string types call the B<ASN1_STRING> functions. For example
29ASN1_OCTET_STRING_new() calls ASN1_STRING_type(V_ASN1_OCTET_STRING).
30
31=head1 RETURN VALUES
32
33ASN1_STRING_new() and ASN1_STRING_type_new() return a valid
34ASN1_STRING structure or B<NULL> if an error occurred.
35
36ASN1_STRING_free() does not return a value.
37
38=head1 SEE ALSO
39
40L<ERR_get_error(3)|ERR_get_error(3)>
41
42=cut
diff --git a/src/lib/libssl/src/doc/crypto/ASN1_STRING_print_ex.pod b/src/lib/libssl/src/doc/crypto/ASN1_STRING_print_ex.pod
deleted file mode 100644
index a93047a040..0000000000
--- a/src/lib/libssl/src/doc/crypto/ASN1_STRING_print_ex.pod
+++ /dev/null
@@ -1,95 +0,0 @@
1=pod
2
3=head1 NAME
4
5ASN1_STRING_print_ex, ASN1_STRING_print_ex_fp, ASN1_STRING_print - ASN1_STRING output routines.
6
7=head1 SYNOPSIS
8
9 #include <openssl/asn1.h>
10
11 int ASN1_STRING_print_ex(BIO *out, ASN1_STRING *str, unsigned long flags);
12 int ASN1_STRING_print_ex_fp(FILE *fp, ASN1_STRING *str, unsigned long flags);
13 int ASN1_STRING_print(BIO *out, ASN1_STRING *str);
14
15
16=head1 DESCRIPTION
17
18These functions output an B<ASN1_STRING> structure. B<ASN1_STRING> is used to
19represent all the ASN1 string types.
20
21ASN1_STRING_print_ex() outputs B<str> to B<out>, the format is determined by
22the options B<flags>. ASN1_STRING_print_ex_fp() is identical except it outputs
23to B<fp> instead.
24
25ASN1_STRING_print() prints B<str> to B<out> but using a different format to
26ASN1_STRING_print_ex(). It replaces unprintable characters (other than CR, LF)
27with '.'.
28
29=head1 NOTES
30
31ASN1_STRING_print() is a legacy function which should be avoided in new
32applications.
33
34Although there are a large number of options frequently B<ASN1_STRFLGS_RFC2253>
35is suitable, or on UTF8 terminals B<ASN1_STRFLGS_RFC2253 &
36~ASN1_STRFLGS_ESC_MSB>.
37
38The complete set of supported options for B<flags> is listed below.
39
40Various characters can be escaped. If B<ASN1_STRFLGS_ESC_2253> is set the
41characters determined by RFC2253 are escaped. If B<ASN1_STRFLGS_ESC_CTRL> is
42set control characters are escaped. If B<ASN1_STRFLGS_ESC_MSB> is set
43characters with the MSB set are escaped: this option should B<not> be used if
44the terminal correctly interprets UTF8 sequences.
45
46Escaping takes several forms.
47
48If the character being escaped is a 16 bit character then the form "\UXXXX" is
49used using exactly four characters for the hex representation. If it is 32 bits
50then "\WXXXXXXXX" is used using eight characters of its hex representation.
51These forms will only be used if UTF8 conversion is not set (see below).
52
53Printable characters are normally escaped using the backslash '\' character. If
54B<ASN1_STRFLGS_ESC_QUOTE> is set then the whole string is instead surrounded by
55double quote characters: this is arguably more readable than the backslash
56notation. Other characters use the "\XX" using exactly two characters of the hex
57representation.
58
59If B<ASN1_STRFLGS_UTF8_CONVERT> is set then characters are converted to UTF8
60format first. If the terminal supports the display of UTF8 sequences then this
61option will correctly display multi byte characters.
62
63If B<ASN1_STRFLGS_IGNORE_TYPE> is set then the string type is not interpreted
64at all: everything is assumed to be one byte per character. This is primarily
65for debugging purposes and can result in confusing output in multi character
66strings.
67
68If B<ASN1_STRFLGS_SHOW_TYPE> is set then the string type itself is printed out
69before its value (for example "BMPSTRING"), this actually uses ASN1_tag2str().
70
71The content of a string instead of being interpreted can be "dumped": this just
72outputs the value of the string using the form #XXXX using hex format for each
73octet.
74
75If B<ASN1_STRFLGS_DUMP_ALL> is set then any type is dumped.
76
77Normally non character string types (such as OCTET STRING) are assumed to be
78one byte per character, if B<ASN1_STRFLGS_DUMP_UNKNOWN> is set then they will
79be dumped instead.
80
81When a type is dumped normally just the content octets are printed, if
82B<ASN1_STRFLGS_DUMP_DER> is set then the complete encoding is dumped
83instead (including tag and length octets).
84
85B<ASN1_STRFLGS_RFC2253> includes all the flags required by RFC2253. It is
86equivalent to:
87 ASN1_STRFLGS_ESC_2253 | ASN1_STRFLGS_ESC_CTRL | ASN1_STRFLGS_ESC_MSB |
88 ASN1_STRFLGS_UTF8_CONVERT | ASN1_STRFLGS_DUMP_UNKNOWN ASN1_STRFLGS_DUMP_DER
89
90=head1 SEE ALSO
91
92L<X509_NAME_print_ex(3)|X509_NAME_print_ex(3)>,
93L<ASN1_tag2str(3)|ASN1_tag2str(3)>
94
95=cut
diff --git a/src/lib/libssl/src/doc/crypto/ASN1_generate_nconf.pod b/src/lib/libssl/src/doc/crypto/ASN1_generate_nconf.pod
deleted file mode 100644
index 4b8a937a66..0000000000
--- a/src/lib/libssl/src/doc/crypto/ASN1_generate_nconf.pod
+++ /dev/null
@@ -1,265 +0,0 @@
1=pod
2
3=head1 NAME
4
5ASN1_generate_nconf, ASN1_generate_v3 - ASN1 generation functions
6
7=head1 SYNOPSIS
8
9 #include <openssl/asn1.h>
10
11 ASN1_TYPE *ASN1_generate_nconf(char *str, CONF *nconf);
12 ASN1_TYPE *ASN1_generate_v3(char *str, X509V3_CTX *cnf);
13
14=head1 DESCRIPTION
15
16These functions generate the ASN1 encoding of a string
17in an B<ASN1_TYPE> structure.
18
19B<str> contains the string to encode B<nconf> or B<cnf> contains
20the optional configuration information where additional strings
21will be read from. B<nconf> will typically come from a config
22file wherease B<cnf> is obtained from an B<X509V3_CTX> structure
23which will typically be used by X509 v3 certificate extension
24functions. B<cnf> or B<nconf> can be set to B<NULL> if no additional
25configuration will be used.
26
27=head1 GENERATION STRING FORMAT
28
29The actual data encoded is determined by the string B<str> and
30the configuration information. The general format of the string
31is:
32
33=over 2
34
35=item B<[modifier,]type[:value]>
36
37=back
38
39That is zero or more comma separated modifiers followed by a type
40followed by an optional colon and a value. The formats of B<type>,
41B<value> and B<modifier> are explained below.
42
43=head2 SUPPORTED TYPES
44
45The supported types are listed below. Unless otherwise specified
46only the B<ASCII> format is permissible.
47
48=over 2
49
50=item B<BOOLEAN>, B<BOOL>
51
52This encodes a boolean type. The B<value> string is mandatory and
53should be B<TRUE> or B<FALSE>. Additionally B<TRUE>, B<true>, B<Y>,
54B<y>, B<YES>, B<yes>, B<FALSE>, B<false>, B<N>, B<n>, B<NO> and B<no>
55are acceptable.
56
57=item B<NULL>
58
59Encode the B<NULL> type, the B<value> string must not be present.
60
61=item B<INTEGER>, B<INT>
62
63Encodes an ASN1 B<INTEGER> type. The B<value> string represents
64the value of the integer, it can be prefaced by a minus sign and
65is normally interpreted as a decimal value unless the prefix B<0x>
66is included.
67
68=item B<ENUMERATED>, B<ENUM>
69
70Encodes the ASN1 B<ENUMERATED> type, it is otherwise identical to
71B<INTEGER>.
72
73=item B<OBJECT>, B<OID>
74
75Encodes an ASN1 B<OBJECT IDENTIFIER>, the B<value> string can be
76a short name, a long name or numerical format.
77
78=item B<UTCTIME>, B<UTC>
79
80Encodes an ASN1 B<UTCTime> structure, the value should be in
81the format B<YYMMDDHHMMSSZ>.
82
83=item B<GENERALIZEDTIME>, B<GENTIME>
84
85Encodes an ASN1 B<GeneralizedTime> structure, the value should be in
86the format B<YYYYMMDDHHMMSSZ>.
87
88=item B<OCTETSTRING>, B<OCT>
89
90Encodes an ASN1 B<OCTET STRING>. B<value> represents the contents
91of this structure, the format strings B<ASCII> and B<HEX> can be
92used to specify the format of B<value>.
93
94=item B<BITSTRING>, B<BITSTR>
95
96Encodes an ASN1 B<BIT STRING>. B<value> represents the contents
97of this structure, the format strings B<ASCII>, B<HEX> and B<BITLIST>
98can be used to specify the format of B<value>.
99
100If the format is anything other than B<BITLIST> the number of unused
101bits is set to zero.
102
103=item B<UNIVERSALSTRING>, B<UNIV>, B<IA5>, B<IA5STRING>, B<UTF8>,
104B<UTF8String>, B<BMP>, B<BMPSTRING>, B<VISIBLESTRING>,
105B<VISIBLE>, B<PRINTABLESTRING>, B<PRINTABLE>, B<T61>,
106B<T61STRING>, B<TELETEXSTRING>, B<GeneralString>, B<NUMERICSTRING>,
107B<NUMERIC>
108
109These encode the corresponding string types. B<value> represents the
110contents of this structure. The format can be B<ASCII> or B<UTF8>.
111
112=item B<SEQUENCE>, B<SEQ>, B<SET>
113
114Formats the result as an ASN1 B<SEQUENCE> or B<SET> type. B<value>
115should be a section name which will contain the contents. The
116field names in the section are ignored and the values are in the
117generated string format. If B<value> is absent then an empty SEQUENCE
118will be encoded.
119
120=back
121
122=head2 MODIFIERS
123
124Modifiers affect the following structure, they can be used to
125add EXPLICIT or IMPLICIT tagging, add wrappers or to change
126the string format of the final type and value. The supported
127formats are documented below.
128
129=over 2
130
131=item B<EXPLICIT>, B<EXP>
132
133Add an explicit tag to the following structure. This string
134should be followed by a colon and the tag value to use as a
135decimal value.
136
137By following the number with B<U>, B<A>, B<P> or B<C> UNIVERSAL,
138APPLICATION, PRIVATE or CONTEXT SPECIFIC tagging can be used,
139the default is CONTEXT SPECIFIC.
140
141=item B<IMPLICIT>, B<IMP>
142
143This is the same as B<EXPLICIT> except IMPLICIT tagging is used
144instead.
145
146=item B<OCTWRAP>, B<SEQWRAP>, B<SETWRAP>, B<BITWRAP>
147
148The following structure is surrounded by an OCTET STRING, a SEQUENCE,
149a SET or a BIT STRING respectively. For a BIT STRING the number of unused
150bits is set to zero.
151
152=item B<FORMAT>
153
154This specifies the format of the ultimate value. It should be followed
155by a colon and one of the strings B<ASCII>, B<UTF8>, B<HEX> or B<BITLIST>.
156
157If no format specifier is included then B<ASCII> is used. If B<UTF8> is
158specified then the value string must be a valid B<UTF8> string. For B<HEX> the
159output must be a set of hex digits. B<BITLIST> (which is only valid for a BIT
160STRING) is a comma separated list of the indices of the set bits, all other
161bits are zero.
162
163=back
164
165=head1 EXAMPLES
166
167A simple IA5String:
168
169 IA5STRING:Hello World
170
171An IA5String explicitly tagged:
172
173 EXPLICIT:0,IA5STRING:Hello World
174
175An IA5String explicitly tagged using APPLICATION tagging:
176
177 EXPLICIT:0A,IA5STRING:Hello World
178
179A BITSTRING with bits 1 and 5 set and all others zero:
180
181 FORMAT:BITLIST,BITSTRING:1,5
182
183A more complex example using a config file to produce a
184SEQUENCE consiting of a BOOL an OID and a UTF8String:
185
186 asn1 = SEQUENCE:seq_section
187
188 [seq_section]
189
190 field1 = BOOLEAN:TRUE
191 field2 = OID:commonName
192 field3 = UTF8:Third field
193
194This example produces an RSAPrivateKey structure, this is the
195key contained in the file client.pem in all OpenSSL distributions
196(note: the field names such as 'coeff' are ignored and are present just
197for clarity):
198
199 asn1=SEQUENCE:private_key
200 [private_key]
201 version=INTEGER:0
202
203 n=INTEGER:0xBB6FE79432CC6EA2D8F970675A5A87BFBE1AFF0BE63E879F2AFFB93644\
204 D4D2C6D000430DEC66ABF47829E74B8C5108623A1C0EE8BE217B3AD8D36D5EB4FCA1D9
205
206 e=INTEGER:0x010001
207
208 d=INTEGER:0x6F05EAD2F27FFAEC84BEC360C4B928FD5F3A9865D0FCAAD291E2A52F4A\
209 F810DC6373278C006A0ABBA27DC8C63BF97F7E666E27C5284D7D3B1FFFE16B7A87B51D
210
211 p=INTEGER:0xF3929B9435608F8A22C208D86795271D54EBDFB09DDEF539AB083DA912\
212 D4BD57
213
214 q=INTEGER:0xC50016F89DFF2561347ED1186A46E150E28BF2D0F539A1594BBD7FE467\
215 46EC4F
216
217 exp1=INTEGER:0x9E7D4326C924AFC1DEA40B45650134966D6F9DFA3A7F9D698CD4ABEA\
218 9C0A39B9
219
220 exp2=INTEGER:0xBA84003BB95355AFB7C50DF140C60513D0BA51D637272E355E397779\
221 E7B2458F
222
223 coeff=INTEGER:0x30B9E4F2AFA5AC679F920FC83F1F2DF1BAF1779CF989447FABC2F5\
224 628657053A
225
226This example is the corresponding public key in a SubjectPublicKeyInfo
227structure:
228
229 # Start with a SEQUENCE
230 asn1=SEQUENCE:pubkeyinfo
231
232 # pubkeyinfo contains an algorithm identifier and the public key wrapped
233 # in a BIT STRING
234 [pubkeyinfo]
235 algorithm=SEQUENCE:rsa_alg
236 pubkey=BITWRAP,SEQUENCE:rsapubkey
237
238 # algorithm ID for RSA is just an OID and a NULL
239 [rsa_alg]
240 algorithm=OID:rsaEncryption
241 parameter=NULL
242
243 # Actual public key: modulus and exponent
244 [rsapubkey]
245 n=INTEGER:0xBB6FE79432CC6EA2D8F970675A5A87BFBE1AFF0BE63E879F2AFFB93644\
246 D4D2C6D000430DEC66ABF47829E74B8C5108623A1C0EE8BE217B3AD8D36D5EB4FCA1D9
247
248 e=INTEGER:0x010001
249
250=head1 RETURN VALUES
251
252ASN1_generate_nconf() and ASN1_generate_v3() return the encoded
253data as an B<ASN1_TYPE> structure or B<NULL> if an error occurred.
254
255The error codes that can be obtained by L<ERR_get_error(3)|ERR_get_error(3)>.
256
257=head1 SEE ALSO
258
259L<ERR_get_error(3)|ERR_get_error(3)>
260
261=head1 HISTORY
262
263ASN1_generate_nconf() and ASN1_generate_v3() were added to OpenSSL 0.9.8
264
265=cut