Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/quite/humla-spongycastle.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'prov/src/main/java/org/spongycastle/pqc/jcajce/provider/rainbow/RainbowKeysToParams.java')
-rw-r--r--prov/src/main/java/org/spongycastle/pqc/jcajce/provider/rainbow/RainbowKeysToParams.java49
1 files changed, 49 insertions, 0 deletions
diff --git a/prov/src/main/java/org/spongycastle/pqc/jcajce/provider/rainbow/RainbowKeysToParams.java b/prov/src/main/java/org/spongycastle/pqc/jcajce/provider/rainbow/RainbowKeysToParams.java
new file mode 100644
index 00000000..0ae006ef
--- /dev/null
+++ b/prov/src/main/java/org/spongycastle/pqc/jcajce/provider/rainbow/RainbowKeysToParams.java
@@ -0,0 +1,49 @@
+package org.spongycastle.pqc.jcajce.provider.rainbow;
+
+import java.security.InvalidKeyException;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+
+import org.spongycastle.crypto.params.AsymmetricKeyParameter;
+import org.spongycastle.pqc.crypto.rainbow.RainbowPrivateKeyParameters;
+import org.spongycastle.pqc.crypto.rainbow.RainbowPublicKeyParameters;
+
+
+/**
+ * utility class for converting jce/jca Rainbow objects
+ * objects into their org.spongycastle.crypto counterparts.
+ */
+
+public class RainbowKeysToParams
+{
+ static public AsymmetricKeyParameter generatePublicKeyParameter(
+ PublicKey key)
+ throws InvalidKeyException
+ {
+ if (key instanceof BCRainbowPublicKey)
+ {
+ BCRainbowPublicKey k = (BCRainbowPublicKey)key;
+
+ return new RainbowPublicKeyParameters(k.getDocLength(), k.getCoeffQuadratic(),
+ k.getCoeffSingular(), k.getCoeffScalar());
+ }
+
+ throw new InvalidKeyException("can't identify Rainbow public key: " + key.getClass().getName());
+ }
+
+ static public AsymmetricKeyParameter generatePrivateKeyParameter(
+ PrivateKey key)
+ throws InvalidKeyException
+ {
+ if (key instanceof BCRainbowPrivateKey)
+ {
+ BCRainbowPrivateKey k = (BCRainbowPrivateKey)key;
+ return new RainbowPrivateKeyParameters(k.getInvA1(), k.getB1(),
+ k.getInvA2(), k.getB2(), k.getVi(), k.getLayers());
+ }
+
+ throw new InvalidKeyException("can't identify Rainbow private key.");
+ }
+}
+
+