diff options
-rw-r--r-- | ffi/examples/armor.c | 20 | ||||
-rw-r--r-- | ffi/examples/encrypt-for.c | 45 | ||||
-rw-r--r-- | ffi/examples/example.c | 15 | ||||
-rw-r--r-- | ffi/examples/parser.c | 24 | ||||
-rw-r--r-- | ffi/examples/reader.c | 20 | ||||
-rw-r--r-- | ffi/include/sequoia/core.h | 8 | ||||
-rw-r--r-- | ffi/include/sequoia/openpgp.h | 86 | ||||
-rw-r--r-- | ffi/src/core.rs | 29 | ||||
-rw-r--r-- | ffi/src/lib.rs | 13 | ||||
-rw-r--r-- | ffi/src/openpgp/armor.rs | 69 | ||||
-rw-r--r-- | ffi/src/openpgp/crypto.rs | 7 | ||||
-rw-r--r-- | ffi/src/openpgp/mod.rs | 115 | ||||
-rw-r--r-- | ffi/src/openpgp/packet_pile.rs | 21 | ||||
-rw-r--r-- | ffi/src/openpgp/tpk.rs | 89 | ||||
-rw-r--r-- | ffi/src/openpgp/tsk.rs | 11 |
15 files changed, 195 insertions, 377 deletions
diff --git a/ffi/examples/armor.c b/ffi/examples/armor.c index a2643667..5a1b9339 100644 --- a/ffi/examples/armor.c +++ b/ffi/examples/armor.c @@ -20,7 +20,6 @@ int main (int argc, char **argv) { sq_error_t err; - sq_context_t ctx; sq_reader_t bytes; sq_reader_t armor; sq_armor_kind_t kind; @@ -28,18 +27,12 @@ main (int argc, char **argv) sq_armor_header_t *header; size_t header_len; - ctx = sq_context_new ("org.sequoia-pgp.example", &err); - if (ctx == NULL) - error (1, 0, "Initializing sequoia failed: %s", - sq_error_string (err)); - bytes = sq_reader_from_bytes ((uint8_t *) armored, strlen (armored)); armor = sq_armor_reader_new (bytes, SQ_ARMOR_KIND_ANY); - header = sq_armor_reader_headers (ctx, armor, &header_len); + header = sq_armor_reader_headers (&err, armor, &header_len); if (header == NULL) - error (1, 0, "Getting headers failed: %s", - sq_error_string (err)); + error (1, 0, "Getting headers failed: %s", sq_error_string (err)); assert (header_len == 2); assert (strcmp (header[0].key, "Key0") == 0 @@ -56,17 +49,12 @@ main (int argc, char **argv) kind = sq_armor_reader_kind (armor); assert (kind == SQ_ARMOR_KIND_FILE); - if (sq_reader_read (ctx, armor, (uint8_t *) message, 12) < 0) - { - err = sq_context_last_error (ctx); - error (1, 0, "Reading failed: %s", - sq_error_string (err)); - } + if (sq_reader_read (&err, armor, (uint8_t *) message, 12) < 0) + error (1, 0, "Reading failed: %s", sq_error_string (err)); assert (memcmp (message, "Hello world!", 12) == 0); sq_reader_free (armor); sq_reader_free (bytes); - sq_context_free (ctx); return 0; } diff --git a/ffi/examples/encrypt-for.c b/ffi/examples/encrypt-for.c index 15ff3ef6..f0c34449 100644 --- a/ffi/examples/encrypt-for.c +++ b/ffi/examples/encrypt-for.c @@ -22,7 +22,6 @@ main (int argc, char **argv) uint8_t *b; sq_status_t rc; sq_error_t err; - sq_context_t ctx; int use_armor = 1; sq_tpk_t tpk; sq_writer_t sink; @@ -33,11 +32,6 @@ main (int argc, char **argv) if (argc != 2) error (1, 0, "Usage: %s <keyfile> <plain >cipher", argv[0]); - ctx = sq_context_new ("org.sequoia-pgp.example", &err); - if (ctx == NULL) - error (1, 0, "Initializing sequoia failed: %s", - sq_error_string (err)); - if (stat (argv[1], &st)) error (1, errno, "%s", argv[1]); @@ -50,37 +44,28 @@ main (int argc, char **argv) if (b == MAP_FAILED) error (1, errno, "mmap"); - tpk = sq_tpk_from_bytes (ctx, b, st.st_size); + tpk = sq_tpk_from_bytes (&err, b, st.st_size); if (tpk == NULL) - { - err = sq_context_last_error (ctx); - error (1, 0, "sq_packet_parser_from_bytes: %s", sq_error_string (err)); - } + error (1, 0, "sq_packet_parser_from_bytes: %s", sq_error_string (err)); sink = sq_writer_alloc (&cipher, &cipher_bytes); if (use_armor) - sink = sq_armor_writer_new (ctx, sink, SQ_ARMOR_KIND_MESSAGE, + sink = sq_armor_writer_new (&err, sink, SQ_ARMOR_KIND_MESSAGE, NULL, 0); writer = sq_writer_stack_message (sink); - writer = sq_encryptor_new (ctx, + writer = sq_encryptor_new (&err, writer, NULL, 0, /* no passwords */ &tpk, 1, SQ_ENCRYPTION_MODE_FOR_TRANSPORT); if (writer == NULL) - { - err = sq_context_last_error (ctx); - error (1, 0, "sq_encryptor_new: %s", sq_error_string (err)); - } + error (1, 0, "sq_encryptor_new: %s", sq_error_string (err)); - writer = sq_literal_writer_new (ctx, writer); + writer = sq_literal_writer_new (&err, writer); if (writer == NULL) - { - err = sq_context_last_error (ctx); - error (1, 0, "sq_literal_writer_new: %s", sq_error_string (err)); - } + error (1, 0, "sq_literal_writer_new: %s", sq_error_string (err)); size_t nread; uint8_t buf[4096]; @@ -90,28 +75,22 @@ main (int argc, char **argv) while (nread) { ssize_t written; - written = sq_writer_stack_write (ctx, writer, b, nread); + written = sq_writer_stack_write (&err, writer, b, nread); if (written < 0) - { - err = sq_context_last_error (ctx); - error (1, 0, "sq_writer_stack_write: %s", sq_error_string (err)); - } + error (1, 0, "sq_writer_stack_write: %s", sq_error_string (err)); + b += written; nread -= written; } } - rc = sq_writer_stack_finalize (ctx, writer); + rc = sq_writer_stack_finalize (&err, writer); writer = NULL; if (rc) - { - err = sq_context_last_error (ctx); - error (1, 0, "sq_writer_stack_write: %s", sq_error_string (err)); - } + error (1, 0, "sq_writer_stack_write: %s", sq_error_string (err)); fwrite (cipher, 1, cipher_bytes, stdout); - sq_context_free (ctx); munmap (b, st.st_size); return 0; } diff --git a/ffi/examples/example.c b/ffi/examples/example.c index 2b4d8126..8636d011 100644 --- a/ffi/examples/example.c +++ b/ffi/examples/example.c @@ -17,17 +17,11 @@ main (int argc, char **argv) int fd; uint8_t *b; sq_error_t err; - sq_context_t ctx; sq_tpk_t tpk; if (argc != 2) error (1, 0, "Usage: %s <file>", argv[0]); - ctx = sq_context_new("org.sequoia-pgp.example", &err); - if (ctx == NULL) - error (1, 0, "Initializing sequoia failed: %s", - sq_error_string (err)); - if (stat (argv[1], &st)) error (1, errno, "%s", argv[1]); @@ -39,15 +33,12 @@ main (int argc, char **argv) if (b == MAP_FAILED) error (1, errno, "mmap"); - tpk = sq_tpk_from_bytes (ctx, b, st.st_size); + tpk = sq_tpk_from_bytes (&err, b, st.st_size); if (tpk == NULL) - { - sq_error_t err = sq_context_last_error (ctx); - error (1, 0, "sq_tpk_from_bytes: %s", sq_error_string (err)); - } + error (1, 0, "sq_tpk_from_bytes: %s", sq_error_string (err)); + sq_tpk_dump (tpk); sq_tpk_free (tpk); - sq_context_free (ctx); munmap (b, st.st_size); close (fd); return 0; diff --git a/ffi/examples/parser.c b/ffi/examples/parser.c index e26dd646..8d953422 100644 --- a/ffi/examples/parser.c +++ b/ffi/examples/parser.c @@ -22,18 +22,12 @@ main (int argc, char **argv) uint8_t *b; sq_status_t rc; sq_error_t err; - sq_context_t ctx; sq_packet_parser_result_t ppr; sq_packet_parser_t pp; if (argc != 2) error (1, 0, "Usage: %s <file>", argv[0]); - ctx = sq_context_new ("org.sequoia-pgp.example", &err); - if (ctx == NULL) - error (1, 0, "Initializing sequoia failed: %s", - sq_error_string (err)); - if (stat (argv[1], &st)) error (1, errno, "%s", argv[1]); @@ -51,7 +45,7 @@ main (int argc, char **argv) time_t elapsed; size_t tens_of_s = 0; - ppr = sq_packet_parser_from_bytes (ctx, b, st.st_size); + ppr = sq_packet_parser_from_bytes (&err, b, st.st_size); while (ppr && (pp = sq_packet_parser_result_packet_parser (ppr))) { // Get a reference to the packet that is currently being parsed. @@ -64,13 +58,10 @@ main (int argc, char **argv) // Finish parsing the current packet (returned in p), and read // the header of the next packet (returned in ppr). - rc = sq_packet_parser_next (ctx, pp, &p, &ppr); + rc = sq_packet_parser_next (&err, pp, &p, &ppr); if (rc) - { - err = sq_context_last_error (ctx); - error (1, 0, "sq_packet_parser_from_bytes: %s", - sq_error_string (err)); - } + error (1, 0, "sq_packet_parser_from_bytes: %s", + sq_error_string (err)); // We now own p. If we want, we can save it in some structure. // This would be useful when collecting PKESK packets. Either @@ -91,17 +82,12 @@ main (int argc, char **argv) } } if (ppr == NULL) - { - err = sq_context_last_error (ctx); - error (1, 0, "sq_packet_parser_from_bytes: %s", sq_error_string (err)); - } + error (1, 0, "sq_packet_parser_from_bytes: %s", sq_error_string (err)); fprintf (stderr, "Parsed %ld packets in %ld seconds, %.2f packets/s.\n", n, elapsed, (double) n / (double) elapsed); sq_packet_parser_result_free (ppr); - - sq_context_free (ctx); munmap (b, st.st_size); return 0; } diff --git a/ffi/examples/reader.c b/ffi/examples/reader.c index 1587979b..8e458620 100644 --- a/ffi/examples/reader.c +++ b/ffi/examples/reader.c @@ -17,18 +17,12 @@ main (int argc, char **argv) int fd; uint8_t *b; sq_error_t err; - sq_context_t ctx; sq_reader_t reader; sq_tpk_t tpk; if (argc != 2) error (1, 0, "Usage: %s <file>", argv[0]); - ctx = sq_context_new("org.sequoia-pgp.example", &err); - if (ctx == NULL) - error (1, 0, "Initializing sequoia failed: %s", - sq_error_string (err)); - if (stat (argv[1], &st)) error (1, errno, "%s", argv[1]); @@ -41,23 +35,13 @@ main (int argc, char **argv) error (1, errno, "mmap"); reader = sq_reader_from_bytes (b, st.st_size); - if (reader == NULL) - { - sq_error_t err = sq_context_last_error (ctx); - error (1, 0, "sq_reader_from_bytes: %s", sq_error_string (err)); - } - - tpk = sq_tpk_from_reader (ctx, reader); + tpk = sq_tpk_from_reader (&err, reader); if (tpk == NULL) - { - sq_error_t err = sq_context_last_error (ctx); - error (1, 0, "sq_tpk_from_reader: %s", sq_error_string (err)); - } + error (1, 0, "sq_tpk_from_reader: %s", sq_error_string (err)); sq_tpk_dump (tpk); sq_tpk_free (tpk); sq_reader_free (reader); - sq_context_free (ctx); munmap (b, st.st_size); close (fd); return 0; diff --git a/ffi/include/sequoia/core.h b/ffi/include/sequoia/core.h index 829d7104..9d7d261b 100644 --- a/ffi/include/sequoia/core.h +++ b/ffi/include/sequoia/core.h @@ -229,7 +229,7 @@ typedef struct sq_reader *sq_reader_t; /*/ /// Opens a file returning a reader. /*/ -sq_reader_t sq_reader_from_file (sq_context_t ctx, const char *filename); +sq_reader_t sq_reader_from_file (sq_error_t *errp, const char *filename); /*/ /// Opens a file descriptor returning a reader. @@ -249,7 +249,7 @@ void sq_reader_free (sq_reader_t reader); /*/ /// Reads up to `len` bytes into `buf`. /*/ -ssize_t sq_reader_read (sq_context_t ctx, sq_reader_t reader, +ssize_t sq_reader_read (sq_error_t *errp, sq_reader_t reader, uint8_t *buf, size_t len); /*/ @@ -263,7 +263,7 @@ typedef struct sq_writer *sq_writer_t; /// The file will be created if it does not exist, or be truncated /// otherwise. If you need more control, use `sq_writer_from_fd`. /*/ -sq_writer_t sq_writer_from_file (sq_context_t ctx, const char *filename); +sq_writer_t sq_writer_from_file (sq_error_t *errp, const char *filename); /*/ /// Opens a file descriptor returning a writer. @@ -295,7 +295,7 @@ void sq_writer_free (sq_writer_t writer); /*/ /// Writes up to `len` bytes of `buf` into `writer`. /*/ -ssize_t sq_writer_write (sq_context_t ctx, sq_writer_t writer, +ssize_t sq_writer_write (sq_error_t *errp, sq_writer_t writer, const uint8_t *buf, size_t len); #endif diff --git a/ffi/include/sequoia/openpgp.h b/ffi/include/sequoia/openpgp.h index 6fe71f6b..2632a58a 100644 --- a/ffi/include/sequoia/openpgp.h +++ b/ffi/include/sequoia/openpgp.h @@ -257,7 +257,7 @@ sq_reader_t sq_armor_reader_new (sq_reader_t inner, sq_armor_kind_t kind); /*/ /// Creates a `Reader` from a file. /*/ -sq_reader_t sq_armor_reader_from_file (sq_context_t ctx, +sq_reader_t sq_armor_reader_from_file (sq_error_t *errp, const char *filename, sq_armor_kind_t kind); @@ -290,7 +290,7 @@ sq_armor_kind_t sq_armor_reader_kind (sq_reader_t reader); /// allocated with `malloc`, and the caller is responsible for freeing /// both the array and the strings. /*/ -sq_armor_header_t *sq_armor_reader_headers (sq_context_t ctx, +sq_armor_header_t *sq_armor_reader_headers (sq_error_t *errp, sq_reader_t reader, size_t *len); @@ -300,7 +300,7 @@ sq_armor_header_t *sq_armor_reader_headers (sq_context_t ctx, /// /// A filter that applies ASCII Armor to the data written to it. /*/ -sq_writer_t sq_armor_writer_new (sq_context_t ctx, sq_writer_t inner, +sq_writer_t sq_armor_writer_new (sq_error_t *errp, sq_writer_t inner, sq_armor_kind_t kind, sq_armor_header_t *header, size_t header_len); @@ -498,7 +498,7 @@ typedef struct sq_packet_pile *sq_packet_pile_t; /// /// Note: this interface *does* buffer the contents of packets. /*/ -sq_packet_pile_t sq_packet_pile_from_reader (sq_context_t ctx, +sq_packet_pile_t sq_packet_pile_from_reader (sq_error_t *errp, sq_reader_t reader); /*/ @@ -507,7 +507,7 @@ sq_packet_pile_t sq_packet_pile_from_reader (sq_context_t ctx, /// /// See `sq_packet_pile_from_reader` for more details and caveats. /*/ -sq_packet_pile_t sq_packet_pile_from_file (sq_context_t ctx, +sq_packet_pile_t sq_packet_pile_from_file (sq_error_t *errp, const char *filename); /*/ @@ -515,7 +515,7 @@ sq_packet_pile_t sq_packet_pile_from_file (sq_context_t ctx, /// /// See `sq_packet_pile_from_reader` for more details and caveats. /*/ -sq_packet_pile_t sq_packet_pile_from_bytes (sq_context_t ctx, +sq_packet_pile_t sq_packet_pile_from_bytes (sq_error_t *errp, const uint8_t *b, size_t len); /*/ @@ -531,7 +531,7 @@ sq_packet_pile_t sq_packet_pile_clone (sq_packet_pile_t message); /*/ /// Serializes the packet pile. /*/ -sq_status_t sq_packet_pile_serialize (sq_context_t ctx, +sq_status_t sq_packet_pile_serialize (sq_error_t *errp, const sq_packet_pile_t message, sq_writer_t writer); @@ -647,7 +647,7 @@ sq_keyid_t sq_pkesk_recipient(sq_pkesk_t pkesk); /// is not written to it. Either way, `key_len` is set to the size of /// the session key. /*/ -sq_status_t sq_pkesk_decrypt (sq_context_t ctx, sq_pkesk_t pkesk, +sq_status_t sq_pkesk_decrypt (sq_error_t *errp, sq_pkesk_t pkesk, sq_p_key_t secret_key, uint8_t *algo, /* XXX */ uint8_t *key, size_t *key_len); @@ -774,13 +774,13 @@ typedef struct sq_tsk *sq_tsk_t; /*/ /// Returns the first TPK encountered in the reader. /*/ -sq_tpk_t sq_tpk_from_reader (sq_context_t ctx, +sq_tpk_t sq_tpk_from_reader (sq_error_t *errp, sq_reader_t reader); /*/ /// Returns the first TPK encountered in the file. /*/ -sq_tpk_t sq_tpk_from_file (sq_context_t ctx, +sq_tpk_t sq_tpk_from_file (sq_error_t *errp, const char *filename); /*/ @@ -788,7 +788,7 @@ sq_tpk_t sq_tpk_from_file (sq_context_t ctx, /// /// Consumes `m`. /*/ -sq_tpk_t sq_tpk_from_packet_pile (sq_context_t ctx, +sq_tpk_t sq_tpk_from_packet_pile (sq_error_t *errp, sq_packet_pile_t m); /*/ @@ -796,7 +796,7 @@ sq_tpk_t sq_tpk_from_packet_pile (sq_context_t ctx, /// /// `buf` must be an OpenPGP-encoded TPK. /*/ -sq_tpk_t sq_tpk_from_bytes (sq_context_t ctx, +sq_tpk_t sq_tpk_from_bytes (sq_error_t *errp, const uint8_t *b, size_t len); /*/ @@ -804,7 +804,7 @@ sq_tpk_t sq_tpk_from_bytes (sq_context_t ctx, /// /// Consumes the packet parser result. /*/ -sq_tpk_t sq_tpk_from_packet_parser (sq_context_t ctx, +sq_tpk_t sq_tpk_from_packet_parser (sq_error_t *errp, sq_packet_parser_result_t ppr); /*/ @@ -825,7 +825,7 @@ int sq_tpk_equal (const sq_tpk_t a, const sq_tpk_t b); /*/ /// Serializes the TPK. /*/ -sq_status_t sq_tpk_serialize (sq_context_t ctx, +sq_status_t sq_tpk_serialize (sq_error_t *errp, const sq_tpk_t tpk, sq_writer_t writer); @@ -837,7 +837,7 @@ sq_status_t sq_tpk_serialize (sq_context_t ctx, /// /// Consumes `tpk` and `other`. /*/ -sq_tpk_t sq_tpk_merge (sq_context_t ctx, +sq_tpk_t sq_tpk_merge (sq_error_t *errp, sq_tpk_t tpk, sq_tpk_t other); @@ -850,7 +850,7 @@ sq_tpk_t sq_tpk_merge (sq_context_t ctx, /// Consumes `tpk` and the packets in `packets`. The buffer, however, /// must be freed by the caller. /*/ -sq_tpk_t sq_tpk_merge_packets (sq_context_t ctx, +sq_tpk_t sq_tpk_merge_packets (sq_error_t *errp, sq_tpk_t tpk, sq_packet_t *packets, size_t packets_len); @@ -893,7 +893,7 @@ sq_revocation_status_t sq_tpk_revocation_status (sq_tpk_t tpk); /// /// This function consumes the writer. It does *not* consume tpk. /*/ -sq_signature_t sq_tpk_revoke (sq_context_t ctx, +sq_signature_t sq_tpk_revoke (sq_error_t *errp, sq_tpk_t tpk, sq_signer_t primary_signer, sq_reason_for_revocation_t code, @@ -904,7 +904,7 @@ sq_signature_t sq_tpk_revoke (sq_context_t ctx, /// /// This function consumes the tpk. /*/ -sq_tpk_t sq_tpk_revoke_in_place (sq_context_t ctx, +sq_tpk_t sq_tpk_revoke_in_place (sq_error_t *errp, sq_tpk_t tpk, sq_signer_t primary_signer, sq_reason_for_revocation_t code, @@ -938,7 +938,7 @@ int sq_tpk_alive_at(sq_tpk_t tpk, time_t at); /// /// This function consumes `tpk` and returns a new `TPK`. /*/ -sq_tpk_t sq_tpk_set_expiry(sq_context_t ctx, +sq_tpk_t sq_tpk_set_expiry(sq_error_t *errp, sq_tpk_t tpk, uint32_t expiry); @@ -1033,7 +1033,7 @@ void sq_tpk_builder_add_certification_subkey(sq_tpk_builder_t *tpkb); /// /// Consumes `tpkb`. /*/ -sq_tpk_t sq_tpk_builder_generate(sq_context_t ctx, sq_tpk_builder_t tpkb, +sq_tpk_t sq_tpk_builder_generate(sq_error_t *errp, sq_tpk_builder_t tpkb, sq_tpk_t *tpk, sq_signature_t *revocation); @@ -1042,7 +1042,7 @@ sq_tpk_t sq_tpk_builder_generate(sq_context_t ctx, sq_tpk_builder_t tpkb, /*/ /// Generates a new RSA 3072 bit key with UID `primary_uid`. /*/ -sq_status_t sq_tsk_new (sq_context_t ctx, char *primary_uid, +sq_status_t sq_tsk_new (sq_error_t *errp, char *primary_uid, sq_tsk_t *tpk, sq_signature_t *revocation); /*/ @@ -1063,7 +1063,7 @@ sq_tpk_t sq_tsk_into_tpk (sq_tsk_t tsk); /*/ /// Serializes the TSK. /*/ -sq_status_t sq_tsk_serialize (sq_context_t ctx, +sq_status_t sq_tsk_serialize (sq_error_t *errp, const sq_tsk_t tsk, sq_writer_t writer); @@ -1188,7 +1188,7 @@ int sq_p_key_public_key_bits(sq_p_key_t key); /// /// Fails if the secret key is missing, or encrypted. /*/ -sq_key_pair_t sq_p_key_into_key_pair (sq_context_t ctx, sq_p_key_t key); +sq_key_pair_t sq_p_key_into_key_pair (sq_error_t *errp, sq_p_key_t key); /*/ /// Returns the value of the User ID Packet. @@ -1216,7 +1216,7 @@ const uint8_t *sq_user_attribute_value (sq_user_attribute_t ua, /// is not written to it. Either way, `key_len` is set to the size of /// the session key. /*/ -sq_status_t sq_skesk_decrypt (sq_context_t ctx, sq_skesk_t skesk, +sq_status_t sq_skesk_decrypt (sq_error_t *errp, sq_skesk_t skesk, const uint8_t *password, size_t password_len, uint8_t *algo, /* XXX */ uint8_t *key, size_t *key_len); @@ -1231,19 +1231,19 @@ uint32_t sq_p_key_creation_time (sq_p_key_t p); /*/ /// Starts parsing an OpenPGP message stored in a `sq_reader_t` object. /*/ -sq_packet_parser_result_t sq_packet_parser_from_reader (sq_context_t ctx, +sq_packet_parser_result_t sq_packet_parser_from_reader (sq_error_t *errp, sq_reader_t reader); /*/ /// Starts parsing an OpenPGP message stored in a file named `path`. /*/ -sq_packet_parser_result_t sq_packet_parser_from_file (sq_context_t ctx, +sq_packet_parser_result_t sq_packet_parser_from_file (sq_error_t *errp, const char *filename); /*/ /// Starts parsing an OpenPGP message stored in a buffer. /*/ -sq_packet_parser_result_t sq_packet_parser_from_bytes (sq_context_t ctx, +sq_packet_parser_result_t sq_packet_parser_from_bytes (sq_error_t *errp, const uint8_t *b, size_t len); @@ -1392,7 +1392,7 @@ uint8_t sq_packet_parser_recursion_depth (sq_packet_parser_t pp); /// /// Consumes the given packet parser. /*/ -sq_status_t sq_packet_parser_next (sq_context_t ctx, +sq_status_t sq_packet_parser_next (sq_error_t *errp, sq_packet_parser_t pp, sq_packet_t *old_packet, sq_packet_parser_result_t *ppr); @@ -1419,7 +1419,7 @@ sq_status_t sq_packet_parser_next (sq_context_t ctx, /// /// Consumes the given packet parser. /*/ -sq_status_t sq_packet_parser_recurse (sq_context_t ctx, +sq_status_t sq_packet_parser_recurse (sq_error_t *errp, sq_packet_parser_t pp, sq_packet_t *old_packet, sq_packet_parser_result_t *ppr); @@ -1432,7 +1432,7 @@ sq_status_t sq_packet_parser_recurse (sq_context_t ctx, /// prefer streaming its content unless you are certain that the /// content is small. /*/ -uint8_t *sq_packet_parser_buffer_unread_content (sq_context_t ctx, +uint8_t *sq_packet_parser_buffer_unread_content (sq_error_t *errp, sq_packet_parser_t pp, size_t *len); @@ -1442,7 +1442,7 @@ uint8_t *sq_packet_parser_buffer_unread_content (sq_context_t ctx, /// By default, this drops any unread content. Use, for instance, /// `PacketParserBuild` to customize the default behavior. /*/ -sq_status_t sq_packet_parser_finish (sq_context_t ctx, +sq_status_t sq_packet_parser_finish (sq_error_t *errp, sq_packet_parser_t pp, sq_packet_t **packet); @@ -1457,7 +1457,7 @@ sq_status_t sq_packet_parser_finish (sq_context_t ctx, /// encrypted data, or some of the data was already read, then it /// returns `Error::InvalidOperation`. /*/ -sq_status_t sq_packet_parser_decrypt (sq_context_t ctx, +sq_status_t sq_packet_parser_decrypt (sq_error_t *errp, sq_packet_parser_t pp, uint8_t algo, /* XXX */ uint8_t *key, size_t key_len); @@ -1472,7 +1472,7 @@ sq_writer_stack_t sq_writer_stack_message (sq_writer_t writer); /*/ /// Writes up to `len` bytes of `buf` into `writer`. /*/ -ssize_t sq_writer_stack_write (sq_context_t ctx, sq_writer_stack_t writer, +ssize_t sq_writer_stack_write (sq_error_t *errp, sq_writer_stack_t writer, const uint8_t *buf, size_t len); /*/ @@ -1482,20 +1482,20 @@ ssize_t sq_writer_stack_write (sq_context_t ctx, sq_writer_stack_t writer, /// buffer will be written. Also, this version automatically catches /// EINTR. /*/ -sq_status_t sq_writer_stack_write_all (sq_context_t ctx, +sq_status_t sq_writer_stack_write_all (sq_error_t *errp, sq_writer_stack_t writer, const uint8_t *buf, size_t len); /*/ /// Finalizes this writer, returning the underlying writer. /*/ -sq_writer_stack_t sq_writer_stack_finalize_one (sq_context_t ctx, +sq_writer_stack_t sq_writer_stack_finalize_one (sq_error_t *errp, sq_writer_stack_t writer); /*/ /// Finalizes all writers, tearing down the whole stack. /*/ -sq_status_t sq_writer_stack_finalize (sq_context_t ctx, +sq_status_t sq_writer_stack_finalize (sq_error_t *errp, sq_writer_stack_t writer); /*/ @@ -1505,7 +1505,7 @@ sq_status_t sq_writer_stack_finalize (sq_context_t ctx, /// The body will be written using partial length encoding, or, if the /// body is short, using full length encoding. /*/ -sq_writer_stack_t sq_arbitrary_writer_new (sq_context_t ctx, +sq_writer_stack_t sq_arbitrary_writer_new (sq_error_t *errp, sq_writer_stack_t inner, sq_tag_t tag); @@ -1516,14 +1516,14 @@ sq_writer_stack_t sq_arbitrary_writer_new (sq_context_t ctx, /// packet, then hashes and emits the data stream, then for every key /// writes a signature packet. /*/ -sq_writer_stack_t sq_signer_new (sq_context_t ctx, +sq_writer_stack_t sq_signer_new (sq_error_t *errp, sq_writer_stack_t inner, sq_tpk_t *signers, size_t signers_len); /*/ /// Creates a signer for a detached signature. /*/ -sq_writer_stack_t sq_signer_new_detached (sq_context_t ctx, +sq_writer_stack_t sq_signer_new_detached (sq_error_t *errp, sq_writer_stack_t inner, sq_tpk_t *signers, size_t signers_len); @@ -1534,7 +1534,7 @@ sq_writer_stack_t sq_signer_new_detached (sq_context_t ctx, /// The body will be written using partial length encoding, or, if the /// body is short, using full length encoding. /*/ -sq_writer_stack_t sq_literal_writer_new (sq_context_t ctx,< |