Skip to content

Latest commit

 

History

History
60 lines (53 loc) · 2.82 KB

File metadata and controls

60 lines (53 loc) · 2.82 KB

Building wolfCrypt JNI/JCE (wolfcryptjni)

  • If on Linux "cp makefile.linux makefile", if on macOS "cp makefile.macosx makefile"
  • To build the native JNI shared library run "make"
  • To build the Java JAR library and examples run "ant build-jce-debug"

Running JUnit tests

  • To run JUnit tests run "ant test"
  • All tests should pass without problems

Code Style

  • Maximum line length is 80 characters. Only break/wrap lines that would exceed 80 characters
  • MUST only use multi-line comments, no "//" style ones
  • MUST remove all trailing white space
  • MUST use 4 spaces for one tab, no hard tabs
  • MUST use XMALLOC/XFREE for memory allocation instead of malloc/free
  • MUST cast XMALLOC back to type being allocated

Source Code Organization

  • The source code is organized into the following directories:
    • jni: JNI source files
    • jni/include: JNI header files
    • src/main/java: Java source code
    • src/main/java/com/wolfssl/wolfcrypt: com.wolfssl.wolfcrypt package JNI layer source code
    • src/main/java/com/wolfssl/provider/jce: com.wolfssl.provider.jce package wolfCrypt JCE provider source code
    • src/test: JUnit test code
    • src/test/java/com/wolfssl/wolfcrypt/test: com.wolfssl.wolfcrypt thin JNI wrapper JUnit test code
    • src/test/java/com/wolfssl/provider/jce/test: com.wolfssl.provider.jce wolfCrypt JCE provider JUnit test code
    • build.xml: Ant build file
    • pom.xml: Maven build file
    • docs: Documentation files
    • docs/design: Design files
    • docs/javadoc: Generated Javadoc file location
    • scripts/infer.sh: Script to run Facebook Infer static analysis
    • IDE/Android: Android Studio example project files
    • IDE/WIN: Visual Studio solution file
    • examples: examples directory

Workflow

  • Make sure package compiles and all JUnit tests pass when you are making code changes
  • Maintain minimum Java compatibility down to Java 8

Example Code Guidelines for Writing New Code

  • All examples are placed under the "examples" directory
  • Directory "examples" contains JNI-level examples
  • Directory "examples/provider" contains JCE-level examples
  • All examples should have two files:
    • Example.java: Java source code
    • Example.sh: Shell script to run the example
  • Examples will be run from the root directory
  • Example .jks files are located under "examples/certs"
  • Example .wk files are located under "examples/certs"
  • Example .jks files are updated using the update-jks-wks.sh script

Adding new JUnit test files

  • All new wolfCrypt JUnit test files must be added to src/test/java/com/wolfssl/wolfcrypt/test/WolfCryptTestSuite.java
  • All new wolfJCE JUnit test files must be added to src/test/java/com/wolfssl/provider/jce/test/WolfJCETestSuite.java
  • New JUnit test classes must define TestRule like existing ones do

Adding new Java files

  • MUST add all new JNI or JCE Java files to scripts/infer.sh for Infer static analysis