Class SignedData<T extends ACell>

java.lang.Object
Type Parameters:
T - The type of the signed object
All Implemented Interfaces:
IAssociative<Keyword,ACell>, IValidated, IWriteable, Map<Keyword,ACell>

public final class SignedData<T extends ACell> extends ARecord
Node representing a signed data object. A signed data object encapsulates:
  • An Address that identifies the signer
  • A digital signature
  • An underlying Cell that has been signed.
The SignedData instance is considered valid if the signature can be successfully validated for the given Address and data value, and if so can be taken as a cryptographic proof that the signature was created by someone in possession of the corresponding private key. Note we currently go via a Ref here for a few reasons: - It guarantees we have a hash for signing - It makes the SignedData object implementation/representation independent of the value type - It creates a possibility of structural sharing for transaction values excluding signatures Binary representation:
  1. 1 byte - Tag.SIGNED_DATA tag
  2. 32 bytes - Public Key of signer
  3. 64 bytes - raw Signature data
  4. 1+ bytes - Data Value Ref (may be embedded)
SECURITY: signing requires presence of a local keypair TODO: SECURITY: any persistence forces validation of Signature??