Marmaduke
Marmaduke is a client-server system that lets you download and
generate gale keypairs securely. It is linked to Yammer; when you
create a Yammer account, you are also creating a Marmaduke account,
and vice versa.
Marmaduke design
documents.
Download
Download Marmaduke client. The Marmaduke client requires
version 2.2 or greater of Python.
Examples
-
A Yammer user has installed gsub and gsend on a
UNIX machine, and would like to use his pre-existing Yammer keys
rather than get a new domain key signed and deal with the
complications of key distribution.
(user 'spliktor' downloads mdk, the Marmaduke client)
% mdk get spliktor@scrollwheel.ca
Password: user enters account password from Yammer
writing private key to /home/myname/.gale/auth/private/spliktor@dev.yammer.net.gpri
writing public key to /home/myname/.gale/auth/private/spliktor@dev.yammer.net.gpub
% echo 'GALE_ID spliktor@scrollwheel.ca' >> ~/.gale/conf
% echo 'GALE_DOMAIN scrollwheel.ca' >> ~/.gale/conf
% gsub
! 2004-01-11 03:18:50 gsub notice: connected to scrollwheel.ca (1.2.3.4:11512)
-
A new gale user installs fugu on her home machine. That's right,
"her." I'm with it. This user has never used gale before and wants
to get started as soon as possible.
(user 'myname' downloads mdk, the Marmaduke client)
% mdk
Available domains: scrollwheel.ca
What username do you want? Include the domain (example, user@whatever.com)
myname@scrollwheel.ca
What is your full name?
My Name
What is your email address?
myname@hotmail.com
error 111:
The key myname@scrollwheel.ca is already taken; please choose another.
Suggestion: myname1@scrollwheel.ca
What username do you want? Include the domain (example, user@whatever.com)
myname1@scrollwheel.ca
What is your full name?
My Name
What is your email address?
myname@hotmail.com
writing private key to /home/myname/.gale/auth/private/myname@dev.yammer.net.gpri
writing public key to /home/myname/.gale/auth/private/myname@dev.yammer.net.gpub
Key generated. Watch your mailbox for an account password;
this will be needed if you want to reissue or revoke
your key, and can also be used to log in to the appropriate instance
of Yammer.
Implementation details
The Marmaduke client and server communicate using
XML-RPC over SSL. The
command interface is simple and should be easy to implement in other
languages. The Python client is a straightforward example.
Integrating a Marmaduke client into standalone gale clients such as
ginsu and fugu would allow users to download a single program and
start using gale almost immediately.
API
- generateKey(keyid, fullname, email)
-
Generates a new key pair and creates a new Yammer account.
Fails if the account already exists, or if it can not be created.
In the event of success, returns a struct containing two
fields, the public and private keys in binary format.
- listDomains()
-
Returns an array of all domains managed by this Marmaduke
server.
- issue(keyid, password)
-
For an existing user, returns the key pair as a struct, generating
it first if it does not exist. Intended uses: downloading keys
from a pre-existing account.
- reissue(keyid, password)
-
For an existing user, creates a new key pair, replacing the old,
and returns them as a struct. Intended uses: to replace a key
that has been compromised, or just to get keys for an existing
Yammer account.
- revoke(keyid, password)
-
Deletes a user and destroys his or her key pair. After the user
is destroyed, a new key pair is generated but not returned; this
ensures that any remaining copies of the key pair are now
invalid.
- changePassword(keyid, password, newpassword)
-
Changes a user's Marmaduke/Yammer password.
- forgotPassword(keyid)
-
Resets a user's password and emails the new password to the email
address on file for that user.
Marmaduke servlet for internal user stores
|