MCPcopy Create free account
hub / github.com/ashkulz/NppFTP / DES_encrypt

Method DES_encrypt

src/Encryption.cpp:101–138  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

99}
100
101char* Encryption::DES_encrypt(const char * key, int keysize, const char * data, int size, bool addZero, int type) {
102 char keybuf[KeySize];
103 if (key == NULL) {
104 memcpy(keybuf, _DefaultKey, KeySize);
105 keysize = KeySize;
106 } else {
107 if (keysize == -1)
108 keysize = strlen(key); //zero terminator NOT included
109 if (keysize > KeySize)
110 keysize = KeySize;
111 memcpy(keybuf, key, keysize);
112 for(size_t i = keysize; i < KeySize; i++)
113 keybuf[i] = 0;
114 }
115
116 if (size == -1)
117 size = strlen(data);
118
119 char * decrypted = new char[size+(addZero?1:0)];
120 if (!decrypted)
121 return NULL;
122
123 if (addZero)
124 decrypted[size] = 0;
125
126 // Prepare the key for use with DES_cfb64_encrypt
127 DES_cblock key2;
128 DES_key_schedule schedule;
129 memcpy(key2, keybuf, KeySize);
130 DES_set_odd_parity(&key2);
131 DES_set_key_checked(&key2, &schedule);
132
133 // Decryption occurs here
134 int n = 0;
135 DES_cfb64_encrypt((unsigned char*) data, (unsigned char *)decrypted, size, &schedule, &key2, &n, type);
136
137 return decrypted;
138}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected