public class SignatureActor extends TypedAtomicActor
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.
Entity.ContainedObjectsIterator
Modifier and Type | Field and 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.
|
_typesValid
_actorFiringListeners, _initializables, _notifyingActorFiring, _stopRequested
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _deferChangeRequests, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS
COMPLETED, NOT_READY, STOP_ITERATING
Constructor and Description |
---|
SignatureActor(CompositeEntity container,
java.lang.String name)
Construct an actor with the given container and name.
|
Modifier and Type | Method and 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.
|
_containedTypeConstraints, _customTypeConstraints, _defaultTypeConstraints, _fireAt, _fireAt, attributeTypeChanged, clone, clone, isBackwardTypeInferenceEnabled, newPort, typeConstraintList, typeConstraints
_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
_adjustDeferrals, _checkContainer, _getContainedObject, _propagateExistence, getContainer, instantiate, isAtomic, isOpaque, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, propagateExistence, setName
_addPort, _description, _exportMoMLContents, _removePort, _validateSettables, connectedPortList, connectedPorts, containedObjectsIterator, getAttribute, getPort, getPorts, linkedRelationList, linkedRelations, portList, removeAllPorts, setClassDefinition, uniqueName
_setParent, exportMoML, getChildren, getElementName, getParent, getPrototypeList, isClassDefinition, isWithinClassDefinition
_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
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
createReceivers, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, newReceiver, outputPortList
isFireFunctional, isStrict, iterate, postfire, prefire, stop, stopFire, terminate
addInitializable, preinitialize, removeInitializable, wrapup
description, getContainer, getDisplayName, getFullName, getName, getName, setName
getDerivedLevel, getDerivedList, propagateValue
public TypedIOPort input
public TypedIOPort output
public StringParameter provider
public StringParameter signatureAlgorithm
protected java.lang.String _provider
protected java.security.Signature _signature
protected java.lang.String _signatureAlgorithm
public SignatureActor(CompositeEntity container, java.lang.String name) throws NameDuplicationException, IllegalActionException
container
- The container.name
- The name of this actor.IllegalActionException
- If the actor cannot be contained
by the proposed container.NameDuplicationException
- If the container already has an
actor with this name.public void attributeChanged(Attribute attribute) throws IllegalActionException
attributeChanged
in class NamedObj
attribute
- The attribute that changed.IllegalActionException
- Not thrown in this base class.public void fire() throws IllegalActionException
fire
in interface Executable
fire
in class AtomicActor<TypedIOPort>
IllegalActionException
- If thrown by the base class or
if there is a problem processing the data.public void initialize() throws IllegalActionException
initialize
in interface Initializable
initialize
in class AtomicActor<TypedIOPort>
IllegalActionException
- If the base class throws it,
if the algorithm is not found, or if the specified provider does
not exist.