code: public final Object getObject(Cipher c)
          throws IOException, ClassNotFoundException, IllegalBlockSizeException,
              BadPaddingException
      {
          /*
           * Unseal the object
           */
          byte[] content = c.doFinal(this.encryptedContent);
  
          /*
           * De-serialize it
           */
          // creating a stream pipe-line, from b to a
          ByteArrayInputStream b = new ByteArrayInputStream(content);
          ObjectInput a = new extObjectInputStream(b);
          try {
              Object obj = a.readObject();
              return obj;
          } finally {
              a.close();
          }
      }
docs: Retrieves the original (encapsulated) object.
  
  <p>The encapsulated object is unsealed (using the given Cipher,
  assuming that the Cipher is already properly initialized) and
  de-serialized, before it is returned.
  
  @param c the cipher used to unseal the object
  
  @return the original object.
  
  @exception NullPointerException if the given cipher is null.
  @exception IOException if an error occurs during de-serialiazation
  @exception ClassNotFoundException if an error occurs during
  de-serialiazation
  @exception IllegalBlockSizeException if the given cipher is a block
  cipher, no padding has been requested, and the total input length is
  not a multiple of the cipher's block size
  @exception BadPaddingException if the given cipher has been
  initialized for decryption, and padding has been specified, but
  the input data does not have proper expected padding bytes