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);