# Package elgamal

## Overview ▹

## Index ▹

## func Decrypt ¶

func Decrypt(priv *PrivateKey, c1, c2 *big.Int) (msg []byte, err error)

Decrypt takes two integers, resulting from an ElGamal encryption, and returns the plaintext of the message. An error can result only if the ciphertext is invalid. Users should keep in mind that this is a padding oracle and thus, if exposed to an adaptive chosen ciphertext attack, can be used to break the cryptosystem. See “Chosen Ciphertext Attacks Against Protocols Based on the RSA Encryption Standard PKCS #1”, Daniel Bleichenbacher, Advances in Cryptology (Crypto '98),

## func Encrypt ¶

func Encrypt(random io.Reader, pub *PublicKey, msg []byte) (c1, c2 *big.Int, err error)

Encrypt encrypts the given message to the given public key. The result is a pair of integers. Errors can result from reading random, or because msg is too large to be encrypted to the public key.

## type PrivateKey ¶

PrivateKey represents an ElGamal private key.

type PrivateKey struct { PublicKey X *big.Int }

## type PublicKey ¶

PublicKey represents an ElGamal public key.

type PublicKey struct { G, P, Y *big.Int }