Search in sources :

Example 1 with SPHINCS256KeyGenerationParameters

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

the class Sphincs256KeyPairGeneratorSpi method initialize.

public void initialize(AlgorithmParameterSpec params, SecureRandom random) throws InvalidAlgorithmParameterException {
    if (!(params instanceof SPHINCS256KeyGenParameterSpec)) {
        throw new InvalidAlgorithmParameterException("parameter object not a SPHINCS256KeyGenParameterSpec");
    }
    SPHINCS256KeyGenParameterSpec sphincsParams = (SPHINCS256KeyGenParameterSpec) params;
    if (sphincsParams.getTreeDigest().equals(SPHINCS256KeyGenParameterSpec.SHA512_256)) {
        treeDigest = NISTObjectIdentifiers.id_sha512_256;
        param = new SPHINCS256KeyGenerationParameters(random, new SHA512tDigest(256));
    } else if (sphincsParams.getTreeDigest().equals(SPHINCS256KeyGenParameterSpec.SHA3_256)) {
        treeDigest = NISTObjectIdentifiers.id_sha3_256;
        param = new SPHINCS256KeyGenerationParameters(random, new SHA3Digest(256));
    }
    engine.init(param);
    initialised = true;
}
Also used : SHA512tDigest(com.github.zhenwei.core.crypto.digests.SHA512tDigest) SHA3Digest(com.github.zhenwei.core.crypto.digests.SHA3Digest) InvalidAlgorithmParameterException(java.security.InvalidAlgorithmParameterException) SPHINCS256KeyGenParameterSpec(com.github.zhenwei.provider.jcajce.spec.SPHINCS256KeyGenParameterSpec) SPHINCS256KeyGenerationParameters(com.github.zhenwei.core.pqc.crypto.sphincs.SPHINCS256KeyGenerationParameters)

Example 2 with SPHINCS256KeyGenerationParameters

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

the class Sphincs256KeyPairGeneratorSpi method generateKeyPair.

public KeyPair generateKeyPair() {
    if (!initialised) {
        param = new SPHINCS256KeyGenerationParameters(random, new SHA512tDigest(256));
        engine.init(param);
        initialised = true;
    }
    AsymmetricCipherKeyPair pair = engine.generateKeyPair();
    SPHINCSPublicKeyParameters pub = (SPHINCSPublicKeyParameters) pair.getPublic();
    SPHINCSPrivateKeyParameters priv = (SPHINCSPrivateKeyParameters) pair.getPrivate();
    return new KeyPair(new BCSphincs256PublicKey(treeDigest, pub), new BCSphincs256PrivateKey(treeDigest, priv));
}
Also used : SHA512tDigest(com.github.zhenwei.core.crypto.digests.SHA512tDigest) KeyPair(java.security.KeyPair) AsymmetricCipherKeyPair(com.github.zhenwei.core.crypto.AsymmetricCipherKeyPair) SPHINCS256KeyGenerationParameters(com.github.zhenwei.core.pqc.crypto.sphincs.SPHINCS256KeyGenerationParameters) SPHINCSPrivateKeyParameters(com.github.zhenwei.core.pqc.crypto.sphincs.SPHINCSPrivateKeyParameters) SPHINCSPublicKeyParameters(com.github.zhenwei.core.pqc.crypto.sphincs.SPHINCSPublicKeyParameters) AsymmetricCipherKeyPair(com.github.zhenwei.core.crypto.AsymmetricCipherKeyPair)

Aggregations

SHA512tDigest (com.github.zhenwei.core.crypto.digests.SHA512tDigest)2 SPHINCS256KeyGenerationParameters (com.github.zhenwei.core.pqc.crypto.sphincs.SPHINCS256KeyGenerationParameters)2 AsymmetricCipherKeyPair (com.github.zhenwei.core.crypto.AsymmetricCipherKeyPair)1 SHA3Digest (com.github.zhenwei.core.crypto.digests.SHA3Digest)1 SPHINCSPrivateKeyParameters (com.github.zhenwei.core.pqc.crypto.sphincs.SPHINCSPrivateKeyParameters)1 SPHINCSPublicKeyParameters (com.github.zhenwei.core.pqc.crypto.sphincs.SPHINCSPublicKeyParameters)1 SPHINCS256KeyGenParameterSpec (com.github.zhenwei.provider.jcajce.spec.SPHINCS256KeyGenParameterSpec)1 InvalidAlgorithmParameterException (java.security.InvalidAlgorithmParameterException)1 KeyPair (java.security.KeyPair)1