On 30 Oct 2013, at 18:46, Ian Goldberg <[email protected]> wrote: > On Wed, Oct 30, 2013 at 03:44:47PM +0100, Thomas Balthazar wrote: >> Hi, >> >> * The situation : >> I use libotr v4.0.0 in an iOS app I'm working on. >> The objective-c wrapper I use is here : >> https://github.com/tbalthazar/TBOTRManager >> >> * My goal : >> I try to have my app exchange messages with another app that uses OTR too >> (but not libotr). >> When the user wants to send an OTR message with my app, I keep this message >> until the OTR conversation is secured. >> I'd like to know *when* I can consider the OTR conversation as secured and >> send the very first user message. >> >> * My problem >> I tried to consider the gone_secure callback as the signal that the >> conversation was secure, but it seems that the gone_secure callback is >> called before libotr has sent the signature message (?OTR:AAMS), which seem >> to trigger an error on the recipient side. >> >> This is the sequence I observe : >> >> - user wants to send "hello", I don't send his message yet and : >> - I send ?OTRv23? >> - I receive ?OTR:AAMC >> - I send ?OTR:AAMK >> - I receive ?OTR:AAMR >> - gone_secure callback is called >> - I send ?OTR:AAMD (the "hello" user message) >> - I send ?OTR:AAMS >> - I receive ?OTR Error >> >> The recipient client refuses my "hello" message since it considers the >> conversation is not secure yet. If I delay the sending of the "hello" >> message for a few seconds, everything works fine. >> >> Is there a callback I can plug in or a value I can observe to help me >> determine when I can send the user "hello" message? >> >> Please let me know if I miss something obvious. >> >> Thanks a lot for your help! >> Thomas. > > Ah, interesting problem. libotr indeed calls the gone_secure callback > when the conversation switches to encrypted at your end. But right > after that (i.e. when otrl_message_receiving returns), it returns to you > the AAMS message, which your application then delivers to the other side. > > So I guess you could have gone_secure just set a flag, which you check > (and clear) after you deliver that AAMS message? > > - Ian
Thanks for your answer, Ian. I was wondering if there was a specific callback or method to detect the AAMS message "elegantly" but I guess I'll just test if the string starts with "?OTR:AAMS" then. Thanks again, Thomas. _______________________________________________ OTR-dev mailing list [email protected] http://lists.cypherpunks.ca/mailman/listinfo/otr-dev
