diff --git a/bindings/py/README b/bindings/py/README new file mode 100644 index 0000000..aadbaa7 --- /dev/null +++ b/bindings/py/README @@ -0,0 +1,3 @@ +Re-generate raw.py CFFI code: + +./gencffi.pl ../../include/pcp/*.h > pypcp/raw.py diff --git a/bindings/py/gencffi.pl b/bindings/py/gencffi.pl index a1cf0a8..9f02239 100755 --- a/bindings/py/gencffi.pl +++ b/bindings/py/gencffi.pl @@ -25,10 +25,15 @@ my %sobytes = ( 'crypto_generichash_BYTES_MAX' => 64, ); +my @ignore = qw(digital_crc32.h base85.h uthash.h); + my @code; +my @structs; +my @typedefs; my %defs; foreach my $head (@ARGV) { + next if grep { $head =~ $_} @ignore; open HEAD, "<$head" or die "Could not open $head: $!\n"; my $raw = join '', ; @@ -42,8 +47,8 @@ foreach my $head (@ARGV) { # 1line type while ($raw =~ /^(typedef .*;)/gm) { - push @code, ('', "/*** $0: from $head:$. */"); - push @code, $1; + push @typedefs, ('', "/*** $0: from $head:$. */"); + push @typedefs, $1; } # a struct @@ -52,8 +57,8 @@ foreach my $head (@ARGV) { while ($raw =~ /(struct [^\s]* \{[^\}]*\};)/gs) { my $code = $1; $code =~ s/UT_hash_handle hh/byte hh[56]/g; - push @code, ('', "/*** $0: from $head:$. */"); - push @code, $code; + push @structs, ('', "/*** $0: from $head:$. */"); + push @structs, $code; } # a function @@ -67,17 +72,21 @@ foreach my $head (@ARGV) { while ($raw =~ /^\s*#define ((EXP|PCP|PBP).*)$/gm) { my ($name, $def) = split /\s\s*/, $1, 2; $def =~ s/\/\*.*//; + next if ($name =~ /_VERSION/); if (!exists $defs{$name} && $def !~ /(sizeof| \+ )/) { $defs{$name} = "\n# $0: from $head:$.\n$name = $def\n"; } } close $head; + $. = 0; } print "PCP_RAW_CODE = '''\n"; +print join "\n", @typedefs; +print join "\n", @structs; print join "\n", @code; print "'''\n"; diff --git a/bindings/py/pypcp/raw.py b/bindings/py/pypcp/raw.py index 3347e99..a7d62fb 100644 --- a/bindings/py/pypcp/raw.py +++ b/bindings/py/pypcp/raw.py @@ -1,63 +1,72 @@ PCP_RAW_CODE = ''' -/*** bindings/py/gencffi.pl: from include/pcp/defines.h:177 */ +/*** ./gencffi.pl: from ../../include/pcp/defines.h:177 */ typedef unsigned char byte; -/*** bindings/py/gencffi.pl: from include/pcp/defines.h:177 */ +/*** ./gencffi.pl: from ../../include/pcp/defines.h:177 */ typedef unsigned short dbyte; -/*** bindings/py/gencffi.pl: from include/pcp/defines.h:177 */ +/*** ./gencffi.pl: from ../../include/pcp/defines.h:177 */ typedef unsigned int qbyte; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/plist.h:83 */ +typedef struct _plist_t plist_t; + +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ typedef struct _pcp_key_t pcp_key_t; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ typedef struct _pcp_pubkey_t pcp_pubkey_t; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ typedef struct _pbp_pubkey_t pbp_pubkey_t; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ typedef struct _pcp_rec_t pcp_rec_t; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ typedef struct _pcp_keysig_t pcp_keysig_t; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ typedef struct _pcp_ctx_t PCPCTX; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ typedef struct _vault_t vault_t; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ typedef struct _vault_header_t vault_header_t; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ typedef struct _vault_item_header_t vault_item_header_t; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ typedef struct _pcp_buffer Buffer; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ typedef struct _pcp_stream_t Pcpstream; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ typedef struct _pcp_rfc_pubkey_header_t rfc_pub_h; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ typedef struct _pcp_rfc_pubkey_0x21_t rfc_pub_k; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ typedef struct _pcp_rfc_pubkey_sigheader_0x21_t rfc_pub_sig_h; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ typedef struct _pcp_rfc_pubkey_sigsub_0x21_t rfc_pub_sig_s; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ typedef struct _pcp_ks_bundle_t pcp_ks_bundle_t; +/*** ./gencffi.pl: from ../../include/pcp/plist.h:83 */ +struct _plist_t { + char *value; + struct _plist_t *next; + struct _plist_t *first; +}; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ struct _pcp_key_t { byte masterpub[32]; /**< ED25519 master public key signing key */ byte mastersecret[64]; /**< ED25519 master secret key signing key */ @@ -77,7 +86,7 @@ struct _pcp_key_t { byte hh[56]; }; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ struct _pcp_pubkey_t { byte masterpub[32]; /**< ED25519 master public key signing key */ byte sigpub[32]; /**< ED25519 public signing key */ @@ -95,7 +104,7 @@ struct _pcp_pubkey_t { byte hh[56]; }; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ struct _pbp_pubkey_t { byte sigpub[32]; byte edpub[32]; @@ -105,7 +114,7 @@ struct _pbp_pubkey_t { char name[1024]; }; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ struct _pcp_rec_t { size_t ciphersize; /**< the size of the encrypted recipient list */ byte *cipher; /**< contains the whole encrypted recipient list */ @@ -113,7 +122,7 @@ struct _pcp_rec_t { pcp_pubkey_t *pub; /**< if verification were ok, contains the public key of the signer */ }; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ struct _pcp_keysig_t { uint8_t type; uint32_t size; @@ -123,7 +132,7 @@ struct _pcp_keysig_t { byte hh[56]; }; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ struct _pcp_ctx_t { char *pcp_err; /**< last error message. retrieve with fatals_ifany() */ byte pcp_errset; /**< indicates if an error occurred. */ @@ -135,7 +144,7 @@ struct _pcp_ctx_t { pcp_keysig_t *pcpkeysig_hash; /**< hash for key sigs */ }; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ struct _vault_t { char *filename; /**< The filename of the vault (full path) */ FILE *fd; /**< Filehandle if opened */ @@ -148,14 +157,14 @@ struct _vault_t { byte checksum[32]; /**< SHA256 checksum over the whole vault */ }; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ struct _vault_header_t { uint8_t fileid; /**< File id, proprietary. Marks the vault as a vault */ uint32_t version; /**< File version */ byte checksum[32]; /**< SHA256 checksum over the whole vault */ }; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ struct _vault_item_header_t { uint8_t type; /**< Item type (secret key, public, key, keysig, \see _PCP_KEY_TYPES */ uint32_t size; /**< Size of the item */ @@ -163,7 +172,7 @@ struct _vault_item_header_t { byte checksum[32]; /**< SHA256 checksum of the item */ }; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ struct _pcp_buffer { char *name; /**< just for convenience in error messages and the like, so we know which buffer cause trouble */ uint8_t allocated; /**< marks the buffer as allocated */ @@ -175,7 +184,7 @@ struct _pcp_buffer { void *buf; /**< the actual storage buffer */ }; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ struct _pcp_stream_t { FILE *fd; /**< The backend FILE stream */ Buffer *b; /**< The backend Buffer object */ @@ -195,21 +204,21 @@ struct _pcp_stream_t { size_t pos; /**< remember i/o position */ }; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ struct _pcp_rfc_pubkey_header_t { uint8_t version; uint64_t ctime; uint8_t cipher; }; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ struct _pcp_rfc_pubkey_0x21_t { byte sig_ed25519_pub[32]; byte ed25519_pub[32]; byte curve25519_pub[32]; }; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ struct _pcp_rfc_pubkey_sigheader_0x21_t { uint8_t version; uint8_t type; @@ -218,716 +227,771 @@ struct _pcp_rfc_pubkey_sigheader_0x21_t { uint16_t numsubs; }; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ struct _pcp_rfc_pubkey_sigsub_0x21_t { uint32_t size; uint8_t type; }; -/*** bindings/py/gencffi.pl: from include/pcp/structs.h:557 */ +/*** ./gencffi.pl: from ../../include/pcp/structs.h:380 */ struct _pcp_ks_bundle_t { pcp_pubkey_t *p; pcp_keysig_t *s; }; - -/*** bindings/py/gencffi.pl: from include/pcp/key.h:871 */ -pcp_key_t *pcpkey_new (); - -/*** bindings/py/gencffi.pl: from include/pcp/key.h:871 */ -void pcp_keypairs(byte *msk, byte *mpk, byte *csk, byte *cpk, byte *esk, byte *epk); - -/*** bindings/py/gencffi.pl: from include/pcp/key.h:871 */ -char *pcppubkey_get_art(pcp_pubkey_t *k); - -/*** bindings/py/gencffi.pl: from include/pcp/key.h:871 */ -char *pcpkey_get_art(pcp_key_t *k); - -/*** bindings/py/gencffi.pl: from include/pcp/key.h:871 */ -pcp_key_t *pcpkey_encrypt(PCPCTX *ptx, pcp_key_t *key, char *passphrase); - -/*** bindings/py/gencffi.pl: from include/pcp/key.h:871 */ -pcp_key_t *pcpkey_decrypt(PCPCTX *ptx, pcp_key_t *key, char *passphrase); - -/*** bindings/py/gencffi.pl: from include/pcp/key.h:871 */ -pcp_pubkey_t *pcpkey_pub_from_secret(pcp_key_t *key); - -/*** bindings/py/gencffi.pl: from include/pcp/key.h:871 */ -char *pcp_getkeyid(pcp_key_t *k); - -/*** bindings/py/gencffi.pl: from include/pcp/key.h:871 */ -char *pcp_getpubkeyid(pcp_pubkey_t *k); - -/*** bindings/py/gencffi.pl: from include/pcp/key.h:871 */ -byte *pcppubkey_getchecksum(pcp_pubkey_t *k); - -/*** bindings/py/gencffi.pl: from include/pcp/key.h:871 */ -byte *pcpkey_getchecksum(pcp_key_t *k); - -/*** bindings/py/gencffi.pl: from include/pcp/key.h:871 */ -pcp_key_t * key2be(pcp_key_t *k); - -/*** bindings/py/gencffi.pl: from include/pcp/key.h:871 */ -pcp_key_t *key2native(pcp_key_t *k); - -/*** bindings/py/gencffi.pl: from include/pcp/key.h:871 */ -pcp_pubkey_t * pubkey2be(pcp_pubkey_t *k); - -/*** bindings/py/gencffi.pl: from include/pcp/key.h:871 */ -pcp_pubkey_t *pubkey2native(pcp_pubkey_t *k); - -/*** bindings/py/gencffi.pl: from include/pcp/key.h:871 */ -byte * pcp_gennonce(); - -/*** bindings/py/gencffi.pl: from include/pcp/key.h:871 */ -byte *pcp_derivekey(PCPCTX *ptx, char *passphrase, byte *nonce); - -/*** bindings/py/gencffi.pl: from include/pcp/key.h:871 */ -void pcp_seckeyblob(Buffer *b, pcp_key_t *k); - -/*** bindings/py/gencffi.pl: from include/pcp/key.h:871 */ -void pcp_pubkeyblob(Buffer *b, pcp_pubkey_t *k); - -/*** bindings/py/gencffi.pl: from include/pcp/key.h:871 */ -Buffer *pcp_keyblob(void *k, int type); - -/*** bindings/py/gencffi.pl: from include/pcp/key.h:871 */ -int pcp_sanitycheck_pub(PCPCTX *ptx, pcp_pubkey_t *key); - -/*** bindings/py/gencffi.pl: from include/pcp/key.h:871 */ -int pcp_sanitycheck_key(PCPCTX *ptx, pcp_key_t *key); - -/*** bindings/py/gencffi.pl: from include/pcp/key.h:871 */ -void pcp_dumpkey(pcp_key_t *k); - -/*** bindings/py/gencffi.pl: from include/pcp/key.h:871 */ -void pcp_dumppubkey(pcp_pubkey_t *k); - -/*** bindings/py/gencffi.pl: from include/pcp/key.h:871 */ -void pcpkey_setowner(pcp_key_t *key, char *owner, char *mail); - -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ Buffer *buffer_new(size_t blocksize, char *name); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ Buffer *buffer_new_str(char *name); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ Buffer *buffer_new_buf(char *name, void *data, size_t datasize); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ void buffer_init(Buffer *b, size_t blocksize, char *name); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ void buffer_free(Buffer *b); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ void buffer_clear(Buffer *b); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ void buffer_rewind(Buffer *b); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ void buffer_add(Buffer *b, const void *data, size_t len); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ void buffer_add_buf(Buffer *dst, Buffer *src); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ void buffer_add_str(Buffer *b, const char * fmt, ...); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ void buffer_add_hex(Buffer *b, void *data, size_t len); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ void buffer_resize(Buffer *b, size_t len); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ int buffer_done(Buffer *b); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ size_t buffer_get_chunk(Buffer *b, void *buf, size_t len); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ size_t buffer_get_chunk_tobuf(Buffer *b, Buffer *dst, size_t len); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ byte *buffer_get(Buffer *b); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ char *buffer_get_str(Buffer *b); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ byte *buffer_get_remainder(Buffer *b); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ size_t buffer_extract(Buffer *b, void *buf, size_t offset, size_t len); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ size_t buffer_fwd_offset(Buffer *b, size_t fwdby); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ void buffer_dump(const Buffer *b); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ void buffer_info(const Buffer *b); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ size_t buffer_size(const Buffer *b); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ size_t buffer_left(const Buffer *b); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ uint8_t buffer_get8(Buffer *b); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ uint16_t buffer_get16(Buffer *b); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ uint32_t buffer_get32(Buffer *b); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ uint64_t buffer_get64(Buffer *b); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ uint16_t buffer_get16na(Buffer *b); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ uint32_t buffer_get32na(Buffer *b); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ uint64_t buffer_get64na(Buffer *b); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ uint8_t buffer_last8(Buffer *b); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ uint16_t buffer_last16(Buffer *b); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ uint32_t buffer_last32(Buffer *b); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ uint64_t buffer_last64(Buffer *b); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ size_t buffer_fd_read(Buffer *b, FILE *in, size_t len); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ void buffer_add8(Buffer *b, uint8_t v); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ void buffer_add16(Buffer *b, uint16_t v); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ void buffer_add32(Buffer *b, uint32_t v); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ void buffer_add64(Buffer *b, uint64_t v); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ void buffer_add16be(Buffer *b, uint16_t v); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ void buffer_add32be(Buffer *b, uint32_t v); -/*** bindings/py/gencffi.pl: from include/pcp/buffer.h:1525 */ +/*** ./gencffi.pl: from ../../include/pcp/buffer.h:654 */ void buffer_add64be(Buffer *b, uint64_t v); -/*** bindings/py/gencffi.pl: from include/pcp/context.h:1621 */ +/*** ./gencffi.pl: from ../../include/pcp/context.h:96 */ PCPCTX *ptx_new(); -/*** bindings/py/gencffi.pl: from include/pcp/context.h:1621 */ +/*** ./gencffi.pl: from ../../include/pcp/context.h:96 */ void ptx_clean(PCPCTX *ptx); -/*** bindings/py/gencffi.pl: from include/pcp/context.h:1621 */ +/*** ./gencffi.pl: from ../../include/pcp/context.h:96 */ void fatal(PCPCTX *ptx, const char * fmt, ...); -/*** bindings/py/gencffi.pl: from include/pcp/context.h:1621 */ +/*** ./gencffi.pl: from ../../include/pcp/context.h:96 */ void fatals_ifany(PCPCTX *ptx); -/*** bindings/py/gencffi.pl: from include/pcp/context.h:1621 */ +/*** ./gencffi.pl: from ../../include/pcp/context.h:96 */ void fatals_reset(PCPCTX *ptx); -/*** bindings/py/gencffi.pl: from include/pcp/context.h:1621 */ +/*** ./gencffi.pl: from ../../include/pcp/context.h:96 */ void final(const char * fmt, ...); -/*** bindings/py/gencffi.pl: from include/pcp/context.h:1621 */ +/*** ./gencffi.pl: from ../../include/pcp/context.h:96 */ void ptx_dump(PCPCTX *ptx); -/*** bindings/py/gencffi.pl: from include/pcp/ed.h:1823 */ -byte *pcp_ed_sign(byte *message, size_t messagesize, pcp_key_t *s); - -/*** bindings/py/gencffi.pl: from include/pcp/ed.h:1823 */ -byte *pcp_ed_verify(PCPCTX *ptx, byte *signature, size_t siglen, pcp_pubkey_t *p); - -/*** bindings/py/gencffi.pl: from include/pcp/ed.h:1823 */ -byte *pcp_ed_verify_key(PCPCTX *ptx, byte *signature, size_t siglen, pcp_pubkey_t *p); - -/*** bindings/py/gencffi.pl: from include/pcp/ed.h:1823 */ -size_t pcp_ed_sign_buffered(PCPCTX *ptx, Pcpstream *in, Pcpstream *out, pcp_key_t *s, int z85); - -/*** bindings/py/gencffi.pl: from include/pcp/ed.h:1823 */ -pcp_pubkey_t *pcp_ed_verify_buffered(PCPCTX *ptx, Pcpstream *in, pcp_pubkey_t *p); - -/*** bindings/py/gencffi.pl: from include/pcp/ed.h:1823 */ -size_t pcp_ed_detachsign_buffered(Pcpstream *in, Pcpstream *out, pcp_key_t *s); - -/*** bindings/py/gencffi.pl: from include/pcp/ed.h:1823 */ -pcp_pubkey_t *pcp_ed_detachverify_buffered(PCPCTX *ptx, Pcpstream *in, Pcpstream *sigfd, pcp_pubkey_t *p); - -/*** bindings/py/gencffi.pl: from include/pcp/crypto.h:2166 */ +/*** ./gencffi.pl: from ../../include/pcp/crypto.h:343 */ size_t pcp_encrypt_stream(PCPCTX *ptx, Pcpstream *in, Pcpstream* out, pcp_key_t *s, pcp_pubkey_t *p, int signcrypt, int anon); -/*** bindings/py/gencffi.pl: from include/pcp/crypto.h:2166 */ +/*** ./gencffi.pl: from ../../include/pcp/crypto.h:343 */ size_t pcp_encrypt_stream_sym(PCPCTX *ptx, Pcpstream *in, Pcpstream* out, byte *symkey, int havehead, pcp_rec_t *recsign); -/*** bindings/py/gencffi.pl: from include/pcp/crypto.h:2166 */ +/*** ./gencffi.pl: from ../../include/pcp/crypto.h:343 */ size_t pcp_decrypt_stream(PCPCTX *ptx, Pcpstream *in, Pcpstream* out, pcp_key_t *s, byte *symkey, int verify, int anon); -/*** bindings/py/gencffi.pl: from include/pcp/crypto.h:2166 */ +/*** ./gencffi.pl: from ../../include/pcp/crypto.h:343 */ size_t pcp_decrypt_stream_sym(PCPCTX *ptx, Pcpstream *in, Pcpstream* out, byte *symkey, pcp_rec_t *recverify); -/*** bindings/py/gencffi.pl: from include/pcp/crypto.h:2166 */ +/*** ./gencffi.pl: from ../../include/pcp/crypto.h:343 */ pcp_rec_t *pcp_rec_new(byte *cipher, size_t clen, pcp_key_t *secret, pcp_pubkey_t *pub); -/*** bindings/py/gencffi.pl: from include/pcp/crypto.h:2166 */ +/*** ./gencffi.pl: from ../../include/pcp/crypto.h:343 */ void pcp_rec_free(pcp_rec_t *r); -/*** bindings/py/gencffi.pl: from include/pcp/crypto.h:2166 */ +/*** ./gencffi.pl: from ../../include/pcp/crypto.h:343 */ byte *_gen_ctr_nonce(uint64_t ctr); -/*** bindings/py/gencffi.pl: from include/pcp/crypto.h:2166 */ +/*** ./gencffi.pl: from ../../include/pcp/crypto.h:343 */ uint64_t _get_nonce_ctr(byte *nonce); -/*** bindings/py/gencffi.pl: from include/pcp/vault.h:2396 */ -vault_t *pcpvault_init(PCPCTX *ptx, char *filename); +/*** ./gencffi.pl: from ../../include/pcp/ed.h:202 */ +byte *pcp_ed_sign(byte *message, size_t messagesize, pcp_key_t *s); -/*** bindings/py/gencffi.pl: from include/pcp/vault.h:2396 */ -vault_t *pcpvault_new(PCPCTX *ptx, char *filename, int is_tmp); +/*** ./gencffi.pl: from ../../include/pcp/ed.h:202 */ +byte *pcp_ed_verify(PCPCTX *ptx, byte *signature, size_t siglen, pcp_pubkey_t *p); -/*** bindings/py/gencffi.pl: from include/pcp/vault.h:2396 */ -int pcpvault_create(PCPCTX *ptx, vault_t *vault); +/*** ./gencffi.pl: from ../../include/pcp/ed.h:202 */ +byte *pcp_ed_verify_key(PCPCTX *ptx, byte *signature, size_t siglen, pcp_pubkey_t *p); -/*** bindings/py/gencffi.pl: from include/pcp/vault.h:2396 */ -int pcpvault_additem(PCPCTX *ptx, vault_t *vault, void *item, size_t itemsize, uint8_t type); +/*** ./gencffi.pl: from ../../include/pcp/ed.h:202 */ +size_t pcp_ed_sign_buffered(PCPCTX *ptx, Pcpstream *in, Pcpstream *out, pcp_key_t *s, int z85); -/*** bindings/py/gencffi.pl: from include/pcp/vault.h:2396 */ -int pcpvault_addkey(PCPCTX *ptx, vault_t *vault, void *item, uint8_t type); +/*** ./gencffi.pl: from ../../include/pcp/ed.h:202 */ +pcp_pubkey_t *pcp_ed_verify_buffered(PCPCTX *ptx, Pcpstream *in, pcp_pubkey_t *p); -/*** bindings/py/gencffi.pl: from include/pcp/vault.h:2396 */ -int pcpvault_close(PCPCTX *ptx, vault_t *vault); +/*** ./gencffi.pl: from ../../include/pcp/ed.h:202 */ +size_t pcp_ed_detachsign_buffered(Pcpstream *in, Pcpstream *out, pcp_key_t *s); -/*** bindings/py/gencffi.pl: from include/pcp/vault.h:2396 */ -void pcpvault_free(vault_t *vault); +/*** ./gencffi.pl: from ../../include/pcp/ed.h:202 */ +pcp_pubkey_t *pcp_ed_detachverify_buffered(PCPCTX *ptx, Pcpstream *in, Pcpstream *sigfd, pcp_pubkey_t *p); -/*** bindings/py/gencffi.pl: from include/pcp/vault.h:2396 */ -int pcpvault_fetchall(PCPCTX *ptx, vault_t *vault); +/*** ./gencffi.pl: from ../../include/pcp/getpass.h:22 */ +void pcp_echo_off(); -/*** bindings/py/gencffi.pl: from include/pcp/vault.h:2396 */ -int pcpvault_writeall(PCPCTX *ptx, vault_t *vault); +/*** ./gencffi.pl: from ../../include/pcp/getpass.h:22 */ +void pcp_echo_on(); -/*** bindings/py/gencffi.pl: from include/pcp/vault.h:2396 */ -int pcpvault_copy(PCPCTX *ptx, vault_t *tmp, vault_t *vault); +/*** ./gencffi.pl: from ../../include/pcp/getpass.h:22 */ +char *pcp_get_stdin(); -/*** bindings/py/gencffi.pl: from include/pcp/vault.h:2396 */ -void pcpvault_unlink(vault_t *tmp); +/*** ./gencffi.pl: from ../../include/pcp/getpass.h:22 */ +char *pcp_get_passphrase(char *prompt); -/*** bindings/py/gencffi.pl: from include/pcp/vault.h:2396 */ -byte *pcpvault_create_checksum(PCPCTX *ptx); +/*** ./gencffi.pl: from ../../include/pcp/jenhash.h:25 */ +unsigned jen_hash ( unsigned char *k, unsigned length, unsigned initval ); -/*** bindings/py/gencffi.pl: from include/pcp/vault.h:2396 */ -void pcpvault_update_checksum(PCPCTX *ptx, vault_t *vault); +/*** ./gencffi.pl: from ../../include/pcp/key.h:314 */ +pcp_key_t *pcpkey_new (); -/*** bindings/py/gencffi.pl: from include/pcp/vault.h:2396 */ -vault_header_t * vh2be(vault_header_t *h); +/*** ./gencffi.pl: from ../../include/pcp/key.h:314 */ +void pcp_keypairs(byte *msk, byte *mpk, byte *csk, byte *cpk, byte *esk, byte *epk); -/*** bindings/py/gencffi.pl: from include/pcp/vault.h:2396 */ -vault_header_t * vh2native(vault_header_t *h); +/*** ./gencffi.pl: from ../../include/pcp/key.h:314 */ +char *pcppubkey_get_art(pcp_pubkey_t *k); -/*** bindings/py/gencffi.pl: from include/pcp/vault.h:2396 */ -vault_item_header_t * ih2be(vault_item_header_t *h); +/*** ./gencffi.pl: from ../../include/pcp/key.h:314 */ +char *pcpkey_get_art(pcp_key_t *k); -/*** bindings/py/gencffi.pl: from include/pcp/vault.h:2396 */ -vault_item_header_t * ih2native(vault_item_header_t *h); +/*** ./gencffi.pl: from ../../include/pcp/key.h:314 */ +pcp_key_t *pcpkey_encrypt(PCPCTX *ptx, pcp_key_t *key, char *passphrase); -/*** bindings/py/gencffi.pl: from include/pcp/mgmt.h:2671 */ -Buffer *pcp_export_rfc_pub (pcp_key_t *sk); +/*** ./gencffi.pl: from ../../include/pcp/key.h:314 */ +pcp_key_t *pcpkey_decrypt(PCPCTX *ptx, pcp_key_t *key, char *passphrase); -/*** bindings/py/gencffi.pl: from include/pcp/mgmt.h:2671 */ -Buffer *pcp_export_pbp_pub(pcp_key_t *sk); +/*** ./gencffi.pl: from ../../include/pcp/key.h:314 */ +pcp_pubkey_t *pcpkey_pub_from_secret(pcp_key_t *key); -/*** bindings/py/gencffi.pl: from include/pcp/mgmt.h:2671 */ -Buffer *pcp_export_yaml_pub(pcp_key_t *sk); +/*** ./gencffi.pl: from ../../include/pcp/key.h:314 */ +char *pcp_getkeyid(pcp_key_t *k); -/*** bindings/py/gencffi.pl: from include/pcp/mgmt.h:2671 */ -Buffer *pcp_export_perl_pub(pcp_key_t *sk); +/*** ./gencffi.pl: from ../../include/pcp/key.h:314 */ +char *pcp_getpubkeyid(pcp_pubkey_t *k); -/*** bindings/py/gencffi.pl: from include/pcp/mgmt.h:2671 */ -Buffer *pcp_export_c_pub(pcp_key_t *sk); +/*** ./gencffi.pl: from ../../include/pcp/key.h:314 */ +byte *pcppubkey_getchecksum(pcp_pubkey_t *k); -/*** bindings/py/gencffi.pl: from include/pcp/mgmt.h:2671 */ -Buffer *pcp_export_secret(PCPCTX *ptx, pcp_key_t *sk, char *passphrase); +/*** ./gencffi.pl: from ../../include/pcp/key.h:314 */ +byte *pcpkey_getchecksum(pcp_key_t *k); -/*** bindings/py/gencffi.pl: from include/pcp/mgmt.h:2671 */ -pcp_ks_bundle_t *pcp_import_binpub(PCPCTX *ptx, byte *raw, size_t rawsize); +/*** ./gencffi.pl: from ../../include/pcp/key.h:314 */ +pcp_key_t * key2be(pcp_key_t *k); -/*** bindings/py/gencffi.pl: from include/pcp/mgmt.h:2671 */ -pcp_ks_bundle_t *pcp_import_pub(PCPCTX *ptx, byte *raw, size_t rawsize); +/*** ./gencffi.pl: from ../../include/pcp/key.h:314 */ +pcp_key_t *key2native(pcp_key_t *k); -/*** bindings/py/gencffi.pl: from include/pcp/mgmt.h:2671 */ -pcp_ks_bundle_t *pcp_import_pub_rfc(PCPCTX *ptx, Buffer *blob); +/*** ./gencffi.pl: from ../../include/pcp/key.h:314 */ +pcp_pubkey_t * pubkey2be(pcp_pubkey_t *k); -/*** bindings/py/gencffi.pl: from include/pcp/mgmt.h:2671 */ -pcp_ks_bundle_t *pcp_import_pub_pbp(PCPCTX *ptx, Buffer *blob); +/*** ./gencffi.pl: from ../../include/pcp/key.h:314 */ +pcp_pubkey_t *pubkey2native(pcp_pubkey_t *k); -/*** bindings/py/gencffi.pl: from include/pcp/mgmt.h:2671 */ -pcp_key_t *pcp_import_binsecret(PCPCTX *ptx, byte *raw, size_t rawsize, char *passphrase); +/*** ./gencffi.pl: from ../../include/pcp/key.h:314 */ +byte * pcp_gennonce(); -/*** bindings/py/gencffi.pl: from include/pcp/mgmt.h:2671 */ -pcp_key_t *pcp_import_secret(PCPCTX *ptx, byte *raw, size_t rawsize, char *passphrase); +/*** ./gencffi.pl: from ../../include/pcp/key.h:314 */ +byte *pcp_derivekey(PCPCTX *ptx, char *passphrase, byte *nonce); -/*** bindings/py/gencffi.pl: from include/pcp/mgmt.h:2671 */ -pcp_key_t *pcp_import_secret_native(PCPCTX *ptx, Buffer *cipher, char *passphrase); +/*** ./gencffi.pl: from ../../include/pcp/key.h:314 */ +void pcp_seckeyblob(Buffer *b, pcp_key_t *k); -/*** bindings/py/gencffi.pl: from include/pcp/mgmt.h:2671 */ -int _check_keysig_h(PCPCTX *ptx, Buffer *blob, rfc_pub_sig_h *h); +/*** ./gencffi.pl: from ../../include/pcp/key.h:314 */ +void pcp_pubkeyblob(Buffer *b, pcp_pubkey_t *k); -/*** bindings/py/gencffi.pl: from include/pcp/mgmt.h:2671 */ -int _check_hash_keysig(PCPCTX *ptx, Buffer *blob, pcp_pubkey_t *p, pcp_keysig_t *sk); +/*** ./gencffi.pl: from ../../include/pcp/key.h:314 */ +Buffer *pcp_keyblob(void *k, int type); -/*** bindings/py/gencffi.pl: from include/pcp/mgmt.h:2671 */ -int _check_sigsubs(PCPCTX *ptx, Buffer *blob, pcp_pubkey_t *p, rfc_pub_sig_s *subheader); +/*** ./gencffi.pl: from ../../include/pcp/key.h:314 */ +int pcp_sanitycheck_pub(PCPCTX *ptx, pcp_pubkey_t *key); -/*** bindings/py/gencffi.pl: from include/pcp/keyhash.h:2824 */ +/*** ./gencffi.pl: from ../../include/pcp/key.h:314 */ +int pcp_sanitycheck_key(PCPCTX *ptx, pcp_key_t *key); + +/*** ./gencffi.pl: from ../../include/pcp/key.h:314 */ +void pcp_dumpkey(pcp_key_t *k); + +/*** ./gencffi.pl: from ../../include/pcp/key.h:314 */ +void pcp_dumppubkey(pcp_pubkey_t *k); + +/*** ./gencffi.pl: from ../../include/pcp/key.h:314 */ +void pcpkey_setowner(pcp_key_t *key, char *owner, char *mail); + +/*** ./gencffi.pl: from ../../include/pcp/keyhash.h:153 */ void pcphash_del(PCPCTX *ptx, void *key, int type); -/*** bindings/py/gencffi.pl: from include/pcp/keyhash.h:2824 */ +/*** ./gencffi.pl: from ../../include/pcp/keyhash.h:153 */ void pcphash_clean(PCPCTX *ptx); -/*** bindings/py/gencffi.pl: from include/pcp/keyhash.h:2824 */ +/*** ./gencffi.pl: from ../../include/pcp/keyhash.h:153 */ void pcphash_cleanpub(pcp_pubkey_t *pub); -/*** bindings/py/gencffi.pl: from include/pcp/keyhash.h:2824 */ +/*** ./gencffi.pl: from ../../include/pcp/keyhash.h:153 */ pcp_key_t *pcphash_keyexists(PCPCTX *ptx, char *id); -/*** bindings/py/gencffi.pl: from include/pcp/keyhash.h:2824 */ +/*** ./gencffi.pl: from ../../include/pcp/keyhash.h:153 */ pcp_pubkey_t *pcphash_pubkeyexists(PCPCTX *ptx, char *id); -/*** bindings/py/gencffi.pl: from include/pcp/keyhash.h:2824 */ +/*** ./gencffi.pl: from ../../include/pcp/keyhash.h:153 */ void pcphash_add(PCPCTX *ptx, void *key, int type); -/*** bindings/py/gencffi.pl: from include/pcp/keyhash.h:2824 */ +/*** ./gencffi.pl: from ../../include/pcp/keyhash.h:153 */ int pcphash_count(PCPCTX *ptx); -/*** bindings/py/gencffi.pl: from include/pcp/keyhash.h:2824 */ +/*** ./gencffi.pl: from ../../include/pcp/keyhash.h:153 */ int pcphash_countpub(PCPCTX *ptx); -/*** bindings/py/gencffi.pl: from include/pcp/keyhash.h:2824 */ +/*** ./gencffi.pl: from ../../include/pcp/keyhash.h:153 */ pcp_keysig_t *pcphash_keysigexists(PCPCTX *ptx, char *id); -/*** bindings/py/gencffi.pl: from include/pcp/scrypt.h:2867 */ -byte * pcp_scrypt(PCPCTX *ptx, char *passwd, size_t passwdlen, byte *nonce, size_t noncelen); +/*** ./gencffi.pl: from ../../include/pcp/keysig.h:50 */ +pcp_keysig_t *keysig2be(pcp_keysig_t *s); -/*** bindings/py/gencffi.pl: from include/pcp/pcpstream.h:3158 */ +/*** ./gencffi.pl: from ../../include/pcp/keysig.h:50 */ +pcp_keysig_t *keysig2native(pcp_keysig_t *s); + +/*** ./gencffi.pl: from ../../include/pcp/keysig.h:50 */ +Buffer *pcp_keysig2blob(pcp_keysig_t *s); + +/*** ./gencffi.pl: from ../../include/pcp/keysig.h:50 */ +pcp_keysig_t *pcp_keysig_new(Buffer *blob); + +/*** ./gencffi.pl: from ../../include/pcp/mem.h:58 */ +void *ucmalloc(size_t s); + +/*** ./gencffi.pl: from ../../include/pcp/mem.h:58 */ +void *smalloc(size_t s); + +/*** ./gencffi.pl: from ../../include/pcp/mem.h:58 */ +void *urmalloc(size_t s); + +/*** ./gencffi.pl: from ../../include/pcp/mem.h:58 */ +void *srmalloc(size_t s); + +/*** ./gencffi.pl: from ../../include/pcp/mem.h:58 */ +void *ucrealloc(void *d, size_t oldlen, size_t newlen); + +/*** ./gencffi.pl: from ../../include/pcp/mem.h:58 */ +void ucfree(void *d, size_t len); + +/*** ./gencffi.pl: from ../../include/pcp/mem.h:58 */ +void sfree(void *d); + +/*** ./gencffi.pl: from ../../include/pcp/mgmt.h:275 */ +Buffer *pcp_export_rfc_pub (pcp_key_t *sk); + +/*** ./gencffi.pl: from ../../include/pcp/mgmt.h:275 */ +Buffer *pcp_export_pbp_pub(pcp_key_t *sk); + +/*** ./gencffi.pl: from ../../include/pcp/mgmt.h:275 */ +Buffer *pcp_export_yaml_pub(pcp_key_t *sk); + +/*** ./gencffi.pl: from ../../include/pcp/mgmt.h:275 */ +Buffer *pcp_export_perl_pub(pcp_key_t *sk); + +/*** ./gencffi.pl: from ../../include/pcp/mgmt.h:275 */ +Buffer *pcp_export_c_pub(pcp_key_t *sk); + +/*** ./gencffi.pl: from ../../include/pcp/mgmt.h:275 */ +Buffer *pcp_export_secret(PCPCTX *ptx, pcp_key_t *sk, char *passphrase); + +/*** ./gencffi.pl: from ../../include/pcp/mgmt.h:275 */ +pcp_ks_bundle_t *pcp_import_binpub(PCPCTX *ptx, byte *raw, size_t rawsize); + +/*** ./gencffi.pl: from ../../include/pcp/mgmt.h:275 */ +pcp_ks_bundle_t *pcp_import_pub(PCPCTX *ptx, byte *raw, size_t rawsize); + +/*** ./gencffi.pl: from ../../include/pcp/mgmt.h:275 */ +pcp_ks_bundle_t *pcp_import_pub_rfc(PCPCTX *ptx, Buffer *blob); + +/*** ./gencffi.pl: from ../../include/pcp/mgmt.h:275 */ +pcp_ks_bundle_t *pcp_import_pub_pbp(PCPCTX *ptx, Buffer *blob); + +/*** ./gencffi.pl: from ../../include/pcp/mgmt.h:275 */ +pcp_key_t *pcp_import_binsecret(PCPCTX *ptx, byte *raw, size_t rawsize, char *passphrase); + +/*** ./gencffi.pl: from ../../include/pcp/mgmt.h:275 */ +pcp_key_t *pcp_import_secret(PCPCTX *ptx, byte *raw, size_t rawsize, char *passphrase); + +/*** ./gencffi.pl: from ../../include/pcp/mgmt.h:275 */ +pcp_key_t *pcp_import_secret_native(PCPCTX *ptx, Buffer *cipher, char *passphrase); + +/*** ./gencffi.pl: from ../../include/pcp/mgmt.h:275 */ +int _check_keysig_h(PCPCTX *ptx, Buffer *blob, rfc_pub_sig_h *h); + +/*** ./gencffi.pl: from ../../include/pcp/mgmt.h:275 */ +int _check_hash_keysig(PCPCTX *ptx, Buffer *blob, pcp_pubkey_t *p, pcp_keysig_t *sk); + +/*** ./gencffi.pl: from ../../include/pcp/mgmt.h:275 */ +int _check_sigsubs(PCPCTX *ptx, Buffer *blob, pcp_pubkey_t *p, rfc_pub_sig_s *subheader); + +/*** ./gencffi.pl: from ../../include/pcp/pcpstream.h:291 */ Pcpstream *ps_init(void); -/*** bindings/py/gencffi.pl: from include/pcp/pcpstream.h:3158 */ +/*** ./gencffi.pl: from ../../include/pcp/pcpstream.h:291 */ Pcpstream *ps_new_file(FILE *backendfd); -/*** bindings/py/gencffi.pl: from include/pcp/pcpstream.h:3158 */ +/*** ./gencffi.pl: from ../../include/pcp/pcpstream.h:291 */ Pcpstream *ps_new_inbuffer(Buffer *b); -/*** bindings/py/gencffi.pl: from include/pcp/pcpstream.h:3158 */ +/*** ./gencffi.pl: from ../../include/pcp/pcpstream.h:291 */ Pcpstream *ps_new_outbuffer(); -/*** bindings/py/gencffi.pl: from include/pcp/pcpstream.h:3158 */ +/*** ./gencffi.pl: from ../../include/pcp/pcpstream.h:291 */ size_t ps_read(Pcpstream *stream, void *buf, size_t readbytes); -/*** bindings/py/gencffi.pl: from include/pcp/pcpstream.h:3158 */ +/*** ./gencffi.pl: from ../../include/pcp/pcpstream.h:291 */ size_t ps_write(Pcpstream *stream, void *buf, size_t writebytes); -/*** bindings/py/gencffi.pl: from include/pcp/pcpstream.h:3158 */ +/*** ./gencffi.pl: from ../../include/pcp/pcpstream.h:291 */ size_t ps_finish(Pcpstream *stream); -/*** bindings/py/gencffi.pl: from include/pcp/pcpstream.h:3158 */ +/*** ./gencffi.pl: from ../../include/pcp/pcpstream.h:291 */ size_t ps_print(Pcpstream *stream, const char * fmt, ...); -/*** bindings/py/gencffi.pl: from include/pcp/pcpstream.h:3158 */ +/*** ./gencffi.pl: from ../../include/pcp/pcpstream.h:291 */ size_t ps_tell(Pcpstream *stream); -/*** bindings/py/gencffi.pl: from include/pcp/pcpstream.h:3158 */ +/*** ./gencffi.pl: from ../../include/pcp/pcpstream.h:291 */ Buffer *ps_buffer(Pcpstream *stream); -/*** bindings/py/gencffi.pl: from include/pcp/pcpstream.h:3158 */ +/*** ./gencffi.pl: from ../../include/pcp/pcpstream.h:291 */ void ps_close(Pcpstream *stream); -/*** bindings/py/gencffi.pl: from include/pcp/pcpstream.h:3158 */ +/*** ./gencffi.pl: from ../../include/pcp/pcpstream.h:291 */ int ps_end(Pcpstream *stream); -/*** bindings/py/gencffi.pl: from include/pcp/pcpstream.h:3158 */ +/*** ./gencffi.pl: from ../../include/pcp/pcpstream.h:291 */ int ps_err(Pcpstream *stream); -/*** bindings/py/gencffi.pl: from include/pcp/pcpstream.h:3158 */ +/*** ./gencffi.pl: from ../../include/pcp/pcpstream.h:291 */ void ps_setdetermine(Pcpstream *stream, size_t blocksize); -/*** bindings/py/gencffi.pl: from include/pcp/pcpstream.h:3158 */ +/*** ./gencffi.pl: from ../../include/pcp/pcpstream.h:291 */ void ps_armor(Pcpstream *stream, size_t blocksize); -/*** bindings/py/gencffi.pl: from include/pcp/pcpstream.h:3158 */ +/*** ./gencffi.pl: from ../../include/pcp/pcpstream.h:291 */ void ps_unarmor(Pcpstream *stream); -/*** bindings/py/gencffi.pl: from include/pcp/pcpstream.h:3158 */ +/*** ./gencffi.pl: from ../../include/pcp/pcpstream.h:291 */ size_t ps_read_decode(Pcpstream *stream); -/*** bindings/py/gencffi.pl: from include/pcp/pcpstream.h:3158 */ +/*** ./gencffi.pl: from ../../include/pcp/pcpstream.h:291 */ void ps_determine(Pcpstream *stream); -/*** bindings/py/gencffi.pl: from include/pcp/pcpstream.h:3158 */ +/*** ./gencffi.pl: from ../../include/pcp/pcpstream.h:291 */ size_t ps_read_next(Pcpstream *stream); -/*** bindings/py/gencffi.pl: from include/pcp/pcpstream.h:3158 */ +/*** ./gencffi.pl: from ../../include/pcp/pcpstream.h:291 */ size_t ps_read_cached(Pcpstream *stream, void *buf, size_t readbytes); -/*** bindings/py/gencffi.pl: from include/pcp/pcpstream.h:3158 */ +/*** ./gencffi.pl: from ../../include/pcp/pcpstream.h:291 */ size_t ps_read_raw(Pcpstream *stream, void *buf, size_t readbytes); -/*** bindings/py/gencffi.pl: from include/pcp/pcpstream.h:3158 */ +/*** ./gencffi.pl: from ../../include/pcp/pcpstream.h:291 */ void ps_write_encode(Pcpstream *stream, Buffer *dst); -/*** bindings/py/gencffi.pl: from include/pcp/pcpstream.h:3158 */ +/*** ./gencffi.pl: from ../../include/pcp/pcpstream.h:291 */ size_t ps_write_buf(Pcpstream *stream, Buffer *z); -/*** bindings/py/gencffi.pl: from include/pcp/pcpstream.h:3158 */ +/*** ./gencffi.pl: from ../../include/pcp/pcpstream.h:291 */ int ps_left(Pcpstream *stream); -/*** bindings/py/gencffi.pl: from include/pcp/pcpstream.h:3158 */ +/*** ./gencffi.pl: from ../../include/pcp/pcpstream.h:291 */ int ps_readline(Pcpstream *stream, Buffer *line); -/*** bindings/py/gencffi.pl: from include/pcp/z85.h:3324 */ +/*** ./gencffi.pl: from ../../include/pcp/randomart.h:54 */ +char *key_fingerprint_randomart(unsigned char *dgst_raw, unsigned int dgst_raw_len); + +/*** ./gencffi.pl: from ../../include/pcp/scrypt.h:42 */ +byte * pcp_scrypt(PCPCTX *ptx, char *passwd, size_t passwdlen, byte *nonce, size_t noncelen); + +/*** ./gencffi.pl: from ../../include/pcp/util.h:104 */ +char *_lc(char *in); + +/*** ./gencffi.pl: from ../../include/pcp/util.h:104 */ +long int _findoffset(byte *bin, size_t binlen, char *sigstart, size_t hlen); + +/*** ./gencffi.pl: from ../../include/pcp/util.h:104 */ +void _xorbuf(byte *iv, byte *buf, size_t xlen); + +/*** ./gencffi.pl: from ../../include/pcp/util.h:104 */ +void _dump(char *n, byte *d, size_t s); + +/*** ./gencffi.pl: from ../../include/pcp/vault.h:230 */ +vault_t *pcpvault_init(PCPCTX *ptx, char *filename); + +/*** ./gencffi.pl: from ../../include/pcp/vault.h:230 */ +vault_t *pcpvault_new(PCPCTX *ptx, char *filename, int is_tmp); + +/*** ./gencffi.pl: from ../../include/pcp/vault.h:230 */ +int pcpvault_create(PCPCTX *ptx, vault_t *vault); + +/*** ./gencffi.pl: from ../../include/pcp/vault.h:230 */ +int pcpvault_additem(PCPCTX *ptx, vault_t *vault, void *item, size_t itemsize, uint8_t type); + +/*** ./gencffi.pl: from ../../include/pcp/vault.h:230 */ +int pcpvault_addkey(PCPCTX *ptx, vault_t *vault, void *item, uint8_t type); + +/*** ./gencffi.pl: from ../../include/pcp/vault.h:230 */ +int pcpvault_close(PCPCTX *ptx, vault_t *vault); + +/*** ./gencffi.pl: from ../../include/pcp/vault.h:230 */ +void pcpvault_free(vault_t *vault); + +/*** ./gencffi.pl: from ../../include/pcp/vault.h:230 */ +int pcpvault_fetchall(PCPCTX *ptx, vault_t *vault); + +/*** ./gencffi.pl: from ../../include/pcp/vault.h:230 */ +int pcpvault_writeall(PCPCTX *ptx, vault_t *vault); + +/*** ./gencffi.pl: from ../../include/pcp/vault.h:230 */ +int pcpvault_copy(PCPCTX *ptx, vault_t *tmp, vault_t *vault); + +/*** ./gencffi.pl: from ../../include/pcp/vault.h:230 */ +void pcpvault_unlink(vault_t *tmp); + +/*** ./gencffi.pl: from ../../include/pcp/vault.h:230 */ +byte *pcpvault_create_checksum(PCPCTX *ptx); + +/*** ./gencffi.pl: from ../../include/pcp/vault.h:230 */ +void pcpvault_update_checksum(PCPCTX *ptx, vault_t *vault); + +/*** ./gencffi.pl: from ../../include/pcp/vault.h:230 */ +vault_header_t * vh2be(vault_header_t *h); + +/*** ./gencffi.pl: from ../../include/pcp/vault.h:230 */ +vault_header_t * vh2native(vault_header_t *h); + +/*** ./gencffi.pl: from ../../include/pcp/vault.h:230 */ +vault_item_header_t * ih2be(vault_item_header_t *h); + +/*** ./gencffi.pl: from ../../include/pcp/vault.h:230 */ +vault_item_header_t * ih2native(vault_item_header_t *h); + +/*** ./gencffi.pl: from ../../include/pcp/version.h:35 */ +int pcp_version(); + +/*** ./gencffi.pl: from ../../include/pcp/z85.h:166 */ byte *pcp_padfour(byte *src, size_t srclen, size_t *dstlen); -/*** bindings/py/gencffi.pl: from include/pcp/z85.h:3324 */ +/*** ./gencffi.pl: from ../../include/pcp/z85.h:166 */ byte *pcp_z85_decode(PCPCTX *ptx, char *z85block, size_t *dstlen); -/*** bindings/py/gencffi.pl: from include/pcp/z85.h:3324 */ +/*** ./gencffi.pl: from ../../include/pcp/z85.h:166 */ char *pcp_z85_encode(byte *raw, size_t srclen, size_t *dstlen, int doblock); -/*** bindings/py/gencffi.pl: from include/pcp/z85.h:3324 */ +/*** ./gencffi.pl: from ../../include/pcp/z85.h:166 */ char *pcp_readz85file(PCPCTX *ptx, FILE *infile); -/*** bindings/py/gencffi.pl: from include/pcp/z85.h:3324 */ +/*** ./gencffi.pl: from ../../include/pcp/z85.h:166 */ char *pcp_readz85string(PCPCTX *ptx, byte *input, size_t bufsize); -/*** bindings/py/gencffi.pl: from include/pcp/z85.h:3324 */ +/*** ./gencffi.pl: from ../../include/pcp/z85.h:166 */ uint8_t is_utf8(const byte * bytes); -/*** bindings/py/gencffi.pl: from include/pcp/z85.h:3324 */ +/*** ./gencffi.pl: from ../../include/pcp/z85.h:166 */ size_t _buffer_is_binary(byte *buf, size_t len); -/*** bindings/py/gencffi.pl: from include/pcp/z85.h:3324 */ +/*** ./gencffi.pl: from ../../include/pcp/z85.h:166 */ uint8_t _parse_zchar(Buffer *z, uint8_t c, uint8_t is_comment); -/*** bindings/py/gencffi.pl: from include/pcp/z85.h:3324 */ +/*** ./gencffi.pl: from ../../include/pcp/z85.h:166 */ long int z85_header_startswith(Buffer *buf, char *what); -/*** bindings/py/gencffi.pl: from include/pcp/z85.h:3324 */ +/*** ./gencffi.pl: from ../../include/pcp/z85.h:166 */ int z85_isheader(Buffer *buf); -/*** bindings/py/gencffi.pl: from include/pcp/z85.h:3324 */ +/*** ./gencffi.pl: from ../../include/pcp/z85.h:166 */ int z85_isend(Buffer *buf); -/*** bindings/py/gencffi.pl: from include/pcp/z85.h:3324 */ +/*** ./gencffi.pl: from ../../include/pcp/z85.h:166 */ int z85_isbegin(Buffer *buf); -/*** bindings/py/gencffi.pl: from include/pcp/z85.h:3324 */ +/*** ./gencffi.pl: from ../../include/pcp/z85.h:166 */ int z85_iscomment(Buffer *buf); -/*** bindings/py/gencffi.pl: from include/pcp/z85.h:3324 */ +/*** ./gencffi.pl: from ../../include/pcp/z85.h:166 */ int z85_isempty(Buffer *line); -/*** bindings/py/gencffi.pl: from include/pcp/z85.h:3324 */ -int z85_isencoded(Buffer *line);''' +/*** ./gencffi.pl: from ../../include/pcp/z85.h:166 */ +int z85_isencoded(Buffer *line); -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +/*** ./gencffi.pl: from ../../include/pcp/zmq_z85.h:31 */ +uint8_t *zmq_z85_decode (uint8_t *dest, char *string); + +/*** ./gencffi.pl: from ../../include/pcp/zmq_z85.h:31 */ +char *zmq_z85_encode (char *dest, uint8_t *data, size_t size);''' + +# ./gencffi.pl: from ../../include/pcp/defines.h:177 PCP_ASYM_CIPHER = 5 -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 EXP_FORMAT_C = 4 -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 PCP_BLOCK_SIZE = 32 * 1024 -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 EXP_PK_HEADER = "----- BEGIN ED25519-CURVE29915 PUBLIC KEY -----" -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 EXP_SK_FOOTER = "----- END ED25519-CURVE29915 PRIVATE KEY -----" -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 PCP_ENFILE_HEADER = "----- BEGIN PCP ENCRYPTED FILE -----\r\n" -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 EXP_FORMAT_NATIVE = 1 -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 PBP_COMPAT_SALT = "qa~t](84z<1t<1oz:ik.@IRNyhG=8q(on9}4#!/_h#a7wqK{Nt$T?W>,mt8NqYq&6U,rSYI2GRDd:Bcm" -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 EXP_HASH_CIPHER = 0x22 -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 EXP_HASH_NAME = "BLAKE2" -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 EXP_SIG_SUB_NOTATION = 20 -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 EXP_SIG_CIPHER_NAME = "ED25519" -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 EXP_SIG_CIPHER = 0x23 -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 PCP_ZFILE_HEADER = "----- BEGIN Z85 ENCODED FILE -----" -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 PCP_SIG_END = "----- END ED25519 SIGNATURE -----" -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 -PCP_KEY_VERSION = 6 - - -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 EXP_PK_CIPHER = 0x21 -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 PCP_KEY_PRIMITIVE = "CURVE25519-ED25519-SALSA20-POLY1305" -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 PCP_RFC_CIPHER = 0x21 -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 PCP_ASYM_CIPHER_ANON = 6 -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 EXP_FORMAT_PERL = 6 -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 PCP_ENFILE_FOOTER = "\r\n----- END PCP ENCRYPTED FILE -----\r\n" -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 EXP_FORMAT_YAML = 3 -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 PCP_SYM_CIPHER = 23 -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 EXP_SIG_TYPE = 0x1F -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 EXP_FORMAT_PY = 5 -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 EXP_SIG_SUB_KEYFLAGS = 27 -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 EXP_SK_HEADER = "----- BEGIN ED25519-CURVE29915 PRIVATE KEY -----" -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 PCP_SIGPREFIX = "\nnacl-" -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 PCP_ME = "Pretty Curved Privacy" -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 PCP_ZFILE_FOOTER = "----- END Z85 ENCODED FILE -----" -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 EXP_SIG_SUB_SIGEXPIRE = 3 -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 PCP_ENCRYPT_MAC = 56 -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 EXP_PK_FOOTER = "----- END ED25519-CURVE29915 PUBLIC KEY -----" -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 EXP_SIG_SUB_CTIME = 2 -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 PCP_VAULT_ID = 14 -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 PCP_SIG_HEADER = "----- BEGIN ED25519 SIGNED MESSAGE -----" -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 PCP_ASYM_CIPHER_SIG = 24 -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 EXP_PK_CIPHER_NAME = "CURVE25519-ED25519-POLY1305-SALSA20" -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 EXP_FORMAT_PBP = 2 -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 -PCP_VAULT_VERSION = 2 - - -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 PCP_CRYPTO_ADD = (32 - 16) -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 EXP_SIG_SUB_KEYEXPIRE = 9 -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 -PCP_SIG_VERSION = 2 - - -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 +# ./gencffi.pl: from ../../include/pcp/defines.h:177 PCP_SIG_START = "----- BEGIN ED25519 SIGNATURE -----" - - -# bindings/py/gencffi.pl: from include/pcp/defines.h:177 -EXP_SIG_VERSION = 0x01