diff --git a/README.html b/README.html index e7dfd6e..01ab08f 100644 --- a/README.html +++ b/README.html @@ -1,13 +1,14 @@

MatrixSSL Banner

Lightweight Embedded SSL/TLS Implementation -Official source repository of matrixssl.org

+ +Official source repository of MatrixSSL

release + license

-

tls-attacker-status -coverity-status

+

coverity-status

Overview

@@ -18,8 +19,8 @@

Reporting Issues

-

Please email support@matrixssl.org. -Sensitive emails can be encrypted using the public key in this directory pgp.asc, Key fingerprint = D6AD F1C5 E34E 696B 0953 556C 8BB2 B39A 2795 C6B3.

+

Please email matrixssl@rambus.com. +Sensitive emails can be encrypted using the public key in this directory pgp.asc, Key fingerprint = C714 FAC4 3D95 3584 9926 25EB 4F08 F506 433F 9237.

Features

@@ -33,6 +34,7 @@ Sensitive emails can be encrypted using the public key in this directory Server Name Indication and Stateless Session Tickets
  • RFC7301 Application Protocol Negotiation
  • Server and client X.509 certificate chain authentication
  • +
  • Client authentication with an external security token
  • Parsing of X.509 .pem and ASN.1 DER certificate formats
  • PKCS#1.5, PKCS#5 PKCS#8 and PKCS#12 support for key formatting
  • RSASSA-PSS Signature Algorithm support
  • diff --git a/README.md b/README.md index cf1aad0..13ba2fe 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,11 @@ ![MatrixSSL Banner](http://www.matrixssl.org/assets/img/matrixssl_logo_transparent_md.png) Lightweight Embedded SSL/TLS Implementation -*Official source repository of matrixssl.org* +*Official source repository of MatrixSSL* [![release](http://www.matrixssl.org/shield.svg)](https://github.com/matrixssl/matrixssl/releases) ![license](https://img.shields.io/badge/License-GPL-blue.svg) -[![tls-attacker-status](http://www.matrixssl.org/assets/svg/status-tls-attacker.svg)](https://github.com/RUB-NDS/TLS-Attacker) [![coverity-status](https://scan.coverity.com/projects/8611/badge.svg)](https://scan.coverity.com/projects/matrixssl-matrixssl) ##Overview @@ -16,8 +15,8 @@ MatrixSSL has been continuously maintained since 2002. It is the first open sour MatrixSSL is an embedded SSL and TLS implementation designed for small footprint IoT devices requiring low overhead per connection. It includes client and server support through TLS 1.3, mutual authentication, session resumption, and implementations of RSA, ECC, AES, SHA1, SHA-256, ChaCha20-Poly1305 and more. The source is well documented and contains portability layers for additional operating systems, cipher suites, and cryptography providers. ##Reporting Issues -Please email support@matrixssl.org. -Sensitive emails can be encrypted using the public key in this directory [pgp.asc](https://raw.githubusercontent.com/matrixssl/matrixssl/master/pgp.asc), Key fingerprint = `D6AD F1C5 E34E 696B 0953 556C 8BB2 B39A 2795 C6B3`. +Please email matrixssl@rambus.com. +Sensitive emails can be encrypted using the public key in this directory [pgp.asc](https://raw.githubusercontent.com/matrixssl/matrixssl/master/pgp.asc), Key fingerprint = `C714 FAC4 3D95 3584 9926 25EB 4F08 F506 433F 9237`. ##Features + Small total footprint with crypto provider diff --git a/pgp.asc b/pgp.asc index 808a887..11dc30c 100644 --- a/pgp.asc +++ b/pgp.asc @@ -1,98 +1,52 @@ -----BEGIN PGP PUBLIC KEY BLOCK----- -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 -=dgWJ +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 +OPLvhxa1l+haoVlCnEu9NQ== +=76VM -----END PGP PUBLIC KEY BLOCK-----