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

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

import org.bouncycastle.crypto.params.Ed448PublicKeyParameters;
import java.security.spec.NamedParameterSpec;
import java.math.BigInteger;
import org.bouncycastle.util.Arrays;
import java.security.spec.EdECPoint;
import java.security.spec.InvalidKeySpecException;
import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
import org.bouncycastle.crypto.params.AsymmetricKeyParameter;
import java.security.interfaces.EdECPublicKey;

class BC15EdDSAPublicKey extends BCEdDSAPublicKey implements EdECPublicKey
{
    BC15EdDSAPublicKey(final AsymmetricKeyParameter asymmetricKeyParameter) {
        super(asymmetricKeyParameter);
    }
    
    BC15EdDSAPublicKey(final SubjectPublicKeyInfo subjectPublicKeyInfo) {
        super(subjectPublicKeyInfo);
    }
    
    BC15EdDSAPublicKey(final byte[] array, final byte[] array2) throws InvalidKeySpecException {
        super(array, array2);
    }
    
    @Override
    public EdECPoint getPoint() {
        final byte[] pointEncoding = this.getPointEncoding();
        Arrays.reverseInPlace(pointEncoding);
        final boolean xOdd = (pointEncoding[0] & 0x80) != 0x0;
        final byte[] array = pointEncoding;
        final int n = 0;
        array[n] &= 0x7F;
        return new EdECPoint(xOdd, new BigInteger(1, pointEncoding));
    }
    
    @Override
    public NamedParameterSpec getParams() {
        if (this.eddsaPublicKey instanceof Ed448PublicKeyParameters) {
            return NamedParameterSpec.ED448;
        }
        return NamedParameterSpec.ED25519;
    }
}
