Hello again,
So I have been doing some digging, and I can see: when gone_secure is called, I have context->msgstate equal to OTRL_MSGSTATE_ENCRYPTED Just before, "otrl_message_sending", msgstate is still equal to OTRL_MSGSTATE_ENCRYPTED for the appropriate contact. However, during the call, I have a message event triggered, and I can see the message "OTRL_MSGEVENT_ENCRYPTION_REQUIRED". And the value of context->msgstate changed to OTRL_MSGSTATE_PLAINTEXT After the end of the call of "otrl_message_sending" the msgstate is equal to OTRL_MSGSTATE_PLAINTEXT. Maybe that would help to identify my mistake? Thanks Kind regards Pierre 2015-06-28 20:05 GMT+02:00 Pierre Lebreton <dev.amoncha...@gmail.com>: > Thanks a lot for the quick reply! > > I think I am in the second case: indeed I set the policy to > OTRL_POLICY_REQUIRE_ENCRYPTION: > > static OtrlPolicy myotr_policy(void *opdata, ConnContext *context) > > { > > return OTRL_POLICY_ALLOW_V2 > > | OTRL_POLICY_REQUIRE_ENCRYPTION; > > } > > > If I let Adium start the OTR protocol, I can see it sends a ?OTRv2? > request. I give that message to my function 'message_received': > > void message_received(const QString& ourAccount, const QString& account, > const QString& protocol, const QString& message) { > > uint32_t ignore = 0; > > char *new_message = NULL; > > OtrlTLV *tlvs = NULL; > > > > ignore = otrl_message_receiving(us, &ui_ops, NULL, ourAccount.toAscii(), > protocol.toAscii(), account.toAscii(), message.toAscii(), &new_message, > &tlvs, NULL, NULL, NULL); > > > // if ignore == 1, then it is a core message from OTR. We don't want > to display that. > > if(ignore == 0) { > > > if (new_message) { > > QString ourm(new_message); > > otrl_message_free(new_message); > > > qDebug() << "encrypted message: " << ourm; > > } else { > > > qDebug() << "message not encrypted: " << message; > > } > > } > > > if(tlvs) { > > qDebug() << "there are side info!"; > > otrl_tlv_free(tlvs); > > } > > } > > > My inject_message, only forward everything to XMPP: > > static void myotr_inject_message(void *opdata, > > const char *accountname, const char > *protocol, const char *recipient, > > const char *message) > > { > > XMPP::get()->sendXMPPMessageTo(recipient, message); > > } > > > > And, then I can see that there are some encrypted messages exchanged, and > in the logs I can see that gone_secured is called, and otr_new_fingerprint > is called as well. > But currently, the body of these functions are empty in my code. I only > have debug information in it. > And Adium report that the encryption is enabled. > > > Then, when I want to send a message, I just call: > > send_message("amonchak...@jabber.de", "amoncha...@jabber.de", "xmpp", > message); > > > Which correspond to: > > void send_message (const QString& ourAccount, const QString& account, > const QString& protocol, const QString& message) { > > char *new_message = NULL; > > gcry_error_t err; > > OtrlTLV* tlvs = 0; > > > err = otrl_message_sending(us, &ui_ops, NULL, ourAccount.toAscii(), > protocol.toAscii(), account.toAscii(), OTRL_INSTAG_BEST, message.toAscii(), > NULL, &new_message, > > OTRL_FRAGMENT_SEND_ALL_BUT_LAST, NULL, NULL, NULL); > > > qDebug() << "error code: " << err; > > > if (new_message) { > > QString ourm(new_message); > > otrl_message_free(new_message); > > qDebug() << "encrypted message: " << ourm; > > > XMPP::get()->sendXMPPMessageTo(account, ourm); > > } > > > if (err) { > > qDebug() << "plouf!"; > > } > > } > > I get the default message as explained previously. > > > > > And I did checked, the order of the parameters :-) > In Adium I am connected as amonchakai, and amonchakai2 in my BB10 client. > The protocol is also consistent: I am always using "xmpp" > > > > Thanks for the help ! > > Kind regards, > Pierre > > > > > > 2015-06-28 19:14 GMT+02:00 Ian Goldberg <i...@cypherpunks.ca>: > >> On Sun, Jun 28, 2015 at 04:28:39PM +0200, Pierre Lebreton wrote: >> > Hello, >> > >> > I have been working on integrating OTR to my XMPP client for BlackBerry >> 10. >> >> Great! >> >> > I managed to get many things work, but I still have some trouble to send >> > encrypted messages. So I was wondering if someone could help me to >> locate >> > what I am missing. >> > >> > What I am able to do is to: >> > - initiate the OTR protocol, and got up to the point where >> "gone_secure" is >> > called, and I have the fingerprint of the recipient. >> > - If the other client (Adium) is sending me encrypted messages, I am >> able >> > to decrypt them. >> > >> > But when I try to send messages, "otrl_message_sending" replace my >> message >> > by a new OTR request: >> > >> > >> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- >> > >> > "?OTRv2? >> > >> > <b>amonchak...@jabber.de</b> has requested an <a href=" >> > https://otr.cypherpunks.ca/">Off-the-Record private conversation</a>. >> > However, you do not have a plugin to support that. >> > >> > See <a href="https://otr.cypherpunks.ca/">https://otr.cypherpunks.ca/ >> </a> >> > for more information." >> > >> > >> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- >> >> Hmm, interesting. I think there are three times otrl_message_sending >> would output the default query message: >> >> - If you pass the string "?OTR?" or similar *into* otrl_message_sending. >> >> - If your policy has OTRL_POLICY_REQUIRE_ENCRYPTION set, but the context >> msgstate is still at OTRL_MESSAGE_PLAINTEXT. >> >> - If you receive an OTR Error messaage, and your policy has >> OTRL_POLICY_ERROR_START_AKE set. >> >> Could you possibly step through otrl_message_sending and see which it >> thinks is happening? >> >> Thanks, >> >> - Ian >> _______________________________________________ >> OTR-dev mailing list >> OTR-dev@lists.cypherpunks.ca >> http://lists.cypherpunks.ca/mailman/listinfo/otr-dev >> > >
_______________________________________________ OTR-dev mailing list OTR-dev@lists.cypherpunks.ca http://lists.cypherpunks.ca/mailman/listinfo/otr-dev