package org.bouncycastle.pqc.jcajce.provider.rainbow; import java.security.InvalidKeyException; import java.security.PrivateKey; import java.security.PublicKey; import org.bouncycastle.crypto.params.AsymmetricKeyParameter; import org.bouncycastle.pqc.crypto.rainbow.RainbowPrivateKeyParameters; import org.bouncycastle.pqc.crypto.rainbow.RainbowPublicKeyParameters; /** * utility class for converting jce/jca Rainbow objects * objects into their org.bouncycastle.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."); } }