xref: /plan9/sys/src/cmd/ssh1/cipherblowfish.c (revision 63afb9a5d3f910047231762bcce0ee49fed3d07c)
1*63afb9a5SDavid du Colombier #include "ssh.h"
2*63afb9a5SDavid du Colombier 
3*63afb9a5SDavid du Colombier struct CipherState
4*63afb9a5SDavid du Colombier {
5*63afb9a5SDavid du Colombier 	BFstate enc;
6*63afb9a5SDavid du Colombier 	BFstate dec;
7*63afb9a5SDavid du Colombier };
8*63afb9a5SDavid du Colombier 
9*63afb9a5SDavid du Colombier static CipherState*
initblowfish(Conn * c,int)10*63afb9a5SDavid du Colombier initblowfish(Conn *c, int)
11*63afb9a5SDavid du Colombier {
12*63afb9a5SDavid du Colombier 	CipherState *cs;
13*63afb9a5SDavid du Colombier 
14*63afb9a5SDavid du Colombier 	cs = emalloc(sizeof(CipherState));
15*63afb9a5SDavid du Colombier 	setupBFstate(&cs->enc, c->sesskey, SESSKEYLEN, nil);
16*63afb9a5SDavid du Colombier 	setupBFstate(&cs->dec, c->sesskey, SESSKEYLEN, nil);
17*63afb9a5SDavid du Colombier 	return cs;
18*63afb9a5SDavid du Colombier }
19*63afb9a5SDavid du Colombier 
20*63afb9a5SDavid du Colombier static void
encryptblowfish(CipherState * cs,uchar * buf,int nbuf)21*63afb9a5SDavid du Colombier encryptblowfish(CipherState *cs, uchar *buf, int nbuf)
22*63afb9a5SDavid du Colombier {
23*63afb9a5SDavid du Colombier 	bfCBCencrypt(buf, nbuf, &cs->enc);
24*63afb9a5SDavid du Colombier }
25*63afb9a5SDavid du Colombier 
26*63afb9a5SDavid du Colombier static void
decryptblowfish(CipherState * cs,uchar * buf,int nbuf)27*63afb9a5SDavid du Colombier decryptblowfish(CipherState *cs, uchar *buf, int nbuf)
28*63afb9a5SDavid du Colombier {
29*63afb9a5SDavid du Colombier 	bfCBCdecrypt(buf, nbuf, &cs->dec);
30*63afb9a5SDavid du Colombier }
31*63afb9a5SDavid du Colombier 
32*63afb9a5SDavid du Colombier Cipher cipherblowfish =
33*63afb9a5SDavid du Colombier {
34*63afb9a5SDavid du Colombier 	SSH_CIPHER_BLOWFISH,
35*63afb9a5SDavid du Colombier 	"blowfish",
36*63afb9a5SDavid du Colombier 	initblowfish,
37*63afb9a5SDavid du Colombier 	encryptblowfish,
38*63afb9a5SDavid du Colombier 	decryptblowfish,
39*63afb9a5SDavid du Colombier };
40*63afb9a5SDavid du Colombier 
41