"veyron2": Add PublicIDStore to Runtime
This CL hooks up the PublicIDStore (holding blessings on the Runtime's
public key) to the Veyron Runtime, and changes the default client
and server to use the Runtime's PrivateID and PublicIDStore. Servers
authenticate using the DefaultPublicID from the store, and clients
authenticate by using a PublicID from the store that matches the remote
end's identity.
Clients and Servers can also be created with options specifying a PublicID.
In this case they still use the PrivateID from the runtime to sign any messages
but use the provided PublicID to authenticate to the other end. Therefore it
is important for the public key of the provided PublicID and the Runtime's
private key correspond. The provided PublicID is not required to be in the
Runtime's PublicIDStore.
Overall we enforce the following invariants:
1) One private key/PrivateID per Runtime.
2) All clients and servers always use the Runtime's private key.
In summary, the CL makes the folliwing changes:
1) Adds a method to the Runtime to access the PublicIDStore.
2) Changes the behavior of default clients and servers to always pick a
PublicID from the Runtime's PublicIDStore during authentication.
3) Changes the LocalID option for clients and servers to be a PublicID,
and adds a new option "RuntimeID" that specifies the PrivateID to be used
by the Runtime.
4) Cleans up some of the tests in runtimes/google/ipc/....
Change-Id: I56c017957fd26ff3d844dbe438a14b84c5143e08
23 files changed