From f6caff020228434a9ef7753116943fc29eca6296 Mon Sep 17 00:00:00 2001 From: afDursun Date: Thu, 10 Nov 2022 10:54:38 +0300 Subject: [PATCH 1/5] Update --- .idea/gradle.xml | 1 + .idea/vcs.xml | 6 ++ PQCLibrary/.gitignore | 1 + PQCLibrary/build.gradle | 35 +++++++++++ PQCLibrary/consumer-rules.pro | 0 PQCLibrary/proguard-rules.pro | 21 +++++++ .../pqclibrary/ExampleInstrumentedTest.java | 26 ++++++++ PQCLibrary/src/main/AndroidManifest.xml | 5 ++ .../java/com/sak/pqclibrary}/PQCLibary.java | 60 +++++++++++++------ .../provider/Kyber1024KeyPair.java | 8 +-- .../provider/Kyber512KeyPair.java | 8 +-- .../provider/Kyber768KeyPair.java | 8 +-- .../provider/KyberKeyPair.java | 2 +- .../provider/KyberKeySize.java | 2 +- .../provider/KyberKeyUtil.java | 2 +- .../provider/KyberProcess.java | 6 +- .../provider/KyberPublicKeySpec.java | 2 +- .../provider/KyberSecretKey.java | 2 +- .../provider/kyber/ByteOps.java | 2 +- .../provider/kyber/Indcpa.java | 2 +- .../provider/kyber/KyberParams.java | 2 +- .../provider/kyber/KyberUniformRandom.java | 2 +- .../kyberencryption/provider/kyber/Ntt.java | 2 +- .../kyberencryption/provider/kyber/Poly.java | 2 +- .../provider/kyber/UnpackedCipherText.java | 2 +- .../provider/kyber/UnpackedPublicKey.java | 2 +- .../com/sak/pqclibrary}/ntru/NTRUKem.java | 6 +- .../java/com/sak/pqclibrary}/ntru/OWCPA.java | 42 ++++++------- .../java/com/sak/pqclibrary}/ntru/Pack3.java | 6 +- .../java/com/sak/pqclibrary}/ntru/Packq.java | 10 ++-- .../java/com/sak/pqclibrary}/ntru/Params.java | 2 +- .../java/com/sak/pqclibrary}/ntru/Poly.java | 8 +-- .../sak/pqclibrary}/ntru/Poly_req_mul.java | 4 +- .../com/sak/pqclibrary}/ntru/Poly_s3_inv.java | 4 +- .../java/com/sak/pqclibrary}/ntru/Sample.java | 10 ++-- .../com/sak/pqclibrary}/ntru/Sample_iid.java | 4 +- .../ntru/models/TwoLongStruct.java | 2 +- .../java/com/sak/pqclibrary}/saber/CBD.java | 6 +- .../com/sak/pqclibrary}/saber/Indcpa.java | 50 +++++++--------- .../java/com/sak/pqclibrary}/saber/Kem.java | 24 ++++---- .../com/sak/pqclibrary}/saber/PackUnpack.java | 22 +++---- .../com/sak/pqclibrary}/saber/Params.java | 2 +- .../java/com/sak/pqclibrary}/saber/Poly.java | 10 ++-- .../com/sak/pqclibrary}/saber/PolyMul.java | 10 ++-- .../com/sak/pqclibrary}/saber/Verify.java | 2 +- .../saber/models/EncapsulationModel.java | 2 +- .../sak/pqclibrary}/saber/models/Keys.java | 2 +- .../sak/pqclibrary}/saber/utils/Utils.java | 7 ++- .../com/sak/pqclibrary/ExampleUnitTest.java | 17 ++++++ app/build.gradle | 5 ++ .../java/com/sak/pqclibary/MainActivity.java | 22 +++---- settings.gradle | 1 + 52 files changed, 309 insertions(+), 182 deletions(-) create mode 100644 .idea/vcs.xml create mode 100644 PQCLibrary/.gitignore create mode 100644 PQCLibrary/build.gradle create mode 100644 PQCLibrary/consumer-rules.pro create mode 100644 PQCLibrary/proguard-rules.pro create mode 100644 PQCLibrary/src/androidTest/java/com/sak/pqclibrary/ExampleInstrumentedTest.java create mode 100644 PQCLibrary/src/main/AndroidManifest.xml rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/PQCLibary.java (72%) rename app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/Kyber1024KeyPairGenerator.java => PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/Kyber1024KeyPair.java (88%) rename app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/Kyber512KeyPairGenerator.java => PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/Kyber512KeyPair.java (88%) rename app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/Kyber768KeyPairGenerator.java => PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/Kyber768KeyPair.java (88%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/kyber/kyberencryption/provider/KyberKeyPair.java (87%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/kyber/kyberencryption/provider/KyberKeySize.java (82%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/kyber/kyberencryption/provider/KyberKeyUtil.java (86%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/kyber/kyberencryption/provider/KyberProcess.java (98%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/kyber/kyberencryption/provider/KyberPublicKeySpec.java (93%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/kyber/kyberencryption/provider/KyberSecretKey.java (86%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/kyber/kyberencryption/provider/kyber/ByteOps.java (97%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/kyber/kyberencryption/provider/kyber/Indcpa.java (99%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/kyber/kyberencryption/provider/kyber/KyberParams.java (96%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/kyber/kyberencryption/provider/kyber/KyberUniformRandom.java (87%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/kyber/kyberencryption/provider/kyber/Ntt.java (98%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/kyber/kyberencryption/provider/kyber/Poly.java (99%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/kyber/kyberencryption/provider/kyber/UnpackedCipherText.java (84%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/kyber/kyberencryption/provider/kyber/UnpackedPublicKey.java (88%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/ntru/NTRUKem.java (71%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/ntru/OWCPA.java (89%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/ntru/Pack3.java (83%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/ntru/Packq.java (89%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/ntru/Params.java (99%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/ntru/Poly.java (96%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/ntru/Poly_req_mul.java (82%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/ntru/Poly_s3_inv.java (95%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/ntru/Sample.java (88%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/ntru/Sample_iid.java (91%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/ntru/models/TwoLongStruct.java (86%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/saber/CBD.java (91%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/saber/Indcpa.java (75%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/saber/Kem.java (85%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/saber/PackUnpack.java (94%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/saber/Params.java (98%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/saber/Poly.java (88%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/saber/PolyMul.java (97%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/saber/Verify.java (93%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/saber/models/EncapsulationModel.java (88%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/saber/models/Keys.java (90%) rename {app/src/main/java/com/sak/pqclibary => PQCLibrary/src/main/java/com/sak/pqclibrary}/saber/utils/Utils.java (79%) create mode 100644 PQCLibrary/src/test/java/com/sak/pqclibrary/ExampleUnitTest.java diff --git a/.idea/gradle.xml b/.idea/gradle.xml index a2d7c21..0498460 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -10,6 +10,7 @@ diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/PQCLibrary/.gitignore b/PQCLibrary/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/PQCLibrary/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/PQCLibrary/build.gradle b/PQCLibrary/build.gradle new file mode 100644 index 0000000..a9cd157 --- /dev/null +++ b/PQCLibrary/build.gradle @@ -0,0 +1,35 @@ +plugins { + id 'com.android.library' +} + +android { + compileSdk 32 + + defaultConfig { + minSdk 21 + targetSdk 32 + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles "consumer-rules.pro" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } +} + +dependencies { + implementation 'com.github.aelstad:keccakj:1.1.0' + implementation 'androidx.appcompat:appcompat:1.5.1' + implementation 'com.google.android.material:material:1.7.0' + testImplementation 'junit:junit:4.13.2' + androidTestImplementation 'androidx.test.ext:junit:1.1.3' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' +} \ No newline at end of file diff --git a/PQCLibrary/consumer-rules.pro b/PQCLibrary/consumer-rules.pro new file mode 100644 index 0000000..e69de29 diff --git a/PQCLibrary/proguard-rules.pro b/PQCLibrary/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/PQCLibrary/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/PQCLibrary/src/androidTest/java/com/sak/pqclibrary/ExampleInstrumentedTest.java b/PQCLibrary/src/androidTest/java/com/sak/pqclibrary/ExampleInstrumentedTest.java new file mode 100644 index 0000000..f5b23ab --- /dev/null +++ b/PQCLibrary/src/androidTest/java/com/sak/pqclibrary/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.sak.pqclibrary; + +import android.content.Context; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + assertEquals("com.sak.pqclibrary.test", appContext.getPackageName()); + } +} \ No newline at end of file diff --git a/PQCLibrary/src/main/AndroidManifest.xml b/PQCLibrary/src/main/AndroidManifest.xml new file mode 100644 index 0000000..a699f87 --- /dev/null +++ b/PQCLibrary/src/main/AndroidManifest.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/app/src/main/java/com/sak/pqclibary/PQCLibary.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/PQCLibary.java similarity index 72% rename from app/src/main/java/com/sak/pqclibary/PQCLibary.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/PQCLibary.java index de07327..83365a3 100644 --- a/app/src/main/java/com/sak/pqclibary/PQCLibary.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/PQCLibary.java @@ -1,20 +1,20 @@ -package com.sak.pqclibary; +package com.sak.pqclibrary; import android.os.Build; import androidx.annotation.RequiresApi; -import com.sak.pqclibary.kyber.kyberencryption.provider.Kyber1024KeyPairGenerator; -import com.sak.pqclibary.kyber.kyberencryption.provider.Kyber512KeyPairGenerator; -import com.sak.pqclibary.kyber.kyberencryption.provider.Kyber768KeyPairGenerator; -import com.sak.pqclibary.kyber.kyberencryption.provider.KyberKeyPair; -import com.sak.pqclibary.kyber.kyberencryption.provider.KyberProcess; -import com.sak.pqclibary.kyber.kyberencryption.provider.kyber.KyberParams; -import com.sak.pqclibary.ntru.OWCPA; -import com.sak.pqclibary.saber.Kem; -import com.sak.pqclibary.saber.Params; -import com.sak.pqclibary.saber.models.EncapsulationModel; -import com.sak.pqclibary.saber.models.Keys; +import com.sak.pqclibrary.kyber.kyberencryption.provider.Kyber1024KeyPair; +import com.sak.pqclibrary.kyber.kyberencryption.provider.Kyber512KeyPair; +import com.sak.pqclibrary.kyber.kyberencryption.provider.Kyber768KeyPair; +import com.sak.pqclibrary.kyber.kyberencryption.provider.KyberKeyPair; +import com.sak.pqclibrary.kyber.kyberencryption.provider.KyberProcess; +import com.sak.pqclibrary.kyber.kyberencryption.provider.kyber.KyberParams; +import com.sak.pqclibrary.ntru.OWCPA; +import com.sak.pqclibrary.saber.Kem; +import com.sak.pqclibrary.saber.Params; +import com.sak.pqclibrary.saber.models.EncapsulationModel; +import com.sak.pqclibrary.saber.models.Keys; public class PQCLibary { byte[] pk; @@ -48,14 +48,14 @@ else if(a[1].equalsIgnoreCase("Fire")){ else if(a[0].equalsIgnoreCase("NTRU")){ if(a[1].equalsIgnoreCase("509")){ - new com.sak.pqclibary.ntru.Params(509); + new com.sak.pqclibrary.ntru.Params(509); } else if(a[1].equalsIgnoreCase("677")){ - new com.sak.pqclibary.ntru.Params(677); + new com.sak.pqclibrary.ntru.Params(677); } else if(a[1].equalsIgnoreCase("821")){ - new com.sak.pqclibary.ntru.Params(821); + new com.sak.pqclibrary.ntru.Params(821); } this.algorithmType = 2; keys = OWCPA.owcpa_keypair(); @@ -65,15 +65,15 @@ else if(a[0].equalsIgnoreCase("Kyber")){ KyberKeyPair kk =null; if(a[1].equalsIgnoreCase("512")){ - kk = Kyber512KeyPairGenerator.generateKeys512(); + kk = Kyber512KeyPair.generateKeys512(); this.algorithmType = 3; } else if(a[1].equalsIgnoreCase("768")){ - kk = Kyber768KeyPairGenerator.generateKeys768(); + kk = Kyber768KeyPair.generateKeys768(); this.algorithmType = 4; } else if(a[1].equalsIgnoreCase("1024")){ - kk = Kyber1024KeyPairGenerator.generateKeys1024(); + kk = Kyber1024KeyPair.generateKeys1024(); this.algorithmType = 5; } keys = new Keys(kk.getKyberPublicKey(),kk.getKyberPrivateKey()); @@ -83,6 +83,30 @@ else if(a[1].equalsIgnoreCase("1024")){ this.sk = keys.getSk(); } + public byte[] getPk() { + return pk; + } + + public byte[] getSk() { + return sk; + } + + public byte[] getCipherText() { + return cipherText; + } + + public byte[] getSsk1() { + return ssk1; + } + + public byte[] getRnd1() { + return rnd1; + } + + public int getAlgorithmType() { + return algorithmType; + } + public EncapsulationModel Encapsulation(byte[] pk){ EncapsulationModel enc; switch (algorithmType){ diff --git a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/Kyber1024KeyPairGenerator.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/Kyber1024KeyPair.java similarity index 88% rename from app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/Kyber1024KeyPairGenerator.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/Kyber1024KeyPair.java index 39e7160..d17e5bb 100644 --- a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/Kyber1024KeyPairGenerator.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/Kyber1024KeyPair.java @@ -1,15 +1,15 @@ -package com.sak.pqclibary.kyber.kyberencryption.provider; +package com.sak.pqclibrary.kyber.kyberencryption.provider; import android.os.Build; import android.util.Log; import androidx.annotation.RequiresApi; import com.github.aelstad.keccakj.fips202.SHA3_256; -import com.sak.pqclibary.kyber.kyberencryption.provider.kyber.Indcpa; -import com.sak.pqclibary.kyber.kyberencryption.provider.kyber.KyberParams; +import com.sak.pqclibrary.kyber.kyberencryption.provider.kyber.Indcpa; +import com.sak.pqclibrary.kyber.kyberencryption.provider.kyber.KyberParams; import java.security.*; import java.util.ArrayList; -public final class Kyber1024KeyPairGenerator { +public final class Kyber1024KeyPair { @RequiresApi(api = Build.VERSION_CODES.O) diff --git a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/Kyber512KeyPairGenerator.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/Kyber512KeyPair.java similarity index 88% rename from app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/Kyber512KeyPairGenerator.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/Kyber512KeyPair.java index a8e224e..d5ba5dc 100644 --- a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/Kyber512KeyPairGenerator.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/Kyber512KeyPair.java @@ -1,14 +1,14 @@ -package com.sak.pqclibary.kyber.kyberencryption.provider; +package com.sak.pqclibrary.kyber.kyberencryption.provider; import android.os.Build; import androidx.annotation.RequiresApi; import com.github.aelstad.keccakj.fips202.SHA3_256; -import com.sak.pqclibary.kyber.kyberencryption.provider.kyber.Indcpa; -import com.sak.pqclibary.kyber.kyberencryption.provider.kyber.KyberParams; +import com.sak.pqclibrary.kyber.kyberencryption.provider.kyber.Indcpa; +import com.sak.pqclibrary.kyber.kyberencryption.provider.kyber.KyberParams; import java.security.*; import java.util.ArrayList; -public final class Kyber512KeyPairGenerator { +public final class Kyber512KeyPair { @RequiresApi(api = Build.VERSION_CODES.O) public static KyberKeyPair generateKeys512() { diff --git a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/Kyber768KeyPairGenerator.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/Kyber768KeyPair.java similarity index 88% rename from app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/Kyber768KeyPairGenerator.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/Kyber768KeyPair.java index 6a4fe25..81dee56 100644 --- a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/Kyber768KeyPairGenerator.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/Kyber768KeyPair.java @@ -1,15 +1,15 @@ -package com.sak.pqclibary.kyber.kyberencryption.provider; +package com.sak.pqclibrary.kyber.kyberencryption.provider; import android.os.Build; import android.util.Log; import androidx.annotation.RequiresApi; import com.github.aelstad.keccakj.fips202.SHA3_256; -import com.sak.pqclibary.kyber.kyberencryption.provider.kyber.Indcpa; -import com.sak.pqclibary.kyber.kyberencryption.provider.kyber.KyberParams; +import com.sak.pqclibrary.kyber.kyberencryption.provider.kyber.Indcpa; +import com.sak.pqclibrary.kyber.kyberencryption.provider.kyber.KyberParams; import java.security.*; import java.util.ArrayList; -public final class Kyber768KeyPairGenerator { +public final class Kyber768KeyPair { @RequiresApi(api = Build.VERSION_CODES.O) public static KyberKeyPair generateKeys768( ) { diff --git a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/KyberKeyPair.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/KyberKeyPair.java similarity index 87% rename from app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/KyberKeyPair.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/KyberKeyPair.java index 0ae583c..7081527 100644 --- a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/KyberKeyPair.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/KyberKeyPair.java @@ -1,4 +1,4 @@ -package com.sak.pqclibary.kyber.kyberencryption.provider; +package com.sak.pqclibrary.kyber.kyberencryption.provider; public class KyberKeyPair { private byte[] kyberPublicKey,kyberPrivateKey; diff --git a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/KyberKeySize.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/KyberKeySize.java similarity index 82% rename from app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/KyberKeySize.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/KyberKeySize.java index 94c5527..ab38808 100644 --- a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/KyberKeySize.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/KyberKeySize.java @@ -1,4 +1,4 @@ -package com.sak.pqclibary.kyber.kyberencryption.provider; +package com.sak.pqclibrary.kyber.kyberencryption.provider; public enum KyberKeySize { KEY_512("2"), diff --git a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/KyberKeyUtil.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/KyberKeyUtil.java similarity index 86% rename from app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/KyberKeyUtil.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/KyberKeyUtil.java index fdb7e8a..f6a35f1 100644 --- a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/KyberKeyUtil.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/KyberKeyUtil.java @@ -1,4 +1,4 @@ -package com.sak.pqclibary.kyber.kyberencryption.provider; +package com.sak.pqclibrary.kyber.kyberencryption.provider; public final class KyberKeyUtil { diff --git a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/KyberProcess.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/KyberProcess.java similarity index 98% rename from app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/KyberProcess.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/KyberProcess.java index c75776e..7d4111e 100644 --- a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/KyberProcess.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/KyberProcess.java @@ -1,11 +1,11 @@ -package com.sak.pqclibary.kyber.kyberencryption.provider; +package com.sak.pqclibrary.kyber.kyberencryption.provider; import com.github.aelstad.keccakj.core.KeccakSponge; import com.github.aelstad.keccakj.fips202.SHA3_256; import com.github.aelstad.keccakj.fips202.SHA3_512; import com.github.aelstad.keccakj.fips202.Shake256; -import com.sak.pqclibary.kyber.kyberencryption.provider.kyber.Indcpa; -import com.sak.pqclibary.kyber.kyberencryption.provider.kyber.KyberParams; +import com.sak.pqclibrary.kyber.kyberencryption.provider.kyber.Indcpa; +import com.sak.pqclibrary.kyber.kyberencryption.provider.kyber.KyberParams; import java.security.MessageDigest; public class KyberProcess { diff --git a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/KyberPublicKeySpec.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/KyberPublicKeySpec.java similarity index 93% rename from app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/KyberPublicKeySpec.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/KyberPublicKeySpec.java index fbf2dbe..0ded179 100644 --- a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/KyberPublicKeySpec.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/KyberPublicKeySpec.java @@ -1,4 +1,4 @@ -package com.sak.pqclibary.kyber.kyberencryption.provider; +package com.sak.pqclibrary.kyber.kyberencryption.provider; import java.math.BigInteger; diff --git a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/KyberSecretKey.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/KyberSecretKey.java similarity index 86% rename from app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/KyberSecretKey.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/KyberSecretKey.java index 2d9521c..b7d70df 100644 --- a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/KyberSecretKey.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/KyberSecretKey.java @@ -1,4 +1,4 @@ -package com.sak.pqclibary.kyber.kyberencryption.provider; +package com.sak.pqclibrary.kyber.kyberencryption.provider; public class KyberSecretKey { private byte[] secretKey; diff --git a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/kyber/ByteOps.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/kyber/ByteOps.java similarity index 97% rename from app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/kyber/ByteOps.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/kyber/ByteOps.java index 1f3179a..7932ad9 100644 --- a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/kyber/ByteOps.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/kyber/ByteOps.java @@ -1,4 +1,4 @@ -package com.sak.pqclibary.kyber.kyberencryption.provider.kyber; +package com.sak.pqclibrary.kyber.kyberencryption.provider.kyber; import java.util.Arrays; diff --git a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/kyber/Indcpa.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/kyber/Indcpa.java similarity index 99% rename from app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/kyber/Indcpa.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/kyber/Indcpa.java index 51f2aee..8b9e7e0 100644 --- a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/kyber/Indcpa.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/kyber/Indcpa.java @@ -1,4 +1,4 @@ -package com.sak.pqclibary.kyber.kyberencryption.provider.kyber; +package com.sak.pqclibrary.kyber.kyberencryption.provider.kyber; import android.os.Build; import androidx.annotation.RequiresApi; diff --git a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/kyber/KyberParams.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/kyber/KyberParams.java similarity index 96% rename from app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/kyber/KyberParams.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/kyber/KyberParams.java index d0fc22a..bbd46a6 100644 --- a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/kyber/KyberParams.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/kyber/KyberParams.java @@ -1,4 +1,4 @@ -package com.sak.pqclibary.kyber.kyberencryption.provider.kyber; +package com.sak.pqclibrary.kyber.kyberencryption.provider.kyber; public final class KyberParams { public final static int paramsN = 256; diff --git a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/kyber/KyberUniformRandom.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/kyber/KyberUniformRandom.java similarity index 87% rename from app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/kyber/KyberUniformRandom.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/kyber/KyberUniformRandom.java index ac1f398..661edb5 100644 --- a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/kyber/KyberUniformRandom.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/kyber/KyberUniformRandom.java @@ -1,4 +1,4 @@ -package com.sak.pqclibary.kyber.kyberencryption.provider.kyber; +package com.sak.pqclibrary.kyber.kyberencryption.provider.kyber; public final class KyberUniformRandom { private short[] uniformR; diff --git a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/kyber/Ntt.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/kyber/Ntt.java similarity index 98% rename from app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/kyber/Ntt.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/kyber/Ntt.java index 3e913a3..1c81032 100644 --- a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/kyber/Ntt.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/kyber/Ntt.java @@ -1,4 +1,4 @@ -package com.sak.pqclibary.kyber.kyberencryption.provider.kyber; +package com.sak.pqclibrary.kyber.kyberencryption.provider.kyber; public final class Ntt { public static short[] nttZetas = new short[]{ 2285, 2571, 2970, 1812, 1493, 1422, 287, 202, 3158, 622, 1577, 182, 962, diff --git a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/kyber/Poly.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/kyber/Poly.java similarity index 99% rename from app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/kyber/Poly.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/kyber/Poly.java index ce311cb..0098140 100644 --- a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/kyber/Poly.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/kyber/Poly.java @@ -1,4 +1,4 @@ -package com.sak.pqclibary.kyber.kyberencryption.provider.kyber; +package com.sak.pqclibrary.kyber.kyberencryption.provider.kyber; import java.util.Arrays; public final class Poly { diff --git a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/kyber/UnpackedCipherText.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/kyber/UnpackedCipherText.java similarity index 84% rename from app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/kyber/UnpackedCipherText.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/kyber/UnpackedCipherText.java index 802c37e..bdba90c 100644 --- a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/kyber/UnpackedCipherText.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/kyber/UnpackedCipherText.java @@ -1,4 +1,4 @@ -package com.sak.pqclibary.kyber.kyberencryption.provider.kyber; +package com.sak.pqclibrary.kyber.kyberencryption.provider.kyber; final class UnpackedCipherText { diff --git a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/kyber/UnpackedPublicKey.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/kyber/UnpackedPublicKey.java similarity index 88% rename from app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/kyber/UnpackedPublicKey.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/kyber/UnpackedPublicKey.java index b41230d..397af86 100644 --- a/app/src/main/java/com/sak/pqclibary/kyber/kyberencryption/provider/kyber/UnpackedPublicKey.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/kyber/UnpackedPublicKey.java @@ -1,4 +1,4 @@ -package com.sak.pqclibary.kyber.kyberencryption.provider.kyber; +package com.sak.pqclibrary.kyber.kyberencryption.provider.kyber; final class UnpackedPublicKey { diff --git a/app/src/main/java/com/sak/pqclibary/ntru/NTRUKem.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/NTRUKem.java similarity index 71% rename from app/src/main/java/com/sak/pqclibary/ntru/NTRUKem.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/NTRUKem.java index e70f3d6..1ddfb0c 100644 --- a/app/src/main/java/com/sak/pqclibary/ntru/NTRUKem.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/NTRUKem.java @@ -1,7 +1,7 @@ -package com.sak.pqclibary.ntru; +package com.sak.pqclibrary.ntru; -import com.sak.pqclibary.saber.models.EncapsulationModel; -import com.sak.pqclibary.saber.models.Keys; +import com.sak.pqclibrary.saber.models.EncapsulationModel; +import com.sak.pqclibrary.saber.models.Keys; public class NTRUKem { public static Keys crypto_kem_keypair(){ diff --git a/app/src/main/java/com/sak/pqclibary/ntru/OWCPA.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/OWCPA.java similarity index 89% rename from app/src/main/java/com/sak/pqclibary/ntru/OWCPA.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/OWCPA.java index 7a53b41..83030ae 100644 --- a/app/src/main/java/com/sak/pqclibary/ntru/OWCPA.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/OWCPA.java @@ -1,25 +1,25 @@ -package com.sak.pqclibary.ntru; - -import static com.sak.pqclibary.ntru.Params.CRYPTO_BYTES; -import static com.sak.pqclibary.ntru.Params.CRYPTO_CIPHERTEXTBYTES; -import static com.sak.pqclibary.ntru.Params.CRYPTO_PUBLICKEYBYTES; -import static com.sak.pqclibary.ntru.Params.CRYPTO_SECRETKEYBYTES; -import static com.sak.pqclibary.ntru.Params.NTRU_CIPHERTEXTBYTES; -import static com.sak.pqclibary.ntru.Params.NTRU_LOGQ; -import static com.sak.pqclibary.ntru.Params.NTRU_N; -import static com.sak.pqclibary.ntru.Params.NTRU_OWCPA_MSGBYTES; -import static com.sak.pqclibary.ntru.Params.NTRU_OWCPA_SECRETKEYBYTES; -import static com.sak.pqclibary.ntru.Params.NTRU_PACK_DEG; -import static com.sak.pqclibary.ntru.Params.NTRU_PACK_TRINARY_BYTES; -import static com.sak.pqclibary.ntru.Params.NTRU_PRFKEYBYTES; -import static com.sak.pqclibary.ntru.Params.NTRU_Q; -import static com.sak.pqclibary.ntru.Params.NTRU_SAMPLE_FG_BYTES; -import static com.sak.pqclibary.ntru.Params.NTRU_SAMPLE_RM_BYTES; - -import com.sak.pqclibary.saber.models.Keys; +package com.sak.pqclibrary.ntru; + +import static com.sak.pqclibrary.ntru.Params.CRYPTO_BYTES; +import static com.sak.pqclibrary.ntru.Params.CRYPTO_CIPHERTEXTBYTES; +import static com.sak.pqclibrary.ntru.Params.CRYPTO_PUBLICKEYBYTES; +import static com.sak.pqclibrary.ntru.Params.CRYPTO_SECRETKEYBYTES; +import static com.sak.pqclibrary.ntru.Params.NTRU_CIPHERTEXTBYTES; +import static com.sak.pqclibrary.ntru.Params.NTRU_LOGQ; +import static com.sak.pqclibrary.ntru.Params.NTRU_N; +import static com.sak.pqclibrary.ntru.Params.NTRU_OWCPA_MSGBYTES; +import static com.sak.pqclibrary.ntru.Params.NTRU_OWCPA_SECRETKEYBYTES; +import static com.sak.pqclibrary.ntru.Params.NTRU_PACK_DEG; +import static com.sak.pqclibrary.ntru.Params.NTRU_PACK_TRINARY_BYTES; +import static com.sak.pqclibrary.ntru.Params.NTRU_PRFKEYBYTES; +import static com.sak.pqclibrary.ntru.Params.NTRU_Q; +import static com.sak.pqclibrary.ntru.Params.NTRU_SAMPLE_FG_BYTES; +import static com.sak.pqclibrary.ntru.Params.NTRU_SAMPLE_RM_BYTES; + +import com.sak.pqclibrary.saber.models.Keys; import com.github.aelstad.keccakj.fips202.SHA3_256; -import com.sak.pqclibary.saber.models.EncapsulationModel; -import com.sak.pqclibary.ntru.models.TwoLongStruct; +import com.sak.pqclibrary.saber.models.EncapsulationModel; +import com.sak.pqclibrary.ntru.models.TwoLongStruct; import java.security.MessageDigest; import java.util.Arrays; diff --git a/app/src/main/java/com/sak/pqclibary/ntru/Pack3.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/Pack3.java similarity index 83% rename from app/src/main/java/com/sak/pqclibary/ntru/Pack3.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/Pack3.java index 2883cd3..13872c0 100644 --- a/app/src/main/java/com/sak/pqclibary/ntru/Pack3.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/Pack3.java @@ -1,7 +1,7 @@ -package com.sak.pqclibary.ntru; +package com.sak.pqclibrary.ntru; -import static com.sak.pqclibary.ntru.Params.NTRU_PACK_DEG; -import static com.sak.pqclibary.ntru.Params.NTRU_PACK_TRINARY_BYTES; +import static com.sak.pqclibrary.ntru.Params.NTRU_PACK_DEG; +import static com.sak.pqclibrary.ntru.Params.NTRU_PACK_TRINARY_BYTES; public class Pack3 { diff --git a/app/src/main/java/com/sak/pqclibary/ntru/Packq.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/Packq.java similarity index 89% rename from app/src/main/java/com/sak/pqclibary/ntru/Packq.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/Packq.java index 7323bdb..c568fbd 100644 --- a/app/src/main/java/com/sak/pqclibary/ntru/Packq.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/Packq.java @@ -1,9 +1,9 @@ -package com.sak.pqclibary.ntru; +package com.sak.pqclibrary.ntru; -import static com.sak.pqclibary.ntru.Params.CRYPTO_PUBLICKEYBYTES; -import static com.sak.pqclibary.ntru.Params.NTRU_N; -import static com.sak.pqclibary.ntru.Params.NTRU_PACK_DEG; -import static com.sak.pqclibary.ntru.Params.NTRU_PUBLICKEYBYTES; +import static com.sak.pqclibrary.ntru.Params.CRYPTO_PUBLICKEYBYTES; +import static com.sak.pqclibrary.ntru.Params.NTRU_N; +import static com.sak.pqclibrary.ntru.Params.NTRU_PACK_DEG; +import static com.sak.pqclibrary.ntru.Params.NTRU_PUBLICKEYBYTES; public class Packq { public static short[] poly_Rq_sum_zero_frombytes(byte[] a) { diff --git a/app/src/main/java/com/sak/pqclibary/ntru/Params.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/Params.java similarity index 99% rename from app/src/main/java/com/sak/pqclibary/ntru/Params.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/Params.java index fb1a544..6e22eab 100644 --- a/app/src/main/java/com/sak/pqclibary/ntru/Params.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/Params.java @@ -1,4 +1,4 @@ -package com.sak.pqclibary.ntru; +package com.sak.pqclibrary.ntru; public class Params { diff --git a/app/src/main/java/com/sak/pqclibary/ntru/Poly.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/Poly.java similarity index 96% rename from app/src/main/java/com/sak/pqclibary/ntru/Poly.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/Poly.java index 733946b..945de51 100644 --- a/app/src/main/java/com/sak/pqclibary/ntru/Poly.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/Poly.java @@ -1,8 +1,8 @@ -package com.sak.pqclibary.ntru; +package com.sak.pqclibrary.ntru; -import static com.sak.pqclibary.ntru.Params.NTRU_N; -import static com.sak.pqclibary.ntru.Params.NTRU_PACK_DEG; -import static com.sak.pqclibary.ntru.Params.NTRU_Q; +import static com.sak.pqclibrary.ntru.Params.NTRU_N; +import static com.sak.pqclibrary.ntru.Params.NTRU_PACK_DEG; +import static com.sak.pqclibrary.ntru.Params.NTRU_Q; public class Poly { public static short[] poly_Z3_to_Zq(short[] f) { diff --git a/app/src/main/java/com/sak/pqclibary/ntru/Poly_req_mul.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/Poly_req_mul.java similarity index 82% rename from app/src/main/java/com/sak/pqclibary/ntru/Poly_req_mul.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/Poly_req_mul.java index 6034da5..5d73102 100644 --- a/app/src/main/java/com/sak/pqclibary/ntru/Poly_req_mul.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/Poly_req_mul.java @@ -1,6 +1,6 @@ -package com.sak.pqclibary.ntru; +package com.sak.pqclibrary.ntru; -import static com.sak.pqclibary.ntru.Params.NTRU_N; +import static com.sak.pqclibrary.ntru.Params.NTRU_N; public class Poly_req_mul { public static short[] poly_Rq_mul(short[] a, short[] b) { diff --git a/app/src/main/java/com/sak/pqclibary/ntru/Poly_s3_inv.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/Poly_s3_inv.java similarity index 95% rename from app/src/main/java/com/sak/pqclibary/ntru/Poly_s3_inv.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/Poly_s3_inv.java index a14641c..9a2585a 100644 --- a/app/src/main/java/com/sak/pqclibary/ntru/Poly_s3_inv.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/Poly_s3_inv.java @@ -1,6 +1,6 @@ -package com.sak.pqclibary.ntru; +package com.sak.pqclibrary.ntru; -import static com.sak.pqclibary.ntru.Params.NTRU_N; +import static com.sak.pqclibrary.ntru.Params.NTRU_N; public class Poly_s3_inv { public static int both_negative_mask(int x, int y) { diff --git a/app/src/main/java/com/sak/pqclibary/ntru/Sample.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/Sample.java similarity index 88% rename from app/src/main/java/com/sak/pqclibary/ntru/Sample.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/Sample.java index 2e59514..bab006b 100644 --- a/app/src/main/java/com/sak/pqclibary/ntru/Sample.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/Sample.java @@ -1,10 +1,10 @@ -package com.sak.pqclibary.ntru; +package com.sak.pqclibrary.ntru; -import static com.sak.pqclibary.ntru.Params.NTRU_N; -import static com.sak.pqclibary.ntru.Params.NTRU_SAMPLE_IID_BYTES; -import static com.sak.pqclibary.ntru.Params.NTRU_WEIGHT; +import static com.sak.pqclibrary.ntru.Params.NTRU_N; +import static com.sak.pqclibrary.ntru.Params.NTRU_SAMPLE_IID_BYTES; +import static com.sak.pqclibrary.ntru.Params.NTRU_WEIGHT; -import com.sak.pqclibary.ntru.models.TwoLongStruct; +import com.sak.pqclibrary.ntru.models.TwoLongStruct; import java.util.Arrays; diff --git a/app/src/main/java/com/sak/pqclibary/ntru/Sample_iid.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/Sample_iid.java similarity index 91% rename from app/src/main/java/com/sak/pqclibary/ntru/Sample_iid.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/Sample_iid.java index 0d11ea7..399b754 100644 --- a/app/src/main/java/com/sak/pqclibary/ntru/Sample_iid.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/Sample_iid.java @@ -1,6 +1,6 @@ -package com.sak.pqclibary.ntru; +package com.sak.pqclibrary.ntru; -import static com.sak.pqclibary.ntru.Params.NTRU_N; +import static com.sak.pqclibrary.ntru.Params.NTRU_N; public class Sample_iid { public static short[] sample_iid(byte[] uniformbytes) { diff --git a/app/src/main/java/com/sak/pqclibary/ntru/models/TwoLongStruct.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/models/TwoLongStruct.java similarity index 86% rename from app/src/main/java/com/sak/pqclibary/ntru/models/TwoLongStruct.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/models/TwoLongStruct.java index 7ea5ab3..03bcda6 100644 --- a/app/src/main/java/com/sak/pqclibary/ntru/models/TwoLongStruct.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/ntru/models/TwoLongStruct.java @@ -1,4 +1,4 @@ -package com.sak.pqclibary.ntru.models; +package com.sak.pqclibrary.ntru.models; public class TwoLongStruct { private short[] a,b; diff --git a/app/src/main/java/com/sak/pqclibary/saber/CBD.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/saber/CBD.java similarity index 91% rename from app/src/main/java/com/sak/pqclibary/saber/CBD.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/saber/CBD.java index 33894ca..6983ff8 100644 --- a/app/src/main/java/com/sak/pqclibary/saber/CBD.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/saber/CBD.java @@ -1,7 +1,7 @@ -package com.sak.pqclibary.saber; +package com.sak.pqclibrary.saber; -import static com.sak.pqclibary.saber.Params.SABER_N; -import com.sak.pqclibary.saber.utils.Utils; +import static com.sak.pqclibrary.saber.Params.SABER_N; +import com.sak.pqclibrary.saber.utils.Utils; public class CBD { public static short[] cbd(short[] shorts, byte[] buf1) { diff --git a/app/src/main/java/com/sak/pqclibary/saber/Indcpa.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/saber/Indcpa.java similarity index 75% rename from app/src/main/java/com/sak/pqclibary/saber/Indcpa.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/saber/Indcpa.java index bb7a3f1..c90826a 100644 --- a/app/src/main/java/com/sak/pqclibary/saber/Indcpa.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/saber/Indcpa.java @@ -1,23 +1,24 @@ -package com.sak.pqclibary.saber; - -import static com.sak.pqclibary.saber.Params.CRYPTO_CIPHERTEXTBYTES; -import static com.sak.pqclibary.saber.Params.SABER_EP; -import static com.sak.pqclibary.saber.Params.SABER_EQ; -import static com.sak.pqclibary.saber.Params.SABER_ET; -import static com.sak.pqclibary.saber.Params.SABER_L; -import static com.sak.pqclibary.saber.Params.SABER_N; -import static com.sak.pqclibary.saber.Params.SABER_NOISE_SEEDBYTES; -import static com.sak.pqclibary.saber.Params.SABER_POLYVECBYTES; -import static com.sak.pqclibary.saber.Params.SABER_POLYVECCOMPRESSEDBYTES; -import static com.sak.pqclibary.saber.Params.SABER_SEEDBYTES; -import static com.sak.pqclibary.saber.Params.h1; -import static com.sak.pqclibary.saber.Params.h2; -import static com.sak.pqclibary.saber.Params.isRandom; +package com.sak.pqclibrary.saber; + +import static com.sak.pqclibrary.saber.Params.CRYPTO_CIPHERTEXTBYTES; +import static com.sak.pqclibrary.saber.Params.SABER_EP; +import static com.sak.pqclibrary.saber.Params.SABER_EQ; +import static com.sak.pqclibrary.saber.Params.SABER_ET; +import static com.sak.pqclibrary.saber.Params.SABER_L; +import static com.sak.pqclibrary.saber.Params.SABER_N; +import static com.sak.pqclibrary.saber.Params.SABER_NOISE_SEEDBYTES; +import static com.sak.pqclibrary.saber.Params.SABER_POLYVECBYTES; +import static com.sak.pqclibrary.saber.Params.SABER_POLYVECCOMPRESSEDBYTES; +import static com.sak.pqclibrary.saber.Params.SABER_SEEDBYTES; +import static com.sak.pqclibrary.saber.Params.h1; +import static com.sak.pqclibrary.saber.Params.h2; +import static com.sak.pqclibrary.saber.Params.isRandom; import com.github.aelstad.keccakj.core.KeccakSponge; import com.github.aelstad.keccakj.fips202.Shake128; -import com.sak.pqclibary.saber.models.Keys; -import com.sak.pqclibary.saber.utils.Utils; +import com.sak.pqclibrary.saber.models.Keys; +import com.sak.pqclibrary.saber.utils.Utils; import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; import java.util.Arrays; public class Indcpa { @@ -39,19 +40,8 @@ public static Keys indcpa_kem_keypair() throws NoSuchAlgorithmException { int i, j; - //RandomControl - if(isRandom){ - seed_A = Utils.randomBytes(seed_A.length); - seed_s = Utils.randomBytes(seed_s.length); - } - else{ - for (i = 0; i < SABER_SEEDBYTES; i++) { - seed_A[i] = 1; - } - for (i = 0; i < SABER_NOISE_SEEDBYTES; i++) { - seed_s[i] = 0; - } - } + seed_A = Utils.randomBytes(seed_A.length); + seed_s = Utils.randomBytes(seed_s.length); KeccakSponge xof = new Shake128(); xof.getAbsorbStream().write(seed_A); diff --git a/app/src/main/java/com/sak/pqclibary/saber/Kem.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/saber/Kem.java similarity index 85% rename from app/src/main/java/com/sak/pqclibary/saber/Kem.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/saber/Kem.java index 2410d0f..b8800f1 100644 --- a/app/src/main/java/com/sak/pqclibary/saber/Kem.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/saber/Kem.java @@ -1,19 +1,19 @@ -package com.sak.pqclibary.saber; +package com.sak.pqclibrary.saber; -import static com.sak.pqclibary.saber.Params.CRYPTO_BYTES; -import static com.sak.pqclibary.saber.Params.CRYPTO_CIPHERTEXTBYTES; -import static com.sak.pqclibary.saber.Params.SABER_BYTES_CCA_DEC; -import static com.sak.pqclibary.saber.Params.SABER_HASHBYTES; -import static com.sak.pqclibary.saber.Params.SABER_INDCPA_PUBLICKEYBYTES; -import static com.sak.pqclibary.saber.Params.SABER_INDCPA_SECRETKEYBYTES; -import static com.sak.pqclibary.saber.Params.SABER_SECRETKEYBYTES; -import static com.sak.pqclibary.saber.Params.isRandom; +import static com.sak.pqclibrary.saber.Params.CRYPTO_BYTES; +import static com.sak.pqclibrary.saber.Params.CRYPTO_CIPHERTEXTBYTES; +import static com.sak.pqclibrary.saber.Params.SABER_BYTES_CCA_DEC; +import static com.sak.pqclibrary.saber.Params.SABER_HASHBYTES; +import static com.sak.pqclibrary.saber.Params.SABER_INDCPA_PUBLICKEYBYTES; +import static com.sak.pqclibrary.saber.Params.SABER_INDCPA_SECRETKEYBYTES; +import static com.sak.pqclibrary.saber.Params.SABER_SECRETKEYBYTES; +import static com.sak.pqclibrary.saber.Params.isRandom; import com.github.aelstad.keccakj.fips202.SHA3_256; import com.github.aelstad.keccakj.fips202.SHA3_512; -import com.sak.pqclibary.saber.models.EncapsulationModel; -import com.sak.pqclibary.saber.models.Keys; -import com.sak.pqclibary.saber.utils.Utils; +import com.sak.pqclibrary.saber.models.EncapsulationModel; +import com.sak.pqclibrary.saber.models.Keys; +import com.sak.pqclibrary.saber.utils.Utils; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; diff --git a/app/src/main/java/com/sak/pqclibary/saber/PackUnpack.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/saber/PackUnpack.java similarity index 94% rename from app/src/main/java/com/sak/pqclibary/saber/PackUnpack.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/saber/PackUnpack.java index 623d9e8..d0d49ff 100644 --- a/app/src/main/java/com/sak/pqclibary/saber/PackUnpack.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/saber/PackUnpack.java @@ -1,14 +1,14 @@ -package com.sak.pqclibary.saber; - -import static com.sak.pqclibary.saber.Params.SABER_EP; -import static com.sak.pqclibary.saber.Params.SABER_ET; -import static com.sak.pqclibary.saber.Params.SABER_INDCPA_SECRETKEYBYTES; -import static com.sak.pqclibary.saber.Params.SABER_KEYBYTES; -import static com.sak.pqclibary.saber.Params.SABER_L; -import static com.sak.pqclibary.saber.Params.SABER_N; -import static com.sak.pqclibary.saber.Params.SABER_POLYBYTES; -import static com.sak.pqclibary.saber.Params.SABER_POLYVECCOMPRESSEDBYTES; -import static com.sak.pqclibary.saber.Params.SABER_SCALEBYTES_KEM; +package com.sak.pqclibrary.saber; + +import static com.sak.pqclibrary.saber.Params.SABER_EP; +import static com.sak.pqclibrary.saber.Params.SABER_ET; +import static com.sak.pqclibrary.saber.Params.SABER_INDCPA_SECRETKEYBYTES; +import static com.sak.pqclibrary.saber.Params.SABER_KEYBYTES; +import static com.sak.pqclibrary.saber.Params.SABER_L; +import static com.sak.pqclibrary.saber.Params.SABER_N; +import static com.sak.pqclibrary.saber.Params.SABER_POLYBYTES; +import static com.sak.pqclibrary.saber.Params.SABER_POLYVECCOMPRESSEDBYTES; +import static com.sak.pqclibrary.saber.Params.SABER_SCALEBYTES_KEM; import java.util.Arrays; diff --git a/app/src/main/java/com/sak/pqclibary/saber/Params.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/saber/Params.java similarity index 98% rename from app/src/main/java/com/sak/pqclibary/saber/Params.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/saber/Params.java index 244c268..173d15e 100644 --- a/app/src/main/java/com/sak/pqclibary/saber/Params.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/saber/Params.java @@ -1,4 +1,4 @@ -package com.sak.pqclibary.saber; +package com.sak.pqclibrary.saber; public class Params { // L = 2 ; MU = 10 ; ET = 3 diff --git a/app/src/main/java/com/sak/pqclibary/saber/Poly.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/saber/Poly.java similarity index 88% rename from app/src/main/java/com/sak/pqclibary/saber/Poly.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/saber/Poly.java index 7f5c91d..9ddc209 100644 --- a/app/src/main/java/com/sak/pqclibary/saber/Poly.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/saber/Poly.java @@ -1,9 +1,9 @@ -package com.sak.pqclibary.saber; +package com.sak.pqclibrary.saber; -import static com.sak.pqclibary.saber.Params.SABER_L; -import static com.sak.pqclibary.saber.Params.SABER_N; -import static com.sak.pqclibary.saber.Params.SABER_POLYCOINBYTES; -import static com.sak.pqclibary.saber.Params.SABER_POLYVECBYTES; +import static com.sak.pqclibrary.saber.Params.SABER_L; +import static com.sak.pqclibrary.saber.Params.SABER_N; +import static com.sak.pqclibrary.saber.Params.SABER_POLYCOINBYTES; +import static com.sak.pqclibrary.saber.Params.SABER_POLYVECBYTES; import com.github.aelstad.keccakj.core.KeccakSponge; import com.github.aelstad.keccakj.fips202.Shake128; diff --git a/app/src/main/java/com/sak/pqclibary/saber/PolyMul.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/saber/PolyMul.java similarity index 97% rename from app/src/main/java/com/sak/pqclibary/saber/PolyMul.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/saber/PolyMul.java index ef0c392..5d7ef0f 100644 --- a/app/src/main/java/com/sak/pqclibary/saber/PolyMul.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/saber/PolyMul.java @@ -1,9 +1,9 @@ -package com.sak.pqclibary.saber; +package com.sak.pqclibrary.saber; -import static com.sak.pqclibary.saber.Params.KARATSUBA_N; -import static com.sak.pqclibary.saber.Params.N_SB; -import static com.sak.pqclibary.saber.Params.N_SB_RES; -import static com.sak.pqclibary.saber.Params.SABER_N; +import static com.sak.pqclibrary.saber.Params.KARATSUBA_N; +import static com.sak.pqclibrary.saber.Params.N_SB; +import static com.sak.pqclibrary.saber.Params.N_SB_RES; +import static com.sak.pqclibrary.saber.Params.SABER_N; import java.util.Arrays; diff --git a/app/src/main/java/com/sak/pqclibary/saber/Verify.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/saber/Verify.java similarity index 93% rename from app/src/main/java/com/sak/pqclibary/saber/Verify.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/saber/Verify.java index f38b70a..63c1416 100644 --- a/app/src/main/java/com/sak/pqclibary/saber/Verify.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/saber/Verify.java @@ -1,4 +1,4 @@ -package com.sak.pqclibary.saber; +package com.sak.pqclibrary.saber; public class Verify { diff --git a/app/src/main/java/com/sak/pqclibary/saber/models/EncapsulationModel.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/saber/models/EncapsulationModel.java similarity index 88% rename from app/src/main/java/com/sak/pqclibary/saber/models/EncapsulationModel.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/saber/models/EncapsulationModel.java index be46b68..0d10bd0 100644 --- a/app/src/main/java/com/sak/pqclibary/saber/models/EncapsulationModel.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/saber/models/EncapsulationModel.java @@ -1,4 +1,4 @@ -package com.sak.pqclibary.saber.models; +package com.sak.pqclibrary.saber.models; public class EncapsulationModel { private byte[] cipherText, ss; diff --git a/app/src/main/java/com/sak/pqclibary/saber/models/Keys.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/saber/models/Keys.java similarity index 90% rename from app/src/main/java/com/sak/pqclibary/saber/models/Keys.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/saber/models/Keys.java index b2a6295..ff7f0b2 100644 --- a/app/src/main/java/com/sak/pqclibary/saber/models/Keys.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/saber/models/Keys.java @@ -1,4 +1,4 @@ -package com.sak.pqclibary.saber.models; +package com.sak.pqclibrary.saber.models; public class Keys { private byte[] pk,sk; diff --git a/app/src/main/java/com/sak/pqclibary/saber/utils/Utils.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/saber/utils/Utils.java similarity index 79% rename from app/src/main/java/com/sak/pqclibary/saber/utils/Utils.java rename to PQCLibrary/src/main/java/com/sak/pqclibrary/saber/utils/Utils.java index 8679275..2cc71d2 100644 --- a/app/src/main/java/com/sak/pqclibary/saber/utils/Utils.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/saber/utils/Utils.java @@ -1,12 +1,13 @@ -package com.sak.pqclibary.saber.utils; +package com.sak.pqclibrary.saber.utils; +import java.security.SecureRandom; import java.util.Random; public class Utils { public static byte[] randomBytes(int len){ byte[] randomArray = new byte[len]; - Random random = new Random(); - random.nextBytes(randomArray); + SecureRandom secureRandom = new SecureRandom(); + secureRandom.nextBytes(randomArray); return randomArray; } public static byte[] shiftLeft(byte[] array, int shift) { diff --git a/PQCLibrary/src/test/java/com/sak/pqclibrary/ExampleUnitTest.java b/PQCLibrary/src/test/java/com/sak/pqclibrary/ExampleUnitTest.java new file mode 100644 index 0000000..6d1b02c --- /dev/null +++ b/PQCLibrary/src/test/java/com/sak/pqclibrary/ExampleUnitTest.java @@ -0,0 +1,17 @@ +package com.sak.pqclibrary; + +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Example local unit test, which will execute on the development machine (host). + * + * @see Testing documentation + */ +public class ExampleUnitTest { + @Test + public void addition_isCorrect() { + assertEquals(4, 2 + 2); + } +} \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 2519a4e..4a58aa0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,6 +15,7 @@ android { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } + buildTypes { release { minifyEnabled false @@ -25,6 +26,9 @@ android { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } + buildFeatures{ + viewBinding true + } } dependencies { @@ -32,6 +36,7 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.4.1' implementation 'com.google.android.material:material:1.5.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' + implementation project(path: ':PQCLibrary') testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' diff --git a/app/src/main/java/com/sak/pqclibary/MainActivity.java b/app/src/main/java/com/sak/pqclibary/MainActivity.java index 6f8ffaf..a46607a 100644 --- a/app/src/main/java/com/sak/pqclibary/MainActivity.java +++ b/app/src/main/java/com/sak/pqclibary/MainActivity.java @@ -6,17 +6,10 @@ import android.os.Build; import android.os.Bundle; import android.util.Log; -import android.view.View; - -import com.sak.pqclibary.kyber.kyberencryption.provider.Kyber1024KeyPairGenerator; -import com.sak.pqclibary.kyber.kyberencryption.provider.KyberKeyPair; -import com.sak.pqclibary.kyber.kyberencryption.provider.KyberProcess; -import com.sak.pqclibary.kyber.kyberencryption.provider.KyberSecretKey; -import com.sak.pqclibary.kyber.kyberencryption.provider.kyber.KyberParams; -import com.sak.pqclibary.saber.Kem; -import com.sak.pqclibary.saber.models.EncapsulationModel; -import com.sak.pqclibary.saber.models.Keys; -import com.sak.pqclibary.saber.utils.Utils; + +import com.sak.pqclibrary.PQCLibary; +import com.sak.pqclibrary.saber.models.EncapsulationModel; +import com.sak.pqclibrary.saber.utils.Utils; public class MainActivity extends AppCompatActivity { @@ -26,10 +19,11 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); - PQCLibary pqcLibary = new PQCLibary("Kyber_1024"); - EncapsulationModel enc = pqcLibary.Encapsulation(pqcLibary.pk); - byte[] sharedSecretKey = pqcLibary.Decapsulation(enc.getCipherText(),pqcLibary.sk); + PQCLibary pqcLibary = new PQCLibary("Saber_Light"); + EncapsulationModel enc = pqcLibary.Encapsulation(pqcLibary.getPk()); + byte[] sharedSecretKey = pqcLibary.Decapsulation(enc.getCipherText(),pqcLibary.getSk()); Log.d("AFD-AFD", Utils.hex(sharedSecretKey)); + Log.d("AFD-AFD", Utils.hex(enc.getSs())); diff --git a/settings.gradle b/settings.gradle index 0234a3a..2501869 100644 --- a/settings.gradle +++ b/settings.gradle @@ -16,3 +16,4 @@ dependencyResolutionManagement { } rootProject.name = "PQCLibary" include ':app' +include ':PQCLibrary' From aaaf96e270590becc08f0772858578909621253a Mon Sep 17 00:00:00 2001 From: afDursun Date: Sat, 8 Apr 2023 12:54:39 +0300 Subject: [PATCH 2/5] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 58c583b..de7d57d 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,8 @@ PQCLibary pqcLibary = new PQCLibary("Algoritma_Etiketi"); // Anahtar Üretimi Örnek Kullanım: ```java -PQCLibary pqcLibary = new PQCLibary("Kyber_512"); // Anahtar Üretimi +PQCLibary pqcLibary = new PQCLibary("Kyber_512"); // Algoritma Belirleme +pqcLibary.KeyGen() // Anahtar Üretimi EncapsulationModel enc = pqcLibary.Encapsulation(pqcLibary.pk); //Paketleme byte[] sharedSecretKey = pqcLibary.Decapsulation(enc.getCipherText(),pqcLibary.sk); // Paket Çözme ``` From ee447106c115065cfbc6ae413f4561312eb56f88 Mon Sep 17 00:00:00 2001 From: afDursun Date: Tue, 20 Feb 2024 14:06:08 +0300 Subject: [PATCH 3/5] model-change --- .../java/com/sak/pqclibrary/PQCLibary.java | 121 ++++++++---------- .../com/sak/pqclibrary/ParameterSets.java | 18 +++ .../provider/Kyber1024KeyPair.java | 8 +- .../provider/Kyber512KeyPair.java | 10 +- .../provider/Kyber768KeyPair.java | 10 +- .../java/com/sak/pqclibrary/saber/Params.java | 2 +- .../java/com/sak/pqclibary/MainActivity.java | 15 ++- 7 files changed, 99 insertions(+), 85 deletions(-) create mode 100644 PQCLibrary/src/main/java/com/sak/pqclibrary/ParameterSets.java diff --git a/PQCLibrary/src/main/java/com/sak/pqclibrary/PQCLibary.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/PQCLibary.java index 83365a3..a187a41 100644 --- a/PQCLibrary/src/main/java/com/sak/pqclibrary/PQCLibary.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/PQCLibary.java @@ -1,9 +1,16 @@ package com.sak.pqclibrary; +import static com.sak.pqclibrary.ParameterSets.FIRE_SABER; +import static com.sak.pqclibrary.ParameterSets.KYBER1024; +import static com.sak.pqclibrary.ParameterSets.KYBER512; +import static com.sak.pqclibrary.ParameterSets.KYBER768; +import static com.sak.pqclibrary.ParameterSets.LIGHT_SABER; +import static com.sak.pqclibrary.ParameterSets.NTRU509; +import static com.sak.pqclibrary.ParameterSets.NTRU677; +import static com.sak.pqclibrary.ParameterSets.NTRU821; +import static com.sak.pqclibrary.ParameterSets.SABER; import android.os.Build; - import androidx.annotation.RequiresApi; - import com.sak.pqclibrary.kyber.kyberencryption.provider.Kyber1024KeyPair; import com.sak.pqclibrary.kyber.kyberencryption.provider.Kyber512KeyPair; import com.sak.pqclibrary.kyber.kyberencryption.provider.Kyber768KeyPair; @@ -19,65 +26,56 @@ public class PQCLibary { byte[] pk; byte[] sk; - byte[] cipherText; - byte[] ssk1; byte[] rnd1 = new byte[KyberParams.paramsSymBytes]; int algorithmType; @RequiresApi(api = Build.VERSION_CODES.O) - public PQCLibary(String algorithmName) { - String[] a = algorithmName.split("_"); - Keys keys = null; + public PQCLibary(int PARAMETER_SETS) { - if (a.length==1){ - this.algorithmType= 1; - new Params(3,8,4); - keys = Kem.crypto_kem_keypair(); - } - else if(a.length == 2){ - if(a[0].equalsIgnoreCase("Saber")){ - if(a[1].equalsIgnoreCase("Light")){ + Keys keys = null; - new Params(2,10,3); - } - else if(a[1].equalsIgnoreCase("Fire")){ - new Params(4,6,6); - } - this.algorithmType = 1; + switch (PARAMETER_SETS){ + case LIGHT_SABER: + this.algorithmType= 1; + new Params(2,10,3); keys = Kem.crypto_kem_keypair(); - } - else if(a[0].equalsIgnoreCase("NTRU")){ - if(a[1].equalsIgnoreCase("509")){ - - new com.sak.pqclibrary.ntru.Params(509); - - } - else if(a[1].equalsIgnoreCase("677")){ - new com.sak.pqclibrary.ntru.Params(677); - } - else if(a[1].equalsIgnoreCase("821")){ - new com.sak.pqclibrary.ntru.Params(821); - } + break; + case SABER: + this.algorithmType= 1; + new Params(3,8,4); + keys = Kem.crypto_kem_keypair(); + break; + case FIRE_SABER: + this.algorithmType= 1; + new Params(4,6,6); + keys = Kem.crypto_kem_keypair(); + break; + case KYBER512: + keys = Kyber512KeyPair.generateKeys512(); + this.algorithmType = 3; + break; + case KYBER768: + keys = Kyber768KeyPair.generateKeys768(); + this.algorithmType = 4; + break; + case KYBER1024: + keys = Kyber1024KeyPair.generateKeys1024(); + this.algorithmType = 5; + break; + case NTRU509: + new com.sak.pqclibrary.ntru.Params(509); this.algorithmType = 2; keys = OWCPA.owcpa_keypair(); - } - - else if(a[0].equalsIgnoreCase("Kyber")){ - KyberKeyPair kk =null; - - if(a[1].equalsIgnoreCase("512")){ - kk = Kyber512KeyPair.generateKeys512(); - this.algorithmType = 3; - } - else if(a[1].equalsIgnoreCase("768")){ - kk = Kyber768KeyPair.generateKeys768(); - this.algorithmType = 4; - } - else if(a[1].equalsIgnoreCase("1024")){ - kk = Kyber1024KeyPair.generateKeys1024(); - this.algorithmType = 5; - } - keys = new Keys(kk.getKyberPublicKey(),kk.getKyberPrivateKey()); - } + break; + case NTRU677: + new com.sak.pqclibrary.ntru.Params(677); + this.algorithmType = 2; + keys = OWCPA.owcpa_keypair(); + break; + case NTRU821: + new com.sak.pqclibrary.ntru.Params(821); + this.algorithmType = 2; + keys = OWCPA.owcpa_keypair(); + break; } this.pk = keys.getPk(); this.sk = keys.getSk(); @@ -90,23 +88,6 @@ public byte[] getPk() { public byte[] getSk() { return sk; } - - public byte[] getCipherText() { - return cipherText; - } - - public byte[] getSsk1() { - return ssk1; - } - - public byte[] getRnd1() { - return rnd1; - } - - public int getAlgorithmType() { - return algorithmType; - } - public EncapsulationModel Encapsulation(byte[] pk){ EncapsulationModel enc; switch (algorithmType){ diff --git a/PQCLibrary/src/main/java/com/sak/pqclibrary/ParameterSets.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/ParameterSets.java new file mode 100644 index 0000000..09cafca --- /dev/null +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/ParameterSets.java @@ -0,0 +1,18 @@ +package com.sak.pqclibrary; + +public class ParameterSets { + public static final int LIGHT_SABER = 1; + public static final int SABER = 2; + public static final int FIRE_SABER = 3; + + public static final int KYBER512 = 4; + public static final int KYBER768 = 5; + public static final int KYBER1024 = 6; + + public static final int NTRU509 = 7; + public static final int NTRU677 = 8; + public static final int NTRU821 = 9; + + + +} diff --git a/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/Kyber1024KeyPair.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/Kyber1024KeyPair.java index d17e5bb..c12391b 100644 --- a/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/Kyber1024KeyPair.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/Kyber1024KeyPair.java @@ -6,6 +6,8 @@ import com.github.aelstad.keccakj.fips202.SHA3_256; import com.sak.pqclibrary.kyber.kyberencryption.provider.kyber.Indcpa; import com.sak.pqclibrary.kyber.kyberencryption.provider.kyber.KyberParams; +import com.sak.pqclibrary.saber.models.Keys; + import java.security.*; import java.util.ArrayList; @@ -13,8 +15,8 @@ public final class Kyber1024KeyPair { @RequiresApi(api = Build.VERSION_CODES.O) - public static KyberKeyPair generateKeys1024( ) { - KyberKeyPair keyPair = null; + public static Keys generateKeys1024( ) { + Keys keyPair = null; KyberKeySize kyberKeySize = KyberKeySize.KEY_512; SecureRandom random = new SecureRandom(); try{ @@ -46,7 +48,7 @@ public static KyberKeyPair generateKeys1024( ) { System.arraycopy(pkh, 0, privateKeyFixedLength, offsetEnd, pkh.length); offsetEnd += pkh.length; System.arraycopy(rnd, 0, privateKeyFixedLength, offsetEnd, rnd.length); - keyPair = new KyberKeyPair(packedPublicKey, privateKeyFixedLength); + keyPair = new Keys(packedPublicKey, privateKeyFixedLength); } catch (Exception ex) { ex.printStackTrace(); } diff --git a/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/Kyber512KeyPair.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/Kyber512KeyPair.java index d5ba5dc..9141ddc 100644 --- a/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/Kyber512KeyPair.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/Kyber512KeyPair.java @@ -5,15 +5,17 @@ import com.github.aelstad.keccakj.fips202.SHA3_256; import com.sak.pqclibrary.kyber.kyberencryption.provider.kyber.Indcpa; import com.sak.pqclibrary.kyber.kyberencryption.provider.kyber.KyberParams; +import com.sak.pqclibrary.saber.models.Keys; + import java.security.*; import java.util.ArrayList; public final class Kyber512KeyPair { @RequiresApi(api = Build.VERSION_CODES.O) - public static KyberKeyPair generateKeys512() { + public static Keys generateKeys512() { + Keys keys = null; int paramsK = 2; - KyberKeyPair keyPair = null; KyberKeySize kyberKeySize = KyberKeySize.KEY_512; SecureRandom random = new SecureRandom(); try{ @@ -40,11 +42,11 @@ public static KyberKeyPair generateKeys512() { System.arraycopy(pkh, 0, privateKeyFixedLength, offsetEnd, pkh.length); offsetEnd += pkh.length; System.arraycopy(rnd, 0, privateKeyFixedLength, offsetEnd, rnd.length); - keyPair = new KyberKeyPair(packedPublicKey, privateKeyFixedLength); + keys = new Keys(packedPublicKey, privateKeyFixedLength); } catch (Exception ex) { ex.printStackTrace(); } - return keyPair; + return keys; } } diff --git a/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/Kyber768KeyPair.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/Kyber768KeyPair.java index 81dee56..435b312 100644 --- a/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/Kyber768KeyPair.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/kyber/kyberencryption/provider/Kyber768KeyPair.java @@ -6,14 +6,16 @@ import com.github.aelstad.keccakj.fips202.SHA3_256; import com.sak.pqclibrary.kyber.kyberencryption.provider.kyber.Indcpa; import com.sak.pqclibrary.kyber.kyberencryption.provider.kyber.KyberParams; +import com.sak.pqclibrary.saber.models.Keys; + import java.security.*; import java.util.ArrayList; public final class Kyber768KeyPair { @RequiresApi(api = Build.VERSION_CODES.O) - public static KyberKeyPair generateKeys768( ) { - KyberKeyPair keyPair = null; + public static Keys generateKeys768( ) { + Keys keys = null; KyberKeySize kyberKeySize = KyberKeySize.KEY_512; SecureRandom random = new SecureRandom(); try{ @@ -45,10 +47,10 @@ public static KyberKeyPair generateKeys768( ) { System.arraycopy(pkh, 0, privateKeyFixedLength, offsetEnd, pkh.length); offsetEnd += pkh.length; System.arraycopy(rnd, 0, privateKeyFixedLength, offsetEnd, rnd.length); - keyPair = new KyberKeyPair(packedPublicKey, privateKeyFixedLength); + keys = new Keys(packedPublicKey, privateKeyFixedLength); } catch (Exception ex) { ex.printStackTrace(); } - return keyPair; + return keys; } } diff --git a/PQCLibrary/src/main/java/com/sak/pqclibrary/saber/Params.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/saber/Params.java index 173d15e..c1df31c 100644 --- a/PQCLibrary/src/main/java/com/sak/pqclibrary/saber/Params.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/saber/Params.java @@ -33,7 +33,7 @@ public class Params { public static int CRYPTO_BYTES = SABER_KEYBYTES; public static int SABER_SECRETKEYBYTES = (SABER_INDCPA_SECRETKEYBYTES + SABER_INDCPA_PUBLICKEYBYTES + SABER_HASHBYTES + SABER_KEYBYTES); public static int h2 = ((1 << (SABER_EP - 2)) - (1 << (SABER_EP - SABER_ET - 1)) + (1 << (SABER_EQ - SABER_EP - 1))); - public static boolean isRandom = false; + public static boolean isRandom = true; public Params(int L, int MU,int ET) { SABER_L = L; diff --git a/app/src/main/java/com/sak/pqclibary/MainActivity.java b/app/src/main/java/com/sak/pqclibary/MainActivity.java index a46607a..85d5795 100644 --- a/app/src/main/java/com/sak/pqclibary/MainActivity.java +++ b/app/src/main/java/com/sak/pqclibary/MainActivity.java @@ -8,9 +8,14 @@ import android.util.Log; import com.sak.pqclibrary.PQCLibary; +import com.sak.pqclibrary.ParameterSets; import com.sak.pqclibrary.saber.models.EncapsulationModel; import com.sak.pqclibrary.saber.utils.Utils; +import java.lang.reflect.Array; +import java.lang.reflect.Parameter; +import java.util.Arrays; + public class MainActivity extends AppCompatActivity { @RequiresApi(api = Build.VERSION_CODES.O) @@ -19,11 +24,15 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); - PQCLibary pqcLibary = new PQCLibary("Saber_Light"); - EncapsulationModel enc = pqcLibary.Encapsulation(pqcLibary.getPk()); - byte[] sharedSecretKey = pqcLibary.Decapsulation(enc.getCipherText(),pqcLibary.getSk()); + + PQCLibary pqc = new PQCLibary(ParameterSets.FIRE_SABER); + EncapsulationModel enc = pqc.Encapsulation(pqc.getPk()); + byte[] sharedSecretKey = pqc.Decapsulation(enc.getCipherText(),pqc.getSk()); + + Log.d("AFD-AFD", Utils.hex(sharedSecretKey)); Log.d("AFD-AFD", Utils.hex(enc.getSs())); + Log.d("AFD-AFD", Arrays.equals(sharedSecretKey, enc.getSs()) + ""); From 3643cbc1ea473ea0b4954a7ea2fc13b836906d1e Mon Sep 17 00:00:00 2001 From: afDursun Date: Wed, 21 Feb 2024 14:27:57 +0300 Subject: [PATCH 4/5] time-effects --- .../java/com/sak/pqclibrary/PQCLibary.java | 4 +- .../java/com/sak/pqclibary/MainActivity.java | 102 +++++++++++++++--- app/src/main/res/layout/activity_main.xml | 22 ++++ 3 files changed, 114 insertions(+), 14 deletions(-) diff --git a/PQCLibrary/src/main/java/com/sak/pqclibrary/PQCLibary.java b/PQCLibrary/src/main/java/com/sak/pqclibrary/PQCLibary.java index a187a41..630762e 100644 --- a/PQCLibrary/src/main/java/com/sak/pqclibrary/PQCLibary.java +++ b/PQCLibrary/src/main/java/com/sak/pqclibrary/PQCLibary.java @@ -88,7 +88,7 @@ public byte[] getPk() { public byte[] getSk() { return sk; } - public EncapsulationModel Encapsulation(byte[] pk){ + public EncapsulationModel encapsulation(byte[] pk){ EncapsulationModel enc; switch (algorithmType){ case 1: @@ -114,7 +114,7 @@ public EncapsulationModel Encapsulation(byte[] pk){ - public byte[] Decapsulation(byte[] ct , byte[] sk){ + public byte[] decapsulation(byte[] ct , byte[] sk){ byte[] ssk2 ; switch (algorithmType){ case 1: diff --git a/app/src/main/java/com/sak/pqclibary/MainActivity.java b/app/src/main/java/com/sak/pqclibary/MainActivity.java index 85d5795..b4c188e 100644 --- a/app/src/main/java/com/sak/pqclibary/MainActivity.java +++ b/app/src/main/java/com/sak/pqclibary/MainActivity.java @@ -5,7 +5,11 @@ import android.os.Build; import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; +import android.os.Trace; import android.util.Log; +import android.view.View; import com.sak.pqclibrary.PQCLibary; import com.sak.pqclibrary.ParameterSets; @@ -15,9 +19,19 @@ import java.lang.reflect.Array; import java.lang.reflect.Parameter; import java.util.Arrays; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; public class MainActivity extends AppCompatActivity { + public static int NTESTS = 100; + public static int C = 0; + PQCLibary pqc; + EncapsulationModel enc; + byte[] sharedSecretKey; + + long start,end,e; + long[] array = new long[NTESTS]; @RequiresApi(api = Build.VERSION_CODES.O) @Override protected void onCreate(Bundle savedInstanceState) { @@ -25,19 +39,83 @@ protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_main); - PQCLibary pqc = new PQCLibary(ParameterSets.FIRE_SABER); - EncapsulationModel enc = pqc.Encapsulation(pqc.getPk()); - byte[] sharedSecretKey = pqc.Decapsulation(enc.getCipherText(),pqc.getSk()); - - - Log.d("AFD-AFD", Utils.hex(sharedSecretKey)); - Log.d("AFD-AFD", Utils.hex(enc.getSs())); - Log.d("AFD-AFD", Arrays.equals(sharedSecretKey, enc.getSs()) + ""); - - + findViewById(R.id.btn1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + ExecutorService executor = Executors.newSingleThreadExecutor(); + executor.submit(new Runnable() { + public void run() { + for (int i = 0 ; i < NTESTS + C ; i++){ + + if(i < C){ + pqc = new PQCLibary(ParameterSets.LIGHT_SABER); + } + else{ + start = System.nanoTime(); + pqc = new PQCLibary(ParameterSets.LIGHT_SABER); + end = System.nanoTime(); + + e = end - start; + array[i - C] = e; + } + } + } + }); + Log.d("AFD-AFD keyGen: " , avg(array)/1000 + ""); + + } + }); + findViewById(R.id.btn2).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + + for (int i = 0 ; i < NTESTS + C ; i++){ + if(i < C){ + enc = pqc.encapsulation(pqc.getPk()); + } + else{ + start = System.nanoTime(); + enc = pqc.encapsulation(pqc.getPk()); + end = System.nanoTime(); + + e = end - start; + array[i - C] = e; + } + + } + Log.d("AFD-AFD Encapsulation: " , avg(array)/1000 + ""); + } + }); + + + findViewById(R.id.btn3).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + for (int i = 0 ; i < NTESTS + C ; i++){ + if(i < C){ + sharedSecretKey = pqc.decapsulation(enc.getCipherText(),pqc.getSk()); + } + else{ + start = System.nanoTime(); + sharedSecretKey = pqc.decapsulation(enc.getCipherText(),pqc.getSk()); + end = System.nanoTime(); + + e = end - start; + array[i - C] = e; + } + + } + Log.d("AFD-AFD Decapsulation: " , avg(array)/1000 + ""); + } + }); } - - + public static double avg(long[] array){ + int sum = 0; + for (long l : array) { + sum += l; + } + return (double) sum / array.length; + } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 8f1f67e..788be2b 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -7,4 +7,26 @@ android:gravity="center" tools:context=".MainActivity"> + +