1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #include "ssh.h"
- struct CipherState
- {
- DESstate enc3des[3];
- DESstate dec3des[3];
- };
- static CipherState*
- init3des(Conn *c, int)
- {
- int i;
- CipherState *cs;
- cs = emalloc(sizeof(CipherState));
- for(i=0; i<3; i++){
- setupDESstate(&cs->enc3des[i], c->sesskey+8*i, nil);
- setupDESstate(&cs->dec3des[i], c->sesskey+8*i, nil);
- }
- return cs;
- }
- static void
- encrypt3des(CipherState *cs, uchar *buf, int nbuf)
- {
- desCBCencrypt(buf, nbuf, &cs->enc3des[0]);
- desCBCdecrypt(buf, nbuf, &cs->enc3des[1]);
- desCBCencrypt(buf, nbuf, &cs->enc3des[2]);
- }
- static void
- decrypt3des(CipherState *cs, uchar *buf, int nbuf)
- {
- desCBCdecrypt(buf, nbuf, &cs->dec3des[2]);
- desCBCencrypt(buf, nbuf, &cs->dec3des[1]);
- desCBCdecrypt(buf, nbuf, &cs->dec3des[0]);
- }
- Cipher cipher3des =
- {
- SSH_CIPHER_3DES,
- "3des",
- init3des,
- encrypt3des,
- decrypt3des,
- };
|