b2i_PVK_bio_ex.3ossl 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  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 "B2I_PVK_BIO_EX 3ossl"
  58. .TH B2I_PVK_BIO_EX 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. b2i_PVK_bio, b2i_PVK_bio_ex, i2b_PVK_bio, i2b_PVK_bio_ex \- Decode and encode
  65. functions for reading and writing MSBLOB format private keys
  66. .SH SYNOPSIS
  67. .IX Header "SYNOPSIS"
  68. .Vb 1
  69. \& #include <openssl/pem.h>
  70. \&
  71. \& EVP_PKEY *b2i_PVK_bio(BIO *in, pem_password_cb *cb, void *u);
  72. \& EVP_PKEY *b2i_PVK_bio_ex(BIO *in, pem_password_cb *cb, void *u,
  73. \& OSSL_LIB_CTX *libctx, const char *propq);
  74. \& int i2b_PVK_bio(BIO *out, const EVP_PKEY *pk, int enclevel,
  75. \& pem_password_cb *cb, void *u);
  76. \& int i2b_PVK_bio_ex(BIO *out, const EVP_PKEY *pk, int enclevel,
  77. \& pem_password_cb *cb, void *u,
  78. \& OSSL_LIB_CTX *libctx, const char *propq);
  79. .Ve
  80. .SH DESCRIPTION
  81. .IX Header "DESCRIPTION"
  82. \&\fBb2i_PVK_bio_ex()\fR decodes a private key of MSBLOB format read from a \fBBIO\fR. It
  83. attempts to automatically determine the key type. If the key is encrypted then
  84. \&\fIcb\fR is called with the user data \fIu\fR in order to obtain a password to decrypt
  85. the key. The supplied library context \fIlibctx\fR and property query
  86. string \fIpropq\fR are used in any decrypt operation.
  87. .PP
  88. \&\fBb2i_PVK_bio()\fR does the same as \fBb2i_PVK_bio_ex()\fR except that the default
  89. library context and property query string are used.
  90. .PP
  91. \&\fBi2b_PVK_bio_ex()\fR encodes \fIpk\fR using MSBLOB format. If \fIenclevel\fR is 1 then
  92. a password obtained via \fIpem_password_cb\fR is used to encrypt the private key.
  93. If \fIenclevel\fR is 0 then no encryption is applied. The user data in \fIu\fR is
  94. passed to the password callback. The supplied library context \fIlibctx\fR and
  95. property query string \fIpropq\fR are used in any decrypt operation.
  96. .PP
  97. \&\fBi2b_PVK_bio()\fR does the same as \fBi2b_PVK_bio_ex()\fR except that the default
  98. library context and property query string are used.
  99. .SH "RETURN VALUES"
  100. .IX Header "RETURN VALUES"
  101. The \fBb2i_PVK_bio()\fR and \fBb2i_PVK_bio_ex()\fR functions return a valid \fBEVP_KEY\fR
  102. structure or \fBNULL\fR if an error occurs. The error code can be obtained by calling
  103. \&\fBERR_get_error\fR\|(3).
  104. .PP
  105. \&\fBi2b_PVK_bio()\fR and \fBi2b_PVK_bio_ex()\fR return the number of bytes successfully
  106. encoded or a negative value if an error occurs. The error code can be obtained
  107. by calling \fBERR_get_error\fR\|(3).
  108. .SH "SEE ALSO"
  109. .IX Header "SEE ALSO"
  110. \&\fBcrypto\fR\|(7),
  111. \&\fBd2i_PKCS8PrivateKey_bio\fR\|(3)
  112. .SH HISTORY
  113. .IX Header "HISTORY"
  114. \&\fBb2i_PVK_bio_ex()\fR and \fBi2b_PVK_bio_ex()\fR were added in OpenSSL 3.0.
  115. .SH COPYRIGHT
  116. .IX Header "COPYRIGHT"
  117. Copyright 2021 The OpenSSL Project Authors. All Rights Reserved.
  118. .PP
  119. Licensed under the Apache License 2.0 (the "License"). You may not use
  120. this file except in compliance with the License. You can obtain a copy
  121. in the file LICENSE in the source distribution or at
  122. <https://www.openssl.org/source/license.html>.