internal static extern Status Make( ulong number_of_guardians, ulong quorum, ElementModP.ElementModPHandle elgamal_public_key, ElementModQ.ElementModQHandle commitment_hash, ElementModQ.ElementModQHandle manifest_hash, out CiphertextElectionContextHandle handle);
internal static extern Status CompactBallot( PlaintextBallot.PlaintextBallotHandle plaintext, InternalManifest.InternalManifestHandle internal_manifest, CiphertextElectionContext.CiphertextElectionContextHandle context, ElementModQ.ElementModQHandle ballot_code_seed, bool shouldVerifyProofs, out CompactCiphertextBallot.CompactCiphertextBallotHandle handle);
internal static extern Status GetNonce( CiphertextBallotSelectionHandle handle, out ElementModQ.ElementModQHandle nonce);
internal static extern Status GetCryptoExtendedBaseHash( CiphertextElectionContextHandle handle, out ElementModQ.ElementModQHandle crypto_extended_base_hash);
internal static extern Status GetBallotCode( CiphertextBallotHandle handle, out ElementModQ.ElementModQHandle ballot_code_ref);
internal static extern Status GetCryptoHash( CiphertextBallotHandle handle, out ElementModQ.ElementModQHandle hash_ref);
internal static extern Status Encrypt( ulong plaintext, ElementModQ.ElementModQHandle nonce, ElementModP.ElementModPHandle public_key, out ElGamalCiphertext.ElGamalCiphertextHandle handle);
internal static extern Status GetCryptoHash( CiphertextBallotContestHandle handle, out ElementModQ.ElementModQHandle cryptoHash);
internal static extern Status GetCryptoHash( ElGamalCiphertextHandle handle, out ElementModQ.ElementModQHandle crypto_base_hash);
internal static extern Status DecryptWithSecret( ElGamalCiphertextHandle handle, ElementModQ.ElementModQHandle secret_key, ref ulong plaintext);
internal static extern Status GetSecretKey( ElGamalKeyPairHandle handle, out ElementModQ.ElementModQHandle out_secret_key);
internal static extern Status New( ElementModQ.ElementModQHandle in_secret_key, out ElGamalKeyPairHandle handle);
internal static extern Status TWO_MOD_Q(out ElementModQ.ElementModQHandle handle);
internal static extern bool IsValidEncryption( CiphertextBallotSelectionHandle handle, ElementModQ.ElementModQHandle encryption_seed, ElementModP.ElementModPHandle public_key, ElementModQ.ElementModQHandle crypto_extended_base_hash);
internal static extern Status CryptoHash( ManifestHandle handle, out ElementModQ.ElementModQHandle crypto_hash);
internal static extern Status GetDescriptionHash( CiphertextBallotContestHandle handle, out ElementModQ.ElementModQHandle description_hash);
internal static extern Status GetManifestHash( InternalManifestHandle handle, out ElementModQ.ElementModQHandle manifest_hash);
internal static extern Status GetManifestHash( CiphertextBallotHandle handle, out ElementModQ.ElementModQHandle manifest_hash_ref);
internal static extern Status GetCommitmentHash( CiphertextElectionContextHandle handle, out ElementModQ.ElementModQHandle commitment_hash);
internal static extern Status GetNonce( CiphertextBallotHandle handle, out ElementModQ.ElementModQHandle nonce_ref);
internal static extern Status GetManifestHash( CiphertextElectionContextHandle handle, out ElementModQ.ElementModQHandle manifest_hash);
internal static extern bool IsValidEncryption( CiphertextBallotHandle handle, ElementModQ.ElementModQHandle manifest_hash, ElementModP.ElementModPHandle public_key, ElementModQ.ElementModQHandle crypto_extended_base_hash);
internal static extern Status GetHash( EncryptionDeviceHandle handle, out ElementModQ.ElementModQHandle device_hash);