Hello, I have been working on integrating OTR to my XMPP client for BlackBerry 10.
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>[email protected]</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." ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- And if I send that, I can see the exchange of keys, and back to square 1. And if I try to send again my message, otrl_message_sending keep replacing my message by the initialization request. For the moment my functions - myotr_new_fingerprint - myotr_write_fingerprint - myotr_gone_secure Do nothing, and I was wondering if somehow I need to accept fingerprint? In some example I saw on the web such as there: https://github.com/monkeyiq/otr/blob/master/main.cpp They just stop the conversation if the fingerprint is not accepted, so I assumed that, for now, I did not have to do something particular. Do I need to do something in particular to acknowledge that the connection is established, so it can start encrypting when sending messages? Thanks Best, Pierre I will avoid to put all the code, to make this email readable. Basically I defined these functions: // ===================================================================================================== static OtrlMessageAppOps ui_ops = { myotr_policy, NULL, NULL, myotr_inject_message, NULL, myotr_new_fingerprint, myotr_write_fingerprint, myotr_gone_secure, myotr_gone_insecure, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; the policy is: static OtrlPolicy myotr_policy(void *opdata, ConnContext *context) { return OTRL_POLICY_ALLOW_V2 | OTRL_POLICY_REQUIRE_ENCRYPTION; } // ===================================================================================================== 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); } } void send_message (const QString& ourAccount, const QString& account, const QString& protocol, const QString& message) { char *new_message = NULL; gcry_error_t err; 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_SKIP, 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!"; } }
_______________________________________________ OTR-dev mailing list [email protected] http://lists.cypherpunks.ca/mailman/listinfo/otr-dev
