ptolemy.actor.lib.security
Class KeyReader

java.lang.Object
  extended by ptolemy.kernel.util.NamedObj
      extended by ptolemy.kernel.InstantiableNamedObj
          extended by ptolemy.kernel.Entity
              extended by ptolemy.kernel.ComponentEntity
                  extended by ptolemy.actor.AtomicActor
                      extended by ptolemy.actor.TypedAtomicActor
                          extended by ptolemy.actor.lib.security.KeyStoreActor
                              extended by ptolemy.actor.lib.security.KeyReader
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, TypedActor, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable
Direct Known Subclasses:
PrivateKeyReader, PublicKeyReader

public class KeyReader
extends KeyStoreActor

Read in a keystore from a FileParameter and output a Key.

Keystores are ways to manage keys and certificates. See the KeyStoreActor documentation for more information about keystores.

This class has many parameters, derived classes usually set some of the parameters to reasonable defaults and then hide them by setting the visibility to EXPERT.

Since:
Ptolemy II 4.0
Version:
$Id: KeyReader.java 57040 2010-01-27 20:52:32Z cxh $
Author:
Christopher Hylands Brooks
See Also:
PrivateKeyReader, PublicKeyReader, Serialized Form
Accepted Rating:
Red (cxh)
Proposed Rating:
Yellow (cxh)

Nested Class Summary
 
Nested classes/interfaces inherited from class ptolemy.kernel.Entity
Entity.ContainedObjectsIterator
 
Field Summary
private  boolean _getPublicKey
           
private  java.security.Key _key
           
private  boolean _updateKeyNeeded
           
private  boolean _verifyCertificate
           
 Parameter getPublicKey
          True if we should get the public key.
 TypedIOPort output
          The output port.
 StringParameter signatureAlgorithm
          The name of the signature algorithm used to generate the key.
 TypedIOPort trigger
          The trigger port.
 Parameter verifyCertificate
          True if the certificate associated with a key should be verified.
 
Fields inherited from class ptolemy.actor.lib.security.KeyStoreActor
_alias, _keyPassword, _keyStore, _keyStoreType, _loadKeyStoreNeeded, _provider, _storePassword, alias, createFileOrURLIfNecessary, fileOrURL, keyPassword, keyStoreType, provider, storePassword
 
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
KeyReader(CompositeEntity container, java.lang.String name)
          Construct an actor with the given container and name.
 
Method Summary
protected  void _updateKey()
          If necessary, update _key by using the values of the alias, fileOrURL and getPublicKey parameters.
 void attributeChanged(Attribute attribute)
          Override the base class to reinitialize the state if the alias, fileOrURL, or getPublicKey parameter is changed.
 void fire()
          Output the java.security.Key that was read in.
 
Methods inherited from class ptolemy.actor.lib.security.KeyStoreActor
_initializeKeyStore, _loadKeyStore, createKeystore, fileOrURLDescription, stopFire, wrapup
 
Methods inherited from class ptolemy.actor.TypedAtomicActor
_addPort, _fireAt, _fireAt, attributeTypeChanged, clone, newPort, typeConstraintList, typeConstraints
 
Methods inherited from class ptolemy.actor.AtomicActor
_actorFiring, _actorFiring, addActorFiringListener, addInitializable, clone, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, initialize, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, postfire, prefire, preinitialize, pruneDependencies, recordFiring, removeActorFiringListener, removeDependency, removeInitializable, setContainer, stop, terminate
 
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 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
 
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, terminate
 
Methods inherited from interface ptolemy.actor.Initializable
addInitializable, initialize, preinitialize, removeInitializable
 
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

getPublicKey

public Parameter getPublicKey
True if we should get the public key. False if we should get the private key. The default value is true. Getting the private key requires using the keyPassword.


output

public TypedIOPort output
The output port. This port contains an KeyToken that contains a java.security.Key.


trigger

public TypedIOPort trigger
The trigger port. The type of this port is undeclared, meaning that it will resolve to any data type.


signatureAlgorithm

public StringParameter signatureAlgorithm
The name of the signature algorithm used to generate the key. This StringParameter is not settable by the user, it is set after initialize() is called and the certificate has been obtained from the KeyStore.


verifyCertificate

public Parameter verifyCertificate
True if the certificate associated with a key should be verified. False if the certificate (if any) need not be verified.
Public Keys must be associated with a certificate, so if getPublicKey is true, then this Parameter should be true as well.
Private keys are usually associated with a certificate, so verifying the certificate is a good idea.
Secret keys do not usually have a certificate, so if the key is a secret key, then usually verifyCertificate is set to false.


_getPublicKey

private boolean _getPublicKey

_key

private java.security.Key _key

_updateKeyNeeded

private boolean _updateKeyNeeded

_verifyCertificate

private boolean _verifyCertificate
Constructor Detail

KeyReader

public KeyReader(CompositeEntity container,
                 java.lang.String name)
          throws IllegalActionException,
                 NameDuplicationException
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.
Method Detail

attributeChanged

public void attributeChanged(Attribute attribute)
                      throws IllegalActionException
Override the base class to reinitialize the state if the alias, fileOrURL, or getPublicKey parameter is changed.

Overrides:
attributeChanged in class KeyStoreActor
Parameters:
attribute - The attribute that has changed.
Throws:
IllegalActionException - If the specified attribute is URL and the file cannot be opened.

fire

public void fire()
          throws IllegalActionException
Output the java.security.Key that was read in. Read at most one input token from each channel of the trigger input and discard it. If the trigger input is not connected, then this method does nothing. Derived classes should be sure to call super.fire(), or to consume the trigger input tokens themselves, so that they aren't left unconsumed.

Specified by:
fire in interface Executable
Overrides:
fire in class KeyStoreActor
Throws:
IllegalActionException - Not thrown in this base class.
IllegalActionException - If there's no director.

_updateKey

protected void _updateKey()
                   throws IllegalActionException
If necessary, update _key by using the values of the alias, fileOrURL and getPublicKey parameters.

Throws:
IllegalActionException - If the parent class throws it or if there is a problem with the cryptographic configuration.