View Javadoc
1   package org.jastacry.layer;
2   
3   import java.io.InputStream;
4   import java.io.OutputStream;
5   
6   import org.jastacry.JastacryException;
7   import org.jastacry.GlobalData.Action;
8   
9   /**
10   * Layer interface for more separation of methods.
11   * @author Kai Kretschmann
12   *
13   */
14  public interface Layer
15  {
16  
17      /**
18       * Optional method for setting encryption or decryption
19       * parameters like keys or passwords.
20       *
21       * @param data a String containing everything the layer needs to know
22       */
23      void init(String data);
24  
25      /**
26       * Local encode Stream function which does the real thing for Random Layer.
27       *
28       * @param newInputStream incoming data
29       * @param newOutputStream outgoing data
30       * @throws JastacryException thrown on error
31       */
32      void encodeAndDecode(InputStream newInputStream, OutputStream newOutputStream)
33              throws JastacryException;
34  
35      /**
36       * Encodes either plain text or an encoded layer to the next encoding layer.
37       *
38       * @param newInputStream existing and opened input stream
39       * @param newOutputStream existing and opened output stream
40       * @throws JastacryException if one of the streams fail
41       */
42      default void encStream(InputStream newInputStream, OutputStream newOutputStream) throws JastacryException
43      {
44          encodeAndDecode(newInputStream, newOutputStream);
45      }
46  
47      /**
48       * Decodes an encrypted stream to either plain text or the next encoded layer.
49       *
50       * @param newInputStream existing and opened input stream
51       * @param newOutputStream existing and opened output stream
52       * @throws JastacryException if one of the streams fail
53       */
54      default void decStream(InputStream newInputStream, OutputStream newOutputStream) throws JastacryException
55      {
56          encodeAndDecode(newInputStream, newOutputStream);
57      }
58  
59      /**
60       * Property setter for input stream.
61       *
62       * @param newInputStream the new stream
63       */
64      void setInputStream(InputStream newInputStream);
65  
66      /**
67       * property setter for output stream.
68       *
69       * @param newOutputStream the new output stream
70       */
71      void setOutputStream(OutputStream newOutputStream);
72  
73      /**
74       * Property setter for action.
75       *
76       * @param newAction the new action
77       */
78      void setAction(Action newAction);
79  
80      /**
81       * Property setter for realLayerName.
82       *
83       * @param newRealLayerName the new layer name
84       */
85      void setRealLayerName(String newRealLayerName);
86  
87  }