PKCS12_parse.3ossl 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. .\" -*- mode: troff; coding: utf-8 -*-
  2. .\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43)
  3. .\"
  4. .\" Standard preamble:
  5. .\" ========================================================================
  6. .de Sp \" Vertical space (when we can't use .PP)
  7. .if t .sp .5v
  8. .if n .sp
  9. ..
  10. .de Vb \" Begin verbatim text
  11. .ft CW
  12. .nf
  13. .ne \\$1
  14. ..
  15. .de Ve \" End verbatim text
  16. .ft R
  17. .fi
  18. ..
  19. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
  20. .ie n \{\
  21. . ds C` ""
  22. . ds C' ""
  23. 'br\}
  24. .el\{\
  25. . ds C`
  26. . ds C'
  27. 'br\}
  28. .\"
  29. .\" Escape single quotes in literal strings from groff's Unicode transform.
  30. .ie \n(.g .ds Aq \(aq
  31. .el .ds Aq '
  32. .\"
  33. .\" If the F register is >0, we'll generate index entries on stderr for
  34. .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
  35. .\" entries marked with X<> in POD. Of course, you'll have to process the
  36. .\" output yourself in some meaningful fashion.
  37. .\"
  38. .\" Avoid warning from groff about undefined register 'F'.
  39. .de IX
  40. ..
  41. .nr rF 0
  42. .if \n(.g .if rF .nr rF 1
  43. .if (\n(rF:(\n(.g==0)) \{\
  44. . if \nF \{\
  45. . de IX
  46. . tm Index:\\$1\t\\n%\t"\\$2"
  47. ..
  48. . if !\nF==2 \{\
  49. . nr % 0
  50. . nr F 2
  51. . \}
  52. . \}
  53. .\}
  54. .rr rF
  55. .\" ========================================================================
  56. .\"
  57. .IX Title "PKCS12_PARSE 3ossl"
  58. .TH PKCS12_PARSE 3ossl 2025-01-17 3.4.0 OpenSSL
  59. .\" For nroff, turn off justification. Always turn off hyphenation; it makes
  60. .\" way too many mistakes in technical documents.
  61. .if n .ad l
  62. .nh
  63. .SH NAME
  64. PKCS12_parse \- parse a PKCS#12 structure
  65. .SH SYNOPSIS
  66. .IX Header "SYNOPSIS"
  67. .Vb 1
  68. \& #include <openssl/pkcs12.h>
  69. \&
  70. \& int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert,
  71. \& STACK_OF(X509) **ca);
  72. .Ve
  73. .SH DESCRIPTION
  74. .IX Header "DESCRIPTION"
  75. \&\fBPKCS12_parse()\fR parses a PKCS12 structure.
  76. .PP
  77. \&\fBp12\fR is the \fBPKCS12\fR structure to parse. \fBpass\fR is the passphrase to use.
  78. If successful the private key will be written to \fB*pkey\fR, the corresponding
  79. certificate to \fB*cert\fR and any additional certificates to \fB*ca\fR.
  80. .SH NOTES
  81. .IX Header "NOTES"
  82. Each of the parameters \fBpkey\fR, \fBcert\fR, and \fBca\fR can be NULL in which case
  83. the private key, the corresponding certificate, or the additional certificates,
  84. respectively, will be discarded.
  85. If any of \fBpkey\fR and \fBcert\fR is non-NULL the variable it points to is
  86. initialized.
  87. If \fBca\fR is non-NULL and \fB*ca\fR is NULL a new STACK will be allocated.
  88. If \fBca\fR is non-NULL and \fB*ca\fR is a valid STACK
  89. then additional certificates are appended in the given order to \fB*ca\fR.
  90. .PP
  91. The \fBfriendlyName\fR and \fBlocalKeyID\fR attributes (if present) on each
  92. certificate will be stored in the \fBalias\fR and \fBkeyid\fR attributes of the
  93. \&\fBX509\fR structure.
  94. .PP
  95. The parameter \fBpass\fR is interpreted as a string in the UTF\-8 encoding. If it
  96. is not valid UTF\-8, then it is assumed to be ISO8859\-1 instead.
  97. .PP
  98. In particular, this means that passwords in the locale character set
  99. (or code page on Windows) must potentially be converted to UTF\-8 before
  100. use. This may include passwords from local text files, or input from
  101. the terminal or command line. Refer to the documentation of
  102. \&\fBUI_OpenSSL\fR\|(3), for example.
  103. .SH "RETURN VALUES"
  104. .IX Header "RETURN VALUES"
  105. \&\fBPKCS12_parse()\fR returns 1 for success and zero if an error occurred.
  106. .PP
  107. The error can be obtained from \fBERR_get_error\fR\|(3)
  108. .SH BUGS
  109. .IX Header "BUGS"
  110. Only a single private key and corresponding certificate is returned by this
  111. function. More complex PKCS#12 files with multiple private keys will only
  112. return the first match.
  113. .PP
  114. Only \fBfriendlyName\fR and \fBlocalKeyID\fR attributes are currently stored in
  115. certificates. Other attributes are discarded.
  116. .PP
  117. Attributes currently cannot be stored in the private key \fBEVP_PKEY\fR structure.
  118. .SH "SEE ALSO"
  119. .IX Header "SEE ALSO"
  120. \&\fBd2i_PKCS12\fR\|(3),
  121. \&\fBpassphrase\-encoding\fR\|(7)
  122. .SH COPYRIGHT
  123. .IX Header "COPYRIGHT"
  124. Copyright 2002\-2020 The OpenSSL Project Authors. All Rights Reserved.
  125. .PP
  126. Licensed under the Apache License 2.0 (the "License"). You may not use
  127. this file except in compliance with the License. You can obtain a copy
  128. in the file LICENSE in the source distribution or at
  129. <https://www.openssl.org/source/license.html>.