/** * Generate a new XMSS private key / public key pair. */ public void generateKeys() { XMSSKeyPairGenerator kpGen = new XMSSKeyPairGenerator(); kpGen.init(new XMSSKeyGenerationParameters(getParams(), prng)); AsymmetricCipherKeyPair kp = kpGen.generateKeyPair(); privateKey = (XMSSPrivateKeyParameters)kp.getPrivate(); publicKey = (XMSSPublicKeyParameters)kp.getPublic(); wotsPlus.importKeys(new byte[params.getDigestSize()], this.privateKey.getPublicSeed()); }
public KeyPair generateKeyPair() { if (!initialised) { param = new XMSSKeyGenerationParameters(new XMSSParameters(10, new SHA512Digest()), random); engine.init(param); initialised = true; } AsymmetricCipherKeyPair pair = engine.generateKeyPair(); XMSSPublicKeyParameters pub = (XMSSPublicKeyParameters)pair.getPublic(); XMSSPrivateKeyParameters priv = (XMSSPrivateKeyParameters)pair.getPrivate(); return new KeyPair(new BCXMSSPublicKey(treeDigest, pub), new BCXMSSPrivateKey(treeDigest, priv)); } }
engine.init(param); initialised = true;
/** * Generate a new XMSS private key / public key pair. */ public AsymmetricCipherKeyPair generateKeyPair() { /* generate private key */ XMSSPrivateKeyParameters privateKey = generatePrivateKey(params, prng); XMSSNode root = privateKey.getBDSState().getRoot(); privateKey = new XMSSPrivateKeyParameters.Builder(params) .withSecretKeySeed(privateKey.getSecretKeySeed()).withSecretKeyPRF(privateKey.getSecretKeyPRF()) .withPublicSeed(privateKey.getPublicSeed()).withRoot(root.getValue()) .withBDSState(privateKey.getBDSState()).build(); XMSSPublicKeyParameters publicKey = new XMSSPublicKeyParameters.Builder(params).withRoot(root.getValue()) .withPublicSeed(privateKey.getPublicSeed()).build(); return new AsymmetricCipherKeyPair(publicKey, privateKey); }