summary refs log tree commit diff
path: root/crypto
diff options
context:
space:
mode:
authorDavid Hook <dgh@cryptoworkshop.com>2022-08-21 21:46:52 +1000
committerDavid Hook <dgh@cryptoworkshop.com>2022-08-21 21:46:52 +1000
commit1b88e8476e6823671766ad5c7e30aaff24fd13b6 (patch)
tree5f691199d9c63b8071e892320f3aa954318e6420 /crypto
parentadded key size restrictions (diff)
downloadBouncyCastle.NET-ed25519-1b88e8476e6823671766ad5c7e30aaff24fd13b6.tar.xz
SIKE: added warning, keysize test
Diffstat (limited to 'crypto')
-rw-r--r--crypto/src/pqc/crypto/sike/Fpx.cs2
-rw-r--r--crypto/src/pqc/crypto/sike/Internal.cs4
-rw-r--r--crypto/src/pqc/crypto/sike/Isogeny.cs2
-rw-r--r--crypto/src/pqc/crypto/sike/P434.cs2
-rw-r--r--crypto/src/pqc/crypto/sike/P503.cs4
-rw-r--r--crypto/src/pqc/crypto/sike/P610.cs2
-rw-r--r--crypto/src/pqc/crypto/sike/P751.cs2
-rw-r--r--crypto/src/pqc/crypto/sike/PointProj.cs2
-rw-r--r--crypto/src/pqc/crypto/sike/PointProjFull.cs2
-rw-r--r--crypto/src/pqc/crypto/sike/SIDH.cs2
-rw-r--r--crypto/src/pqc/crypto/sike/SIDH_Compressed.cs2
-rw-r--r--crypto/src/pqc/crypto/sike/SIKEEngine.cs2
-rw-r--r--crypto/src/pqc/crypto/sike/SIKEKEMExtractor.cs2
-rw-r--r--crypto/src/pqc/crypto/sike/SIKEKEMGenerator.cs2
-rw-r--r--crypto/src/pqc/crypto/sike/SIKEParameters.cs7
-rw-r--r--crypto/src/pqc/crypto/sike/Utils.cs2
-rw-r--r--crypto/test/src/pqc/crypto/test/SikeVectorTest.cs5
17 files changed, 26 insertions, 20 deletions
diff --git a/crypto/src/pqc/crypto/sike/Fpx.cs b/crypto/src/pqc/crypto/sike/Fpx.cs

index d2ec32f89..2ba6ab2f5 100644 --- a/crypto/src/pqc/crypto/sike/Fpx.cs +++ b/crypto/src/pqc/crypto/sike/Fpx.cs
@@ -8,7 +8,7 @@ using Org.BouncyCastle.Crypto.Utilities; namespace Org.BouncyCastle.Pqc.Crypto.Sike { - public class Fpx + internal class Fpx { private SIKEEngine engine; diff --git a/crypto/src/pqc/crypto/sike/Internal.cs b/crypto/src/pqc/crypto/sike/Internal.cs
index edd551a2b..6835185f0 100644 --- a/crypto/src/pqc/crypto/sike/Internal.cs +++ b/crypto/src/pqc/crypto/sike/Internal.cs
@@ -5,8 +5,8 @@ using Org.BouncyCastle.Utilities.Encoders; namespace Org.BouncyCastle.Pqc.Crypto.Sike { - - public abstract class Internal + + internal abstract class Internal { protected static Dictionary<string, string> _props; diff --git a/crypto/src/pqc/crypto/sike/Isogeny.cs b/crypto/src/pqc/crypto/sike/Isogeny.cs
index ace6e20b9..fc2b3e5ca 100644 --- a/crypto/src/pqc/crypto/sike/Isogeny.cs +++ b/crypto/src/pqc/crypto/sike/Isogeny.cs
@@ -1,6 +1,6 @@ namespace Org.BouncyCastle.Pqc.Crypto.Sike { -public class Isogeny + internal class Isogeny { SIKEEngine engine; diff --git a/crypto/src/pqc/crypto/sike/P434.cs b/crypto/src/pqc/crypto/sike/P434.cs
index 2d4139927..98c77aa85 100644 --- a/crypto/src/pqc/crypto/sike/P434.cs +++ b/crypto/src/pqc/crypto/sike/P434.cs
@@ -3,7 +3,7 @@ using System.IO; namespace Org.BouncyCastle.Pqc.Crypto.Sike { -public class P434 +internal class P434 : Internal { // Encoding of field elementsL, elements over Z_orderL, elements over GF(p^2) and elliptic curve points: diff --git a/crypto/src/pqc/crypto/sike/P503.cs b/crypto/src/pqc/crypto/sike/P503.cs
index 31b735873..fb0cb27c8 100644 --- a/crypto/src/pqc/crypto/sike/P503.cs +++ b/crypto/src/pqc/crypto/sike/P503.cs
@@ -3,8 +3,8 @@ using System.IO; namespace Org.BouncyCastle.Pqc.Crypto.Sike { - -public class P503 + + internal class P503 : Internal { // Encoding of field elements, elements over Z_order, elements over GF(p^2) and elliptic curve points: diff --git a/crypto/src/pqc/crypto/sike/P610.cs b/crypto/src/pqc/crypto/sike/P610.cs
index 33f9956c7..ac3f0deec 100644 --- a/crypto/src/pqc/crypto/sike/P610.cs +++ b/crypto/src/pqc/crypto/sike/P610.cs
@@ -3,7 +3,7 @@ using System.IO; namespace Org.BouncyCastle.Pqc.Crypto.Sike { -public class P610 + internal class P610 : Internal { internal P610(bool isCompressed) diff --git a/crypto/src/pqc/crypto/sike/P751.cs b/crypto/src/pqc/crypto/sike/P751.cs
index b8d48d3aa..ab281c3a6 100644 --- a/crypto/src/pqc/crypto/sike/P751.cs +++ b/crypto/src/pqc/crypto/sike/P751.cs
@@ -3,7 +3,7 @@ using System.IO; namespace Org.BouncyCastle.Pqc.Crypto.Sike { -public class P751 + internal class P751 : Internal { // Encoding of field elements, elements over Z_order, elements over GF(p^2) and elliptic curve points: diff --git a/crypto/src/pqc/crypto/sike/PointProj.cs b/crypto/src/pqc/crypto/sike/PointProj.cs
index 92b982d4f..4f6e8b882 100644 --- a/crypto/src/pqc/crypto/sike/PointProj.cs +++ b/crypto/src/pqc/crypto/sike/PointProj.cs
@@ -1,6 +1,6 @@ namespace Org.BouncyCastle.Pqc.Crypto.Sike { -public class PointProj +internal class PointProj { internal PointProj(uint nwords_field) { diff --git a/crypto/src/pqc/crypto/sike/PointProjFull.cs b/crypto/src/pqc/crypto/sike/PointProjFull.cs
index f5d4598a8..4e717f31a 100644 --- a/crypto/src/pqc/crypto/sike/PointProjFull.cs +++ b/crypto/src/pqc/crypto/sike/PointProjFull.cs
@@ -1,6 +1,6 @@ namespace Org.BouncyCastle.Pqc.Crypto.Sike { -public class PointProjFull +internal class PointProjFull { internal PointProjFull(uint nwords_field) { diff --git a/crypto/src/pqc/crypto/sike/SIDH.cs b/crypto/src/pqc/crypto/sike/SIDH.cs
index d2e4b4929..d5a86d6b1 100644 --- a/crypto/src/pqc/crypto/sike/SIDH.cs +++ b/crypto/src/pqc/crypto/sike/SIDH.cs
@@ -1,6 +1,6 @@ namespace Org.BouncyCastle.Pqc.Crypto.Sike { -public class SIDH +internal class SIDH { private SIKEEngine engine; diff --git a/crypto/src/pqc/crypto/sike/SIDH_Compressed.cs b/crypto/src/pqc/crypto/sike/SIDH_Compressed.cs
index f701aea60..46a289c97 100644 --- a/crypto/src/pqc/crypto/sike/SIDH_Compressed.cs +++ b/crypto/src/pqc/crypto/sike/SIDH_Compressed.cs
@@ -4,7 +4,7 @@ using Org.BouncyCastle.Utilities; namespace Org.BouncyCastle.Pqc.Crypto.Sike { -public class SIDH_Compressed +internal class SIDH_Compressed { private SIKEEngine engine; diff --git a/crypto/src/pqc/crypto/sike/SIKEEngine.cs b/crypto/src/pqc/crypto/sike/SIKEEngine.cs
index 58c04b459..638087688 100644 --- a/crypto/src/pqc/crypto/sike/SIKEEngine.cs +++ b/crypto/src/pqc/crypto/sike/SIKEEngine.cs
@@ -5,7 +5,7 @@ using Org.BouncyCastle.Security; namespace Org.BouncyCastle.Pqc.Crypto.Sike { -public class SIKEEngine +internal class SIKEEngine { private SecureRandom random; diff --git a/crypto/src/pqc/crypto/sike/SIKEKEMExtractor.cs b/crypto/src/pqc/crypto/sike/SIKEKEMExtractor.cs
index 1d2bab871..3915e8890 100644 --- a/crypto/src/pqc/crypto/sike/SIKEKEMExtractor.cs +++ b/crypto/src/pqc/crypto/sike/SIKEKEMExtractor.cs
@@ -1,4 +1,5 @@ using Org.BouncyCastle.Crypto; +using System; namespace Org.BouncyCastle.Pqc.Crypto.Sike { @@ -29,6 +30,7 @@ namespace Org.BouncyCastle.Pqc.Crypto.Sike public byte[] ExtractSecret(byte[] encapsulation, uint sessionKeySizeInBits) { + Console.Error.WriteLine("WARNING: the SIKE algorithm is only for research purposes, insecure"); byte[] session_key = new byte[sessionKeySizeInBits / 8]; engine.crypto_kem_dec(session_key, encapsulation, ((SIKEPrivateKeyParameters)key).GetPrivateKey()); return session_key; diff --git a/crypto/src/pqc/crypto/sike/SIKEKEMGenerator.cs b/crypto/src/pqc/crypto/sike/SIKEKEMGenerator.cs
index 83c08ef56..cf98a0696 100644 --- a/crypto/src/pqc/crypto/sike/SIKEKEMGenerator.cs +++ b/crypto/src/pqc/crypto/sike/SIKEKEMGenerator.cs
@@ -1,6 +1,7 @@ using Org.BouncyCastle.Crypto; using Org.BouncyCastle.Pqc.Crypto.Utilities; using Org.BouncyCastle.Security; +using System; namespace Org.BouncyCastle.Pqc.Crypto.Sike { @@ -26,6 +27,7 @@ public class SIKEKEMGenerator public ISecretWithEncapsulation GenerateEncapsulated(AsymmetricKeyParameter recipientKey, uint sessionKeySizeInBits) { + Console.Error.WriteLine("WARNING: the SIKE algorithm is only for research purposes, insecure"); SIKEPublicKeyParameters key = (SIKEPublicKeyParameters)recipientKey; SIKEEngine engine = key.GetParameters().GetEngine(); byte[] cipher_text = new byte[engine.GetCipherTextSize()]; diff --git a/crypto/src/pqc/crypto/sike/SIKEParameters.cs b/crypto/src/pqc/crypto/sike/SIKEParameters.cs
index 5c1b162f8..d687871ec 100644 --- a/crypto/src/pqc/crypto/sike/SIKEParameters.cs +++ b/crypto/src/pqc/crypto/sike/SIKEParameters.cs
@@ -21,12 +21,13 @@ public class SIKEParameters this.engine = new SIKEEngine(ver, isCompressed, null); } - public SIKEEngine GetEngine() + internal SIKEEngine GetEngine() { return engine; } - -} + public string Name => name; + public int DefaultKeySize => (int)this.engine.GetDefaultSessionKeySize(); + } } \ No newline at end of file diff --git a/crypto/src/pqc/crypto/sike/Utils.cs b/crypto/src/pqc/crypto/sike/Utils.cs
index 33f1f8696..013e39316 100644 --- a/crypto/src/pqc/crypto/sike/Utils.cs +++ b/crypto/src/pqc/crypto/sike/Utils.cs
@@ -1,6 +1,6 @@ namespace Org.BouncyCastle.Pqc.Crypto.Sike { - public class Utils + internal class Utils { public static ulong[][] InitArray(uint size1, uint size2) { diff --git a/crypto/test/src/pqc/crypto/test/SikeVectorTest.cs b/crypto/test/src/pqc/crypto/test/SikeVectorTest.cs
index 951b3349b..8b7707bd4 100644 --- a/crypto/test/src/pqc/crypto/test/SikeVectorTest.cs +++ b/crypto/test/src/pqc/crypto/test/SikeVectorTest.cs
@@ -113,9 +113,10 @@ namespace Org.BouncyCastle.Pqc.Crypto.Tests byte[] dec_key = sikeDecCipher.ExtractSecret(generated_cipher_text); -// System.out.println(Hex.toHexString(dec_key).toUpperCase()); -// System.out.println(Hex.toHexString(ss).toUpperCase()); + // System.out.println(Hex.toHexString(dec_key).toUpperCase()); + // System.out.println(Hex.toHexString(ss).toUpperCase()); + Assert.True(SIKEParameters.DefaultKeySize == dec_key.Length * 8); Assert.True(Arrays.AreEqual(dec_key, ss), name + " " + count + ": kem_dec ss" ); Assert.True(Arrays.AreEqual(dec_key, secret), name + " " + count + ": kem_dec key" );