summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/evp/e_cbc_3d.c
diff options
context:
space:
mode:
authorbeck <>1999-09-29 04:37:45 +0000
committerbeck <>1999-09-29 04:37:45 +0000
commitde8f24ea083384bb66b32ec105dc4743c5663cdf (patch)
tree1412176ae62a3cab2cf2b0b92150fcbceaac6092 /src/lib/libcrypto/evp/e_cbc_3d.c
parentcb929d29896bcb87c2a97417fbd03e50078fc178 (diff)
downloadopenbsd-de8f24ea083384bb66b32ec105dc4743c5663cdf.tar.gz
openbsd-de8f24ea083384bb66b32ec105dc4743c5663cdf.tar.bz2
openbsd-de8f24ea083384bb66b32ec105dc4743c5663cdf.zip
OpenSSL 0.9.4 merge
Diffstat (limited to 'src/lib/libcrypto/evp/e_cbc_3d.c')
-rw-r--r--src/lib/libcrypto/evp/e_cbc_3d.c64
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
65static void des_cbc_ede_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, 65static 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);
67static void des_cbc_ede3_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key, 67static 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);
69static void des_cbc_ede_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 69static 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
72static void des_cbc_ede_init_key();
73static void des_cbc_ede3_init_key();
74static void des_cbc_ede_cipher();
75#endif
76
77static EVP_CIPHER d_cbc_ede_cipher2= 71static 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
90static EVP_CIPHER d_cbc_ede_cipher3= 84static 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
103EVP_CIPHER *EVP_des_ede_cbc() 97EVP_CIPHER *EVP_des_ede_cbc(void)
104 { 98 {
105 return(&d_cbc_ede_cipher2); 99 return(&d_cbc_ede_cipher2);
106 } 100 }
107 101
108EVP_CIPHER *EVP_des_ede3_cbc() 102EVP_CIPHER *EVP_des_ede3_cbc(void)
109 { 103 {
110 return(&d_cbc_ede_cipher3); 104 return(&d_cbc_ede_cipher3);
111 } 105 }
112 106
113static void des_cbc_ede_init_key(ctx,key,iv,enc) 107static void des_cbc_ede_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
114EVP_CIPHER_CTX *ctx; 108 unsigned char *iv, int enc)
115unsigned char *key;
116unsigned char *iv;
117int 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
133static void des_cbc_ede3_init_key(ctx,key,iv,enc) 126static void des_cbc_ede3_init_key(EVP_CIPHER_CTX *ctx, unsigned char *key,
134EVP_CIPHER_CTX *ctx; 127 unsigned char *iv, int enc)
135unsigned char *key;
136unsigned char *iv;
137int 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
151static void des_cbc_ede_cipher(ctx,out,in,inl) 143static void des_cbc_ede_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
152EVP_CIPHER_CTX *ctx; 144 unsigned char *in, unsigned int inl)
153unsigned char *out;
154unsigned char *in;
155unsigned 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