ptolemy.actor.lib.security
Class SymmetricDecryption
java.lang.Object
ptolemy.kernel.util.NamedObj
ptolemy.kernel.InstantiableNamedObj
ptolemy.kernel.Entity
ptolemy.kernel.ComponentEntity
ptolemy.actor.AtomicActor
ptolemy.actor.TypedAtomicActor
ptolemy.actor.lib.security.CryptographyActor
ptolemy.actor.lib.security.CipherActor
ptolemy.actor.lib.security.SymmetricDecryption
- All Implemented Interfaces:
- java.io.Serializable, java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, TypedActor, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable
public class SymmetricDecryption
- extends CipherActor
Decrypt an unsigned byte array using a symmetric algorithm.
See SymmetricEncryption
for a
description of symmetric vs. asymmetric algorithms.
This actor reads an unsigned byte array at the input port,
decrypts the data using the data from the key port and then
writes the unsigned byte array results to the output port.
The key should be the same for both the SymmetricEncryption
actor and this actor.
The algorithm parameter determines which algorithm is used.
The algorithm specified must be symmetric. The mode and padding can also
be specified in the mode and padding parameters. In
case a provider specific instance of an algorithm is needed the
provider may also be specified in the provider parameter.
Note that for simplicity, this actor does not support the
notion of algorithm parameters, so the algorithm must not require
that algorithm parameters be transmitted separately from the key.
If the user selects an algorithm that uses algorithm parameters, then
an exception will likely be thrown.
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: SymmetricDecryption.java 57040 2010-01-27 20:52:32Z cxh $
- Author:
- Christopher Hylands Brooks, Contributor: Rakesh Reddy
- See Also:
- Serialized Form
- Accepted Rating:
- Proposed Rating:
Fields inherited from class ptolemy.kernel.util.NamedObj |
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS |
Method Summary |
protected byte[] |
_process(byte[] dataBytes)
Decrypt the data with the secret key by using javax.crypto.Cipher. |
void |
fire()
Read the input and key, and send the decrypted data
to the output port. |
Methods inherited from class ptolemy.actor.AtomicActor |
_actorFiring, _actorFiring, addActorFiringListener, addInitializable, clone, 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 |
_description, _exportMoMLContents, _removePort, _validateSettables, connectedPortList, connectedPorts, containedObjectsIterator, getAttribute, getPort, getPorts, linkedRelationList, linkedRelations, portList, removeAllPorts, setClassDefinition, uniqueName |
Methods inherited from class ptolemy.kernel.util.NamedObj |
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _debug, _debug, _debug, _debug, _debug, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _propagateValue, _recordDecoratedAttributes, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, attributeList, attributeList, 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, propagateValue, propagateValues, removeChangeListener, removeDebugListener, 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 |
key
public TypedIOPort key
- The key port. This port contains the key that is used to
decrypt data from the input port. The type is KeyToken
that contains a java.security.key
_key
private java.security.Key _key
SymmetricDecryption
public SymmetricDecryption(CompositeEntity container,
java.lang.String name)
throws NameDuplicationException,
IllegalActionException
- Construct an actor with the given container and name.
- 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.
fire
public void fire()
throws IllegalActionException
- Read the input and key, and send the decrypted data
to the output port.
The algorithm is obtained from the key, and if it
is different than the current value of the algorithm
parameter, we reinitialize _cipher.
- Specified by:
fire
in interface Executable
- Overrides:
fire
in class CipherActor
- Throws:
IllegalActionException
- If retrieving parameters fails,
the algorithm does not exist or if the provider does not exist.
_process
protected byte[] _process(byte[] dataBytes)
throws IllegalActionException
- Decrypt the data with the secret key by using javax.crypto.Cipher.
- Specified by:
_process
in class CryptographyActor
- Parameters:
dataBytes
- the data to be decrypted.
- Returns:
- byte[] the decrypted data.
- Throws:
IllegalActionException
- If an error occurs in
ByteArrayOutputStream, a key is invalid, padding is bad,
or if the block size is illegal.