diff --git a/app/build.gradle b/app/build.gradle
index 1dbf468..1d38728 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -9,6 +9,7 @@ dependencies {
implementation 'org.apache.commons:commons-text'
implementation 'commons-cli:commons-cli'
implementation project(':lib')
+ implementation project(':ext')
// might be removed if I move BC ops to the lib
testImplementation 'org.bouncycastle:bcpkix-jdk18on'
}
diff --git a/app/src/main/java/zeroecho/CovertCommand.java b/app/src/main/java/zeroecho/CovertCommand.java
index 96a7ea5..dcff5f9 100644
--- a/app/src/main/java/zeroecho/CovertCommand.java
+++ b/app/src/main/java/zeroecho/CovertCommand.java
@@ -51,8 +51,8 @@ import org.apache.commons.cli.OptionGroup;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
-import zeroecho.sdk.integrations.covert.jpeg.JpegExifEmbedder;
-import zeroecho.sdk.integrations.covert.jpeg.Slot;
+import zeroecho.ext.integrations.covert.jpeg.JpegExifEmbedder;
+import zeroecho.ext.integrations.covert.jpeg.Slot;
/**
* Command-line extension of ZeroEcho for covert embedding and extraction of
diff --git a/ext/.classpath b/ext/.classpath
new file mode 100644
index 0000000..8ce7b51
--- /dev/null
+++ b/ext/.classpath
@@ -0,0 +1,32 @@
+
+
* This package provides streaming utilities and exportable content - * implementations that render {@link zeroecho.sdk.content.api.DataContent} for + * implementations that render {@link zeroecho.ext.content.api.DataContent} for * deployment to external platforms or for script-based transport. Exports can * be produced as raw bytes or as platform-specific scripts according to - * {@link zeroecho.sdk.content.api.ExportableDataContent.ExportMode}. + * {@link zeroecho.ext.content.api.ExportableDataContent.ExportMode}. *
* *{@code
* java.io.InputStream source = ... raw bytes ...;
- * java.io.InputStream encoded = new zeroecho.sdk.content.export.Base64Stream(
+ * java.io.InputStream encoded = new zeroecho.ext.content.export.Base64Stream(
* source,
* "echo ".getBytes(java.nio.charset.StandardCharsets.UTF_8),
* 76,
@@ -78,8 +78,8 @@
* }
*
* {@code
- * zeroecho.sdk.content.api.ExportableDataContent content = ... some exportable content ...;
- * content.setExportMode(zeroecho.sdk.content.api.ExportableDataContent.ExportMode.BASH_SCRIPT);
+ * zeroecho.ext.content.api.ExportableDataContent content = ... some exportable content ...;
+ * content.setExportMode(zeroecho.ext.content.api.ExportableDataContent.ExportMode.BASH_SCRIPT);
* try (java.io.InputStream script = content.getStream()) {
* script.transferTo(out);
* }
@@ -87,7 +87,7 @@
*
* Security notes
* + * This package defines the common content model used by the SDK and organizes + * concrete sources and exporters under dedicated subpackages. Content objects + * expose streaming access to bytes and can be chained into pipelines produced + * by builder APIs. + *
+ * + *{@code
+ * // Stream a DataContent instance to an OutputStream.
+ * zeroecho.sdk.content.api.DataContent content = ... obtained from a builder chain ...;
+ * try (java.io.InputStream in = content.getStream()) {
+ * in.transferTo(out);
+ * }
+ *
+ * // If exportable, render in an alternate mode (for example, a shell script).
+ * if (content instanceof zeroecho.sdk.content.api.ExportableDataContent exportable) {
+ * exportable.setExportMode(
+ * zeroecho.sdk.content.api.ExportableDataContent.ExportMode.BASH_SCRIPT);
+ * try (java.io.InputStream script = exportable.getStream()) {
+ * script.transferTo(out);
+ * }
+ * }
+ * }
+ *
+ * {@code
* // Use the built-in English distribution to create a short cover text.
- * zeroecho.sdk.integrations.covert.TextualCodec.Generator gen =
- * zeroecho.sdk.integrations.covert.TextualCodec.Generator.EN;
+ * zeroecho.ext.integrations.covert.TextualCodec.Generator gen =
+ * zeroecho.ext.integrations.covert.TextualCodec.Generator.EN;
* String sample = gen.getText(256);
*
* // Or construct a custom distribution.
@@ -63,8 +63,8 @@
* java.util.Map.entry('e', 12.7), java.util.Map.entry('t', 9.1),
* java.util.Map.entry('a', 8.2), java.util.Map.entry(' ', 25.4)
* );
- * zeroecho.sdk.integrations.covert.TextualCodec.Generator custom =
- * new zeroecho.sdk.integrations.covert.TextualCodec.Generator(freq);
+ * zeroecho.ext.integrations.covert.TextualCodec.Generator custom =
+ * new zeroecho.ext.integrations.covert.TextualCodec.Generator(freq);
* String cover = custom.getText(128);
* }
*
@@ -78,4 +78,4 @@
*
* @since 1.0
*/
-package zeroecho.sdk.integrations.covert;
+package zeroecho.ext.integrations.covert;
diff --git a/lib/src/main/java/zeroecho/sdk/integrations/stegano/ImageFormat.java b/ext/src/main/java/zeroecho/ext/integrations/stegano/ImageFormat.java
similarity index 98%
rename from lib/src/main/java/zeroecho/sdk/integrations/stegano/ImageFormat.java
rename to ext/src/main/java/zeroecho/ext/integrations/stegano/ImageFormat.java
index 8143cb4..9db44d0 100644
--- a/lib/src/main/java/zeroecho/sdk/integrations/stegano/ImageFormat.java
+++ b/ext/src/main/java/zeroecho/ext/integrations/stegano/ImageFormat.java
@@ -31,7 +31,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
******************************************************************************/
-package zeroecho.sdk.integrations.stegano;
+package zeroecho.ext.integrations.stegano;
/**
* Enumeration of image formats supported for steganographic processing.
diff --git a/lib/src/main/java/zeroecho/sdk/integrations/stegano/LSBSteganographyMethod.java b/ext/src/main/java/zeroecho/ext/integrations/stegano/LSBSteganographyMethod.java
similarity index 99%
rename from lib/src/main/java/zeroecho/sdk/integrations/stegano/LSBSteganographyMethod.java
rename to ext/src/main/java/zeroecho/ext/integrations/stegano/LSBSteganographyMethod.java
index 05bfa81..4f48901 100644
--- a/lib/src/main/java/zeroecho/sdk/integrations/stegano/LSBSteganographyMethod.java
+++ b/ext/src/main/java/zeroecho/ext/integrations/stegano/LSBSteganographyMethod.java
@@ -31,7 +31,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
******************************************************************************/
-package zeroecho.sdk.integrations.stegano;
+package zeroecho.ext.integrations.stegano;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
diff --git a/lib/src/main/java/zeroecho/sdk/integrations/stegano/SteganographyMethod.java b/ext/src/main/java/zeroecho/ext/integrations/stegano/SteganographyMethod.java
similarity index 99%
rename from lib/src/main/java/zeroecho/sdk/integrations/stegano/SteganographyMethod.java
rename to ext/src/main/java/zeroecho/ext/integrations/stegano/SteganographyMethod.java
index 30394ff..a39f3d6 100644
--- a/lib/src/main/java/zeroecho/sdk/integrations/stegano/SteganographyMethod.java
+++ b/ext/src/main/java/zeroecho/ext/integrations/stegano/SteganographyMethod.java
@@ -31,7 +31,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
******************************************************************************/
-package zeroecho.sdk.integrations.stegano;
+package zeroecho.ext.integrations.stegano;
import java.io.IOException;
import java.io.InputStream;
diff --git a/lib/src/main/java/zeroecho/sdk/integrations/stegano/StegoMetadata.java b/ext/src/main/java/zeroecho/ext/integrations/stegano/StegoMetadata.java
similarity index 98%
rename from lib/src/main/java/zeroecho/sdk/integrations/stegano/StegoMetadata.java
rename to ext/src/main/java/zeroecho/ext/integrations/stegano/StegoMetadata.java
index cdcd0ce..acc2944 100644
--- a/lib/src/main/java/zeroecho/sdk/integrations/stegano/StegoMetadata.java
+++ b/ext/src/main/java/zeroecho/ext/integrations/stegano/StegoMetadata.java
@@ -31,7 +31,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
******************************************************************************/
-package zeroecho.sdk.integrations.stegano;
+package zeroecho.ext.integrations.stegano;
/**
* Metadata that describes a steganographic method.
diff --git a/lib/src/main/java/zeroecho/sdk/integrations/stegano/package-info.java b/ext/src/main/java/zeroecho/ext/integrations/stegano/package-info.java
similarity index 94%
rename from lib/src/main/java/zeroecho/sdk/integrations/stegano/package-info.java
rename to ext/src/main/java/zeroecho/ext/integrations/stegano/package-info.java
index 6b3b169..6ef8634 100644
--- a/lib/src/main/java/zeroecho/sdk/integrations/stegano/package-info.java
+++ b/ext/src/main/java/zeroecho/ext/integrations/stegano/package-info.java
@@ -44,11 +44,11 @@
* {@code
@@ -81,4 +81,4 @@
* }
* }
*/
-package zeroecho.sdk.integrations.stegano;
+package zeroecho.ext.integrations.stegano;
diff --git a/lib/src/test/java/zeroecho/sdk/content/export/Base64StreamTest.java b/ext/src/test/java/zeroecho/ext/content/export/Base64StreamTest.java
similarity index 99%
rename from lib/src/test/java/zeroecho/sdk/content/export/Base64StreamTest.java
rename to ext/src/test/java/zeroecho/ext/content/export/Base64StreamTest.java
index 9c8a669..4413911 100644
--- a/lib/src/test/java/zeroecho/sdk/content/export/Base64StreamTest.java
+++ b/ext/src/test/java/zeroecho/ext/content/export/Base64StreamTest.java
@@ -31,7 +31,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
******************************************************************************/
-package zeroecho.sdk.content.export;
+package zeroecho.ext.content.export;
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
diff --git a/lib/src/test/java/zeroecho/sdk/integrations/covert/TextualCodecTest.java b/ext/src/test/java/zeroecho/ext/integrations/covert/TextualCodecTest.java
similarity index 98%
rename from lib/src/test/java/zeroecho/sdk/integrations/covert/TextualCodecTest.java
rename to ext/src/test/java/zeroecho/ext/integrations/covert/TextualCodecTest.java
index b81dee8..4bbc4d6 100644
--- a/lib/src/test/java/zeroecho/sdk/integrations/covert/TextualCodecTest.java
+++ b/ext/src/test/java/zeroecho/ext/integrations/covert/TextualCodecTest.java
@@ -31,7 +31,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
******************************************************************************/
-package zeroecho.sdk.integrations.covert;
+package zeroecho.ext.integrations.covert;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
diff --git a/lib/src/test/java/zeroecho/sdk/integrations/covert/jpeg/JpegExifIntegrationTest.java b/ext/src/test/java/zeroecho/ext/integrations/covert/jpeg/JpegExifIntegrationTest.java
similarity index 99%
rename from lib/src/test/java/zeroecho/sdk/integrations/covert/jpeg/JpegExifIntegrationTest.java
rename to ext/src/test/java/zeroecho/ext/integrations/covert/jpeg/JpegExifIntegrationTest.java
index 1061d1f..5e14199 100644
--- a/lib/src/test/java/zeroecho/sdk/integrations/covert/jpeg/JpegExifIntegrationTest.java
+++ b/ext/src/test/java/zeroecho/ext/integrations/covert/jpeg/JpegExifIntegrationTest.java
@@ -31,7 +31,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
******************************************************************************/
-package zeroecho.sdk.integrations.covert.jpeg;
+package zeroecho.ext.integrations.covert.jpeg;
import static org.junit.jupiter.api.Assertions.assertEquals;
diff --git a/lib/src/test/java/zeroecho/sdk/integrations/stegano/LSBSteganographyMethodTest.java b/ext/src/test/java/zeroecho/ext/integrations/stegano/LSBSteganographyMethodTest.java
similarity index 98%
rename from lib/src/test/java/zeroecho/sdk/integrations/stegano/LSBSteganographyMethodTest.java
rename to ext/src/test/java/zeroecho/ext/integrations/stegano/LSBSteganographyMethodTest.java
index c256065..94667d8 100644
--- a/lib/src/test/java/zeroecho/sdk/integrations/stegano/LSBSteganographyMethodTest.java
+++ b/ext/src/test/java/zeroecho/ext/integrations/stegano/LSBSteganographyMethodTest.java
@@ -31,7 +31,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
******************************************************************************/
-package zeroecho.sdk.integrations.stegano;
+package zeroecho.ext.integrations.stegano;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
diff --git a/lib/src/test/resources/test.jpg b/ext/src/test/resources/test.jpg
similarity index 100%
rename from lib/src/test/resources/test.jpg
rename to ext/src/test/resources/test.jpg
diff --git a/lib/.classpath b/lib/.classpath
index 70187d2..6c1e625 100644
--- a/lib/.classpath
+++ b/lib/.classpath
@@ -13,13 +13,6 @@