Releases: microsoft/CCF
Releases · microsoft/CCF
ccf-0.18.1
Changed
"id"field instateendpoint response has been renamed to"node_id"(#2150).user_idendpoint is renamedcaller_id(#2142).- Nodes' quotes format updated to Open Enclave's
SGX_ECDSA. Quote endorsements are also stored in CCF and can be retrieved via thequotes/selfandquotesendpoints (#2161). get_quote_for_this_node_v1()takes aQuoteInfostructure (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/nodescorrectly returns all nodes if no filter is specified (#2188).
ccf-0.18.0
Changed
endpoint_metricsis renamedapi/metricsand 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).
quoteendpoint has been renamed toquotes/self(#2149).TxViews have been renamed toMapHandles, to clearly distinguish them from consensus views. Calls totx.get_viewmust be replaced withtx.rw.tx.rwdoes not support retrieving multiple views in a single call. Instead ofauto [view1, view2] = tx.get_view(map1, map2);, you must writeauto handle1 = tx.rw(map1); auto handle2 = tx.rw(map2);.
Added
- Added
get_version_of_previous_write(const K& k)toMapHandle. 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
ccf-0.17.2
Fixed
- Fixed incorrect ledger chunking on backup nodes when snapshotting is enabled (#2110).
ccf-0.17.1
Changed
- JS endpoints now list their auth policies by name, similar to C++ endpoints. The fields
require_client_identity,require_client_signature, andrequire_jwt_authenticationare removed, and should be replaced byauthn_policies. For example, the previous default"require_client_identity": trueshould be replaced with"authn_policies": ["user_cert"], an endpoint which would like to handle a JWT but will also accept unauthenticated requests would be"authn_policies": ["jwt", "no_auth"], and a fully unauthenticated endpoint would be"authn_policies": []. See docs for further detail.
ccf-0.17.0
Added
- Versioned APIs for common CCF functionality:
get_status_for_txid_v1,get_last_committed_txid_v1,generate_openapi_document_v1,get_receipt_for_seqno_v1,get_quote_for_this_node_v1. We will aim to support these function signatures long-term, and provide similar functionality with incremental version bumps when this is no longer possible. In particular, this enables building an app which does not expose the default endpoints but instead exposes similar functionality through its own API.
Changed
ccf-0.16.3
Changed
- To avoid accidentally unauthenticated endpoints, a vector of authentication policies must now be specified at construction (as a new argument to
make_endpoint) rather than by callingadd_authentication. The valueccf::no_auth_requiredmust be used to explicitly indicate an unauthenticated endpoint. - All
/govendpoints accept signature authentication alone correctly, regardless of session authentication. ccf.CCFClientnow allows separatesession_authandsigning_authto be passed as construction time.ccf.CCFClient.call()no longer takes asignedargument, clients with asigning_authalways sign. Similarly, thedisable_session_authconstructor argument is removed, the same effect can be achieved by settingsession_authtoNone.
ccf-0.16.2
Changed
- Snapshots are generated by default on the current primary node, every
10,000committed transaction (#2029). - Node information exposed in the API now correctly reports the public port when it differs from the local one. (#2001)
- All
/govendpoints accept signature authentication again. Read-only/govendpoints had been incorrectly changed in [0.16.1] to accept session certification authentication only (#2033).
ccf-0.16.1
Added
- C++ endpoints can be omitted from OpenAPI with
set_openapi_hidden(true)(#2008). - JS endpoints can be omitted from OpenAPI if the
"openapi_hidden"field inapp.jsonistrue(#2008).
Changed
- Error responses of built-in endpoints are now JSON and follow the OData schema (#1919).
- Code ids are now deleted rather than marked as
RETIRED.ACTIVEis replaced with the more preciseALLOWED_TO_JOIN(#1996). - Authentication policies can be specified per-endpoint with
add_authentication. Sample policies are implemented which check for a user TLS handshake, a member TLS handshake, a user HTTP signature, a member HTTP signature, and a valid JWT. This allows multiple policies per-endpoints, and decouples auth from frontends - apps can define member-only endpoints (#2010). - By default, if no authentication policy is specified, endpoints are now unauthenticated and accessible to anyone (previously the default was user TLS handshakes, where the new default is equivalent to
set_require_client_identity(false)). - CCF now depends on Open Enclave 0.13.
Removed
- The methods
Endpoint::set_require_client_signature,Endpoint::set_require_client_identityandEndpoint::set_require_jwt_authenticationare removed, and should be replaced by calls toadd_authentication. For unauthenticated endpoints, either add no policies, or add the built-inempty_authpolicy which accepts all requests..set_require_client_signature(true)must be replaced with.add_authentication(user_signature_auth_policy).set_require_client_identity(true)must be replaced with.add_authentication(user_cert_auth_policy).set_require_jwt_authentication(true)must be replaced with.add_authentication(jwt_auth_policy)
0.16.0
Added
- CLI options are printed on every node launch (#1923).
- JS logging sample app is included in CCF package (#1932).
- C++ apps can be built using cmake's
find_package(ccf REQUIRED)(see cmake sample) (#1947).
Changed
- JWT signing keys are auto-refreshed immediately when adding a new issuer instead of waiting until the next auto-refresh event is due (#1978).
- Snapshots are only committed when proof of snapshot evidence is committed (#1972).
- Snapshot evidence must be validated before joining/recovering from snapshot (see doc) (#1925).
Fixed
- Ledger index is recovered correctly even if
--ledger-dirdirectory is empty (#1953). - Memory leak fixes (#1957, #1959, #1974, #1982).
- Consensus fixes (#1977, #1981).
- Enclave schedules messages in a fairer way (#1991).
Security
ccf-0.15.2
Added
- JWT key auto-refresh (#1908), can be enabled by providing
"auto_refresh": trueand"ca_cert_name": "..."inset_jwt_issuerproposal.- Auto-refresh is currently only supported for providers following the OpenID Connect standard where keys are published under the
/.well-known/openid-configurationpath of the issuer URL. ca_cert_namerefers to a certificate stored with aset_ca_certproposal and is used to validate the TLS connection to the provider endpoint.
- Auto-refresh is currently only supported for providers following the OpenID Connect standard where keys are published under the
- JWT signature validation (#1912), can be enabled with the
require_jwt_authenticationendpoint property.
Changed
- Members can no longer vote multiple times on governance proposals (#1743).
update_ca_certproposal has been replaced byset_ca_cert/remove_ca_cert(#1917).
Deprecated
set_js_appproposal and--js-app-scriptargument are deprecated, and should be replaced bydeploy_js_appand--js-app-bundle. See #1895 for an example of converting from the old style (JS embedded in a Lua script) to the new style (app bundle described byapp.json).
Removed
kv::Store::createis removed.luagenericis removed.