30 #include <openssl/evp.h>
31 #if OPENSSL_VERSION_NUMBER >= 0x30000000L
32 #include <openssl/provider.h>
43 const unsigned char* key,
45 : decCTX(0), encCTX(0)
47 #if OPENSSL_VERSION_NUMBER >= 0x30000000L
57 static struct loadProviders {
59 EVP_MD *mdp = EVP_MD_fetch(NULL,
"SHA2-256", NULL);
60 if (mdp) EVP_MD_free(mdp);
62 (void) OSSL_PROVIDER_load(NULL,
"legacy");
69 unsigned char bfKey[16];
73 keylen =
sizeof(bfKey);
84 if (!(decCTX = EVP_CIPHER_CTX_new()))
return;
85 if (1 != EVP_DecryptInit_ex(decCTX, EVP_bf_ecb(), NULL, NULL, NULL))
return;
86 EVP_CIPHER_CTX_set_padding(decCTX, 0);
87 EVP_CIPHER_CTX_set_key_length(decCTX, keylen);
88 if (1 != EVP_DecryptInit_ex(decCTX, NULL, NULL, key, NULL))
return;
90 if (!(encCTX = EVP_CIPHER_CTX_new()))
return;
91 if (1 != EVP_EncryptInit_ex(encCTX, EVP_bf_ecb(), NULL, NULL, NULL))
return;
92 EVP_CIPHER_CTX_set_padding(encCTX, 0);
93 EVP_CIPHER_CTX_set_key_length(encCTX, keylen);
94 if (1 != EVP_EncryptInit_ex(encCTX, NULL, NULL, key, NULL))
return;
104 EVP_CIPHER_CTX_free(decCTX);
105 EVP_CIPHER_CTX_free(encCTX);
122 EVP_DecryptUpdate(decCTX, out8, &dlen, in8, 8);
142 EVP_EncryptUpdate(encCTX, out8, &dlen, in8, 8);
159 if (!isOK) {
delete obj; obj = 0;}
static XrdCryptoLite_BFecb * Instance(const unsigned char *key=0, unsigned int klen=0)
XrdCryptoLite_BFecb(bool &aOK, const unsigned char *key=0, unsigned int keylen=0)
void Decrypt(const unsigned char *in8, unsigned char *out8)
void Encrypt(const unsigned char *in8, unsigned char *out8)
static void Random(unsigned char *buff, unsigned int inblen)