webfunds.token
Class TokenBuilder

java.lang.Object
  |
  +--webfunds.sox.Encodable
        |
        +--webfunds.token.Token
              |
              +--webfunds.token.TokenBuilder

public abstract class TokenBuilder
extends Token

This class represents a proto token -- a coin before withdrawal.

See Also:
Serialized Form

Field Summary
static int BUILDER_ORIGINAL
          The version number for this structure: 0: current
static int TOK_PROTO
          The state that the token is in within this phase (generally made by the mint according to the protocol).
static int TOK_RAW
          The state that the token is in within this phase (generally made by the mint according to the protocol).
static int TOK_UNSAVED
          The state that the token is in within this phase (generally made by the mint according to the protocol).
 
Fields inherited from class webfunds.token.Token
expiry, item, log, phase, PHASE_BUILDER, PHASE_DEAD, PHASE_SIGNER, PHASE_SPEND, phaseVersion, ps, series, state, subversion, TOK_ORIGINAL, type
 
Constructor Summary
TokenBuilder()
          Create an uninitialised token builder.
TokenBuilder(byte[] buf)
          Construct a token object from a byte array that was previously returned from the encode() method of a token object.
TokenBuilder(java.io.InputStream is)
          Construct a token object from data in an input stream, where the data was previously returned from the encode() method of a token object.
 
Method Summary
 void decode(java.io.InputStream is)
          Update this token object with the values from a token encoded as a byte array (such as previously returned from the encode() method of a token object).
 void encode(java.io.OutputStream os)
          Encode a token as a byte array, suitable for sending to third parties for depositing.
 boolean isProto()
           
 boolean isRaw()
           
 boolean isUnSaved()
           
protected  void proto(AbstractPublicParams params)
          Called by extending class to save the params details.
abstract  void proto(java.security.SecureRandom sr, AbstractPublicParams params)
          User blinds a raw coin and turns it into a Protocoin.
 void setProto()
          Can be called to permit output for withdrawal.
 java.lang.String toString()
           
 
Methods inherited from class webfunds.token.Token
equals, getExpiry, getItem, getLog, getPhase, getPhaseString, getPhaseVersion, getQty, getSeries, getState, getSubVersion, getType, getUniqueId, getVersion, isBuilder, isDead, isSigner, isSpender, isValidPhase, setState, vString
 
Methods inherited from class webfunds.sox.Encodable
decode, encode, main, readByteArray, readCertificate, readProperties, readString, writeByteArray, writeCertificate, writeProperties, writeString
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

BUILDER_ORIGINAL

public static final int BUILDER_ORIGINAL
The version number for this structure: 0: current

TOK_RAW

public static final int TOK_RAW
The state that the token is in within this phase (generally made by the mint according to the protocol). How it is set and advanced is up to the higher layers. May be ignored, may use the following TOK numbers. Only the low-order single unsigned byte is saved & restored.

TOK_UNSAVED

public static final int TOK_UNSAVED
The state that the token is in within this phase (generally made by the mint according to the protocol). How it is set and advanced is up to the higher layers. May be ignored, may use the following TOK numbers. Only the low-order single unsigned byte is saved & restored.

TOK_PROTO

public static final int TOK_PROTO
The state that the token is in within this phase (generally made by the mint according to the protocol). How it is set and advanced is up to the higher layers. May be ignored, may use the following TOK numbers. Only the low-order single unsigned byte is saved & restored.
Constructor Detail

TokenBuilder

public TokenBuilder()
Create an uninitialised token builder. Call prototype() with some params to make it a real proto-token.
Parameters:
type - of token, being the blinding or coin scheme
subversion - is the version of the parent coin class
log - the coin size, log base 2 of quantity

TokenBuilder

public TokenBuilder(byte[] buf)
             throws TokenPacketException
Construct a token object from a byte array that was previously returned from the encode() method of a token object.
Parameters:
token - the previously encoded token

TokenBuilder

public TokenBuilder(java.io.InputStream is)
             throws TokenPacketException
Construct a token object from data in an input stream, where the data was previously returned from the encode() method of a token object.
Parameters:
is - the input stream from which to read the token data
Method Detail

isRaw

public boolean isRaw()

isUnSaved

public boolean isUnSaved()

isProto

public boolean isProto()

proto

public abstract void proto(java.security.SecureRandom sr,
                           AbstractPublicParams params)
                    throws java.security.KeyException
User blinds a raw coin and turns it into a Protocoin. Some sort of signing process involved, done internally. Normally called by client (user), so it is standardised. How it is done is up to the individual type of token, but we hope we can limit it to this simple interface, as there are half a dozen different token crypto-schemes out there. The sub TokenBuilder needs to save any blinding params and acquire the signed information from the unblind call, below.
Parameters:
sr - is the source of randomness needed by some methods
params - includes the blinding paramaters from the mint

proto

protected void proto(AbstractPublicParams params)
Called by extending class to save the params details. The series is unknown until signing (mint can use a different key). IS THIS TRUE? BLINDING FACTORS MUST BE KNOWN IN ADVANCE?
Parameters:
params - includes the blinding paramaters from the mint

setProto

public void setProto()
Can be called to permit output for withdrawal.

decode

public void decode(java.io.InputStream is)
            throws java.io.IOException
Update this token object with the values from a token encoded as a byte array (such as previously returned from the encode() method of a token object).
Overrides:
decode in class Token
Parameters:
token - the previosly encoded token

encode

public void encode(java.io.OutputStream os)
            throws java.io.IOException
Encode a token as a byte array, suitable for sending to third parties for depositing. If the signature is not present, an unsigned token will be encoded.
Overrides:
encode in class Token
Returns:
byte[] the token in encoded form

toString

public java.lang.String toString()
Overrides:
toString in class Token