I think we have discussed enough "politics" for now and would like to get back to the actual technical issue. If I get a chance later today I plan to download the source code for the android wallet and see if I can locate the actual signature code and see what they are doing.
Thanks for this write up. It describes exactly what they are doing.
This is the crux here (cleaned up this a bit):
Calculate e = HASH(m), where HASH is a cryptographic hash function, such as SHA-1.
Let z be the Ln leftmost bits of e, where Ln is the bit length of the group order n.
Select a random integer k from [1, n-1].
Calculate the curve point (x1, y1) = k * G.
Calculate r = x1 (mod n). If r = 0, go back to step 3.
Calculate s = k-1(z + r dA) (mod n). If s = 0, go back to step 3.
The signature is the pair (r, s).
The same k will lead to the same x
1 coordinate, which will lead to the same r.