public abstract class CryptographyActor extends TypedAtomicActor
Cryptographic actors are actors that perform encryption or decryption or generate signatures of data.
Actors extending this class take in an unsigned byte array at the input, process the data based on the algorithm parameter and send an unsigned byte array to the output. The algorithms that maybe implemented are limited those that are implemented by "providers" following the Java Cryptography Extension (JCE) specifications and installed on the machine being run. If a provider specific instance of an algorithm is needed, the provider may be specified in the provider parameter. The keySize also allows implementations of algorithms using various key sizes.
Concrete actors derived from this base class must include a
_process(byte[])
method that processes the data appropriately.
The _process() method is called by CryptographyActor.fire().
This class takes care of basic initialization of the algorithm
and provider parameters for use by the subclasses.
This actor relies on the Java Cryptography Architecture (JCA) and Java
Cryptography Extension (JCE).
Information about JCA can be found at
http://download.oracle.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html.
Information about JCE can be found at
http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136007.html.
The Java security tutorial can be found at
http://download.oracle.com/javase/tutorial/security/index.html
Entity.ContainedObjectsIterator
Modifier and Type | Field and Description |
---|---|
protected java.lang.String |
_algorithm
The name of the algorithm to be used.
|
protected int |
_keySize
The key size to be used when processing information.
|
protected java.lang.String |
_provider
The provider to be used for a provider specific implementation.
|
StringParameter |
algorithm
Specify the algorithm to be used to process data.
|
TypedIOPort |
input
The input port.
|
Parameter |
keySize
Specify the size of the key to be created.
|
TypedIOPort |
output
The output port.
|
StringParameter |
provider
Specify a provider for the given algorithm.
|
_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 |
---|
CryptographyActor(CompositeEntity container,
java.lang.String name)
Construct an actor with the given container and name.
|
Modifier and Type | Method and Description |
---|---|
protected abstract byte[] |
_process(byte[] dataBytes)
Process the input data based on parameter specifications.
|
void |
attributeChanged(Attribute attribute)
Override the base class to reinitialize the state if
the algorithm, keySize, or provider
parameter is changed.
|
void |
fire()
Read data from the from the input and process the
data based on the algorithm, and provider by calling
_process(byte []) . |
_containedTypeConstraints, _customTypeConstraints, _defaultTypeConstraints, _fireAt, _fireAt, attributeTypeChanged, clone, clone, isBackwardTypeInferenceEnabled, newPort, typeConstraintList, typeConstraints
_actorFiring, _actorFiring, _declareDelayDependency, addActorFiringListener, addInitializable, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, initialize, 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, initialize, preinitialize, removeInitializable, wrapup
description, getContainer, getDisplayName, getFullName, getName, getName, setName
getDerivedLevel, getDerivedList, propagateValue
public StringParameter algorithm
public TypedIOPort input
public Parameter keySize
DSA is the most common algorithm that uses keySize, the Sun
documentation says:
"The length, in bits, of the modulus p. This must range from
512 to 1024, and must be a multiple of 64. The default keysize
is 1024."
Refer to
http://download.oracle.com/javase/6/docs/technotes/guides/security/StandardNames.html#spectemp
for a list of possible key sizes for certain algorithms.
The initial default is 1024.
public TypedIOPort output
public StringParameter provider
protected java.lang.String _algorithm
protected int _keySize
protected java.lang.String _provider
public CryptographyActor(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
_process(byte [])
. The transformed data is then sent to
the output port.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.protected abstract byte[] _process(byte[] dataBytes) throws IllegalActionException
dataBytes
- The data to be processed.IllegalActionException
- Not thrown in this base class