Class AbstractDecryptionService

java.lang.Object
org.refcodes.forwardsecrecy.AbstractDecryptionService
All Implemented Interfaces:
DecryptionService
Direct Known Subclasses:
LoopbackDecryptionService, PublicKeyDecryptionService

public abstract class AbstractDecryptionService
extends Object
implements DecryptionService
Abstract base implementation for non abstract DecryptionService implementations.
  • Constructor Details

    • AbstractDecryptionService

      public AbstractDecryptionService​(String aNamespace, DecryptionServer aDecryptionServer)
      Constructs the service with the required services and configuration. The cipher versions expire time is set to 0 (expire immediately). See setCipherVersionsExpireTimeInMs(long).
      Parameters:
      aNamespace - The name space to which service belongs
      aDecryptionServer - The server to which the service is being "connected"
  • Method Details

    • getCipherVersions

      public List<CipherVersion> getCipherVersions()
      Returns the currently available cipher versions.
      Specified by:
      getCipherVersions in interface DecryptionService
      Returns:
      A list with the currently known cipher versions.
    • setCipherVersionsExpireTimeInMs

      public void setCipherVersionsExpireTimeInMs​(long aCipherVersionsExpireTimeInMs)
      Injection method for setting the the expire time (in milliseconds) after which once loaded cipher versions expire. A value of 0 indicates that them cipher versions are always reloaded upon accessing the cipher versions. A value of -1 indicates that the cipher versions are just loaded once and then never reloaded (them never expire).
      Parameters:
      aCipherVersionsExpireTimeInMs - The time in milliseconds after which them loaded cipher versions expire and are reloaded. A value of 0 indicates that them cipher versions expire immediately. A value of -1 indicate that them cipher versions expire never.
    • toSignature

      protected abstract String toSignature​(String aMessage)
      Creates a signature for the given message.
      Parameters:
      aMessage - The message for which a signature is to be generated
      Returns:
      The signature for the message
    • createMessage

      protected abstract String createMessage()
      Creates a message for which a signature is to be created in order to authenticate for the retrieval of the cipher versions. A decryption server should deny any requests to get cipher versions in case the same message is used twice.
      Returns:
      The message
    • toDecryptedCipherVersion

      protected abstract <CV extends CipherVersion> CV toDecryptedCipherVersion​(CV aEncyrptedCipherVersion)
      Hook factory method to be implemented by subclasses. The provided cipher is to be decrypted (e.g. with the private key of an asymmetric encryption approach) so that an decryption server only receives encrypted data.
      Type Parameters:
      CV - The type of the CipherVersion to be used.
      Parameters:
      aEncyrptedCipherVersion - The CipherVersion to be decrypted.
      Returns:
      The decrypted CipherVersion.