webfunds.token
Class TokenSpender

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

public abstract class TokenSpender
extends Token

This class represents a valuable token -- a withdrawn coin that may or may not at this stage be spent.

See Also:
Serialized Form

Field Summary
static int SPENDER_ORIGINAL
          The version number for this structure: 0: current
static int TOK_CANCELLING
          The state that the token is in within this phase (received, verified, spending, receipted.) How it is set and advanced is up to the higher layers.
static int TOK_RECEIPTED
          The state that the token is in within this phase (received, verified, spending, receipted.) How it is set and advanced is up to the higher layers.
static int TOK_SENT
          The state that the token is in within this phase (received, verified, spending, receipted.) How it is set and advanced is up to the higher layers.
static int TOK_START
          The state that the token is in within this phase (received, verified, spending, receipted.) How it is set and advanced is up to the higher layers.
static int TOK_VERIFIED
          The state that the token is in within this phase (received, verified, spending, receipted.) How it is set and advanced is up to the higher layers.
 
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
TokenSpender()
          Create an uninitialised token.
TokenSpender(byte[] buf)
          Construct a token object from a byte array that was previously returned from the encode() method of a token object.
TokenSpender(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 isCancelling()
           
 boolean isReceipted()
           
 boolean isSent()
           
 boolean isStart()
           
 boolean isVerified()
           
 void setCancelling()
           
 void setReceipted()
           
 void setSent()
           
 java.lang.String toString()
           
 void unblind(byte[] token, AbstractPublicParams params)
           
abstract  void unblind(java.security.SecureRandom sr, byte[] token, AbstractPublicParams params)
          Mint returns a blinded, signed coin for Client to unblind and spend.
 
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

SPENDER_ORIGINAL

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

TOK_START

public static final int TOK_START
The state that the token is in within this phase (received, verified, spending, receipted.) 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_VERIFIED

public static final int TOK_VERIFIED
The state that the token is in within this phase (received, verified, spending, receipted.) 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_SENT

public static final int TOK_SENT
The state that the token is in within this phase (received, verified, spending, receipted.) 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_CANCELLING

public static final int TOK_CANCELLING
The state that the token is in within this phase (received, verified, spending, receipted.) 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_RECEIPTED

public static final int TOK_RECEIPTED
The state that the token is in within this phase (received, verified, spending, receipted.) 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

TokenSpender

public TokenSpender()
Create an uninitialised token. Call prototype() with some params to make it a real proto-token. The series is unknown until signing (mint can use a different key).
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

TokenSpender

public TokenSpender(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

TokenSpender

public TokenSpender(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

isStart

public boolean isStart()

isVerified

public boolean isVerified()

isSent

public boolean isSent()

isCancelling

public boolean isCancelling()

isReceipted

public boolean isReceipted()

unblind

public abstract void unblind(java.security.SecureRandom sr,
                             byte[] token,
                             AbstractPublicParams params)
                      throws TokenKeyException
Mint returns a blinded, signed coin for Client to unblind and spend. 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 class needs to save the entire token data, even when spent to some place, until it is receipted.
Parameters:
params - includes the blinding paramaters from the mint

unblind

public void unblind(byte[] token,
                    AbstractPublicParams params)
             throws TokenKeyException

setSent

public void setSent()

setCancelling

public void setCancelling()

setReceipted

public void setReceipted()

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