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

package org.bouncycastle.crypto.params;

import org.bouncycastle.util.Arrays;
import java.io.IOException;
import java.io.EOFException;
import org.bouncycastle.util.io.Streams;
import java.io.InputStream;

public final class X25519PublicKeyParameters extends AsymmetricKeyParameter
{
    public static final int KEY_SIZE = 32;
    private final byte[] data;
    
    public X25519PublicKeyParameters(final byte[] array) {
        this(validate(array), 0);
    }
    
    public X25519PublicKeyParameters(final byte[] array, final int n) {
        super(false);
        System.arraycopy(array, n, this.data = new byte[32], 0, 32);
    }
    
    public X25519PublicKeyParameters(final InputStream inputStream) throws IOException {
        super(false);
        this.data = new byte[32];
        if (32 != Streams.readFully(inputStream, this.data)) {
            throw new EOFException("EOF encountered in middle of X25519 public key");
        }
    }
    
    public void encode(final byte[] array, final int n) {
        System.arraycopy(this.data, 0, array, n, 32);
    }
    
    public byte[] getEncoded() {
        return Arrays.clone(this.data);
    }
    
    private static byte[] validate(final byte[] array) {
        if (array.length != 32) {
            throw new IllegalArgumentException("'buf' must have length 32");
        }
        return array;
    }
}
