diff options
-rw-r--r-- | src/lib/libcrypto/evp/evp_cipher.c | 142 |
1 files changed, 73 insertions, 69 deletions
diff --git a/src/lib/libcrypto/evp/evp_cipher.c b/src/lib/libcrypto/evp/evp_cipher.c index d8e802e94b..1ee52cb615 100644 --- a/src/lib/libcrypto/evp/evp_cipher.c +++ b/src/lib/libcrypto/evp/evp_cipher.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: evp_cipher.c,v 1.11 2024/01/02 21:12:25 tb Exp $ */ | 1 | /* $OpenBSD: evp_cipher.c,v 1.12 2024/01/02 21:24:42 tb Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -643,33 +643,6 @@ EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *ctx) | |||
643 | } | 643 | } |
644 | 644 | ||
645 | int | 645 | int |
646 | EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *ctx, int key_len) | ||
647 | { | ||
648 | /* XXX - remove this. It's unused. */ | ||
649 | if (ctx->cipher->flags & EVP_CIPH_CUSTOM_KEY_LENGTH) | ||
650 | return EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_SET_KEY_LENGTH, | ||
651 | key_len, NULL); | ||
652 | if (ctx->key_len == key_len) | ||
653 | return 1; | ||
654 | if (key_len > 0 && (ctx->cipher->flags & EVP_CIPH_VARIABLE_LENGTH)) { | ||
655 | ctx->key_len = key_len; | ||
656 | return 1; | ||
657 | } | ||
658 | EVPerror(EVP_R_INVALID_KEY_LENGTH); | ||
659 | return 0; | ||
660 | } | ||
661 | |||
662 | int | ||
663 | EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *ctx, int pad) | ||
664 | { | ||
665 | if (pad) | ||
666 | ctx->flags &= ~EVP_CIPH_NO_PADDING; | ||
667 | else | ||
668 | ctx->flags |= EVP_CIPH_NO_PADDING; | ||
669 | return 1; | ||
670 | } | ||
671 | |||
672 | int | ||
673 | EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr) | 646 | EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr) |
674 | { | 647 | { |
675 | int ret; | 648 | int ret; |
@@ -740,6 +713,10 @@ EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX *out, const EVP_CIPHER_CTX *in) | |||
740 | return 1; | 713 | return 1; |
741 | } | 714 | } |
742 | 715 | ||
716 | /* | ||
717 | * EVP_CIPHER_CTX accessors. | ||
718 | */ | ||
719 | |||
743 | const EVP_CIPHER * | 720 | const EVP_CIPHER * |
744 | EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx) | 721 | EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx) |
745 | { | 722 | { |
@@ -752,47 +729,6 @@ EVP_CIPHER_CTX_encrypting(const EVP_CIPHER_CTX *ctx) | |||
752 | return ctx->encrypt; | 729 | return ctx->encrypt; |
753 | } | 730 | } |
754 | 731 | ||
755 | void * | ||
756 | EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx) | ||
757 | { | ||
758 | return ctx->app_data; | ||
759 | } | ||
760 | |||
761 | void | ||
762 | EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data) | ||
763 | { | ||
764 | ctx->app_data = data; | ||
765 | } | ||
766 | |||
767 | void * | ||
768 | EVP_CIPHER_CTX_get_cipher_data(const EVP_CIPHER_CTX *ctx) | ||
769 | { | ||
770 | return ctx->cipher_data; | ||
771 | } | ||
772 | |||
773 | void * | ||
774 | EVP_CIPHER_CTX_set_cipher_data(EVP_CIPHER_CTX *ctx, void *cipher_data) | ||
775 | { | ||
776 | void *old_cipher_data; | ||
777 | |||
778 | old_cipher_data = ctx->cipher_data; | ||
779 | ctx->cipher_data = cipher_data; | ||
780 | |||
781 | return old_cipher_data; | ||
782 | } | ||
783 | |||
784 | unsigned char * | ||
785 | EVP_CIPHER_CTX_buf_noconst(EVP_CIPHER_CTX *ctx) | ||
786 | { | ||
787 | return ctx->buf; | ||
788 | } | ||
789 | |||
790 | int | ||
791 | EVP_CIPHER_CTX_key_length(const EVP_CIPHER_CTX *ctx) | ||
792 | { | ||
793 | return ctx->key_len; | ||
794 | } | ||
795 | |||
796 | int | 732 | int |
797 | EVP_CIPHER_CTX_get_iv(const EVP_CIPHER_CTX *ctx, unsigned char *iv, size_t len) | 733 | EVP_CIPHER_CTX_get_iv(const EVP_CIPHER_CTX *ctx, unsigned char *iv, size_t len) |
798 | { | 734 | { |
@@ -831,6 +767,57 @@ EVP_CIPHER_CTX_set_iv(EVP_CIPHER_CTX *ctx, const unsigned char *iv, size_t len) | |||
831 | return 1; | 767 | return 1; |
832 | } | 768 | } |
833 | 769 | ||
770 | unsigned char * | ||
771 | EVP_CIPHER_CTX_buf_noconst(EVP_CIPHER_CTX *ctx) | ||
772 | { | ||
773 | return ctx->buf; | ||
774 | } | ||
775 | |||
776 | void * | ||
777 | EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx) | ||
778 | { | ||
779 | return ctx->app_data; | ||
780 | } | ||
781 | |||
782 | void | ||
783 | EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data) | ||
784 | { | ||
785 | ctx->app_data = data; | ||
786 | } | ||
787 | |||
788 | int | ||
789 | EVP_CIPHER_CTX_key_length(const EVP_CIPHER_CTX *ctx) | ||
790 | { | ||
791 | return ctx->key_len; | ||
792 | } | ||
793 | |||
794 | int | ||
795 | EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *ctx, int key_len) | ||
796 | { | ||
797 | /* XXX - remove this. It's unused. */ | ||
798 | if (ctx->cipher->flags & EVP_CIPH_CUSTOM_KEY_LENGTH) | ||
799 | return EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_SET_KEY_LENGTH, | ||
800 | key_len, NULL); | ||
801 | if (ctx->key_len == key_len) | ||
802 | return 1; | ||
803 | if (key_len > 0 && (ctx->cipher->flags & EVP_CIPH_VARIABLE_LENGTH)) { | ||
804 | ctx->key_len = key_len; | ||
805 | return 1; | ||
806 | } | ||
807 | EVPerror(EVP_R_INVALID_KEY_LENGTH); | ||
808 | return 0; | ||
809 | } | ||
810 | |||
811 | int | ||
812 | EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *ctx, int pad) | ||
813 | { | ||
814 | if (pad) | ||
815 | ctx->flags &= ~EVP_CIPH_NO_PADDING; | ||
816 | else | ||
817 | ctx->flags |= EVP_CIPH_NO_PADDING; | ||
818 | return 1; | ||
819 | } | ||
820 | |||
834 | void | 821 | void |
835 | EVP_CIPHER_CTX_set_flags(EVP_CIPHER_CTX *ctx, int flags) | 822 | EVP_CIPHER_CTX_set_flags(EVP_CIPHER_CTX *ctx, int flags) |
836 | { | 823 | { |
@@ -849,6 +836,23 @@ EVP_CIPHER_CTX_test_flags(const EVP_CIPHER_CTX *ctx, int flags) | |||
849 | return (ctx->flags & flags); | 836 | return (ctx->flags & flags); |
850 | } | 837 | } |
851 | 838 | ||
839 | void * | ||
840 | EVP_CIPHER_CTX_get_cipher_data(const EVP_CIPHER_CTX *ctx) | ||
841 | { | ||
842 | return ctx->cipher_data; | ||
843 | } | ||
844 | |||
845 | void * | ||
846 | EVP_CIPHER_CTX_set_cipher_data(EVP_CIPHER_CTX *ctx, void *cipher_data) | ||
847 | { | ||
848 | void *old_cipher_data; | ||
849 | |||
850 | old_cipher_data = ctx->cipher_data; | ||
851 | ctx->cipher_data = cipher_data; | ||
852 | |||
853 | return old_cipher_data; | ||
854 | } | ||
855 | |||
852 | /* | 856 | /* |
853 | * EVP_CIPHER_CTX getters that reach into the cipher attachted to the contex. | 857 | * EVP_CIPHER_CTX getters that reach into the cipher attachted to the contex. |
854 | */ | 858 | */ |