20
21
return OTRL_POLICY_ALWAYS;
23
int is_logged_in(void *opdata, const char *accountname, const char *protocol, const char *recipient) {
24
int is_logged_in(void *opdata, const char *accountname, const char *protocol,
25
const char *recipient) {
27
void inject_message(void *opdata, const char *accountname, const char *protocol, const char *recipient, const char *message) {
29
void inject_message(void *opdata, const char *accountname, const char *protocol,
30
const char *recipient, const char *message) {
28
31
printf("%s\n", message);
30
33
fprintf(stderr, "libotr helper sent: %s\n", message);
33
void notify(void *opdata, OtrlNotifyLevel level, const char *accountname, const char *protocol, const char *username, const char *title, const char *primary, const char *secondary) {
34
fprintf(stderr, "NOTIFY: %s %s %s %s\n", username, title, primary, secondary);
37
int display_otr_message(void *opdata, const char *accountname, const char *protocol, const char *username, const char *msg) {
38
fprintf(stderr, "MESSAGE: %s %s\n", username, msg);
42
void update_context_list(void *opdata) {
45
const char *protocol_name(void *opdata, const char *protocol) {
49
void protocol_name_free(void *opdata, const char *protocol_name) {
52
void new_fingerprint(void *opdata, OtrlUserState us, const char *accountname, const char *protocol, const char *username, unsigned char fingerprint[20]) {
53
fprintf(stderr, "NEW FINGERPRINT\n");
54
g_session_established = 1;
57
void write_fingerprints(void *opdata) {
60
void gone_secure(void *opdata, ConnContext *context) {
63
void gone_insecure(void *opdata, ConnContext *context) {
66
void still_secure(void *opdata, ConnContext *context, int is_reply) {
69
void log_message(void *opdata, const char *message) {
70
fprintf(stderr, "MESSAGE: %s\n", message);
73
int max_message_size(void *opdata, ConnContext *context) {
77
const char *account_name(void *opdata, const char *account, const char *protocol) {
81
void account_name_free(void *opdata, const char *account_name) {
36
void update_context_list(void *opdata) {}
38
void new_fingerprint(void *opdata, OtrlUserState us, const char *accountname,
39
const char *protocol, const char *username,
40
unsigned char fingerprint[20]) {
41
fprintf(stderr, "NEW FINGERPRINT\n");
42
g_session_established = 1;
45
void write_fingerprints(void *opdata) {}
47
void gone_secure(void *opdata, ConnContext *context) {}
49
void gone_insecure(void *opdata, ConnContext *context) {}
51
void still_secure(void *opdata, ConnContext *context, int is_reply) {}
53
int max_message_size(void *opdata, ConnContext *context) { return 99999; }
55
const char *account_name(void *opdata, const char *account,
56
const char *protocol) {
60
void account_name_free(void *opdata, const char *account_name) {}
62
const char *error_message(void *opdata, ConnContext *context,
63
OtrlErrorCode err_code) {
67
void error_message_free(void *opdata, const char *msg) {}
69
void resent_msg_prefix_free(void *opdata, const char *prefix) {}
71
void handle_smp_event(void *opdata, OtrlSMPEvent smp_event,
72
ConnContext *context, unsigned short progress_event,
75
void handle_msg_event(void *opdata, OtrlMessageEvent msg_event,
76
ConnContext *context, const char *message,
78
fprintf(stderr, "msg event: %d %s\n", msg_event, message);
84
81
OtrlMessageAppOps uiops = {
95
NULL, /* received_symkey */
98
NULL, /* resent_msg_prefix */
99
resent_msg_prefix_free,
102
NULL /* create_instag */,
103
NULL /* convert_msg */,
104
NULL /* convert_free */,
105
NULL /* timer_control */,
105
static const char kPrivateKeyData[] = "(privkeys (account (name \"account\") (protocol proto) (private-key (dsa (p #00FC07ABCF0DC916AFF6E9AE47BEF60C7AB9B4D6B2469E436630E36F8A489BE812486A09F30B71224508654940A835301ACC525A4FF133FC152CC53DCC59D65C30A54F1993FE13FE63E5823D4C746DB21B90F9B9C00B49EC7404AB1D929BA7FBA12F2E45C6E0A651689750E8528AB8C031D3561FECEE72EBB4A090D450A9B7A857#) (q #00997BD266EF7B1F60A5C23F3A741F2AEFD07A2081#) (g #535E360E8A95EBA46A4F7DE50AD6E9B2A6DB785A66B64EB9F20338D2A3E8FB0E94725848F1AA6CC567CB83A1CC517EC806F2E92EAE71457E80B2210A189B91250779434B41FC8A8873F6DB94BEA7D177F5D59E7E114EE10A49CFD9CEF88AE43387023B672927BA74B04EB6BBB5E57597766A2F9CE3857D7ACE3E1E3BC1FC6F26#) (y #0AC8670AD767D7A8D9D14CC1AC6744CD7D76F993B77FFD9E39DF01E5A6536EF65E775FCEF2A983E2A19BD6415500F6979715D9FD1257E1FE2B6F5E1E74B333079E7C880D39868462A93454B41877BE62E5EF0A041C2EE9C9E76BD1E12AE25D9628DECB097025DD625EF49C3258A1A3C0FF501E3DC673B76D7BABF349009B6ECF#) (x #14D0345A3562C480A039E3C72764F72D79043216#)))))\n";
108
static const char kPrivateKeyData[] =
109
"(privkeys (account (name \"account\") (protocol proto) (private-key (dsa "
111
"#00FC07ABCF0DC916AFF6E9AE47BEF60C7AB9B4D6B2469E436630E36F8A489BE812486A09F"
112
"30B71224508654940A835301ACC525A4FF133FC152CC53DCC59D65C30A54F1993FE13FE63E"
113
"5823D4C746DB21B90F9B9C00B49EC7404AB1D929BA7FBA12F2E45C6E0A651689750E8528AB"
114
"8C031D3561FECEE72EBB4A090D450A9B7A857#) (q "
115
"#00997BD266EF7B1F60A5C23F3A741F2AEFD07A2081#) (g "
116
"#535E360E8A95EBA46A4F7DE50AD6E9B2A6DB785A66B64EB9F20338D2A3E8FB0E94725848F"
117
"1AA6CC567CB83A1CC517EC806F2E92EAE71457E80B2210A189B91250779434B41FC8A8873F"
118
"6DB94BEA7D177F5D59E7E114EE10A49CFD9CEF88AE43387023B672927BA74B04EB6BBB5E57"
119
"597766A2F9CE3857D7ACE3E1E3BC1FC6F26#) (y "
120
"#0AC8670AD767D7A8D9D14CC1AC6744CD7D76F993B77FFD9E39DF01E5A6536EF65E775FCEF"
121
"2A983E2A19BD6415500F6979715D9FD1257E1FE2B6F5E1E74B333079E7C880D39868462A93"
122
"454B41877BE62E5EF0A041C2EE9C9E76BD1E12AE25D9628DECB097025DD625EF49C3258A1A"
123
"3C0FF501E3DC673B76D7BABF349009B6ECF#) (x "
124
"#14D0345A3562C480A039E3C72764F72D79043216#)))))\n";
111
129
// We have to write the private key information to a file because the libotr
154
175
gcry_error_t err;
155
176
char *newmessage = NULL;
157
err = otrl_message_sending(userstate, &uiops, NULL, "account", "proto", "peer", "test message", NULL, &newmessage, NULL, NULL);
178
err = otrl_message_sending(userstate, &uiops, NULL, "account", "proto",
179
"peer", 0, "test message", NULL, &newmessage,
180
OTRL_FRAGMENT_SEND_SKIP, NULL, NULL, NULL);
158
181
if (newmessage == NULL) {
159
182
fprintf(stderr, "libotr didn't encrypt message\n");
162
185
write(1, newmessage, strlen(newmessage));
163
186
write(1, "\n", 1);
187
fprintf(stderr, "libotr sent: %s\n", newmessage);
188
otrl_message_free(newmessage);
164
190
g_session_established = 0;
165
otrl_message_free(newmessage);
166
191
write(1, "?OTRv2?\n", 8);
192
fprintf(stderr, "libotr sent: ?OTRv2\n");