diff options
Diffstat (limited to 'src/lib/libcrypto/evp/e_cbc_3d.c')
-rw-r--r-- | src/lib/libcrypto/evp/e_cbc_3d.c | 64 |
1 files changed, 26 insertions, 38 deletions
diff --git a/src/lib/libcrypto/evp/e_cbc_3d.c b/src/lib/libcrypto/evp/e_cbc_3d.c index 5761bf186a..02ccc6dc90 100644 --- a/src/lib/libcrypto/evp/e_cbc_3d.c +++ b/src/lib/libcrypto/evp/e_cbc_3d.c | |||
@@ -56,24 +56,18 @@ | |||
56 | * [including the GNU Public Licence.] | 56 | * [including the GNU Public Licence.] |
57 | */ | 57 | */ |
58 | 58 | ||
59 | #ifndef NO_DES | ||
59 | #include <stdio.h> | 60 | #include <stdio.h> |
60 | #include "cryptlib.h" | 61 | #include "cryptlib.h" |
61 | #include "evp.h" | 62 | #include <openssl/evp.h> |
62 | #include "objects.h" | 63 | #include <openssl/objects.h> |
63 | 64 | ||
64 | #ifndef NOPROTO | ||
65 | static void des_cbc_ede_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, | 65 | static void des_cbc_ede_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, |
66 | unsigned char *iv,int enc); | 66 | unsigned char *iv,int enc); |
67 | static void des_cbc_ede3_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, | 67 | static void des_cbc_ede3_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, |
68 | unsigned char *iv,int enc); | 68 | unsigned char *iv,int enc); |
69 | static void des_cbc_ede_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, | 69 | static void des_cbc_ede_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, |
70 | unsigned char *in, unsigned int inl); | 70 | unsigned char *in, unsigned int inl); |
71 | #else | ||
72 | static void des_cbc_ede_init_key(); | ||
73 | static void des_cbc_ede3_init_key(); | ||
74 | static void des_cbc_ede_cipher(); | ||
75 | #endif | ||
76 | |||
77 | static EVP_CIPHER d_cbc_ede_cipher2= | 71 | static EVP_CIPHER d_cbc_ede_cipher2= |
78 | { | 72 | { |
79 | NID_des_ede_cbc, | 73 | NID_des_ede_cbc, |
@@ -83,8 +77,8 @@ static EVP_CIPHER d_cbc_ede_cipher2= | |||
83 | NULL, | 77 | NULL, |
84 | sizeof(EVP_CIPHER_CTX)-sizeof((((EVP_CIPHER_CTX *)NULL)->c))+ | 78 | sizeof(EVP_CIPHER_CTX)-sizeof((((EVP_CIPHER_CTX *)NULL)->c))+ |
85 | sizeof((((EVP_CIPHER_CTX *)NULL)->c.des_ede)), | 79 | sizeof((((EVP_CIPHER_CTX *)NULL)->c.des_ede)), |
86 | EVP_CIPHER_get_asn1_iv, | ||
87 | EVP_CIPHER_set_asn1_iv, | 80 | EVP_CIPHER_set_asn1_iv, |
81 | EVP_CIPHER_get_asn1_iv, | ||
88 | }; | 82 | }; |
89 | 83 | ||
90 | static EVP_CIPHER d_cbc_ede_cipher3= | 84 | static EVP_CIPHER d_cbc_ede_cipher3= |
@@ -100,64 +94,58 @@ static EVP_CIPHER d_cbc_ede_cipher3= | |||
100 | EVP_CIPHER_get_asn1_iv, | 94 | EVP_CIPHER_get_asn1_iv, |
101 | }; | 95 | }; |
102 | 96 | ||
103 | EVP_CIPHER *EVP_des_ede_cbc() | 97 | EVP_CIPHER *EVP_des_ede_cbc(void) |
104 | { | 98 | { |
105 | return(&d_cbc_ede_cipher2); | 99 | return(&d_cbc_ede_cipher2); |
106 | } | 100 | } |
107 | 101 | ||
108 | EVP_CIPHER *EVP_des_ede3_cbc() | 102 | EVP_CIPHER *EVP_des_ede3_cbc(void) |
109 | { | 103 | { |
110 | return(&d_cbc_ede_cipher3); | 104 | return(&d_cbc_ede_cipher3); |
111 | } | 105 | } |
112 | 106 | ||
113 | static void des_cbc_ede_init_key(ctx,key,iv,enc) | 107 | static void des_cbc_ede_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, |
114 | EVP_CIPHER_CTX *ctx; | 108 | unsigned char *iv, int enc) |
115 | unsigned char *key; | ||
116 | unsigned char *iv; | ||
117 | int enc; | ||
118 | { | 109 | { |
110 | des_cblock *deskey = (des_cblock *)key; | ||
111 | |||
119 | if (iv != NULL) | 112 | if (iv != NULL) |
120 | memcpy(&(ctx->oiv[0]),iv,8); | 113 | memcpy(&(ctx->oiv[0]),iv,8); |
121 | memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8); | 114 | memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8); |
122 | 115 | ||
123 | if (key != NULL) | 116 | if (deskey != NULL) |
124 | { | 117 | { |
125 | des_set_key((des_cblock *)key,ctx->c.des_ede.ks1); | 118 | des_set_key(&deskey[0],ctx->c.des_ede.ks1); |
126 | des_set_key((des_cblock *)&(key[8]),ctx->c.des_ede.ks2); | 119 | des_set_key(&deskey[1],ctx->c.des_ede.ks2); |
127 | memcpy( (char *)ctx->c.des_ede.ks3, | 120 | memcpy( (char *)ctx->c.des_ede.ks3, |
128 | (char *)ctx->c.des_ede.ks1, | 121 | (char *)ctx->c.des_ede.ks1, |
129 | sizeof(ctx->c.des_ede.ks1)); | 122 | sizeof(ctx->c.des_ede.ks1)); |
130 | } | 123 | } |
131 | } | 124 | } |
132 | 125 | ||
133 | static void des_cbc_ede3_init_key(ctx,key,iv,enc) | 126 | static void des_cbc_ede3_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, |
134 | EVP_CIPHER_CTX *ctx; | 127 | unsigned char *iv, int enc) |
135 | unsigned char *key; | ||
136 | unsigned char *iv; | ||
137 | int enc; | ||
138 | { | 128 | { |
129 | des_cblock *deskey = (des_cblock *)key; | ||
130 | |||
139 | if (iv != NULL) | 131 | if (iv != NULL) |
140 | memcpy(&(ctx->oiv[0]),iv,8); | 132 | memcpy(&(ctx->oiv[0]),iv,8); |
141 | memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8); | 133 | memcpy(&(ctx->iv[0]),&(ctx->oiv[0]),8); |
142 | 134 | ||
143 | if (key != NULL) | 135 | if (deskey != NULL) |
144 | { | 136 | { |
145 | des_set_key((des_cblock *)key,ctx->c.des_ede.ks1); | 137 | des_set_key(&deskey[0],ctx->c.des_ede.ks1); |
146 | des_set_key((des_cblock *)&(key[8]),ctx->c.des_ede.ks2); | 138 | des_set_key(&deskey[1],ctx->c.des_ede.ks2); |
147 | des_set_key((des_cblock *)&(key[16]),ctx->c.des_ede.ks3); | 139 | des_set_key(&deskey[2],ctx->c.des_ede.ks3); |
148 | } | 140 | } |
149 | } | 141 | } |
150 | 142 | ||
151 | static void des_cbc_ede_cipher(ctx,out,in,inl) | 143 | static void des_cbc_ede_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, |
152 | EVP_CIPHER_CTX *ctx; | 144 | unsigned char *in, unsigned int inl) |
153 | unsigned char *out; | ||
154 | unsigned char *in; | ||
155 | unsigned int inl; | ||
156 | { | 145 | { |
157 | des_ede3_cbc_encrypt( | 146 | des_ede3_cbc_encrypt(in,out,inl, ctx->c.des_ede.ks1, |
158 | (des_cblock *)in,(des_cblock *)out, | ||
159 | (long)inl, ctx->c.des_ede.ks1, | ||
160 | ctx->c.des_ede.ks2,ctx->c.des_ede.ks3, | 147 | ctx->c.des_ede.ks2,ctx->c.des_ede.ks3, |
161 | (des_cblock *)&(ctx->iv[0]), | 148 | (des_cblock *) &(ctx->iv[0]), |
162 | ctx->encrypt); | 149 | ctx->encrypt); |
163 | } | 150 | } |
151 | #endif | ||