diff options
-rw-r--r-- | src/lib/libcrypto/man/EVP_CIPHER_CTX_init.3 | 12 | ||||
-rw-r--r-- | src/lib/libcrypto/man/EVP_EncryptInit.3 | 101 |
2 files changed, 58 insertions, 55 deletions
diff --git a/src/lib/libcrypto/man/EVP_CIPHER_CTX_init.3 b/src/lib/libcrypto/man/EVP_CIPHER_CTX_init.3 index 50df2e764d..f328fc05b2 100644 --- a/src/lib/libcrypto/man/EVP_CIPHER_CTX_init.3 +++ b/src/lib/libcrypto/man/EVP_CIPHER_CTX_init.3 | |||
@@ -1,4 +1,4 @@ | |||
1 | .\" $OpenBSD: EVP_CIPHER_CTX_init.3,v 1.2 2023/12/26 19:09:08 schwarze Exp $ | 1 | .\" $OpenBSD: EVP_CIPHER_CTX_init.3,v 1.3 2023/12/26 22:13:00 schwarze Exp $ |
2 | .\" full merge up to: | 2 | .\" full merge up to: |
3 | .\" OpenSSL EVP_EncryptInit.pod 0874d7f2 Oct 11 13:13:47 2022 +0100 | 3 | .\" OpenSSL EVP_EncryptInit.pod 0874d7f2 Oct 11 13:13:47 2022 +0100 |
4 | .\" | 4 | .\" |
@@ -91,7 +91,7 @@ | |||
91 | .Fa "EVP_CIPHER_CTX *ctx" | 91 | .Fa "EVP_CIPHER_CTX *ctx" |
92 | .Fa "unsigned char *out" | 92 | .Fa "unsigned char *out" |
93 | .Fa "const unsigned char *in" | 93 | .Fa "const unsigned char *in" |
94 | .Fa "unsigned int inl" | 94 | .Fa "unsigned int in_len" |
95 | .Fc | 95 | .Fc |
96 | .Sh DESCRIPTION | 96 | .Sh DESCRIPTION |
97 | .Fn EVP_CIPHER_CTX_init | 97 | .Fn EVP_CIPHER_CTX_init |
@@ -133,11 +133,11 @@ behaviour depends on | |||
133 | If that argument is | 133 | If that argument is |
134 | .Dv NULL | 134 | .Dv NULL |
135 | and | 135 | and |
136 | .Fa inl | 136 | .Fa in_len |
137 | is 0, behaviour is similar to | 137 | is 0, behaviour is similar to |
138 | .Xr EVP_CipherFinal 3 ; | 138 | .Xr EVP_CipherFinal 3 ; |
139 | if | 139 | if |
140 | .Fa inl | 140 | .Fa in_len |
141 | is not 0, behaviour is undefined. | 141 | is not 0, behaviour is undefined. |
142 | If | 142 | If |
143 | .Fa in | 143 | .Fa in |
@@ -158,7 +158,7 @@ It requires that the previous encryption or decryption operation | |||
158 | using the same | 158 | using the same |
159 | .Fa ctx , | 159 | .Fa ctx , |
160 | if there was any, ended exactly on a block boundary and that | 160 | if there was any, ended exactly on a block boundary and that |
161 | .Fa inl | 161 | .Fa in_len |
162 | is an integer multiple of the cipher block size. | 162 | is an integer multiple of the cipher block size. |
163 | If either of these conditions is violated, | 163 | If either of these conditions is violated, |
164 | .Fn EVP_Cipher | 164 | .Fn EVP_Cipher |
@@ -167,7 +167,7 @@ For that reason, using the function | |||
167 | .Xr EVP_CipherUpdate 3 | 167 | .Xr EVP_CipherUpdate 3 |
168 | instead is strongly recommended. | 168 | instead is strongly recommended. |
169 | The latter can safely handle partial blocks, and even if | 169 | The latter can safely handle partial blocks, and even if |
170 | .Fa inl | 170 | .Fa in_len |
171 | actually is a multiple of the cipher block size for all calls, | 171 | actually is a multiple of the cipher block size for all calls, |
172 | the overhead incurred by using | 172 | the overhead incurred by using |
173 | .Xr EVP_CipherUpdate 3 | 173 | .Xr EVP_CipherUpdate 3 |
diff --git a/src/lib/libcrypto/man/EVP_EncryptInit.3 b/src/lib/libcrypto/man/EVP_EncryptInit.3 index 7deabe92c1..e8d22d8677 100644 --- a/src/lib/libcrypto/man/EVP_EncryptInit.3 +++ b/src/lib/libcrypto/man/EVP_EncryptInit.3 | |||
@@ -1,4 +1,4 @@ | |||
1 | .\" $OpenBSD: EVP_EncryptInit.3,v 1.50 2023/12/01 13:43:37 schwarze Exp $ | 1 | .\" $OpenBSD: EVP_EncryptInit.3,v 1.51 2023/12/26 22:13:00 schwarze Exp $ |
2 | .\" full merge up to: OpenSSL 5211e094 Nov 11 14:39:11 2014 -0800 | 2 | .\" full merge up to: OpenSSL 5211e094 Nov 11 14:39:11 2014 -0800 |
3 | .\" EVP_bf_cbc.pod EVP_cast5_cbc.pod EVP_idea_cbc.pod EVP_rc2_cbc.pod | 3 | .\" EVP_bf_cbc.pod EVP_cast5_cbc.pod EVP_idea_cbc.pod EVP_rc2_cbc.pod |
4 | .\" 7c6d372a Nov 20 13:20:01 2018 +0000 | 4 | .\" 7c6d372a Nov 20 13:20:01 2018 +0000 |
@@ -69,7 +69,7 @@ | |||
69 | .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | 69 | .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED |
70 | .\" OF THE POSSIBILITY OF SUCH DAMAGE. | 70 | .\" OF THE POSSIBILITY OF SUCH DAMAGE. |
71 | .\" | 71 | .\" |
72 | .Dd $Mdocdate: December 1 2023 $ | 72 | .Dd $Mdocdate: December 26 2023 $ |
73 | .Dt EVP_ENCRYPTINIT 3 | 73 | .Dt EVP_ENCRYPTINIT 3 |
74 | .Os | 74 | .Os |
75 | .Sh NAME | 75 | .Sh NAME |
@@ -150,15 +150,15 @@ | |||
150 | .Fo EVP_EncryptUpdate | 150 | .Fo EVP_EncryptUpdate |
151 | .Fa "EVP_CIPHER_CTX *ctx" | 151 | .Fa "EVP_CIPHER_CTX *ctx" |
152 | .Fa "unsigned char *out" | 152 | .Fa "unsigned char *out" |
153 | .Fa "int *outl" | 153 | .Fa "int *out_len" |
154 | .Fa "const unsigned char *in" | 154 | .Fa "const unsigned char *in" |
155 | .Fa "int inl" | 155 | .Fa "int in_len" |
156 | .Fc | 156 | .Fc |
157 | .Ft int | 157 | .Ft int |
158 | .Fo EVP_EncryptFinal_ex | 158 | .Fo EVP_EncryptFinal_ex |
159 | .Fa "EVP_CIPHER_CTX *ctx" | 159 | .Fa "EVP_CIPHER_CTX *ctx" |
160 | .Fa "unsigned char *out" | 160 | .Fa "unsigned char *out" |
161 | .Fa "int *outl" | 161 | .Fa "int *out_len" |
162 | .Fc | 162 | .Fc |
163 | .Ft int | 163 | .Ft int |
164 | .Fo EVP_DecryptInit_ex | 164 | .Fo EVP_DecryptInit_ex |
@@ -172,15 +172,15 @@ | |||
172 | .Fo EVP_DecryptUpdate | 172 | .Fo EVP_DecryptUpdate |
173 | .Fa "EVP_CIPHER_CTX *ctx" | 173 | .Fa "EVP_CIPHER_CTX *ctx" |
174 | .Fa "unsigned char *out" | 174 | .Fa "unsigned char *out" |
175 | .Fa "int *outl" | 175 | .Fa "int *out_len" |
176 | .Fa "const unsigned char *in" | 176 | .Fa "const unsigned char *in" |
177 | .Fa "int inl" | 177 | .Fa "int in_len" |
178 | .Fc | 178 | .Fc |
179 | .Ft int | 179 | .Ft int |
180 | .Fo EVP_DecryptFinal_ex | 180 | .Fo EVP_DecryptFinal_ex |
181 | .Fa "EVP_CIPHER_CTX *ctx" | 181 | .Fa "EVP_CIPHER_CTX *ctx" |
182 | .Fa "unsigned char *outm" | 182 | .Fa "unsigned char *out" |
183 | .Fa "int *outl" | 183 | .Fa "int *out_len" |
184 | .Fc | 184 | .Fc |
185 | .Ft int | 185 | .Ft int |
186 | .Fo EVP_CipherInit_ex | 186 | .Fo EVP_CipherInit_ex |
@@ -195,15 +195,15 @@ | |||
195 | .Fo EVP_CipherUpdate | 195 | .Fo EVP_CipherUpdate |
196 | .Fa "EVP_CIPHER_CTX *ctx" | 196 | .Fa "EVP_CIPHER_CTX *ctx" |
197 | .Fa "unsigned char *out" | 197 | .Fa "unsigned char *out" |
198 | .Fa "int *outl" | 198 | .Fa "int *out_len" |
199 | .Fa "const unsigned char *in" | 199 | .Fa "const unsigned char *in" |
200 | .Fa "int inl" | 200 | .Fa "int in_len" |
201 | .Fc | 201 | .Fc |
202 | .Ft int | 202 | .Ft int |
203 | .Fo EVP_CipherFinal_ex | 203 | .Fo EVP_CipherFinal_ex |
204 | .Fa "EVP_CIPHER_CTX *ctx" | 204 | .Fa "EVP_CIPHER_CTX *ctx" |
205 | .Fa "unsigned char *outm" | 205 | .Fa "unsigned char *out" |
206 | .Fa "int *outl" | 206 | .Fa "int *out_len" |
207 | .Fc | 207 | .Fc |
208 | .Ft int | 208 | .Ft int |
209 | .Fo EVP_EncryptInit | 209 | .Fo EVP_EncryptInit |
@@ -216,7 +216,7 @@ | |||
216 | .Fo EVP_EncryptFinal | 216 | .Fo EVP_EncryptFinal |
217 | .Fa "EVP_CIPHER_CTX *ctx" | 217 | .Fa "EVP_CIPHER_CTX *ctx" |
218 | .Fa "unsigned char *out" | 218 | .Fa "unsigned char *out" |
219 | .Fa "int *outl" | 219 | .Fa "int *out_len" |
220 | .Fc | 220 | .Fc |
221 | .Ft int | 221 | .Ft int |
222 | .Fo EVP_DecryptInit | 222 | .Fo EVP_DecryptInit |
@@ -228,8 +228,8 @@ | |||
228 | .Ft int | 228 | .Ft int |
229 | .Fo EVP_DecryptFinal | 229 | .Fo EVP_DecryptFinal |
230 | .Fa "EVP_CIPHER_CTX *ctx" | 230 | .Fa "EVP_CIPHER_CTX *ctx" |
231 | .Fa "unsigned char *outm" | 231 | .Fa "unsigned char *out" |
232 | .Fa "int *outl" | 232 | .Fa "int *out_len" |
233 | .Fc | 233 | .Fc |
234 | .Ft int | 234 | .Ft int |
235 | .Fo EVP_CipherInit | 235 | .Fo EVP_CipherInit |
@@ -242,8 +242,8 @@ | |||
242 | .Ft int | 242 | .Ft int |
243 | .Fo EVP_CipherFinal | 243 | .Fo EVP_CipherFinal |
244 | .Fa "EVP_CIPHER_CTX *ctx" | 244 | .Fa "EVP_CIPHER_CTX *ctx" |
245 | .Fa "unsigned char *outm" | 245 | .Fa "unsigned char *out" |
246 | .Fa "int *outl" | 246 | .Fa "int *out_len" |
247 | .Fc | 247 | .Fc |
248 | .Ft int | 248 | .Ft int |
249 | .Fo EVP_CIPHER_CTX_encrypting | 249 | .Fo EVP_CIPHER_CTX_encrypting |
@@ -378,7 +378,7 @@ This is done when the default cipher parameters are not appropriate. | |||
378 | .Pp | 378 | .Pp |
379 | .Fn EVP_EncryptUpdate | 379 | .Fn EVP_EncryptUpdate |
380 | encrypts | 380 | encrypts |
381 | .Fa inl | 381 | .Fa in_len |
382 | bytes from the buffer | 382 | bytes from the buffer |
383 | .Fa in | 383 | .Fa in |
384 | and writes the encrypted version to | 384 | and writes the encrypted version to |
@@ -387,11 +387,13 @@ This function can be called multiple times to encrypt successive blocks | |||
387 | of data. | 387 | of data. |
388 | The amount of data written depends on the block alignment of the | 388 | The amount of data written depends on the block alignment of the |
389 | encrypted data: as a result the amount of data written may be anything | 389 | encrypted data: as a result the amount of data written may be anything |
390 | from zero bytes to (inl + cipher_block_size - 1) so | 390 | from zero bytes to |
391 | .Pq Fa in_len No + cipher_block_size - 1 | ||
392 | so | ||
391 | .Fa out | 393 | .Fa out |
392 | should contain sufficient room. | 394 | should contain sufficient room. |
393 | The actual number of bytes written is placed in | 395 | The actual number of bytes written is placed in |
394 | .Fa outl . | 396 | .Pf * Fa out_len . |
395 | .Pp | 397 | .Pp |
396 | If padding is enabled (the default) then | 398 | If padding is enabled (the default) then |
397 | .Fn EVP_EncryptFinal | 399 | .Fn EVP_EncryptFinal |
@@ -405,7 +407,7 @@ The encrypted final data is written to | |||
405 | .Fa out | 407 | .Fa out |
406 | which should have sufficient space for one cipher block. | 408 | which should have sufficient space for one cipher block. |
407 | The number of bytes written is placed in | 409 | The number of bytes written is placed in |
408 | .Fa outl . | 410 | .Pf * Fa out_len . |
409 | After this function is called, the encryption operation is finished and | 411 | After this function is called, the encryption operation is finished and |
410 | no further calls to | 412 | no further calls to |
411 | .Fn EVP_EncryptUpdate | 413 | .Fn EVP_EncryptUpdate |
@@ -436,9 +438,10 @@ operations except that if padding is enabled the decrypted data buffer | |||
436 | .Fa out | 438 | .Fa out |
437 | passed to | 439 | passed to |
438 | .Fn EVP_DecryptUpdate | 440 | .Fn EVP_DecryptUpdate |
439 | should have sufficient room for (inl + cipher_block_size) bytes | 441 | should have sufficient room for |
440 | unless the cipher block size is 1 in which case | 442 | .Pq Fa in_len No + cipher_block_size |
441 | .Fa inl | 443 | bytes unless the cipher block size is 1 in which case |
444 | .Fa in_len | ||
442 | bytes is sufficient. | 445 | bytes is sufficient. |
443 | .Pp | 446 | .Pp |
444 | .Fn EVP_CipherInit , | 447 | .Fn EVP_CipherInit , |
@@ -703,7 +706,7 @@ parameters | |||
703 | set to | 706 | set to |
704 | .Dv NULL | 707 | .Dv NULL |
705 | and the length passed in the | 708 | and the length passed in the |
706 | .Fa inl | 709 | .Fa in_len |
707 | parameter. | 710 | parameter. |
708 | .Pp | 711 | .Pp |
709 | The following ctrls are supported in CCM mode: | 712 | The following ctrls are supported in CCM mode: |
@@ -729,25 +732,25 @@ The nonce length is given by 15 - L so it is 7 by default for AES. | |||
729 | Encrypt a string using blowfish: | 732 | Encrypt a string using blowfish: |
730 | .Bd -literal -offset 3n | 733 | .Bd -literal -offset 3n |
731 | int | 734 | int |
732 | do_crypt(char *outfile) | 735 | do_crypt(char *out_filename) |
733 | { | 736 | { |
734 | unsigned char outbuf[1024]; | 737 | unsigned char out_buf[1024]; |
735 | int outlen, tmplen; | 738 | int out_len, tmp_len; |
736 | /* | 739 | /* |
737 | * Bogus key and IV: we'd normally set these from | 740 | * Bogus key and IV: we'd normally set these from |
738 | * another source. | 741 | * another source. |
739 | */ | 742 | */ |
740 | unsigned char key[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; | 743 | unsigned char key[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; |
741 | unsigned char iv[] = {1,2,3,4,5,6,7,8}; | 744 | unsigned char iv[] = {1,2,3,4,5,6,7,8}; |
742 | const char intext[] = "Some Crypto Text"; | 745 | const char in_text[] = "Some Crypto Text"; |
743 | EVP_CIPHER_CTX *ctx; | 746 | EVP_CIPHER_CTX *ctx; |
744 | FILE *out; | 747 | FILE *out_fileptr; |
745 | 748 | ||
746 | ctx = EVP_CIPHER_CTX_new(); | 749 | ctx = EVP_CIPHER_CTX_new(); |
747 | EVP_EncryptInit_ex(ctx, EVP_bf_cbc(), NULL, key, iv); | 750 | EVP_EncryptInit_ex(ctx, EVP_bf_cbc(), NULL, key, iv); |
748 | 751 | ||
749 | if (!EVP_EncryptUpdate(ctx, outbuf, &outlen, intext, | 752 | if (!EVP_EncryptUpdate(ctx, out_buf, &out_len, in_text, |
750 | strlen(intext))) { | 753 | strlen(in_text))) { |
751 | /* Error */ | 754 | /* Error */ |
752 | EVP_CIPHER_CTX_free(ctx); | 755 | EVP_CIPHER_CTX_free(ctx); |
753 | return 0; | 756 | return 0; |
@@ -756,12 +759,12 @@ do_crypt(char *outfile) | |||
756 | * Buffer passed to EVP_EncryptFinal() must be after data just | 759 | * Buffer passed to EVP_EncryptFinal() must be after data just |
757 | * encrypted to avoid overwriting it. | 760 | * encrypted to avoid overwriting it. |
758 | */ | 761 | */ |
759 | if (!EVP_EncryptFinal_ex(ctx, outbuf + outlen, &tmplen)) { | 762 | if (!EVP_EncryptFinal_ex(ctx, out_buf + out_len, &tmp_len)) { |
760 | /* Error */ | 763 | /* Error */ |
761 | EVP_CIPHER_CTX_free(ctx); | 764 | EVP_CIPHER_CTX_free(ctx); |
762 | return 0; | 765 | return 0; |
763 | } | 766 | } |
764 | outlen += tmplen; | 767 | out_len += tmp_len; |
765 | EVP_CIPHER_CTX_free(ctx); | 768 | EVP_CIPHER_CTX_free(ctx); |
766 | /* | 769 | /* |
767 | * Need binary mode for fopen because encrypted data is | 770 | * Need binary mode for fopen because encrypted data is |
@@ -769,13 +772,13 @@ do_crypt(char *outfile) | |||
769 | * it won't be NUL terminated and may contain embedded | 772 | * it won't be NUL terminated and may contain embedded |
770 | * NULs. | 773 | * NULs. |
771 | */ | 774 | */ |
772 | out = fopen(outfile, "wb"); | 775 | out_fileptr = fopen(out_filename, "wb"); |
773 | if (out == NULL) { | 776 | if (out_fileptr == NULL) { |
774 | /* Error */ | 777 | /* Error */ |
775 | return 0; | 778 | return 0; |
776 | } | 779 | } |
777 | fwrite(outbuf, 1, outlen, out); | 780 | fwrite(out_buf, 1, out_len, out_fileptr); |
778 | fclose(out); | 781 | fclose(out_fileptr); |
779 | return 1; | 782 | return 1; |
780 | } | 783 | } |
781 | .Ed | 784 | .Ed |
@@ -792,11 +795,11 @@ General encryption, decryption function example using FILE I/O and AES128 | |||
792 | with a 128-bit key: | 795 | with a 128-bit key: |
793 | .Bd -literal | 796 | .Bd -literal |
794 | int | 797 | int |
795 | do_crypt(FILE *in, FILE *out, int do_encrypt) | 798 | do_crypt(FILE *in_fileptr, FILE *out_fileptr, int do_encrypt) |
796 | { | 799 | { |
797 | /* Allow enough space in output buffer for additional block */ | 800 | /* Allow enough space in output buffer for additional block */ |
798 | unsigned char inbuf[1024], outbuf[1024 + EVP_MAX_BLOCK_LENGTH]; | 801 | unsigned char in_buf[1024], out_buf[1024 + EVP_MAX_BLOCK_LENGTH]; |
799 | int inlen, outlen; | 802 | int in_len, out_len; |
800 | EVP_CIPHER_CTX *ctx; | 803 | EVP_CIPHER_CTX *ctx; |
801 | 804 | ||
802 | /* | 805 | /* |
@@ -812,23 +815,23 @@ do_crypt(FILE *in, FILE *out, int do_encrypt) | |||
812 | EVP_CipherInit_ex(ctx, NULL, NULL, key, iv, do_encrypt); | 815 | EVP_CipherInit_ex(ctx, NULL, NULL, key, iv, do_encrypt); |
813 | 816 | ||
814 | for (;;) { | 817 | for (;;) { |
815 | inlen = fread(inbuf, 1, 1024, in); | 818 | in_len = fread(in_buf, 1, 1024, in_fileptr); |
816 | if (inlen <= 0) | 819 | if (in_len <= 0) |
817 | break; | 820 | break; |
818 | if (!EVP_CipherUpdate(ctx, outbuf, &outlen, inbuf, | 821 | if (!EVP_CipherUpdate(ctx, out_buf, &out_len, in_buf, |
819 | inlen)) { | 822 | in_len)) { |
820 | /* Error */ | 823 | /* Error */ |
821 | EVP_CIPHER_CTX_free(ctx); | 824 | EVP_CIPHER_CTX_free(ctx); |
822 | return 0; | 825 | return 0; |
823 | } | 826 | } |
824 | fwrite(outbuf, 1, outlen, out); | 827 | fwrite(out_buf, 1, out_len, out_fileptr); |
825 | } | 828 | } |
826 | if (!EVP_CipherFinal_ex(ctx, outbuf, &outlen)) { | 829 | if (!EVP_CipherFinal_ex(ctx, out_buf, &out_len)) { |
827 | /* Error */ | 830 | /* Error */ |
828 | EVP_CIPHER_CTX_free(ctx); | 831 | EVP_CIPHER_CTX_free(ctx); |
829 | return 0; | 832 | return 0; |
830 | } | 833 | } |
831 | fwrite(outbuf, 1, outlen, out); | 834 | fwrite(out_buf, 1, out_len, out_fileptr); |
832 | 835 | ||
833 | EVP_CIPHER_CTX_free(ctx); | 836 | EVP_CIPHER_CTX_free(ctx); |
834 | return 1; | 837 | return 1; |