pylibressl.build

CFFI building options, cdefs and source.

To manually compile C module, run python3 pylibressl/build.py.

Module Contents

pylibressl.build.TOPLEVEL_PACKAGE_PATH
pylibressl.build.SOURCES = []
pylibressl.build.LIBRARIES = ['crypto']
pylibressl.build.LIBRARY_DIRS
pylibressl.build.INCLUDE_DIRS
pylibressl.build.EXTRA_COMPILE_ARGS = []
pylibressl.build.cdef = Multiline-String
Show Value
  1void OPENSSL_add_all_algorithms_noconf(void);
  2typedef ... ENGINE;
  3
  4int CRYPTO_memcmp(const void *a, const void *b, size_t len);
  5void OPENSSL_cleanse(void *ptr, size_t len);
  6
  7/////// BIO /////////
  8typedef ... BIO;
  9typedef ... BIO_METHOD;
 10
 11BIO *BIO_new(BIO_METHOD *type);
 12BIO_METHOD *BIO_s_mem(void);
 13BIO *BIO_new_mem_buf(void *buf, int len);
 14void BIO_free_all(BIO *a);
 15
 16int BIO_read(BIO *b, void *buf, int len);
 17size_t BIO_ctrl_pending(BIO *b);
 18/////////////////////
 19
 20/////// BIGNUM /////////
 21typedef ... BIGNUM;
 22typedef unsigned long BN_ULONG;
 23
 24BIGNUM *BN_new(void);
 25void    BN_free(BIGNUM *a);
 26
 27int BN_set_word(BIGNUM *a, BN_ULONG w);
 28////////////////////////
 29
 30/////// Error handling /////////
 31void ERR_load_crypto_strings(void);
 32char *ERR_error_string(unsigned long e, char *buf);
 33unsigned long ERR_get_error(void);
 34////////////////////////////////
 35
 36/////// Digests /////////
 37typedef ... EVP_MD;
 38typedef ... EVP_MD_CTX;
 39#define EVP_MAX_MD_SIZE ...
 40
 41const EVP_MD* EVP_streebog512(void);
 42const EVP_MD* EVP_sha512(void);
 43const EVP_MD* EVP_sha256(void);
 44
 45EVP_MD_CTX *EVP_MD_CTX_create(void);
 46int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl);
 47int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, size_t cnt);
 48int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s);
 49void EVP_MD_CTX_destroy(EVP_MD_CTX *ctx);
 50
 51int EVP_MD_size(const EVP_MD *md);
 52int EVP_MD_block_size(const EVP_MD *md);
 53/////////////////////////
 54
 55/////// PBKDF2 //////////
 56int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen,
 57    const unsigned char *salt, int saltlen, int iter, int keylen,
 58    unsigned char *out);
 59int PKCS5_PBKDF2_HMAC(const char *pass, int passlen, const unsigned char *salt,
 60    int saltlen, int iter, const EVP_MD *digest, int keylen,
 61    unsigned char *out);
 62/////////////////////////
 63
 64/////// Private/public keys //////////
 65typedef ... EVP_PKEY;
 66typedef ... EVP_PKEY_CTX;
 67#define EVP_PKEY_HMAC ...
 68#define EVP_PKEY_RSA ...
 69
 70EVP_PKEY *EVP_PKEY_new_mac_key(int type, ENGINE *e, const unsigned char *key,
 71    int keylen);
 72EVP_PKEY *EVP_PKEY_new(void);
 73void EVP_PKEY_free(EVP_PKEY*);
 74//////////////////////////////////////
 75
 76/////// Signing //////////
 77int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,
 78    const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey);
 79int EVP_DigestSignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, size_t *siglen);
 80int _wrap_EVP_DigestSignUpdate(EVP_MD_CTX *ctx, const void* msg, size_t size);
 81
 82int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,
 83    const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey);
 84int EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, unsigned char *sig, size_t siglen);
 85int _wrap_EVP_DigestVerifyUpdate(EVP_MD_CTX *ctx, const void* msg, size_t size);
 86//////////////////////////
 87
 88/////// Symmetric ciphers //////////
 89typedef ... EVP_CIPHER;
 90typedef ... EVP_CIPHER_CTX;
 91
 92#define EVP_CTRL_GCM_SET_TAG ...
 93#define EVP_CTRL_GCM_GET_TAG ...
 94#define EVP_CTRL_GCM_SET_IVLEN ...
 95
 96const EVP_CIPHER *EVP_aes_256_ctr(void);
 97const EVP_CIPHER *EVP_aes_256_cbc(void);
 98const EVP_CIPHER *EVP_aes_256_gcm(void);
 99const EVP_CIPHER *EVP_gost2814789_cnt(void);
100
101int EVP_CIPHER_block_size(const EVP_CIPHER *cipher);
102int EVP_CIPHER_key_length(const EVP_CIPHER *cipher);
103int EVP_CIPHER_iv_length(const EVP_CIPHER *cipher);
104
105void EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *a);
106EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void);
107void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *a);
108int EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *a);
109
110int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
111    ENGINE *impl, const unsigned char *key, const unsigned char *iv);
112int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
113    const unsigned char *in, int inl);
114int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);
115
116int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
117    ENGINE *impl, const unsigned char *key, const unsigned char *iv);
118int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
119    const unsigned char *in, int inl);
120int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, int *outl);
121
122int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr);
123////////////////////////////////////
124
125/////// RSA //////////
126typedef ... RSA;
127typedef ... pem_password_cb;
128typedef ... BN_GENCB;
129
130int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, RSA *key);
131
132RSA *PEM_read_bio_RSAPrivateKey(BIO *bp, RSA **x,
133                    pem_password_cb *cb, void *u);
134RSA *PEM_read_bio_RSAPublicKey(BIO *bp, RSA **x,
135                    pem_password_cb *cb, void *u);
136int PEM_write_bio_RSAPublicKey(BIO *bp, RSA *x);
137int PEM_write_bio_RSAPrivateKey(BIO *bp, RSA *x, const EVP_CIPHER *enc,
138                                unsigned char *kstr, int klen,
139                                pem_password_cb *cb, void *u);
140
141RSA *RSA_new(void);
142void RSA_free(RSA *r);
143int RSA_size(const RSA *rsa);
144
145int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb);
146//////////////////////
147
148/////// Asymmetric cipher //////////
149int EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type,
150    unsigned char **ek, int *ekl, unsigned char *iv, EVP_PKEY **pubk,
151    int npubk);
152int EVP_SealFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);
153int _wrap_EVP_SealUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
154    const unsigned char *in, int inl);
155
156int EVP_OpenInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type,
157    const unsigned char *ek, int ekl, const unsigned char *iv, EVP_PKEY *priv);
158int EVP_OpenFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);
159int _wrap_EVP_OpenUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
160    const unsigned char *in, int inl);
161////////////////////////////////////
162
163/////// Random number generation //////////
164int  RAND_bytes(unsigned char *buf, int num);
165///////////////////////////////////////////
pylibressl.build.src = Multiline-String
Show Value
 1#include <openssl/evp.h>
 2#include <openssl/err.h>
 3#include <openssl/crypto.h>
 4#include <openssl/bio.h>
 5#include <openssl/pem.h>
 6#include <openssl/rand.h>
 7
 8extern int _wrap_EVP_DigestSignUpdate(EVP_MD_CTX *ctx, const void* msg, size_t size);
 9int _wrap_EVP_DigestSignUpdate(EVP_MD_CTX *ctx, const void* msg, size_t size)
10{
11    return EVP_DigestSignUpdate(ctx, msg, size);
12}
13
14extern int _wrap_EVP_DigestVerifyUpdate(EVP_MD_CTX *ctx, const void* msg, size_t size);
15int _wrap_EVP_DigestVerifyUpdate(EVP_MD_CTX *ctx, const void* msg, size_t size)
16{
17    return EVP_DigestVerifyUpdate(ctx, msg, size);
18}
19
20extern int _wrap_EVP_SealUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
21    const unsigned char *in, int inl);
22int _wrap_EVP_SealUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
23    const unsigned char *in, int inl)
24{
25    return EVP_SealUpdate(ctx, out, outl, in, inl);
26}
27
28extern int _wrap_EVP_OpenUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
29    const unsigned char *in, int inl);
30int _wrap_EVP_OpenUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
31    const unsigned char *in, int inl)
32{
33    return EVP_OpenUpdate(ctx, out, outl, in, inl);
34}
pylibressl.build.ffi