2013-08-13 17:23:47 -04:00
/*
2014-02-13 18:07:09 -05:00
* otrlibv3 . c
2013-08-13 17:23:47 -04:00
*
2014-03-08 20:18:19 -05:00
* Copyright ( C ) 2012 - 2014 James Booth < boothj5 @ gmail . com >
2013-08-13 17:23:47 -04:00
*
* This file is part of Profanity .
*
* Profanity is free software : you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation , either version 3 of the License , or
* ( at your option ) any later version .
*
* Profanity is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with Profanity . If not , see < http : //www.gnu.org/licenses/>.
*
*/
# include <libotr/proto.h>
# include <libotr/privkey.h>
2013-08-17 13:45:51 -04:00
# include <libotr/message.h>
2013-08-13 17:23:47 -04:00
# include "ui/ui.h"
2014-02-13 18:07:09 -05:00
OtrlPolicy
otrlib_policy ( void )
2013-08-17 13:45:51 -04:00
{
2014-02-10 18:20:06 -05:00
return OTRL_POLICY_ALLOW_V1 | OTRL_POLICY_ALLOW_V2 ;
2013-08-17 13:45:51 -04:00
}
2014-02-18 17:31:27 -05:00
char *
otrlib_start_query ( void )
{
2014-04-22 18:53:15 -04:00
return " ?OTR?v2? This user has requested an Off-the-Record private conversation. However, you do not have a plugin to support that. See http://otr.cypherpunks.ca/ for more information. " ;
2014-02-18 17:31:27 -05:00
}
2013-08-17 13:45:51 -04:00
static int
cb_display_otr_message ( void * opdata , const char * accountname ,
const char * protocol , const char * username , const char * msg )
{
2014-01-09 19:08:49 -05:00
cons_show_error ( " %s " , msg ) ;
2013-08-17 13:45:51 -04:00
return 0 ;
}
2013-08-13 17:23:47 -04:00
void
2014-02-13 18:07:09 -05:00
otrlib_init_ops ( OtrlMessageAppOps * ops )
2013-08-13 17:23:47 -04:00
{
2014-02-13 18:07:09 -05:00
ops - > display_otr_message = cb_display_otr_message ;
2013-08-13 17:23:47 -04:00
}
2013-08-14 17:27:44 -04:00
2014-02-13 18:07:09 -05:00
ConnContext *
otrlib_context_find ( OtrlUserState user_state , const char * const recipient , char * jid )
2013-08-14 17:27:44 -04:00
{
2014-02-13 18:07:09 -05:00
return otrl_context_find ( user_state , recipient , jid , " xmpp " , 0 , NULL , NULL , NULL ) ;
2014-01-11 10:48:22 -05:00
}
void
2014-02-13 18:07:09 -05:00
otrlib_end_session ( OtrlUserState user_state , const char * const recipient , char * jid , OtrlMessageAppOps * ops )
2014-01-11 14:10:00 -05:00
{
2014-01-11 15:02:35 -05:00
ConnContext * context = otrl_context_find ( user_state , recipient , jid , " xmpp " ,
0 , NULL , NULL , NULL ) ;
if ( context ! = NULL ) {
2014-02-13 18:07:09 -05:00
otrl_message_disconnect ( user_state , ops , NULL , jid , " xmpp " , recipient ) ;
2014-01-11 15:02:35 -05:00
}
2014-01-11 14:10:00 -05:00
}
2014-02-13 18:07:09 -05:00
gcry_error_t
otrlib_encrypt_message ( OtrlUserState user_state , OtrlMessageAppOps * ops , char * jid , const char * const to ,
const char * const message , char * * newmessage )
2013-08-17 13:45:51 -04:00
{
gcry_error_t err ;
err = otrl_message_sending (
user_state ,
2014-02-13 18:07:09 -05:00
ops ,
2013-08-17 13:45:51 -04:00
NULL ,
jid ,
" xmpp " ,
to ,
message ,
0 ,
2014-02-13 18:07:09 -05:00
newmessage ,
2013-08-17 13:45:51 -04:00
NULL ,
2014-01-09 19:08:49 -05:00
NULL ) ;
2014-02-13 18:07:09 -05:00
return err ;
2013-08-17 13:45:51 -04:00
}
2014-02-13 18:07:09 -05:00
int
otrlib_decrypt_message ( OtrlUserState user_state , OtrlMessageAppOps * ops , char * jid , const char * const from ,
const char * const message , char * * decrypted , OtrlTLV * * tlvs )
2014-01-09 19:08:49 -05:00
{
2014-02-13 18:07:09 -05:00
return otrl_message_receiving (
user_state ,
ops ,
NULL ,
jid ,
" xmpp " ,
from ,
message ,
decrypted ,
tlvs ,
NULL ,
NULL ) ;
2014-01-09 19:08:49 -05:00
}