// 
// Decompiled by Procyon v0.6.0
// 

package org.bouncycastle.jcajce.provider.asymmetric.edec;

import org.bouncycastle.jcajce.interfaces.EdDSAPublicKey;
import java.security.spec.NamedParameterSpec;
import org.bouncycastle.crypto.params.Ed25519PrivateKeyParameters;
import org.bouncycastle.crypto.params.Ed448PrivateKeyParameters;
import java.util.Optional;
import java.io.IOException;
import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
import org.bouncycastle.crypto.params.AsymmetricKeyParameter;
import java.security.interfaces.EdECPrivateKey;

class BC15EdDSAPrivateKey extends BCEdDSAPrivateKey implements EdECPrivateKey
{
    BC15EdDSAPrivateKey(final AsymmetricKeyParameter asymmetricKeyParameter) {
        super(asymmetricKeyParameter);
    }
    
    BC15EdDSAPrivateKey(final PrivateKeyInfo privateKeyInfo) throws IOException {
        super(privateKeyInfo);
    }
    
    @Override
    public Optional<byte[]> getBytes() {
        if (this.eddsaPrivateKey instanceof final Ed448PrivateKeyParameters ed448PrivateKeyParameters) {
            return Optional.of(ed448PrivateKeyParameters.getEncoded());
        }
        return Optional.of(((Ed25519PrivateKeyParameters)this.eddsaPrivateKey).getEncoded());
    }
    
    @Override
    public NamedParameterSpec getParams() {
        if (this.eddsaPrivateKey instanceof Ed448PrivateKeyParameters) {
            return NamedParameterSpec.ED448;
        }
        return NamedParameterSpec.ED25519;
    }
    
    @Override
    public EdDSAPublicKey getPublicKey() {
        if (this.eddsaPrivateKey instanceof final Ed448PrivateKeyParameters ed448PrivateKeyParameters) {
            return (EdDSAPublicKey)new BC15EdDSAPublicKey((AsymmetricKeyParameter)ed448PrivateKeyParameters.generatePublicKey());
        }
        return (EdDSAPublicKey)new BC15EdDSAPublicKey((AsymmetricKeyParameter)((Ed25519PrivateKeyParameters)this.eddsaPrivateKey).generatePublicKey());
    }
}
