Corda is an open source blockchain project, designed for business from the start. Only Corda allows you to build interoperable blockchain networks that transact in strict privacy. Corda's smart contract technology allows businesses to transact directly, with value.
Go to file
Chris Rankin 2725f53ef5
ENT-1074 - Proof-of-concept ISV for SGX remote attestation (#161)
* Initial WIP.
* Configure IAS host via system properties.
* Create separate Gretty configurations for testing and for IAS.
* (WIP) Separate configuration values from WAR; Add msg3 -> msg4 handling.
* Check the IAS report's cryptographic signature.
* Accept CertPath from IAS instead of a Certificate.
* Validate the certificate chain for the IAS report.
* Refactor response handling, and add a secret to Message4.
* Append public DH keys to generated shared secret.
* Use DH secret to generate a 256 bit AES key.
* Fix runISV Gradle task so that it creates WAR file.
* Migrate MockIAS service into a separate package.
* Remove unused aesCMAC field from Message3.
* Configure HTTP sessions to expire after 10 idle minutes.
* Ensure we select the "isv" key for MTLS with Intel Attestation Service.
* Set key alias for Intel's public certificate.
* Implement GET /attest/provision endpoint.
* Use elliptic curves for Diffie-Hellman keys.
* Pass public keys as Little Endian byte arrays without ASN.1 encoding.
* Add AES-CMAC signature to Message2.
* Remove signature fields from QUOTE body for sending to IAS.
* Add a dummy AES-CMAC field to Message3 for later validation.
* Generate AEC-CMAC for Message 3, and refactor crypto functionality.
* Calculate AES-CMAC using AES/CBC/PKCS5Padding algorithm.
* Use BouncyCastle's AESCMAC algorithm for MAC calculation.
* Include standard crypto test vectors to the unit tests.
* Encrypt MSG3 secret using AES/GCM/NoPadding with 128 bit key.
* Hash shared key with Little Endian versions of public keys.
* Refactor so that hexToBytes() is a utility.
* Simplify signing of MocKIAS report.
* Separate AES/GCM authentication tag from the encrypted data.
* Create /ias/report endpoint for ISV which proxies IAS.
* Remove unnecessary @Throws from MockIAS handlers.
* Log HTTP error status from IAS.
* Replace runISV task with startISV and stopISV tasks.
* Refactor tests to use CryptoProvider @Rule instead of @Suite.
* Move Web server for integration tests to use non-production ports.
* Add proxy endpoint for IAS revocation list.
* Generate an ECDSA "service key" for signing (gb|ga).
* Generate a persistent key-pair for the ISV to sign with.
* Verify the (Gb|Ga) signature from Message2.
* Add debugging aids.
* Fix Gradle warning.
* Remove TLV header from Platform Info Body for MSG4.
* Small tidy-up.
* Use SPID "as-is" when calculating CMAC for MSG2.
* Add DEBUG messages for MSG2's KDK and SMK values (AES-CMAC).
* Add DEBUG logging for ECDH shared secret.
* More DEBUG logging.
* The ECDH shared secret *is* the x-coordinate: no need to subrange.
* Adjust MockIAS to return an empty revocationList for GID 0000000b.
* Fix ArrayOutOfBoundsException for "small" integer values.
* Test MSG1 with empty revocation list.
* Add extra logging for IAS report request.
* ReportResponse object cannot be null.
* Fix misreading of spec - don't remove quote's signature when requesting report from IAS.
* Log invalid contents of X-IAS-Report-Signing-Certificate HTTP header.
* Build CertPath for IAS from explicit list of Certificates.
* Rename quote fields on IAS ReportResponse to match Intel.
* Log report ID and quote status from IAS.
* Add a revocation list checker to the certificate path validator.
* Tweak revocation list options, depending on IAS vs MockIAS.
* Extract Intel's certificate specifically by alias for PKIX.
* Tune quote body returned by MockIAS.
* Add AES-CMAC field to Message4 for validation.
* Increase GCM authentication tag to 128 bits.
* Receive platformInfoBlob from IAS as hexadecimal string.
* Generate secret encryption key using KDK and SK values.
* Marshall platformInfoBlob between Base16 string and ByteArray.
* Interpret status results from IAS as enums.
* Use lateinit for HttpServletRequest field.
* Refactor ExceptionHandler out of messages package.
* Alias is for ISV, so rename it.
* Refactor classes into more correct packages.
* Use random 96 bit IV for GCM encryption.
* Parameterise HTTP/HTTPS ports via Gradle.
* Do not forward a securityManifest containing only zeros to IAS.
* Address review comments.
* Review comment: Use NativePRNGNonBlocking for SecureRandom.
* Rename isv.pfx to isv-svc.pfx
* Rename keystore to isv.pfx, for clarity.
* Update scripts so that they no longer require user input.
* Generate isv.pfx from the key and certificates.
* Remove private key from repository.
* Declare an empty PSE Manifest to be invalid.
* Generate keystores "on the fly".
* Rename integration tests to end in "IT" instead of "Test".
* Add README
* Turn remote-attestation into a separate Gradle project.
2017-12-12 13:34:26 +00:00
.ci Merge Open Source into Enterprise 2017-12-05 17:35:54 +00:00
.github Adjustments to the PR checklist 2017-09-20 16:58:31 +02:00
.idea Use network map objects from corda instead of stubs (#146) 2017-12-07 13:22:41 +00:00
buildSrc Reformat files in buildSrc 2017-10-09 15:26:39 +01:00
client Merge remote-tracking branch 'open-hc01/master' into colljos-os-hc01-merge-111217 2017-12-11 09:21:52 +00:00
confidential-identities StateMachineManager is no longer lateinit. (#2123) 2017-11-27 17:55:08 +00:00
config CORDA-822 - JMX Jolokia instrumentation (#2197) 2017-12-08 16:27:12 +00:00
core Merge remote-tracking branch 'open-hc01/master' into colljos-os-hc01-merge-111217 2017-12-11 09:21:52 +00:00
docs Merge remote-tracking branch 'open-hc01/master' into colljos-os-hc01-merge-111217 2017-12-11 09:21:52 +00:00
experimental Various modifications to debugging tools 2017-12-07 15:35:28 +00:00
finance Merge remote-tracking branch 'open-hc01/master' into colljos-os-hc01-merge-111217 2017-12-11 09:21:52 +00:00
gradle/wrapper Merge OS to Enterprise - added note about Enterprise specific Gradle wrapper version 2017-12-01 09:36:14 +00:00
gradle-plugins Merge remote-tracking branch 'open-hc01/master' into colljos-os-hc01-merge-111217 2017-12-11 09:21:52 +00:00
lib Restoring lib/quasar.jar from repo (#1389) 2017-09-05 12:58:23 +01:00
network-management Doorman refactoring and improve UX (#160) 2017-12-11 10:06:29 +00:00
node Add db integration to new tests (#180) 2017-12-12 10:17:07 +00:00
node-api Merge remote-tracking branch 'open-hc01/master' into colljos-os-hc01-merge-111217 2017-12-11 09:21:52 +00:00
perftestcordapp Added missing RigourousMock assertions. 2017-12-11 12:23:14 +00:00
samples Fix broken integration test in Samples. 2017-12-11 13:27:38 +00:00
sgx-jvm ENT-1074 - Proof-of-concept ISV for SGX remote attestation (#161) 2017-12-12 13:34:26 +00:00
testing Add db integration to new tests (#180) 2017-12-12 10:17:07 +00:00
tools Re-enable perftestcordapp and jmeter - fix compilation errors caused by MockServices and DriverDSL refactoring. 2017-12-11 11:42:53 +00:00
verifier Re-enable perftestcordapp and jmeter - fix compilation errors caused by MockServices and DriverDSL refactoring. 2017-12-11 11:42:53 +00:00
verify-enclave Load correct serialisation scheme when debugging Enclavelet. (#119) 2017-11-22 08:39:34 +00:00
webserver Merge remote-tracking branch 'open-hc01/master' into colljos-os-hc01-merge-111217 2017-12-11 09:21:52 +00:00
.gitignore Merge remote-tracking branch 'corda/master' into christians_os_merge_20171031 2017-11-02 14:41:18 +00:00
build.gradle Merge remote-tracking branch 'open-hc01/master' into colljos-os-hc01-merge-111217 2017-12-11 09:21:52 +00:00
constants.properties Merge remote-tracking branch 'open-hc01/master' into colljos-os-hc01-merge-111217 2017-12-11 09:21:52 +00:00
CONTRIBUTORS.md Some additional contributors recognised 2017-11-30 16:30:58 +01:00
gradle.properties Enable Kotlin incremental compilation in Gradle 2017-01-06 16:39:01 +01:00
gradlew Upgraded to gradle 4.1. 2017-08-23 15:36:08 +01:00
gradlew.bat Upgrade to Kotlin 1.0.7 and Gradle 3.4.1 (#402) 2017-03-22 12:05:49 +00:00
README.md Merge remote-tracking branch 'open/master' into colljos-merge-171117 2017-11-17 15:11:24 +00:00
settings.gradle ENT-1074 - Proof-of-concept ISV for SGX remote attestation (#161) 2017-12-12 13:34:26 +00:00

Corda

Corda Enterprise

Corda Enterprise is R3's closed source patch set on top of Corda Open Source. It adds features and improvements that we plan to charge for.

Corda is a decentralised database system in which nodes trust each other as little as possible.

Features

  • Smart contracts that can be written in Java and other JVM languages
  • Flow framework to manage communication and negotiation between participants
  • Peer-to-peer network of nodes
  • "Notary" infrastructure to validate uniqueness and sequencing of transactions without global broadcast
  • Enables the development and deployment of distributed apps called CorDapps
  • Written in Kotlin, targeting the JVM

Extra features

  • Doorman
  • SOCKS relaying
  • Flow triage screen in Explorer
  • No stupid jokes at startup
  • SGX

Getting started

  1. Read the Getting Started documentation
  2. Run the Example CorDapp
  3. Read about Corda's Key Concepts
  4. Follow the Hello, World! tutorial

Contributing

Please read here.

License

Apache 2.0

Acknowledgements

YourKit

YourKit supports open source projects with its full-featured Java Profiler.

YourKit, LLC is the creator of YourKit Java Profiler and YourKit .NET Profiler, innovative and intelligent tools for profiling Java and .NET applications.