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;
}
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));
}
}
Aggregations