You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@santuario.apache.org by Berin Lautenbach <be...@wingsofhermes.org> on 2006/03/13 04:47:08 UTC

[C++] XKMS Server Prototype

Peoples,

Question to all - is there any interest in building up the following
within the ASF?  Maybe as a sub-project of the security project we have
been discussing?

As part of the implementation of the XKMS messaging, I have built a
prototype XKMS server.  It's very rough, but quite modular.  The idea
being that you can plug different handlers in to deal with different
types of XKMS (or other) requests.  Currently I've only implemented a DB
XKMS handler for interop testing - it reads and writes keys into a MySQL
database.  But I'm about to do an LDAP based XKISS module so that you
can retrieve certs/keys from a LDAP repository.

The end idea is that you can mix and match the modules to do what you
need to do.  So as a further example, a LocateRequest could be satisfied
by an LDAP handler module, a ValidateRequest from an OCSP handler module
and a RegisterRequest from a SCEP based module.  Of course this is all
for a PKI based backend - the DB module could be enhanced for native
XKMS handling.

The core transaction handler is built from the APR libraries, and I have
it running under both Linux and Windows.  But the thread and incoming
request processing is still quite naive.  The main handler is C, and
then goes to C++ when you actually parse the XML coming in and hand to
the appropriate module.  There is an apache mod (mod_txhd) that runs
under a Apache 1.2 server to pass transactions coming in to the actual
daemon service.

The core handler also implements a pipeline approach.  So an incoming
(for example) SOAP 11 wrapped LocateRequest message gets processed by a
bunch of isolated handlers ->

1.  Parse
2.  Strip SOAP 1.1 envelope
3.  XKMS DB based retrieve of key
4.  Wrap response in SOAP 1.1 envelope
5.  Serialise

The handlers are configured via an xml file, so you can use the same
xkms db module to process soap and non-soap based requests, and the db
handler doesn't care.

I haven't really documented much around it yet.  But you can see the
interop service I built at www.wingsofhermes.org/xkms

Cheers,
	Berin