Граф коммитов

145 Коммитов

Автор SHA1 Сообщение Дата
Andrew Jeffery 92a10a5833
Clarify store docs on index and add link to strategy (#4260) 2022-09-27 09:22:00 +00:00
Julien Maffre 3f92e4c38e
Use HTTP enclave client to fetch SEV SNP endorsement certificates (#4226) 2022-09-22 15:34:07 +01:00
Eddy Ashton 8a3ef13ae9
Move ownership of Tx to `unique_ptr`, and demonstrate extending ownership in `external_executor` (#4218) 2022-09-22 11:24:39 +01:00
Eddy Ashton c3695837a6
Fix warnings in docs build (#4241) 2022-09-15 14:31:21 +00:00
Eddy Ashton 869da22467
Refactor frontend to remove return-based response, and retry endpoint lookup on conflict (#4205) 2022-09-09 10:46:06 +00:00
Andrea Piccione a88cfdf868
Expose HMAC through the Public C++ Crypto API (#4204) 2022-09-08 20:42:48 +00:00
Julien Maffre 5318885490
Add basic gRPC support to external executor app (#4183) 2022-09-05 11:32:13 +01:00
Heidi Howard c95f447230
Removing a line break from map_handle.h (#4192) 2022-09-02 15:15:51 +01:00
Eddy Ashton 23f3d1cb40
Add support for setting HTTP/2 trailing headers (#4179) 2022-08-31 10:46:57 +01:00
Amaury Chamayou 6af2cb9e45
Add read_only_adapter_v3 (#4162) 2022-08-24 10:29:19 +01:00
Mahati Chamarthy dcac6d6c82
Remove hardcoded prefix `/app` for application endpoints (#4147)
* Remove hardcoded prefix `/app` for application endpoint

This change will allow applications to use endpoints as defined when creating them i.e. an endpoint created at `/log/private`
will be available `/log/private` without the additional prefix of `/app/`. The reference openapi schema now reflects this change.

This change will also allow existing applications to continue using and calling with `/app/` prefix as well.

* Refactor code and modify doc
2022-08-23 16:43:35 +01:00
Eddy Ashton 04e7e52c06
Permanently delete items from the KV (#4145) 2022-08-23 10:03:49 +01:00
Dominic Ayre 79dc84556c
Support SEV-SNP attestation in CCF (#4106) 2022-08-19 14:16:27 +01:00
Dominic Ayre 2595b521ae
Refactor PAL into a namespace with separate header files (#4148) 2022-08-18 13:16:28 +01:00
Christoph M. Wintersteiger a828a4d31c
Add facilities for custom ACME challenges (#4115) 2022-08-17 17:13:16 +00:00
Christoph M. Wintersteiger 14727d0191
Expose node config subsystem interface (#4118) 2022-08-17 16:30:39 +00:00
Eddy Ashton dafcd67024
Mitigations for potential stale reads from Legacy xAPIC (#4127) 2022-08-16 16:46:47 +00:00
Amaury Chamayou 5285c12a16
Upgrade fmtlib from 8.1.1 to 9.0.0 (#4122) 2022-08-15 14:01:53 +00:00
Mahati Chamarthy 856df5be72
Add a method that decodes path parameters (#4126) 2022-08-15 13:21:53 +00:00
Eddy Ashton 33b9f4c9fe
Re-execute auth policies on conflict (#4102) 2022-08-11 16:45:01 +01:00
Julien Maffre 4bb77b4ce0
Move attestation report generation/verification to `Pal` (#4083) 2022-08-09 20:19:08 +00:00
Mahati Chamarthy 88d3e83faa
Populate all error details on authentication failure (#4093)
When an application is configured with multiple auth options,
respond with auth specific error details on failure.

Co-authored-by: Mahati Chamarthy <mchamarthy@microsoft.com>
2022-08-08 15:21:22 +01:00
Christoph M. Wintersteiger 03955ecd67
Add missing header includes (#4104) 2022-08-05 15:09:12 +01:00
Eddy Ashton 6b04017f85
Add mutex locks to sample indexing strategies (#4075) 2022-07-31 09:59:02 +00:00
Amaury Chamayou dfe98cbf16
Safe node removal (#4008) 2022-07-28 13:06:21 +01:00
Istvan Haller 5dcb7567d3
Created CCF PAL (#4050) 2022-07-22 15:12:56 +01:00
SeongTae Jeong e9566fa19d
<docs>[kvStoreAPI]: correct the comments in WriteOnlyHandle (#4059)
Reference: https://github.com/microsoft/CCF/issues/4055 (#4055)
2022-07-22 08:28:33 +00:00
Christoph M. Wintersteiger 6d53029c93
Include missing header (#4058) 2022-07-21 17:55:27 +01:00
Istvan Haller 26aa7fca19
Improved compatibility for clang-12 and clang-13 (#4054) 2022-07-20 18:35:00 +01:00
Eddy Ashton 28d71b666b
Deprecate old logging macros from application code (#4039) 2022-07-15 17:01:00 +01:00
Eddy Ashton a4244022b8
Add support for tagged loggers and app-specific logging macros (#4024) 2022-07-15 09:16:26 +01:00
Julien Maffre 8a41971203
Add experimental support for HTTP/2 (#4010) 2022-07-14 14:37:10 +00:00
Julien Maffre 413ee9fe11
Add arbitrary service data (#3997) 2022-06-30 10:51:40 +00:00
Julien Maffre 7b2309047e
Report `TxID` at which current service was created (#3996) 2022-06-30 09:00:19 +01:00
Julien Maffre 79bb99b676
Track number of service recoveries (#3982) 2022-06-28 20:23:27 +01:00
Christoph M. Wintersteiger 6d7f2a5aad
Allow regex to specify endpoints to serve on an interface (#3970) 2022-06-24 15:21:28 +01:00
Eddy Ashton 7a8e3b01ad
Use custom mutex implementation on SGX (#3978) 2022-06-24 14:00:54 +01:00
Julien Maffre f3afd63a11
Restrict maximum size of client HTTP request (#3941) 2022-06-23 19:43:49 +01:00
Christoph M. Wintersteiger bd378bef0e
ACME challenge frontend (#3945) 2022-06-21 18:03:29 +00:00
Amaury Chamayou 3a11c9b1b4
Do not append an unnecessary line return when using Json logging (#3946) 2022-06-21 09:12:08 +00:00
Eddy Ashton 6e899f31f8
Describe forwarding behaviour in generated OpenAPI (#3935) 2022-06-20 19:26:52 +01:00
Christoph M. Wintersteiger c734789723
Add ACME client for globally endorsed TLS certificates (#3877)
Co-authored-by: Amaury Chamayou <amaury@xargs.fr>
Co-authored-by: Maik Riechert <maik.riechert@arcor.de>
2022-06-15 17:06:32 +00:00
Eddy Ashton 265ee5b85f
Ensure `crypto::Pem`s contain PEM encoded contents (#3918) 2022-06-14 15:24:56 +01:00
Eddy Ashton e4362abb02
Remove ExecuteOutsideConsensus type (#3891) 2022-05-25 16:35:48 +01:00
Eddy Ashton 722c8f971e
Remove null byte from PEM files (#3885) 2022-05-25 15:28:11 +01:00
Amaury Chamayou debbc049e6
Remove set_execute_outside_consensus (#3886) 2022-05-25 08:56:39 +00:00
Eddy Ashton 36de81af48
Describe indexing strategies in docs (#3832) 2022-05-11 17:33:30 +01:00
Renato Golin 92fb195692
UDP enclave echo server (#3787)
* UDP enclave echo server

This is an end-to-end UDP echo server, which receives UDP packets from
multiple clients at the same time, passes them to the enclave with a
message type that is handled by a QUICEchoEndpoint (which just echoes
back the messages to the client) and send the message back through the
ring buffer to the host, which then send to the correct client.

The UDP packets, alongside their socket addresses, are passed to the
enclave as quic_inbound rung buffer messages and received back as
quic_outbound messages. For now, those are encoded as {long,long} to
avoid size issues in the serialization, but eventually, they'll be
broken down to their components {short,char[14]}.

UDP interfaces are created like their TCP counterparts, via a new
field in RPCInterface called 'protocol', with default to "tcp". If
the field is set to "udp", the host will listen on the UDP version
of RPCConnection and use the 'quic_*' messages, which connects to the
new QUICEchoEndpoint.

Also:
 * Renaming "service" to "port"
 * Refactoring TCPBehaviour into SocketBehaviour<ConnType>
 * Factor next_id out to share amongst all RPC connections
 * Use local ConnID in rpc_connections, same as tcp/udp
 * Factor some common logic into socket.h
 * Factor pending writes/reads into ds/pending_io.h

Issues:
 * There is an implicit 'quic_start' message but not a 'quic_close' one,
   which can be a problem for many connections, over time. It's not
   clear to me yet that this will create leaks / mismatches, but we have
   to make sure it doesn't on the next step.
 * The current RPCConnections is parametrized by TCPImpl/UDPImpl, which
   is handy for now but creates the implicit structural dependency
   between the two parameters. We need a common interface to derive
   from, so that the two structures can actually be checked at compile
   time.
 * To implement the step above, we need to fix 'proxy_ptr' and
   'close_ptr' to allow pointer checks (virtual inheritance). I tried
   implementing that first but it creates ripples throughout the code.
   We may never fix this, but then things like the auto-increment will
   have to continue being external, amongst other things.

Next Steps:

 1. To implement all services through unencrypted UDP, just like TCP, so
    we can test the longecity and stability of the UDP channel. We can
    ignore all TLS errors, and just make sure requests and responses are
    passed to the right services and back to the right clients. This
    will also need a UDP client, so that nodes can RPC each other in
    UDP.

 2. To implement QUICEndpoint using ngtcp2 and HTTP3Endpoint using nghttp3
    and test using proper TLS certificates and make sure the services are
    still available in the same way.

* Unnecessary uv dependency in quic_endpoint

* Increasing number of doxygen graph nodes

* Simplify UDP echo test

* Remove unnecessary FIXME workaround

* if constexpr isTCP/isUDP

* Fix sockaddr encoding to {short,char[14]}

* Testing multiple UDP messages
2022-05-10 16:48:33 +00:00
Julien Maffre e165709e2a
Re-enable joining from old snapshot test (#3573) 2022-05-04 15:02:46 +00:00
Eddy Ashton 8e0b2c91cf
Restore public `ccf::Receipt` type (#3793) 2022-04-29 12:03:22 +00:00