edit3: I had a crack at getting the listtransactions data for the various scenarios you describe (and thus the 'way it works'), however I couldn't get any results. Frustratingly, I got raw transactions to sign (which is the second-last step of many) and then the last step is to broadcast the transaction, but my transactions were always getting rejected. I've got my progress thus far well documented and is definitely repeatable so I might try to work it out later in the week. It's worth asking on the development subform for clarification on the way the listtransactions call works, they will hopefully be able to answer it. Anyway I was creating raw transactions to match your scenarios based off this guide and testnet-in-a-box -
https://people.xiph.org/~greg/signdemo.txtI'm not sure I understand what you tried. Were you trying to test creating unsigned transactions and then sign and broadcast with Armory? Here's what I would do to test (and maybe this is what you did): open ArmoryQt.py, create a new wallet, send it some money (testnet would be fine). Create watching-only copy and save it in a different directory. Now run armoryd.py on that wallet, and use the "sendtransaction" or "sendmany" to create the unsigned transaction. Then you can go back to ArmoryQt and use the "Offline Transactions" button and select "Sign and/or Broadcast". You can copy it into the window* and it should immediately recognize it, and allow you to examine and sign it. Since you're online, you can also broadcast it right away, but I'm not sure why I didn't try that. I got through signing with my testnet wallet while testing, and everything looked perfect, up to that point.
Also, I will integrate the cli_sign_script.py code into armoryd.py so that signing can be enabled, too. My only question is how to send the passphrase to JSON-RPC... is it sent cleartext over the socket/JSON interface? I looked at the Bitcoin code, and it appears that's what they do, though I'm not positive. This seems
okay for localhost (though I don't like it), but not for any remote connections. Or maybe it just shouldn't be allowed on remote connections (actually, for now there are no remote connections, so I guess it doesn't matter).
*What I found is that if you use armoyd to send the command, it spits out the python-formatted string: you
cannot just copy this into ArmoryQt, because it has "\n" raw characters in there, etc. You can open python and type "pring " and it will print it out with proper formatting. Then you can copy it into ArmoryQt.