Partyline is an encryption program designed for use when two users (Alice and Bob, as always) have a channel that they think may be eavesdropped but is unlikely to be actively modified, such as a voice channel. Partyline allows bootstrapping a nonconfidential-but-probably-authenticated channel into a confidential-and-authenticated channel. Here is a sample session, in which typed text is in bold:

Alice:

    alice$ partyline
    Your key is: gi4tsyzzmuywgztgmvtdaobuge
    Enter their key: g44gimjxmjtdazlcgbrwizbumy
      

Bob:

    bob$ partyline
    Your key is: g44gimjxmjtdazlcgbrwizbumy
    Enter their key: gi4tsyzzmuywgztgmvtdaobuge
      

Each partyline instance now has its own private key and the other end's public key, and they are ready to transmit and receive messages:

Alice:

        partyline> send Hi Bob!
        31ymrmOoXqBMSpo7zOta4Q
        partyline> send
        Enter your message. Type a '.' on a line by itself to end the message.
        This is a longer message.
        It spans multiple lines.
        .
        z7AduS4RC0ZjQ3Xz9FTp87TOtVfI8wqFrGtoDzYGQL4VTnYQU/Ww26BXAfhULNdMoPM
        2oiIfEOi5q/PrQP1750v+z4ajgCvJ+0qSadkhXdCB9PUYk
        partyline>
      

Bob:

        partyline> receive 31ymrmOoXqBMSpo7zOta4Q
        Hi Bob!
        partyline> receive
        Enter the encrypted message here. Type a '.' on a line by itself to end
        the message.
        
        z7AduS4RC0ZjQ3Xz9FTp87TOtVfI8wqFrGtoDzYGQL4VTnYQU
        2oiIfEOi5q/PrQP1750v+z4ajgCvJ+0qSadkhXdCB9PUYk
        .
        
        This is a longer message.
        It spans multiple lines.
        partyline>
      

Bob can then reply in the same manner as Alice sent her message. The message bodies are somewhat unwieldy to read aloud, and are intended to be transferred over an insecure data channel like email or IRC messages. The keys are encoded using base32 instead of base64 for ease of reading aloud.

Note that partyline keys are inherently transient; there is no support for keys living longer than a single session, and the client regenerates keys each time it starts. This avoids complex issues of key management and lifetime.