Skip to content

Releases: microsoft/CCF

ccf-0.19.2

18 Mar 18:55
9ec3033
Compare
Choose a tag to compare

Added

  • New get_user_data_v1 and get_member_data_v1 C++ API calls have been added to retrieve the data associated with users/members. The user/member data is no longer included in the AuthnIdentity caller struct (#2301).
  • New get_user_cert_v1 and get_member_cert_v1 C++ API calls have been added to retrieve the PEM certificate of the users/members. The user/member certificate is no longer included in the AuthnIdentity caller struct (#2301).

Changed

  • String values in query parameters no longer need to be quoted. For instance, you should now call /network/nodes?host=127.0.0.1 rather than /network/nodes?host="127.0.0.1" (#2309).
  • Schema documentation for query parameters should now be added with add_query_parameter, rather than set_auto_schema. The In type of set_auto_schema should only be used to describe the request body (#2309).
  • json_adapter will no longer try to convert query parameters to a JSON object. The JSON passed as an argument to these handlers will now be populated only by the request body. The query string should be parsed separately, and http::parse_query(s) is added as a starting point. This means strings in query parameters no longer need to be quoted (#2309).
  • Enum values returned by built-in REST API endpoints are now PascalCase. Lua governance scripts that use enum values need to be updated as well, for example, "ACTIVE" becomes "Active" for member info. The same applies when using the /gov/query endpoint (#2152).
  • Most service tables (e.g. for nodes and signatures) are now serialised as JSON instead of msgpack. Some tables (e.g. user and member certificates) are serialised as raw bytes for performance reasons (#2301).
  • The users and members tables have been split into public:ccf.gov.users.certs/public:ccf.gov.users.info and public:ccf.gov.members.certs/public:ccf.gov.members.encryption_public_keys/public:ccf.gov.members.info respectively (#2301).

ccf-0.19.1

15 Mar 19:05
6b6e637
Compare
Choose a tag to compare

Added

  • Historical point query support has been added to JavaScript endpoints (#2285).
  • RSA key generation JavaScript endpoint (#2293).

Changed

  • "readonly" has been replaced by "mode" in app.json in JavaScript apps (#2285).

ccf-0.19.0

11 Mar 12:37
999d4a2
Compare
Choose a tag to compare

Changed

  • x-ccf-tx-view and x-ccf-tx-seqno response headers have been removed, and replaced with x-ms-ccf-transaction-id. This includes both original fields, separated by a single .. Historical queries using ccf::historical::adapter should also pass a single combined x-ms-ccf-transaction-id header (#2257).
  • Node unique identifier is now the hex-encoded string of the SHA-256 digest of the node's DER-encoded identity public key, which is also used as the node's quote report data. The sandbox.sh script still uses incrementing IDs to keep track of nodes and for their respective directories (#2241).
  • Members and users unique identifier is now the hex-encoded string of the SHA-256 digest of their DER-encoded identity certificate (i.e. fingerprint), which has to be specified as the keyId field for signed HTTP requests (#2279).
  • The receipt interface has changed, /app/receipt?commit=23 is replaced by /app/receipt?transaction_id=2.23. Receipt fetching is now implemented as a historical query, which means that the first reponse(s) may be 202 with a Retry-After header. Receipts are now structured JSON, as opposed to a flat byte sequence, and /app/receipt/verify has been removed in favour of an offline verification sample.
  • ccfapp::get_rpc_handler() now takes a reference to a ccf::AbstractNodeContext rather than ccf::AbstractNodeState. The node state can be obtained from the context via get_node_state().

Removed

  • get_receipt_for_seqno_v1 has been removed. Handlers wanting to return receipts must now use the historical API, and can obtain a receipt via ccf::historical::StatePtr. See the historical query with receipt sample for reference.
  • caller_id endpoint has been removed. Members and users can now compute their unique identifier without interacting with CCF (#2279).
  • public:ccf.internal.members.certs_der, public:ccf.internal.users.certs_der, public:ccf.internal.members.digests and public:ccf.internal.users.digests KV tables have been removed (#2279).
  • view_change_in_progress field in network/status response has been removed (#2288).

ccf-0.18.5

02 Mar 10:27
0af7653
Compare
Choose a tag to compare

Changed

  • Historical query system now supports range queries, see API documentation for details.

ccf-0.18.4

01 Mar 14:49
d6e05a5
Compare
Choose a tag to compare

Changed

  • Governance proposals can be submitted successfully against secondaries (#2247)
  • set_ca_cert/remove_ca_cert proposals have been renamed set_ca_cert_bundle/remove_ca_cert_bundle and now also accept a bundle of certificates encoded as concatenated PEM string (#2221).

ccf-0.18.3

28 Feb 17:46
e7b3a41
Compare
Choose a tag to compare

Changed

  • Fixed format of notBefore and notAfter in node and network certificates (#2243).
  • CCF now depends on Open Enclave 0.14.

ccf-0.18.2

19 Feb 16:54
96edbc9
Compare
Choose a tag to compare

Added

  • Support for historical queries after ledger rekey and service recovery (#2200).

Changed

  • CCF now supports OpenSSL for many crypto tasks like hashing, signing, and signature verification (#2123).
  • In progress ledger files no longer cause a node to crash when they are committed (#2209).

ccf-0.18.1

09 Feb 18:58
a3b8366
Compare
Choose a tag to compare

Changed

  • "id" field in state endpoint response has been renamed to "node_id" (#2150).
  • user_id endpoint is renamed caller_id (#2142).
  • Nodes' quotes format updated to Open Enclave's SGX_ECDSA. Quote endorsements are also stored in CCF and can be retrieved via the quotes/self and quotes endpoints (#2161).
  • get_quote_for_this_node_v1() takes a QuoteInfo structure (containing the format, raw quote and corresponding endorsements) as out parameter instead of the distinct format and raw quote as two out paramters (#2161).
  • Several internal tables are renamed (#2166).
  • /node/network/nodes correctly returns all nodes if no filter is specified (#2188).

ccf-0.18.0

03 Feb 20:37
8962dc4
Compare
Choose a tag to compare

Changed

  • endpoint_metrics is renamed api/metrics and now returns an array of objects instead of nested path/method objects (#2068).
  • Governance proposal ids are now digests of the proposal and store state observed during their creation, hex-encoded as strings. This makes votes entirely specific to an instance of a proposal without having to include a nonce. (#2104, #2135).
  • quote endpoint has been renamed to quotes/self (#2149).
  • TxViews have been renamed to MapHandles, to clearly distinguish them from consensus views. Calls to tx.get_view must be replaced with tx.rw.
  • tx.rw does not support retrieving multiple views in a single call. Instead of auto [view1, view2] = tx.get_view(map1, map2);, you must write auto handle1 = tx.rw(map1); auto handle2 = tx.rw(map2);.

Added

  • Added get_version_of_previous_write(const K& k) to MapHandle. If this entry was written to by a previous transaction, this returns the version at which that transaction was applied. See docs for more details.

Removed

  • The x-ccf-global-commit header is no longer sent with responses (#1586, #2144). This was a hint of global commit progress, but was known to be imprecise and unrelated to the executed transaction. Instead, clients should call /commit to monitor commit progress or /tx for a specific transaction.

ccf-0.17.2

26 Jan 17:49
Compare
Choose a tag to compare

Fixed

  • Fixed incorrect ledger chunking on backup nodes when snapshotting is enabled (#2110).