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

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

import java.util.Optional;
import org.bouncycastle.crypto.params.X25519PrivateKeyParameters;
import org.bouncycastle.jcajce.interfaces.XDHPublicKey;
import java.security.spec.NamedParameterSpec;
import org.bouncycastle.crypto.params.X448PrivateKeyParameters;
import java.security.spec.AlgorithmParameterSpec;
import java.io.IOException;
import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
import org.bouncycastle.crypto.params.AsymmetricKeyParameter;
import java.security.interfaces.XECPrivateKey;

class BC11XDHPrivateKey extends BCXDHPrivateKey implements XECPrivateKey
{
    BC11XDHPrivateKey(final AsymmetricKeyParameter asymmetricKeyParameter) {
        super(asymmetricKeyParameter);
    }
    
    BC11XDHPrivateKey(final PrivateKeyInfo privateKeyInfo) throws IOException {
        super(privateKeyInfo);
    }
    
    @Override
    public AlgorithmParameterSpec getParams() {
        if (this.xdhPrivateKey instanceof X448PrivateKeyParameters) {
            return NamedParameterSpec.X448;
        }
        return NamedParameterSpec.X25519;
    }
    
    @Override
    public XDHPublicKey getPublicKey() {
        if (this.xdhPrivateKey instanceof X448PrivateKeyParameters) {
            return (XDHPublicKey)new BC11XDHPublicKey((AsymmetricKeyParameter)((X448PrivateKeyParameters)this.xdhPrivateKey).generatePublicKey());
        }
        return (XDHPublicKey)new BC11XDHPublicKey((AsymmetricKeyParameter)((X25519PrivateKeyParameters)this.xdhPrivateKey).generatePublicKey());
    }
    
    @Override
    public Optional<byte[]> getScalar() {
        if (this.xdhPrivateKey instanceof X448PrivateKeyParameters) {
            return Optional.of(((X448PrivateKeyParameters)this.xdhPrivateKey).getEncoded());
        }
        return Optional.of(((X25519PrivateKeyParameters)this.xdhPrivateKey).getEncoded());
    }
}
