Search in sources :

Example 1 with LMSParameters

use of com.github.zhenwei.core.pqc.crypto.lms.LMSParameters in project LinLong-Java by zhenwei1108.

the class LMSKeyPairGeneratorSpi method initialize.

public void initialize(AlgorithmParameterSpec params, SecureRandom random) throws InvalidAlgorithmParameterException {
    if (params instanceof LMSKeyGenParameterSpec) {
        LMSKeyGenParameterSpec lmsParams = (LMSKeyGenParameterSpec) params;
        param = new LMSKeyGenerationParameters(new LMSParameters(lmsParams.getSigParams(), lmsParams.getOtsParams()), random);
        engine = new LMSKeyPairGenerator();
        engine.init(param);
    } else if (params instanceof LMSHSSKeyGenParameterSpec) {
        LMSKeyGenParameterSpec[] lmsParams = ((LMSHSSKeyGenParameterSpec) params).getLMSSpecs();
        LMSParameters[] hssParams = new LMSParameters[lmsParams.length];
        for (int i = 0; i != lmsParams.length; i++) {
            hssParams[i] = new LMSParameters(lmsParams[i].getSigParams(), lmsParams[i].getOtsParams());
        }
        param = new HSSKeyGenerationParameters(hssParams, random);
        engine = new HSSKeyPairGenerator();
        engine.init(param);
    } else if (params instanceof LMSParameterSpec) {
        LMSParameterSpec lmsParams = (LMSParameterSpec) params;
        param = new LMSKeyGenerationParameters(new LMSParameters(lmsParams.getSigParams(), lmsParams.getOtsParams()), random);
        engine = new LMSKeyPairGenerator();
        engine.init(param);
    } else if (params instanceof LMSHSSParameterSpec) {
        LMSParameterSpec[] lmsParams = ((LMSHSSParameterSpec) params).getLMSSpecs();
        LMSParameters[] hssParams = new LMSParameters[lmsParams.length];
        for (int i = 0; i != lmsParams.length; i++) {
            hssParams[i] = new LMSParameters(lmsParams[i].getSigParams(), lmsParams[i].getOtsParams());
        }
        param = new HSSKeyGenerationParameters(hssParams, random);
        engine = new HSSKeyPairGenerator();
        engine.init(param);
    } else {
        throw new InvalidAlgorithmParameterException("parameter object not a LMSParameterSpec/LMSHSSParameterSpec");
    }
    initialised = true;
}
Also used : HSSKeyGenerationParameters(com.github.zhenwei.core.pqc.crypto.lms.HSSKeyGenerationParameters) LMSKeyGenParameterSpec(com.github.zhenwei.provider.jcajce.spec.LMSKeyGenParameterSpec) LMSHSSParameterSpec(com.github.zhenwei.provider.jcajce.spec.LMSHSSParameterSpec) LMSKeyGenerationParameters(com.github.zhenwei.core.pqc.crypto.lms.LMSKeyGenerationParameters) InvalidAlgorithmParameterException(java.security.InvalidAlgorithmParameterException) LMSParameterSpec(com.github.zhenwei.provider.jcajce.spec.LMSParameterSpec) LMSKeyPairGenerator(com.github.zhenwei.core.pqc.crypto.lms.LMSKeyPairGenerator) LMSParameters(com.github.zhenwei.core.pqc.crypto.lms.LMSParameters) LMSHSSKeyGenParameterSpec(com.github.zhenwei.provider.jcajce.spec.LMSHSSKeyGenParameterSpec) HSSKeyPairGenerator(com.github.zhenwei.core.pqc.crypto.lms.HSSKeyPairGenerator)

Example 2 with LMSParameters

use of com.github.zhenwei.core.pqc.crypto.lms.LMSParameters in project LinLong-Java by zhenwei1108.

the class LMSKeyPairGeneratorSpi method generateKeyPair.

public KeyPair generateKeyPair() {
    if (!initialised) {
        param = new LMSKeyGenerationParameters(new LMSParameters(LMSigParameters.lms_sha256_n32_h10, LMOtsParameters.sha256_n32_w2), random);
        engine.init(param);
        initialised = true;
    }
    AsymmetricCipherKeyPair pair = engine.generateKeyPair();
    if (engine instanceof LMSKeyPairGenerator) {
        LMSPublicKeyParameters pub = (LMSPublicKeyParameters) pair.getPublic();
        LMSPrivateKeyParameters priv = (LMSPrivateKeyParameters) pair.getPrivate();
        return new KeyPair(new BCLMSPublicKey(pub), new BCLMSPrivateKey(priv));
    } else {
        HSSPublicKeyParameters pub = (HSSPublicKeyParameters) pair.getPublic();
        HSSPrivateKeyParameters priv = (HSSPrivateKeyParameters) pair.getPrivate();
        return new KeyPair(new BCLMSPublicKey(pub), new BCLMSPrivateKey(priv));
    }
}
Also used : KeyPair(java.security.KeyPair) AsymmetricCipherKeyPair(com.github.zhenwei.core.crypto.AsymmetricCipherKeyPair) LMSKeyGenerationParameters(com.github.zhenwei.core.pqc.crypto.lms.LMSKeyGenerationParameters) LMSPrivateKeyParameters(com.github.zhenwei.core.pqc.crypto.lms.LMSPrivateKeyParameters) LMSKeyPairGenerator(com.github.zhenwei.core.pqc.crypto.lms.LMSKeyPairGenerator) LMSPublicKeyParameters(com.github.zhenwei.core.pqc.crypto.lms.LMSPublicKeyParameters) LMSParameters(com.github.zhenwei.core.pqc.crypto.lms.LMSParameters) HSSPrivateKeyParameters(com.github.zhenwei.core.pqc.crypto.lms.HSSPrivateKeyParameters) HSSPublicKeyParameters(com.github.zhenwei.core.pqc.crypto.lms.HSSPublicKeyParameters) AsymmetricCipherKeyPair(com.github.zhenwei.core.crypto.AsymmetricCipherKeyPair)

Aggregations

LMSKeyGenerationParameters (com.github.zhenwei.core.pqc.crypto.lms.LMSKeyGenerationParameters)2 LMSKeyPairGenerator (com.github.zhenwei.core.pqc.crypto.lms.LMSKeyPairGenerator)2 LMSParameters (com.github.zhenwei.core.pqc.crypto.lms.LMSParameters)2 AsymmetricCipherKeyPair (com.github.zhenwei.core.crypto.AsymmetricCipherKeyPair)1 HSSKeyGenerationParameters (com.github.zhenwei.core.pqc.crypto.lms.HSSKeyGenerationParameters)1 HSSKeyPairGenerator (com.github.zhenwei.core.pqc.crypto.lms.HSSKeyPairGenerator)1 HSSPrivateKeyParameters (com.github.zhenwei.core.pqc.crypto.lms.HSSPrivateKeyParameters)1 HSSPublicKeyParameters (com.github.zhenwei.core.pqc.crypto.lms.HSSPublicKeyParameters)1 LMSPrivateKeyParameters (com.github.zhenwei.core.pqc.crypto.lms.LMSPrivateKeyParameters)1 LMSPublicKeyParameters (com.github.zhenwei.core.pqc.crypto.lms.LMSPublicKeyParameters)1 LMSHSSKeyGenParameterSpec (com.github.zhenwei.provider.jcajce.spec.LMSHSSKeyGenParameterSpec)1 LMSHSSParameterSpec (com.github.zhenwei.provider.jcajce.spec.LMSHSSParameterSpec)1 LMSKeyGenParameterSpec (com.github.zhenwei.provider.jcajce.spec.LMSKeyGenParameterSpec)1 LMSParameterSpec (com.github.zhenwei.provider.jcajce.spec.LMSParameterSpec)1 InvalidAlgorithmParameterException (java.security.InvalidAlgorithmParameterException)1 KeyPair (java.security.KeyPair)1