Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge pull request #43 from pghmcfc/develop
Add support for two-key Triple-DES
  • Loading branch information
sjaeckel committed Apr 28, 2014
2 parents 449d5e7 + 445dfa6 commit f4d7baa
Showing 1 changed file with 13 additions and 3 deletions.
16 changes: 13 additions & 3 deletions src/ciphers/des.c
Expand Up @@ -1562,17 +1562,27 @@ int des3_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_k
return CRYPT_INVALID_ROUNDS;
}

if (keylen != 24) {
if (keylen != 24 && keylen != 16) {
return CRYPT_INVALID_KEYSIZE;
}

deskey(key, EN0, skey->des3.ek[0]);
deskey(key+8, DE1, skey->des3.ek[1]);
deskey(key+16, EN0, skey->des3.ek[2]);
if (keylen == 24) {
deskey(key+16, EN0, skey->des3.ek[2]);
} else {
/* two-key 3DES: K3=K1 */
deskey(key, EN0, skey->des3.ek[2]);
}

deskey(key, DE1, skey->des3.dk[2]);
deskey(key+8, EN0, skey->des3.dk[1]);
deskey(key+16, DE1, skey->des3.dk[0]);
if (keylen == 24) {
deskey(key+16, DE1, skey->des3.dk[0]);
} else {
/* two-key 3DES: K3=K1 */
deskey(key, DE1, skey->des3.dk[0]);
}

return CRYPT_OK;
}
Expand Down

0 comments on commit f4d7baa

Please sign in to comment.