1656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "EXTERN.h" 2656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "perl.h" 3656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "XSUB.h" 4656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "des.h" 5656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 6656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define deschar char 7656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic STRLEN len; 8656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 9656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic int 10656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectnot_here(s) 11656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectchar *s; 12656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project{ 13656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project croak("%s not implemented on this architecture", s); 14656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project return -1; 15656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project} 16656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 17656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectMODULE = DES PACKAGE = DES PREFIX = des_ 18656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 19656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectchar * 20656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectdes_crypt(buf,salt) 21656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project char * buf 22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project char * salt 23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid 25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectdes_set_odd_parity(key) 26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_cblock * key 27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectPPCODE: 28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project SV *s; 30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project s=sv_newmortal(); 32656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sv_setpvn(s,(char *)key,8); 33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_set_odd_parity((des_cblock *)SvPV(s,na)); 34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project PUSHs(s); 35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 37656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint 38656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectdes_is_weak_key(key) 39656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_cblock * key 40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectdes_key_schedule 42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectdes_set_key(key) 43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_cblock * key 44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectCODE: 45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_set_key(key,RETVAL); 46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectOUTPUT: 47656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectRETVAL 48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 49656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectdes_cblock 50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectdes_ecb_encrypt(input,ks,encrypt) 51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_cblock * input 52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_key_schedule * ks 53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project int encrypt 54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectCODE: 55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_ecb_encrypt(input,&RETVAL,*ks,encrypt); 56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectOUTPUT: 57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectRETVAL 58656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 59656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid 60656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectdes_cbc_encrypt(input,ks,ivec,encrypt) 61656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project char * input 62656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_key_schedule * ks 63656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_cblock * ivec 64656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project int encrypt 65656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectPPCODE: 66656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 67656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project SV *s; 68656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project STRLEN len,l; 69656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project char *c; 70656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 71656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project l=SvCUR(ST(0)); 72656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project len=((((unsigned long)l)+7)/8)*8; 73656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project s=sv_newmortal(); 74656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sv_setpvn(s,"",0); 75656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project SvGROW(s,len); 76656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project SvCUR_set(s,len); 77656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project c=(char *)SvPV(s,na); 78656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_cbc_encrypt((des_cblock *)input,(des_cblock *)c, 79656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project l,*ks,ivec,encrypt); 80656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sv_setpvn(ST(2),(char *)c[len-8],8); 81656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project PUSHs(s); 82656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 83656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 84656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid 85656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectdes_cbc3_encrypt(input,ks1,ks2,ivec1,ivec2,encrypt) 86656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project char * input 87656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_key_schedule * ks1 88656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_key_schedule * ks2 89656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_cblock * ivec1 90656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_cblock * ivec2 91656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project int encrypt 92656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectPPCODE: 93656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 94656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project SV *s; 95656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project STRLEN len,l; 96656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 97656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project l=SvCUR(ST(0)); 98656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project len=((((unsigned long)l)+7)/8)*8; 99656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project s=sv_newmortal(); 100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sv_setpvn(s,"",0); 101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project SvGROW(s,len); 102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project SvCUR_set(s,len); 103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_3cbc_encrypt((des_cblock *)input,(des_cblock *)SvPV(s,na), 104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project l,*ks1,*ks2,ivec1,ivec2,encrypt); 105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sv_setpvn(ST(3),(char *)ivec1,8); 106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sv_setpvn(ST(4),(char *)ivec2,8); 107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project PUSHs(s); 108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid 111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectdes_cbc_cksum(input,ks,ivec) 112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project char * input 113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_key_schedule * ks 114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_cblock * ivec 115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectPPCODE: 116656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project SV *s1,*s2; 118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project STRLEN len,l; 119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_cblock c; 120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project unsigned long i1,i2; 121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project s1=sv_newmortal(); 123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project s2=sv_newmortal(); 124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project l=SvCUR(ST(0)); 125656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_cbc_cksum((des_cblock *)input,(des_cblock *)c, 126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project l,*ks,ivec); 127656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project i1=c[4]|(c[5]<<8)|(c[6]<<16)|(c[7]<<24); 128656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project i2=c[0]|(c[1]<<8)|(c[2]<<16)|(c[3]<<24); 129656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sv_setiv(s1,i1); 130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sv_setiv(s2,i2); 131656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sv_setpvn(ST(2),(char *)c,8); 132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project PUSHs(s1); 133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project PUSHs(s2); 134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 136656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid 137656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectdes_cfb_encrypt(input,numbits,ks,ivec,encrypt) 138656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project char * input 139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project int numbits 140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_key_schedule * ks 141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_cblock * ivec 142656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project int encrypt 143656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectPPCODE: 144656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 145656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project SV *s; 146656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project STRLEN len; 147656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project char *c; 148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project len=SvCUR(ST(0)); 150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project s=sv_newmortal(); 151656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sv_setpvn(s,"",0); 152656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project SvGROW(s,len); 153656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project SvCUR_set(s,len); 154656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project c=(char *)SvPV(s,na); 155656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_cfb_encrypt((unsigned char *)input,(unsigned char *)c, 156656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project (int)numbits,(long)len,*ks,ivec,encrypt); 157656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sv_setpvn(ST(3),(char *)ivec,8); 158656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project PUSHs(s); 159656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 160656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectdes_cblock * 162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectdes_ecb3_encrypt(input,ks1,ks2,encrypt) 163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_cblock * input 164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_key_schedule * ks1 165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_key_schedule * ks2 166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project int encrypt 167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectCODE: 168656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_cblock c; 170656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_ecb3_encrypt((des_cblock *)input,(des_cblock *)&c, 172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *ks1,*ks2,encrypt); 173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project RETVAL= &c; 174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectOUTPUT: 176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectRETVAL 177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid 179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectdes_ofb_encrypt(input,numbits,ks,ivec) 180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project unsigned char * input 181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project int numbits 182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_key_schedule * ks 183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_cblock * ivec 184656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectPPCODE: 185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project SV *s; 187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project STRLEN len,l; 188656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project unsigned char *c; 189656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project len=SvCUR(ST(0)); 191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project s=sv_newmortal(); 192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sv_setpvn(s,"",0); 193656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project SvGROW(s,len); 194656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project SvCUR_set(s,len); 195656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project c=(unsigned char *)SvPV(s,na); 196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_ofb_encrypt((unsigned char *)input,(unsigned char *)c, 197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project numbits,len,*ks,ivec); 198656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sv_setpvn(ST(3),(char *)ivec,8); 199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project PUSHs(s); 200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid 203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectdes_pcbc_encrypt(input,ks,ivec,encrypt) 204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project char * input 205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_key_schedule * ks 206656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_cblock * ivec 207656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project int encrypt 208656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectPPCODE: 209656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project SV *s; 211656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project STRLEN len,l; 212656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project char *c; 213656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 214656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project l=SvCUR(ST(0)); 215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project len=((((unsigned long)l)+7)/8)*8; 216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project s=sv_newmortal(); 217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sv_setpvn(s,"",0); 218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project SvGROW(s,len); 219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project SvCUR_set(s,len); 220656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project c=(char *)SvPV(s,na); 221656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_pcbc_encrypt((des_cblock *)input,(des_cblock *)c, 222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project l,*ks,ivec,encrypt); 223656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sv_setpvn(ST(2),(char *)c[len-8],8); 224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project PUSHs(s); 225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 226656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 227656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectdes_cblock * 228656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectdes_random_key() 229656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectCODE: 230656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_cblock c; 232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_random_key(c); 234656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project RETVAL=&c; 235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 236656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectOUTPUT: 237656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectRETVAL 238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 239656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectdes_cblock * 240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectdes_string_to_key(str) 241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectchar * str 242656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectCODE: 243656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 244656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_cblock c; 245656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 246656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_string_to_key(str,&c); 247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project RETVAL=&c; 248656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 249656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectOUTPUT: 250656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectRETVAL 251656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 252656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid 253656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectdes_string_to_2keys(str) 254656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectchar * str 255656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectPPCODE: 256656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 257656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_cblock c1,c2; 258656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project SV *s1,*s2; 259656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 260656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project des_string_to_2keys(str,&c1,&c2); 261656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project EXTEND(sp,2); 262656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project s1=sv_newmortal(); 263656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sv_setpvn(s1,(char *)c1,8); 264656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project s2=sv_newmortal(); 265656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sv_setpvn(s2,(char *)c2,8); 266656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project PUSHs(s1); 267656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project PUSHs(s2); 268656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 269