Class SignatureActor
- java.lang.Object
-
- ptolemy.kernel.util.NamedObj
-
- ptolemy.kernel.InstantiableNamedObj
-
- ptolemy.kernel.Entity<T>
-
- ptolemy.kernel.ComponentEntity<T>
-
- ptolemy.actor.AtomicActor<TypedIOPort>
-
- ptolemy.actor.TypedAtomicActor
-
- ptolemy.actor.lib.security.SignatureActor
-
- All Implemented Interfaces:
java.lang.Cloneable
,Actor
,Executable
,FiringsRecordable
,Initializable
,TypedActor
,Changeable
,Debuggable
,DebugListener
,Derivable
,Instantiable
,ModelErrorHandler
,MoMLExportable
,Moveable
,Nameable
- Direct Known Subclasses:
SignatureSigner
,SignatureVerifier
public class SignatureActor extends TypedAtomicActor
A common base class for actors that use cryptographic signatures.In cryptography, digital signatures can be used to verify that the data was not modified in transit. However, the data itself is passed in clear text.
The signature algorithms that maybe implemented are limited to the signature algorithms that are implemented by providers following the JCE specifications and installed on the machine being run. In case a provider specific instance of an algorithm is needed, the provider may also be specified in the provider parameter.
The input and output are both arrays of unsigned bytes.
In initialize(), this actor sets the value of the _signature member to the results of calling java.security.Signature.getInstance() with the values of the signatureAlgorithm and provider parameters. Derived classes should have a fire() method that uses the _signature member to process data appropriately. In the fire() method of the derived class, super.fire() should be called before accessing _signature so that _signature may be updated if the attributes changed.
This actor relies on the Java Cryptography Architecture (JCA) and Java Cryptography Extension (JCE). See the
CryptographyActor
documentation for resources about JCA and JCE.- Since:
- Ptolemy II 4.0
- Version:
- $Id$
- Author:
- Christopher Hylands Brooks, Contributor: Rakesh Reddy
- Pt.AcceptedRating:
- Red (cxh)
- Pt.ProposedRating:
- Yellow (cxh)
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class ptolemy.kernel.Entity
Entity.ContainedObjectsIterator
-
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.String
_provider
The name of the provider to be used for a provider specific implementation.protected java.security.Signature
_signature
The signature that will be used to process the data.protected java.lang.String
_signatureAlgorithm
The name of the signature algorithm to be used.TypedIOPort
input
This port takes in an unsigned byte array and processes the data.TypedIOPort
output
This port sends out the processed data received from input in the form of an unsigned byte array.StringParameter
provider
Specify a provider for the given algorithm.StringParameter
signatureAlgorithm
Specify the algorithm to be used to sign data.-
Fields inherited from class ptolemy.actor.TypedAtomicActor
_typesValid
-
Fields inherited from class ptolemy.actor.AtomicActor
_actorFiringListeners, _initializables, _notifyingActorFiring, _stopRequested
-
Fields inherited from class ptolemy.kernel.util.NamedObj
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _deferChangeRequests, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS
-
Fields inherited from interface ptolemy.actor.Executable
COMPLETED, NOT_READY, STOP_ITERATING
-
-
Constructor Summary
Constructors Constructor Description SignatureActor(CompositeEntity container, java.lang.String name)
Construct an actor with the given container and name.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
attributeChanged(Attribute attribute)
Override the base class to reinitialize the state if the the signatureAlgorithm, or provider parameter is changed.void
fire()
Update _signature if an attribute has changed and then invoke super.fire() to transform the input data.void
initialize()
Use the values of the signatureAlgorithm and provider parameters to initialize the java.security.Signature object.-
Methods inherited from class ptolemy.actor.TypedAtomicActor
_containedTypeConstraints, _customTypeConstraints, _defaultTypeConstraints, _fireAt, _fireAt, attributeTypeChanged, clone, clone, isBackwardTypeInferenceEnabled, newPort, typeConstraintList, typeConstraints
-
Methods inherited from class ptolemy.actor.AtomicActor
_actorFiring, _actorFiring, _declareDelayDependency, addActorFiringListener, addInitializable, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, postfire, prefire, preinitialize, pruneDependencies, recordFiring, removeActorFiringListener, removeDependency, removeInitializable, setContainer, stop, stopFire, terminate, wrapup
-
Methods inherited from class ptolemy.kernel.ComponentEntity
_adjustDeferrals, _checkContainer, _getContainedObject, _propagateExistence, getContainer, instantiate, isAtomic, isOpaque, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, propagateExistence, setName
-
Methods inherited from class ptolemy.kernel.Entity
_addPort, _description, _exportMoMLContents, _removePort, _validateSettables, connectedPortList, connectedPorts, containedObjectsIterator, getAttribute, getPort, getPorts, linkedRelationList, linkedRelations, portList, removeAllPorts, setClassDefinition, uniqueName
-
Methods inherited from class ptolemy.kernel.InstantiableNamedObj
_setParent, exportMoML, getChildren, getElementName, getParent, getPrototypeList, isClassDefinition, isWithinClassDefinition
-
Methods inherited from class ptolemy.kernel.util.NamedObj
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _containedDecorators, _copyChangeRequestList, _debug, _debug, _debug, _debug, _debug, _executeChangeRequests, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _notifyHierarchyListenersAfterChange, _notifyHierarchyListenersBeforeChange, _propagateValue, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, addHierarchyListener, attributeDeleted, attributeList, attributeList, decorators, deepContains, depthInHierarchy, description, description, event, executeChangeRequests, exportMoML, exportMoML, exportMoML, exportMoML, exportMoMLPlain, getAttribute, getAttributes, getChangeListeners, getClassName, getDecoratorAttribute, getDecoratorAttributes, getDerivedLevel, getDerivedList, getDisplayName, getFullName, getModelErrorHandler, getName, getName, getSource, handleModelError, isDeferringChangeRequests, isOverridden, isPersistent, lazyContainedObjectsIterator, message, notifyOfNameChange, propagateValue, propagateValues, removeAttribute, removeChangeListener, removeDebugListener, removeHierarchyListener, requestChange, setClassName, setDeferringChangeRequests, setDerivedLevel, setDisplayName, setModelErrorHandler, setPersistent, setSource, sortContainedObjects, toplevel, toString, validateSettables, workspace
-
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface ptolemy.actor.Actor
createReceivers, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, newReceiver, outputPortList
-
Methods inherited from interface ptolemy.kernel.util.Derivable
getDerivedLevel, getDerivedList, propagateValue
-
Methods inherited from interface ptolemy.actor.Executable
isFireFunctional, isStrict, iterate, postfire, prefire, stop, stopFire, terminate
-
Methods inherited from interface ptolemy.actor.Initializable
addInitializable, preinitialize, removeInitializable, wrapup
-
Methods inherited from interface ptolemy.kernel.util.Nameable
description, getContainer, getDisplayName, getFullName, getName, getName, setName
-
-
-
-
Field Detail
-
input
public TypedIOPort input
This port takes in an unsigned byte array and processes the data.
-
output
public TypedIOPort output
This port sends out the processed data received from input in the form of an unsigned byte array.
-
provider
public StringParameter provider
Specify a provider for the given algorithm. Takes the algorithm name as a string. The default value is "SystemDefault" which allows the system chooses the provider based on the JCE architecture.
-
signatureAlgorithm
public StringParameter signatureAlgorithm
Specify the algorithm to be used to sign data. The algorithm is specified as a string. The algorithms are limited to those implemented by providers using the Java JCE which are found on the system. Depending on your JDK installation, possible values might be SHA1WITHDSA or MD5WITHRSA. The initial default is the first value returned by java.security.Security.getAlgorithms("Signature").
-
_provider
protected java.lang.String _provider
The name of the provider to be used for a provider specific implementation.
-
_signature
protected java.security.Signature _signature
The signature that will be used to process the data.
-
_signatureAlgorithm
protected java.lang.String _signatureAlgorithm
The name of the signature algorithm to be used.
-
-
Constructor Detail
-
SignatureActor
public SignatureActor(CompositeEntity container, java.lang.String name) throws NameDuplicationException, IllegalActionException
Construct an actor with the given container and name. The Java virtual machine is queried for algorithm and provider choices and these choices are added to the appropriate parameters.- Parameters:
container
- The container.name
- The name of this actor.- Throws:
IllegalActionException
- If the actor cannot be contained by the proposed container.NameDuplicationException
- If the container already has an actor with this name.
-
-
Method Detail
-
attributeChanged
public void attributeChanged(Attribute attribute) throws IllegalActionException
Override the base class to reinitialize the state if the the signatureAlgorithm, or provider parameter is changed.- Overrides:
attributeChanged
in classNamedObj
- Parameters:
attribute
- The attribute that changed.- Throws:
IllegalActionException
- Not thrown in this base class.
-
fire
public void fire() throws IllegalActionException
Update _signature if an attribute has changed and then invoke super.fire() to transform the input data.- Specified by:
fire
in interfaceExecutable
- Overrides:
fire
in classAtomicActor<TypedIOPort>
- Throws:
IllegalActionException
- If thrown by the base class or if there is a problem processing the data.
-
initialize
public void initialize() throws IllegalActionException
Use the values of the signatureAlgorithm and provider parameters to initialize the java.security.Signature object. If provider is "SystemDefault" then the system chooses the provider based on the JCE.- Specified by:
initialize
in interfaceInitializable
- Overrides:
initialize
in classAtomicActor<TypedIOPort>
- Throws:
IllegalActionException
- If the base class throws it, if the algorithm is not found, or if the specified provider does not exist.
-
-