EVP_OpenInit.3ossl 4.0 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 "EVP_OPENINIT 3ossl"
  58. .TH EVP_OPENINIT 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. EVP_OpenInit, EVP_OpenUpdate, EVP_OpenFinal \- EVP envelope decryption
  65. .SH SYNOPSIS
  66. .IX Header "SYNOPSIS"
  67. .Vb 1
  68. \& #include <openssl/evp.h>
  69. \&
  70. \& int EVP_OpenInit(EVP_CIPHER_CTX *ctx, EVP_CIPHER *type, unsigned char *ek,
  71. \& int ekl, unsigned char *iv, EVP_PKEY *priv);
  72. \& int EVP_OpenUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out,
  73. \& int *outl, unsigned char *in, int inl);
  74. \& int EVP_OpenFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);
  75. .Ve
  76. .SH DESCRIPTION
  77. .IX Header "DESCRIPTION"
  78. The EVP envelope routines are a high-level interface to envelope
  79. decryption. They decrypt a public key encrypted symmetric key and
  80. then decrypt data using it.
  81. .PP
  82. \&\fBEVP_OpenInit()\fR initializes a cipher context \fBctx\fR for decryption
  83. with cipher \fBtype\fR. It decrypts the encrypted symmetric key of length
  84. \&\fBekl\fR bytes passed in the \fBek\fR parameter using the private key \fBpriv\fR.
  85. The IV is supplied in the \fBiv\fR parameter.
  86. .PP
  87. \&\fBEVP_OpenUpdate()\fR and \fBEVP_OpenFinal()\fR have exactly the same properties
  88. as the \fBEVP_DecryptUpdate()\fR and \fBEVP_DecryptFinal()\fR routines, as
  89. documented on the \fBEVP_EncryptInit\fR\|(3) manual
  90. page.
  91. .SH NOTES
  92. .IX Header "NOTES"
  93. It is possible to call \fBEVP_OpenInit()\fR twice in the same way as
  94. \&\fBEVP_DecryptInit()\fR. The first call should have \fBpriv\fR set to NULL
  95. and (after setting any cipher parameters) it should be called again
  96. with \fBtype\fR set to NULL.
  97. .PP
  98. If the cipher passed in the \fBtype\fR parameter is a variable length
  99. cipher then the key length will be set to the value of the recovered
  100. key length. If the cipher is a fixed length cipher then the recovered
  101. key length must match the fixed cipher length.
  102. .SH "RETURN VALUES"
  103. .IX Header "RETURN VALUES"
  104. \&\fBEVP_OpenInit()\fR returns 0 on error or a non zero integer (actually the
  105. recovered secret key size) if successful.
  106. .PP
  107. \&\fBEVP_OpenUpdate()\fR returns 1 for success or 0 for failure.
  108. .PP
  109. \&\fBEVP_OpenFinal()\fR returns 0 if the decrypt failed or 1 for success.
  110. .SH "SEE ALSO"
  111. .IX Header "SEE ALSO"
  112. \&\fBevp\fR\|(7), \fBRAND_bytes\fR\|(3),
  113. \&\fBEVP_EncryptInit\fR\|(3),
  114. \&\fBEVP_SealInit\fR\|(3)
  115. .SH COPYRIGHT
  116. .IX Header "COPYRIGHT"
  117. Copyright 2000\-2020 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>.