1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-04-21 10:26:06 +03:00

23 Commits

Author SHA1 Message Date
Earle F. Philhower, III
794630e068
Remove dependency on SD/SPIFFS from CertStore (#4760)
Due to popular demand, remove the hardcoded dependency on SPIFFS
or SD from the CertStore by factoring out the file interface into
a new class (CertStoreFile) that the user will need to implement
as a thin wrapper around either a SPIFFS.file or a SD.file

Combine the downloaded certificates into a UNIX "ar" archive
and parse that on-the-fly to allow easy inspection and creation
of the Cert Store database.

Examples updated with a new certificate downloader that creates
the certs.ar archive and with a single sample that can be built
for either SPIFFS or SD with a #define.  Users can copy the
implementation of the CertStoreFile they need to their own code
as it is self-contained.

Also move the CertStore to the BearSSL namespace and remove the
suffix and separate SPIFFS/SD sources.

Remove the "deep+" change from the CI build as well (no special
options needed on any PIO or makefile build).

We'll revisit the filesystem wrapper for 2.5.0, hopefully having a
unified template for both filesystem usage at a global level.  For
current users, be aware the interface may change (simplify!) in
release 2.5.0.

Fixes #4740
2018-06-12 19:06:26 -07:00
Earle F. Philhower, III
a1a9b99af6 Add build_even/odd types to split Arduino tests (#4737)
Arduino builds are now taking 49 minutes or more, and failing due to
Travis timeouts.

Split the Arduino build task into even and odd half, where each job
will build every other test.  This will reduce any test's runtime
by 50% and speed up checks to avoid the timeout.
2018-05-21 14:34:15 -04:00
Earle F. Philhower, III
e3c970210f
Add BearSSL client and server, support true bidir, lower memory, modern SSL (#4273)
BearSSL (https://www.bearssl.org) is a TLS(SSL) library written by
Thomas Pornin that is optimized for lower-memory embedded systems
like the ESP8266. It supports a wide variety of modern ciphers and
is unique in that it doesn't perform any memory allocations during
operation (which is the unfortunate bane of the current axTLS).

BearSSL is also absolutely focused on security and by default performs
all its security checks on x.509 certificates during the connection
phase (but if you want to be insecure and dangerous, that's possible
too).

While it does support unidirectional SSL buffers, like axTLS,
as implemented the ESP8266 wrappers only support bidirectional
buffers. These bidirectional buffers avoid deadlocks in protocols
which don't have well separated receive and transmit periods.

This patch adds several classes which allow connecting to TLS servers
using this library in almost the same way as axTLS:
BearSSL::WiFiClientSecure - WiFiClient that supports TLS
BearSSL::WiFiServerSecure - WiFiServer supporting TLS and client certs

It also introduces objects for PEM/DER encoded keys and certificates:
BearSSLX509List - x.509 Certificate (list) for general use
BearSSLPrivateKey - RSA or EC private key
BearSSLPublicKey - RSA or EC public key (i.e. from a public website)

Finally, it adds a Certificate Authority store object which lets
BearSSL access a set of trusted CA certificates on SPIFFS to allow it
to verify the identity of any remote site on the Internet, without
requiring RAM except for the single matching certificate.
CertStoreSPIFFSBearSSL - Certificate store utility

Client certificates are supported for the BearSSL::WiFiClientSecure, and
what's more the BearSSL::WiFiServerSecure can also *require* remote clients
to have a trusted certificate signed by a specific CA (or yourself with
self-signing CAs).

Maximum Fragment Length Negotiation probing and usage are supported, but
be aware that most sites on the Internet don't support it yet.  When
available, you can reduce the memory footprint of the SSL client or server
dramatically (i.e. down to 2-8KB vs. the ~22KB required for a full 16K
receive fragment and 512b send fragment).  You can also manually set a
smaller fragment size and guarantee at your protocol level all data will
fit within it.

Examples are included to show the usage of these new features.

axTLS has been moved to its own namespace, "axtls".  A default "using"
clause allows existing apps to run using axTLS without any changes.

The BearSSL::WiFi{client,server}Secure implements the axTLS
client/server API which lets many end user applications take advantage
of BearSSL with few or no changes.

The BearSSL static library used presently is stored at
https://github.com/earlephilhower/bearssl-esp8266 and can be built
using the standard ESP8266 toolchain.
2018-05-14 20:46:47 -07:00
Ivan Grokhotkov
e226251b27 ci: check examples code style
Use code style defined in Arduino project to check code style of the
examples. The check is done by formatting all files with astyle and
checking whether any changes have been introduced.
2018-03-08 14:32:06 +08:00
Ivan Grokhotkov
0d17639bee ci: check that files generated by boards.txt.py are up to date
Files are re-generated in CI build, and git diff is used to check if
there have been any changes.
2018-02-19 12:43:30 +03:00
Earle F. Philhower, III
f9ac524b13
Add -Werror to acceptance builds for C and CPP (#4369)
Use platform.local.txt to add -Werror to GCC for the build of all
code.  Any warnings on a submitted patch will cause an error.

Several examples and libraries had warnings/errors (missing returns
on functions, types, etc.).  Clean those up with this commit as well.
2018-02-17 18:47:10 -08:00
Ivan Grokhotkov
cc9e799fc1 ci: split into multiple jobs 2017-12-13 23:50:57 +08:00
Ivan Kravets
6e75ae49ad
CI: Use updated staging dev/platform without "_stage" suffix 2017-11-30 00:10:50 +02:00
Ivan Kravets
83dd960fe5 Install @PlatformIO Core to user's space 2017-09-12 20:02:30 +03:00
Ivan Kravets
ff4bb73084 Integration with @PlatformIO Build System 2017-08-07 15:41:35 +03:00
Ivan Grokhotkov
3363be0063 ci: fix -e flag not restored in build_sketches on error 2017-05-20 12:13:20 +08:00
Ivan Grokhotkov
a3a7e87df7 ci: build and upload releases on Travis 2017-05-15 03:49:21 -05:00
Ivan Grokhotkov
51880310be Clean build directory after each sketch 2016-03-28 00:28:05 +03:00
Ivan Grokhotkov
d06549e86e Use folds to improve readability of Travis logs 2016-03-13 01:56:21 +03:00
Ivan Grokhotkov
324c41fd7f CI: print elf segment size info for example sketches 2016-03-13 01:44:33 +03:00
Ivan Grokhotkov
661fbca6dc Don't let test runner script bail out before printing logs 2016-03-10 12:43:54 +03:00
Ivan Grokhotkov
ec99268824 Travis: print verbose build log only if build errors 2016-03-03 17:52:46 +03:00
Ivan Grokhotkov
53ba831c90 Skip files which aren't main sketch files 2016-03-03 17:42:27 +03:00
Ivan Grokhotkov
031a18c836 Build sketches with arduino-builder 2016-03-03 17:21:58 +03:00
Ivan Grokhotkov
af18612a4c Turn of '--verbose' option in Travis builds to place log size within limits 2016-01-26 22:58:00 +03:00
Ivan Grokhotkov
700cb3a527 Travis-CI: Install libraries into sketchbook/libraries directory 2015-08-10 17:03:35 +03:00
Ivan Grokhotkov
e5f9bec4ed Install necessary libraries during travis build 2015-08-10 16:47:17 +03:00
Ivan Grokhotkov
496da02f14 Verify sketches as part of travis build
Squashed commits:
[7d1b42f] Encrypt token, skip some tests
[17b8f39] Fix sha1 example path
[f3050b1] Fix build, add webhook
[fd2c9bd] Fix build errors, update mDNS library readme
[7b87031] Make common.sh more flexible
[3ba3eb2] Test all sketches
[87beb8a] Build all sketches in esp8266 core
[f2464f1] Fix paths
[823a9ae] Remove sudo usage
[7fce734] Fix arduino commands
[619bc7d] Move all commands into travis script
[15a5ada] First attempt test runner
2015-07-23 16:06:07 +03:00