|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES All Classes | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectptolemy.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
public abstract class CipherActor
A base class for actors that encrypt and decrypt data.
Cipher actors are any actors which perform encryption or
decryption based on the Java Cryptography Extension (JCE).
See the
CryptographyActor
documentation for
resources about JCA and JCE.
Actors extending this class take in an unsigned byte array at the input, process the data based on the algorithm parameter and send a unsigned byte array to the output. The algorithms that may be implemented are limited to those that are implemented by "providers" following the JCE specifications and installed in the machine being run. The mode and padding of the algorithm 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. The keySize parameter allows implementations of algorithms using various key sizes.
Concrete actors derived from this base class must implement the
CryptographyActor._process(byte[])
method.
The initialize() method of this actor sets _cipher to the
value of javax.crypt.Cipher.getInstance() with an argument that is
created from the values of the algorithm, padding and
keySize parameters. Derived classes should call _cipher.init()
with the value of the key in their fire() method. The_process() method
in a derived class usually calls _cipher.doFinal().
Yellow (cxh) |
Green (cxh) |
Nested Class Summary |
---|
Nested classes/interfaces inherited from class ptolemy.kernel.Entity |
---|
Entity.ContainedObjectsIterator |
Field Summary | |
---|---|
protected javax.crypto.Cipher |
_cipher
The cipher that will be used to process the data. |
protected java.lang.String |
_mode
The mode to be used to process the data. |
protected java.lang.String |
_padding
The padding scheme to be used process the data. |
protected boolean |
_updateCipherNeeded
Set to true if one of the parameters changed and we need to call _updateCipher(). |
StringParameter |
mode
The mode component when the Cipher is instantiated. |
StringParameter |
padding
The padding scheme used by the cipher during encryption. |
Fields inherited from class ptolemy.actor.lib.security.CryptographyActor |
---|
_algorithm, _keySize, _provider, algorithm, input, keySize, output, provider |
Fields inherited from class ptolemy.actor.AtomicActor |
---|
_actorFiringListeners, _initializables, _notifyingActorFiring, _stopRequested |
Fields inherited from class ptolemy.kernel.util.NamedObj |
---|
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _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 | |
---|---|
CipherActor(CompositeEntity container,
java.lang.String name)
Construct an actor with the given container and name. |
Method Summary | |
---|---|
protected void |
_updateCipher()
The value of _cipher is updated by calling javax.crypt.Cipher.getInstance() with an argument that is created from the values of the _algorithm, _mode and _padding. |
void |
attributeChanged(Attribute attribute)
Override the base class to reinitialize the state if the the mode, or paddingparameter is changed. |
void |
fire()
Update _cipher if an attribute has changed and then invoke super.fire() to transform the input data. |
void |
initialize()
Retrieve the values of the parameters and set up javax.crypto.Cipher. |
Methods inherited from class ptolemy.actor.lib.security.CryptographyActor |
---|
_process |
Methods inherited from class ptolemy.actor.TypedAtomicActor |
---|
_addPort, _fireAt, _fireAt, attributeTypeChanged, clone, newPort, typeConstraintList, typeConstraints |
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.InstantiableNamedObj |
---|
_setParent, exportMoML, getChildren, getElementName, getParent, getPrototypeList, isClassDefinition, isWithinClassDefinition |
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.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 |
Methods inherited from interface ptolemy.kernel.util.Derivable |
---|
getDerivedLevel, getDerivedList, propagateValue |
Field Detail |
---|
public StringParameter mode
(The empty string)
NONE
CBC
CFB
ECB
OFB
PCBC
See the Java Cryptography Extension (JCE) Reference Guide for details.
public StringParameter padding
Block cipher algorithms like DES and Blowfish in Electronic Code Book (ECB) and Cipher Block Chaining (CBC) mode require their input to be an exact multiple of the block size. If the plaintext to be encrypted is not an exact multiple, you need to pad before encrypting by adding a padding string. When decrypting, the receiving party needs to know how to remove the padding, if any.
The padding is specified as a string. Names for parameter and parameters implemented vary based on the provider. Possible values include
(The empty string)
NoPadding
OAEPWithdigestAndmgfPadding
PKCS5Padding
SSL3Padding
See the Java Cryptography Extension (JCE) Reference Guide for details.
protected javax.crypto.Cipher _cipher
protected java.lang.String _mode
protected java.lang.String _padding
protected boolean _updateCipherNeeded
Constructor Detail |
---|
public CipherActor(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.Method Detail |
---|
public void attributeChanged(Attribute attribute) throws IllegalActionException
attributeChanged
in class CryptographyActor
attribute
- The attribute that changed.
IllegalActionException
- Not thrown in this base class.public void fire() throws IllegalActionException
fire
in interface Executable
fire
in class CryptographyActor
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
IllegalActionException
- If the algorithm cannot be found,
the padding scheme is illegal for the the given algorithm or
if the specified provider does not exist.protected void _updateCipher() throws IllegalActionException
IllegalActionException
- if the _cipher cannot be
initialized.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES All Classes | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |