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

package org.bouncycastle.crypto.hpke;

import org.bouncycastle.crypto.params.AsymmetricKeyParameter;
import org.bouncycastle.crypto.AsymmetricCipherKeyPair;

public abstract class KEM
{
    abstract AsymmetricCipherKeyPair GeneratePrivateKey();
    
    abstract AsymmetricCipherKeyPair DeriveKeyPair(final byte[] p0);
    
    abstract byte[][] Encap(final AsymmetricKeyParameter p0);
    
    abstract byte[][] Encap(final AsymmetricKeyParameter p0, final AsymmetricCipherKeyPair p1);
    
    abstract byte[][] AuthEncap(final AsymmetricKeyParameter p0, final AsymmetricCipherKeyPair p1);
    
    abstract byte[] Decap(final byte[] p0, final AsymmetricCipherKeyPair p1);
    
    abstract byte[] AuthDecap(final byte[] p0, final AsymmetricCipherKeyPair p1, final AsymmetricKeyParameter p2);
    
    abstract byte[] SerializePublicKey(final AsymmetricKeyParameter p0);
    
    abstract byte[] SerializePrivateKey(final AsymmetricKeyParameter p0);
    
    abstract AsymmetricKeyParameter DeserializePublicKey(final byte[] p0);
    
    abstract AsymmetricCipherKeyPair DeserializePrivateKey(final byte[] p0, final byte[] p1);
    
    abstract int getEncryptionSize();
}
