I am no expert but I have done a fair amount of work creating and debugging standard PKI code. I am very curious about your post and need a bit more help in understanding it. Given a bit more understanding I think I could write the code and then maybe we could eventually get it included into the vanitygen project.
Person 1 makes a private key Priv1, and calculates the public key Pub1.
Person1 creates the Pub1(n1, r1) Priv1(n1, r1, p1, q1, s1) keypair.
Person 2 gets Pub1, creates a new private key Priv2, and adds (EC source point) * Priv2 to it, creating Pub2.
I assume this it the search loop of the program:
1) Create a new keypair PubN(nN, rN) PrivN(nN, rN, pN, qN, sN) [I assume we can make rN=r1, are there any other restrictions to this keypair generation?]
2) Create the public key to test PubT where PubT is a function of Pub1 and the new keypair: PubT(nT, rT) = F1(n1, r1, nN, rN, pN, qN, sN)
3) Hash and test PubT for the vanity criteria, if it does not match then go to step 1), if it does match then continue
Now, if Pub2 hashes to a nice vanity address Vnice, then Person 2 sends Priv2 to Person 1
Assuming PubT matches the vanity criteria then send the keypair PubN(nN, rN) PrivN(nN, rN, pN, qN, sN) from Person2 to Person1 [this could be encrypted using Pub1]
Person 1 then adds Priv1 to Priv2, getting Privnice.
PrivNice(nNice, rNice, pNice, qNice, sNice) = F2(n1, r1, p1, q1, s1, nN, rN, pN, qN, sN)
So my question is can you give me the details for the two functions:
PubT(nT, rT) = F1(n1, r1, nN, rN, pN, qN, sN) and
PrivNice(nNice, rNice, pNice, qNice, sNice) = F2(n1, r1, p1, q1, s1, nN, rN, pN, qN, sN)
or point me to a site or paper that can give me these details?