on *:input:?:{
if ($left($1,1) != /) && ($hget(autocrypt $+ $cid,$active,&k) != $null) {
bset -t &m 1 $1- | var %i = 0 , %h , %kl = $bvar(&k,0) , %n = 0, %s = $bvar(&m,0)
while (%i < %s) {
inc %i | inc %n
var %h = %h $+ $base($xor($bvar(&k,%n),$bvar(&m,%i)),10,16)
if (%n == %kl) { %n = 0 }
}
.ctcp $active HEXTEXT %h
echo -a %kl $1- %h
echo -cimt own $active $+(<,$active,>) $1-
haltdef
}
}
ctcp *:autopeer *:?:{
if ($2- == -AUTOCRYPT) || ($2- == -AUTOPEER) {
hdel autocrypt $+ $cid $nick
if ($nick != $me) { .ctcp $nick AUTOPEER -AUTOPEER }
echo 4 $iif($query($nick),-eit $nick,-eist) * AutoCrypt Lost $+ $iif($query($nick) == $null,: $nick)
}
elseif (+AUTOPEER:? iswm $2) {
if ($3 == +AUTOCRYPT) { ac_keygen $nick | echo 4 -eit $nick * AutoCrypt Established }
else { ctcp $nick AUTOPEER $2 +AUTOCRYPT }
}
elseif ($gettok($2,1,58) == +AUTOCRYPT) {
bset -t &b 1 $gettok($2,2,58)
hadd -mb autocrypt $+ $cid $nick &b
echo 4 -eit $nick * AutoCrypt Established
}
haltdef
}
ctcp *:hextext:?:{
if $hget(autocrypt $+ $cid,$nick) {
var %i = 1 , %s = $len($2)
while (%i <= %s) { bset &r $calc($bvar(&r,0) + 1) $base($mid($2,%i,2),16,10) | inc %i 2 }
hadd -mb autocrypt $+ $cid buffer &r
ac_decrypt $nick $address
haltdef
}
}
alias autocrypt {
if ($$1 == -r) { ctcp $$2 AUTOPEER -AUTOCRYPT | hdel autocrypt $+ $cid $2 }
else { ctcp $1 AUTOPEER +AUTOPEER:4 +AUTOCRYPT }
}
alias -l ac_keygen {
var %k, %i = 0
while (%i < 20) { inc %i | %k = %k $+ $chr($r(48,126)) }
hadd -m autocrypt $+ $cid $1 %k
.ctcp $$1 AUTOPEER +AUTOCRYPT: $+ %k
}
alias -l ac_decrypt {
var %i = $hget(autocrypt $+ $cid,$$1,&k) , %i = $hget(autocrypt $+ $cid,buffer,&r), %i = 0 , %n , %r , %s = $bvar(&r,0), %sp
while (%i < %s) {
inc %i | inc %n
var %x = $xor($bvar(&r,%i),$bvar(&k,%n)) , %r = %r $+ $iif(%sp == 1,$chr(32)) $+ $chr(%x) , %sp = $iif(%x == 32,1,0)
if (%n == $bvar(&k,0)) { %n = 0 } }
if ($query($1) == $null) { query -n $nick }
hdel autocrypt $+ $cid buffer
echo -imt $1 $+(<,$1,>) %r
}
on ^*:text:*:?:{
if $hget(autocrypt $+ $cid,$nick) {
bset -t &r 1 $1-
hadd -mb autocrypt $+ $cid buffer &b
ac_decrypt $nick $address
haltdef
}
}
menu Query {
-
$iif($hget(autocrypt $+ $cid,$$1),Disable,Establish) AutoCrypt:autocrypt $iif($hget(autocrypt $+ $cid,$$1),-r) $1
-
}