├── firmware ├── matrixssl-docs │ ├── MatrixSSL_API.pdf │ ├── MatrixSSL_Design.pdf │ ├── MatrixSSL_PortingGuide.pdf │ ├── MatrixSSL_DeveloperGuide.pdf │ ├── MatrixSSL_DiffieHellman.pdf │ ├── MatrixSSL_GettingStarted.pdf │ ├── MatrixSSL_PreSharedKeys.pdf │ ├── MatrixSSL_EllipticCurveCiphers.pdf │ ├── MatrixSSL_3-7-2b-OPEN_ReleaseNotes.pdf │ └── matrixssl-readme.txt ├── sampleCerts │ ├── dh512.pem │ ├── dh1024.pem │ ├── ECDH_RSA │ │ ├── ecdsaPrivKey.pem │ │ ├── 256_ECDH-RSA_KEY.pem │ │ ├── 521_ECDH-RSA_KEY.pem │ │ ├── 256_ECDH-RSA_KEY.h │ │ ├── ecdsaPrivKey.h │ │ ├── CAprivKeyRSA.pem │ │ ├── 1024_ECDH-RSA_CA.pem │ │ ├── CAcertRSA.pem │ │ ├── 521_ECDH-RSA_KEY.h │ │ ├── 256_ECDH-RSA.pem │ │ ├── 2048_ECDH-RSA_CA.pem │ │ ├── 521_ECDH-RSA.pem │ │ ├── ALL_ECDH-RSA_CAS.pem │ │ ├── ecdsaCert.pem │ │ ├── ecdsaCert.h │ │ ├── 1024_ECDH-RSA_CA.h │ │ ├── CAcertRSA.h │ │ ├── 256_ECDH-RSA.h │ │ ├── 2048_ECDH-RSA_CA.h │ │ └── 521_ECDH-RSA.h │ ├── EC │ │ ├── 192_EC_CA_KEY.pem │ │ ├── 192_EC_KEY.pem │ │ ├── 224_EC_KEY.pem │ │ ├── 224_EC_CA_KEY.pem │ │ ├── 256_EC_KEY.pem │ │ ├── 256_EC_CA_KEY.pem │ │ ├── 384_EC_KEY.pem │ │ ├── 384_EC_CA_KEY.pem │ │ ├── 521_EC_CA_KEY.pem │ │ ├── 521_EC_KEY.pem │ │ ├── 192_EC_KEY.h │ │ ├── 224_EC_KEY.h │ │ ├── 256_EC_KEY.h │ │ ├── 192_EC_CA.pem │ │ ├── 224_EC_CA.pem │ │ ├── 256_EC_CA.pem │ │ ├── 192_EC.pem │ │ ├── 384_EC_KEY.h │ │ ├── 224_EC.pem │ │ ├── 256_EC.pem │ │ ├── 384_EC_CA.pem │ │ ├── 384_EC.pem │ │ ├── 521_EC_CA.pem │ │ ├── 521_EC.pem │ │ ├── 521_EC_KEY.h │ │ ├── 192_EC_CA.h │ │ ├── 224_EC_CA.h │ │ ├── 256_EC_CA.h │ │ ├── 192_EC.h │ │ ├── 224_EC.h │ │ ├── 256_EC.h │ │ ├── 384_EC_CA.h │ │ ├── 384_EC.h │ │ ├── 521_EC_CA.h │ │ ├── 521_EC.h │ │ └── ALL_EC_CAS.pem │ ├── pem2c.sh │ ├── dh2048.pem │ ├── dh512.h │ ├── dh1024.h │ ├── psk.h │ └── dh2048.h ├── version.h ├── httpsclient-particle.h ├── 1024_RSA_KEY.pem ├── 1024_RSA.pem ├── 1024_RSA_CA.pem ├── 2048_RSA.pem ├── 2048_RSA_CA.pem ├── dtls.c ├── 2048_RSA_KEY.pem ├── examples │ ├── timeapi-test.cpp │ └── glowfish-post-test.cpp ├── 4096_RSA.pem ├── 4096_RSA_CA.pem ├── memset_s.c ├── osdep.cpp ├── coreConfig.h ├── sha384.c ├── psmalloc.h ├── sha224.c ├── prng.h ├── 1024_RSA_KEY.h ├── aesni.h ├── 4096_RSA_KEY.pem ├── 1024_RSA.h ├── 1024_RSA_CA.h ├── arc4.c ├── asn1.h ├── pubkey.c ├── base64.c ├── 2048_RSA.h ├── ALL_RSA_CAS.pem ├── 2048_RSA_CA.h ├── prng.c └── 2048_RSA_KEY.h ├── spark.json ├── .gitignore └── README.md /firmware/matrixssl-docs/MatrixSSL_API.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glowfishAPI/httpsclient-particle/HEAD/firmware/matrixssl-docs/MatrixSSL_API.pdf -------------------------------------------------------------------------------- /firmware/matrixssl-docs/MatrixSSL_Design.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glowfishAPI/httpsclient-particle/HEAD/firmware/matrixssl-docs/MatrixSSL_Design.pdf -------------------------------------------------------------------------------- /firmware/matrixssl-docs/MatrixSSL_PortingGuide.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glowfishAPI/httpsclient-particle/HEAD/firmware/matrixssl-docs/MatrixSSL_PortingGuide.pdf -------------------------------------------------------------------------------- /firmware/matrixssl-docs/MatrixSSL_DeveloperGuide.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glowfishAPI/httpsclient-particle/HEAD/firmware/matrixssl-docs/MatrixSSL_DeveloperGuide.pdf -------------------------------------------------------------------------------- /firmware/matrixssl-docs/MatrixSSL_DiffieHellman.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glowfishAPI/httpsclient-particle/HEAD/firmware/matrixssl-docs/MatrixSSL_DiffieHellman.pdf -------------------------------------------------------------------------------- /firmware/matrixssl-docs/MatrixSSL_GettingStarted.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glowfishAPI/httpsclient-particle/HEAD/firmware/matrixssl-docs/MatrixSSL_GettingStarted.pdf -------------------------------------------------------------------------------- /firmware/matrixssl-docs/MatrixSSL_PreSharedKeys.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glowfishAPI/httpsclient-particle/HEAD/firmware/matrixssl-docs/MatrixSSL_PreSharedKeys.pdf -------------------------------------------------------------------------------- /firmware/matrixssl-docs/MatrixSSL_EllipticCurveCiphers.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glowfishAPI/httpsclient-particle/HEAD/firmware/matrixssl-docs/MatrixSSL_EllipticCurveCiphers.pdf -------------------------------------------------------------------------------- /firmware/matrixssl-docs/MatrixSSL_3-7-2b-OPEN_ReleaseNotes.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/glowfishAPI/httpsclient-particle/HEAD/firmware/matrixssl-docs/MatrixSSL_3-7-2b-OPEN_ReleaseNotes.pdf -------------------------------------------------------------------------------- /firmware/sampleCerts/dh512.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN DH PARAMETERS----- 2 | MEYCQQDxUqvLdAR+PySjhytotdDv1UO2BgAKwZRSfn25zCmCXdR+WVgC+sclI1Rw 3 | i54CQTcms4ngyOkLRdL73VM7/1NXAgEF 4 | -----END DH PARAMETERS----- 5 | -------------------------------------------------------------------------------- /spark.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "httpsclient-particle", 3 | "author": "Vamsi Vytla", 4 | "license": "GPL", 5 | "version": "0.0.8", 6 | "description": "A library that helps photon boards talk https to web servers" 7 | } 8 | -------------------------------------------------------------------------------- /firmware/sampleCerts/dh1024.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN DH PARAMETERS----- 2 | MIGHAoGBAJf2QmHKtQXdKCjhPx1ottPb0PMTBH9A6FbaWMsTuKG/K3g6TG1Z1fkq 3 | /Gz/PWk/eLI9TzFgqVAuPvr3q14a1aZeVUMTgo2oO5/y2UHe6VaJ+trqCTat3xlx 4 | /mNbIK9HA2RgPC3gWfVLZQrY+gz3ASHHR5nXWHEyvpuZm7m3h+irAgEC 5 | -----END DH PARAMETERS----- 6 | -------------------------------------------------------------------------------- /firmware/sampleCerts/ECDH_RSA/ecdsaPrivKey.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgTvVMz8mlxeVHRLfw 3 | 5+XjrOfx0cWbMeFr3xqPHID3h0ahRANCAASnikMy9skrrffzb+1MdubF1PWrUSKl 4 | FGoQQVLEgwiiC89QA377l550EZnUOE/iS5LQ/P/0QqbxY+DoYhL5b2Bc 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/192_EC_CA_KEY.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PARAMETERS----- 2 | BggqhkjOPQMBAQ== 3 | -----END EC PARAMETERS----- 4 | -----BEGIN EC PRIVATE KEY----- 5 | MF8CAQEEGNk48GAkuZyLHnsGuLrNgHCZ4FF9gWLboqAKBggqhkjOPQMBAaE0AzIA 6 | BFnuoV27njKCfJhauHBjB6/yDbMVJ4wBdkG2apqhRYgj+wvmPYDWCsz7AFfuGJNk 7 | 4A== 8 | -----END EC PRIVATE KEY----- 9 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/192_EC_KEY.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PARAMETERS----- 2 | BggqhkjOPQMBAQ== 3 | -----END EC PARAMETERS----- 4 | -----BEGIN EC PRIVATE KEY----- 5 | MF8CAQEEGJQJfyJP39OOLcw3dm+mMs+0YCd5EoJsVKAKBggqhkjOPQMBAaE0AzIA 6 | BMrinHWqY3Irdoc9mq+2tMZpegy4d+cw9Y9OeLMDaJH2MljFFXCa+NvXS6Nkg2nm 7 | 0Q== 8 | -----END EC PRIVATE KEY----- 9 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/224_EC_KEY.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PARAMETERS----- 2 | BgUrgQQAIQ== 3 | -----END EC PARAMETERS----- 4 | -----BEGIN EC PRIVATE KEY----- 5 | MGgCAQEEHHBke83fEwisn9aEtx0JI5X5s3VoE79K8vLBQQegBwYFK4EEACGhPAM6 6 | AARL9SrEbrkijKV3FnR0Via4yAsYDiygP0W/P5EgvPC7jZ3ZQHo+lugxgRraRb1L 7 | zOprEV+/8zLP+g== 8 | -----END EC PRIVATE KEY----- 9 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/224_EC_CA_KEY.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PARAMETERS----- 2 | BgUrgQQAIQ== 3 | -----END EC PARAMETERS----- 4 | -----BEGIN EC PRIVATE KEY----- 5 | MGgCAQEEHC1oEP6csX31x9nUREAvYVR/XwEYadNE+79tnOGgBwYFK4EEACGhPAM6 6 | AAT9C7N1JTVedaODi1F+/7geKoxbjs7X4cOaUCWNygwrn/o+U6wxUn9nppKmo9uo 7 | lEsiMx1fX89IIQ== 8 | -----END EC PRIVATE KEY----- 9 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/256_EC_KEY.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PARAMETERS----- 2 | BggqhkjOPQMBBw== 3 | -----END EC PARAMETERS----- 4 | -----BEGIN EC PRIVATE KEY----- 5 | MHcCAQEEIFzpicWxU6ACPJC+OipzsggWw+281dZnJhBO7HkoD7/LoAoGCCqGSM49 6 | AwEHoUQDQgAEX61iAkJIuvviiNh/uXLLKK7Dih7DDpx9eqS1f9q9Rlq5lTngRFFx 7 | uuOzQPJU/SOEsuoqhKNP17AIum6Aw+vfLw== 8 | -----END EC PRIVATE KEY----- 9 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/256_EC_CA_KEY.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PARAMETERS----- 2 | BggqhkjOPQMBBw== 3 | -----END EC PARAMETERS----- 4 | -----BEGIN EC PRIVATE KEY----- 5 | MHcCAQEEILde+sxlIzqLlxauABe4Hqc1qLSrxuwDpRYluYivKq4IoAoGCCqGSM49 6 | AwEHoUQDQgAE01reVhQI4kXRC6l3inBfh4y0Wy/NaXwFYX/p42a/gD+UiBmqiv+0 7 | KPYOuxR6OWVLK31SRJxcWwlpmBYxktrMWA== 8 | -----END EC PRIVATE KEY----- 9 | -------------------------------------------------------------------------------- /firmware/sampleCerts/ECDH_RSA/256_ECDH-RSA_KEY.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PARAMETERS----- 2 | BggqhkjOPQMBBw== 3 | -----END EC PARAMETERS----- 4 | -----BEGIN EC PRIVATE KEY----- 5 | MHcCAQEEINyWlklQFSWTwj+lBgDtalG/cpKL5cRzi2bRXBVnepV4oAoGCCqGSM49 6 | AwEHoUQDQgAElz6PwtmnqrSeLOQx1Zf0rj1uiu+jpSfC5jNXbKD1uOLHj3W6jQSL 7 | /t06KyR0Uu5y4o4r2md+1uuuiG7LVkOTvQ== 8 | -----END EC PRIVATE KEY----- 9 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | 3 | # Object files 4 | *.o 5 | *.ko 6 | *.obj 7 | *.elf 8 | 9 | # Precompiled Headers 10 | *.gch 11 | *.pch 12 | 13 | # Libraries 14 | *.lib 15 | *.a 16 | *.la 17 | *.lo 18 | 19 | # Shared objects (inc. Windows DLLs) 20 | *.dll 21 | *.so 22 | *.so.* 23 | *.dylib 24 | 25 | # Executables 26 | *.exe 27 | *.out 28 | *.app 29 | *.i*86 30 | *.x86_64 31 | *.hex 32 | 33 | # Debug files 34 | *.dSYM/ 35 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/384_EC_KEY.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PARAMETERS----- 2 | BgUrgQQAIg== 3 | -----END EC PARAMETERS----- 4 | -----BEGIN EC PRIVATE KEY----- 5 | MIGkAgEBBDBn7+2rF1cEV8rAuuj0RFKiQMEsYitTFXzad7JrA9AxI5sQwEk11msa 6 | rudd4SGHBBqgBwYFK4EEACKhZANiAARLAXPAkrVQqn8AId5ucBuXcHH8lJN7Xwl4 7 | V2tDVUMZIRCSeVfLRClQ38lyBNrAQzflzQhsmO37lXH4pYi3EidRuBB7FP0pI+hF 8 | ED+BhPj2p8gqa6gvi54pbvwV8SPlI0s= 9 | -----END EC PRIVATE KEY----- 10 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/384_EC_CA_KEY.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PARAMETERS----- 2 | BgUrgQQAIg== 3 | -----END EC PARAMETERS----- 4 | -----BEGIN EC PRIVATE KEY----- 5 | MIGkAgEBBDC48uMEcK4oK2JhdRe+Ms/fNrA/IaGr3IDVfE+BB673+/7LOIa0GewO 6 | CF92Dx4N9eWgBwYFK4EEACKhZANiAASeBDSZ74olHYTy8kDE1dFTfVTsIDbfGuLk 7 | cPjTOaA5GD2x+i3sosFG322Uj97c0j0ZLxbsUlg6gMHDv4UnFkIH4ALx15XJEOyw 8 | oJiKQrVR6CH7Ka/5RaiydhBG7+Ts38E= 9 | -----END EC PRIVATE KEY----- 10 | -------------------------------------------------------------------------------- /firmware/sampleCerts/pem2c.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if [ $# -lt 1 ]; then 4 | echo "ERROR: input filename must be provided as an argument" 5 | exit 6 | fi 7 | 8 | if [ ! -f "$1" ]; then 9 | echo "ERROR: $1 not found" 10 | exit 11 | fi 12 | 13 | sed -n '/-----BEGIN/,/-----END/{/-----/d;p}' "$1" | base64 -di | xxd -c16 -i | sed -e 's/0x/\\x/g ; s/, //g ; s/^ /\t"/g ; s/,*$/"/g ; $ s/$/;/ ; 1 i\static const unsigned char c[] =' 14 | 15 | #tr -cd x | wc -c 16 | 17 | -------------------------------------------------------------------------------- /firmware/sampleCerts/dh2048.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN DH PARAMETERS----- 2 | MIIBCAKCAQEAubwokccIyRKbeyVhqUyjoUUQdu2A26m/xX6G/4vzif95753RdpvO 3 | KS/A5KL1wsUlmTUMqIuc7OIRexfNrU/8iBcX2GUS7whaYqZvBrOXiGFtMlWX/7aA 4 | n1UjEH0viiv5mjUfzauYLAkToR8xJbgJomaZ/1w7FViF03XrugzEQ+9Y8ZJ8xNc3 5 | AIwClz9JwbyfMTTg1Ho7lhDcTGX2ezoV9cCKMbzGavRhAh9fonCNqqcM5PGqOL7S 6 | h9jkpv+nJtYoNocBE34MUiqPnzs7nmYow4DRDk77974uaxEVXYWjNhFG3HxBhGz8 7 | dYg5AOq2yF7+eKmS8yVKCOOck/qpP199RwIBBQ== 8 | -----END DH PARAMETERS----- 9 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/521_EC_CA_KEY.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PARAMETERS----- 2 | BgUrgQQAIw== 3 | -----END EC PARAMETERS----- 4 | -----BEGIN EC PRIVATE KEY----- 5 | MIHcAgEBBEIBPbiFyZPxeyJdqSuWy5gGY7YKybu1ALGWbdeWNSEZR7W7x+9gsP8p 6 | l28EFtOSvxYM3pRypLUqjOFd+OMWXcEEd9ygBwYFK4EEACOhgYkDgYYABAErQ9iN 7 | n9UvnVUL/nILMteOQsQCl7PNdxWh6vZkNXJyZ7NfdyZtb3crS6Ga24x2xNydYC07 8 | XgfxpXURInr175l3RADELacTwMeL1ZaSba6ElSUfsGh7iXW/Rraeoqxw9uwXbpgu 9 | C6wTeF9UjAC9Ooxc16SGtZwEZ3Xg3E2KQkbs5F3xqg== 10 | -----END EC PRIVATE KEY----- 11 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/521_EC_KEY.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PARAMETERS----- 2 | BgUrgQQAIw== 3 | -----END EC PARAMETERS----- 4 | -----BEGIN EC PRIVATE KEY----- 5 | MIHcAgEBBEIBPbJun8DjmFOmN22EGKYItsI/tgEq5u1G9r+fQgl2/gYv3e6B1TgP 6 | IyGRzrsTeqICEqP73jx27GFCkiXAhBDIdU+gBwYFK4EEACOhgYkDgYYABAAKWju4 7 | xhaFLodnpntcbimKXuIRA4MoIFg+01q1aNm37+wWlcHofbgH9BZQPTBheJV162gK 8 | C/9eCF11ZgGvKR/VXQDF801aY+8HSa6JdbKaoGtFb0/Vs0ejzHysESSJml1juoXC 9 | z8N7Q9LO/dzqlnatpGGKo/umJmhQLoCCrXHF+Msg7g== 10 | -----END EC PRIVATE KEY----- 11 | -------------------------------------------------------------------------------- /firmware/sampleCerts/ECDH_RSA/521_ECDH-RSA_KEY.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PARAMETERS----- 2 | BgUrgQQAIw== 3 | -----END EC PARAMETERS----- 4 | -----BEGIN EC PRIVATE KEY----- 5 | MIHbAgEBBEFrwlDVDEhpJt98zesb6QTqMd85M9yW/bEH+99x8YqrYmXFirHJCYA8 6 | PgnvuFtEKuyXazJ++WOMZAJFS2jpmGKVLqAHBgUrgQQAI6GBiQOBhgAEADEbxrqN 7 | jgdsUx7aW1Xl9X1w8ujtxp0fHwvYl/Se9LtrELsPGukaEGBtygzcy/UitJu585Y8 8 | op5i+GY087XDF3N1AQblLvLypFEWE5Y23InZNcFVUaen6QXFYksCm+Fn6OU6l7wb 9 | U7O/OViGdZf//Vtw8kthcnbfpNsFgbei0pzzw26I 10 | -----END EC PRIVATE KEY----- 11 | -------------------------------------------------------------------------------- /firmware/version.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file version.h 3 | * @version 4 | * 5 | * Autogenerated version file. 6 | */ 7 | /* 8 | Copyright 2015 INSIDE Secure Corporation 9 | */ 10 | #ifndef _h_MATRIXSSL_VERSION 11 | #define _h_MATRIXSSL_VERSION 12 | #ifdef __cplusplus 13 | extern "C" { 14 | #endif 15 | 16 | #define MATRIXSSL_VERSION "3.7.2-OPEN" 17 | #define MATRIXSSL_VERSION_MAJOR 3 18 | #define MATRIXSSL_VERSION_MINOR 7 19 | #define MATRIXSSL_VERSION_PATCH 2 20 | #define MATRIXSSL_VERSION_CODE "OPEN" 21 | 22 | #ifdef __cplusplus 23 | } 24 | #endif 25 | #endif /* _h_MATRIXSSL_VERSION */ 26 | 27 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/192_EC_KEY.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 192_EC_KEY.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | unsigned char EC192KEY[] = { 8 | 48, 95, 2, 1, 1, 4, 24, 148, 9, 127, 34, 79, 223, 9 | 211, 142, 45, 204, 55, 118, 111, 166, 50, 207, 180, 96, 39, 10 | 121, 18, 130, 108, 84, 160, 10, 6, 8, 42, 134, 72, 206, 11 | 61, 3, 1, 1, 161, 52, 3, 50, 0, 4, 202, 226, 156, 12 | 117, 170, 99, 114, 43, 118, 135, 61, 154, 175, 182, 180, 198, 13 | 105, 122, 12, 184, 119, 231, 48, 245, 143, 78, 120, 179, 3, 14 | 104, 145, 246, 50, 88, 197, 21, 112, 154, 248, 219, 215, 75, 15 | 163, 100, 131, 105, 230, 209}; 16 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/224_EC_KEY.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 224_EC_KEY.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | unsigned char EC224KEY[] = { 8 | 48, 104, 2, 1, 1, 4, 28, 112, 100, 123, 205, 223, 19, 9 | 8, 172, 159, 214, 132, 183, 29, 9, 35, 149, 249, 179, 117, 10 | 104, 19, 191, 74, 242, 242, 193, 65, 7, 160, 7, 6, 5, 11 | 43, 129, 4, 0, 33, 161, 60, 3, 58, 0, 4, 75, 245, 12 | 42, 196, 110, 185, 34, 140, 165, 119, 22, 116, 116, 86, 38, 13 | 184, 200, 11, 24, 14, 44, 160, 63, 69, 191, 63, 145, 32, 14 | 188, 240, 187, 141, 157, 217, 64, 122, 62, 150, 232, 49, 129, 15 | 26, 218, 69, 189, 75, 204, 234, 107, 17, 95, 191, 243, 50, 16 | 207, 250}; 17 | -------------------------------------------------------------------------------- /firmware/httpsclient-particle.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "application.h" 4 | 5 | #ifdef __cplusplus 6 | extern "C" { 7 | #endif 8 | 9 | #include "matrixsslApi.h" 10 | 11 | #define HTTPS_COMPLETE 1 12 | #define HTTPS_ERROR -1 13 | #define ALLOW_ANON_CONNECTIONS 1 14 | #define LOGGING_DEBUG 15 | 16 | #define USE_RSA_CIPHER_SUITE 17 | #define ID_RSA 18 | 19 | extern TCPClient client; 20 | extern bool g_https_complete; 21 | extern uint32 g_bytes_received; 22 | extern const bool g_https_trace; 23 | 24 | int httpsclientSetup(const char * host, const char * path); 25 | int httpsClientConnection(unsigned char * requestContent, uint32 msg_len, 26 | const char * msg); 27 | void httpsclientCleanUp(); 28 | void httpsclientSetPath(const char * path); 29 | 30 | #ifdef __cplusplus 31 | } 32 | #endif 33 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/256_EC_KEY.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 256_EC_KEY.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | unsigned char EC256KEY[] = { 8 | 48, 119, 2, 1, 1, 4, 32, 92, 233, 137, 197, 177, 83, 9 | 160, 2, 60, 144, 190, 58, 42, 115, 178, 8, 22, 195, 237, 10 | 188, 213, 214, 103, 38, 16, 78, 236, 121, 40, 15, 191, 203, 11 | 160, 10, 6, 8, 42, 134, 72, 206, 61, 3, 1, 7, 161, 12 | 68, 3, 66, 0, 4, 95, 173, 98, 2, 66, 72, 186, 251, 13 | 226, 136, 216, 127, 185, 114, 203, 40, 174, 195, 138, 30, 195, 14 | 14, 156, 125, 122, 164, 181, 127, 218, 189, 70, 90, 185, 149, 15 | 57, 224, 68, 81, 113, 186, 227, 179, 64, 242, 84, 253, 35, 16 | 132, 178, 234, 42, 132, 163, 79, 215, 176, 8, 186, 110, 128, 17 | 195, 235, 223, 47}; 18 | -------------------------------------------------------------------------------- /firmware/sampleCerts/dh512.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file dh512.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | /******************************************************************************/ 8 | /* 9 | In-Memory version of the PEM file dh512.pem 10 | */ 11 | unsigned char dhParamBuf512[] = {0x30, 0x46, 0x02, 0x41, 0x00, 0xf1, 0x52, 0xab, 12 | 0xcb, 0x74, 0x04, 0x7e, 0x3f, 0x24, 0xa3, 0x87, 0x2b, 0x68, 0xb5, 0xd0, 0xef, 13 | 0xd5, 0x43, 0xb6, 0x06, 0x00, 0x0a, 0xc1, 0x94, 0x52, 0x7e, 0x7d, 0xb9, 0xcc, 14 | 0x29, 0x82, 0x5d, 0xd4, 0x7e, 0x59, 0x58, 0x02, 0xfa, 0xc7, 0x25, 0x23, 0x54, 15 | 0x70, 0x8b, 0x9e, 0x02, 0x41, 0x37, 0x26, 0xb3, 0x89, 0xe0, 0xc8, 0xe9, 0x0b, 16 | 0x45, 0xd2, 0xfb, 0xdd, 0x53, 0x3b, 0xff, 0x53, 0x57, 0x02, 0x01, 0x05}; 17 | 18 | -------------------------------------------------------------------------------- /firmware/sampleCerts/ECDH_RSA/256_ECDH-RSA_KEY.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 256_ECDH-RSA_KEY.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | unsigned char ECDHRSA256KEY[] = { 8 | 48, 119, 2, 1, 1, 4, 32, 220, 150, 150, 73, 80, 21, 9 | 37, 147, 194, 63, 165, 6, 0, 237, 106, 81, 191, 114, 146, 10 | 139, 229, 196, 115, 139, 102, 209, 92, 21, 103, 122, 149, 120, 11 | 160, 10, 6, 8, 42, 134, 72, 206, 61, 3, 1, 7, 161, 12 | 68, 3, 66, 0, 4, 151, 62, 143, 194, 217, 167, 170, 180, 13 | 158, 44, 228, 49, 213, 151, 244, 174, 61, 110, 138, 239, 163, 14 | 165, 39, 194, 230, 51, 87, 108, 160, 245, 184, 226, 199, 143, 15 | 117, 186, 141, 4, 139, 254, 221, 58, 43, 36, 116, 82, 238, 16 | 114, 226, 142, 43, 218, 103, 126, 214, 235, 174, 136, 110, 203, 17 | 86, 67, 147, 189}; 18 | -------------------------------------------------------------------------------- /firmware/sampleCerts/ECDH_RSA/ecdsaPrivKey.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file ecdsaPrivKey.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | unsigned char privkeySrvEcRsaBuf[] = { 8 | 48, 129, 135, 2, 1, 0, 48, 19, 6, 7, 42, 134, 72, 9 | 206, 61, 2, 1, 6, 8, 42, 134, 72, 206, 61, 3, 1, 10 | 7, 4, 109, 48, 107, 2, 1, 1, 4, 32, 78, 245, 76, 11 | 207, 201, 165, 197, 229, 71, 68, 183, 240, 231, 229, 227, 172, 12 | 231, 241, 209, 197, 155, 49, 225, 107, 223, 26, 143, 28, 128, 13 | 247, 135, 70, 161, 68, 3, 66, 0, 4, 167, 138, 67, 50, 14 | 246, 201, 43, 173, 247, 243, 111, 237, 76, 118, 230, 197, 212, 15 | 245, 171, 81, 34, 165, 20, 106, 16, 65, 82, 196, 131, 8, 16 | 162, 11, 207, 80, 3, 126, 251, 151, 158, 116, 17, 153, 212, 17 | 56, 79, 226, 75, 146, 208, 252, 255, 244, 66, 166, 241, 99, 18 | 224, 232, 98, 18, 249, 111, 96, 92}; 19 | -------------------------------------------------------------------------------- /firmware/1024_RSA_KEY.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIICXQIBAAKBgQCrSvuFyxfOeYFTaoA+KAiHCAqIU70jlyIRjlLZ/LWZbl1cpE30 3 | cKKIYcWqY+aa9/SMBKa7doOqQcImlM2dVQB/4f/7vYV3tGkYfqlIoyEnT3qdMsO2 4 | mzlouHYQuoSG0ewBzMofwUpauSCZjTnzrl0RfCMnUpVSXIkAionq0MJFfwIDAQAB 5 | AoGAKx2Ekfi81UvgMY7tGLga7WIoxIfPY9X2zVR1pkjlrOkKtvbkaFKxloKFro3W 6 | zcr70wKYtTbvjTtgEzYBS0jKBvy/nv0fW5Suj37T2Ig2DVCPZXmzqmneZC+5Q0Qy 7 | /uQrfkp+3bj3G3SMLtZzCg7c+4WDbTuh6sZbWuEs5Ef1UYECQQDgdPju4fC1trz0 8 | BHksHc99rpGhL4KU6FB/b4isNr145jz+hueJZYIESZEYmKIBRbkHfM0shct7Fo7T 9 | Km7xq37DAkEAw11jshwRPJ1vckIevBArRU8OKKdCN1gTyFXxIJTAy1Qxt7YOYcg5 10 | HYFQ60ooLhlrSbW0TBBrr/CQECUMTuyqlQJAWunmHlPzvJZsyGW7cswMS/rWT7Q/ 11 | rvK+EC/r6t0tN3gCQpH/3F36IKRvmcfQ7rT/8fFx5VO4DH4hkZSBZW+yIwJBALKH 12 | +31ebNoJvTia999An2pdDkFUaAyPbrSa5RmzFmQ5cp3Bv27YPGmcLUh3ojROgl7/ 13 | r936+43ytpQqZw8Q8+kCQQDeemYttmOkAoxV7Sx9kXOrZXbFDIVkgLWQwUiAFQ1g 14 | 328Xkj/bGdF/8Ik/bacp2RjplNt9amjnvPMM+BgvuN3k 15 | -----END RSA PRIVATE KEY----- 16 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/192_EC_CA.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICYzCCAhqgAwIBAgICG1gwCgYIKoZIzj0EAwIwgZoxCzAJBgNVBAYTAlVTMQsw 3 | CQYDVQQIDAJXQTEQMA4GA1UEBwwHU2VhdHRsZTEjMCEGA1UECgwaSW5zaWRlIFNl 4 | Y3VyZSBDb3Jwb3JhdGlvbi4xDTALBgNVBAsMBFRlc3QxODA2BgNVBAMML01hdHJp 5 | eFNTTCBTYW1wbGUgQ0EgKEVsbGlwdGljIGN1cnZlIHByaW1lMTkydjEpMB4XDTE0 6 | MDMxNzIxMzcwN1oXDTE3MDMxNjIxMzcwN1owgZoxCzAJBgNVBAYTAlVTMQswCQYD 7 | VQQIDAJXQTEQMA4GA1UEBwwHU2VhdHRsZTEjMCEGA1UECgwaSW5zaWRlIFNlY3Vy 8 | ZSBDb3Jwb3JhdGlvbi4xDTALBgNVBAsMBFRlc3QxODA2BgNVBAMML01hdHJpeFNT 9 | TCBTYW1wbGUgQ0EgKEVsbGlwdGljIGN1cnZlIHByaW1lMTkydjEpMEkwEwYHKoZI 10 | zj0CAQYIKoZIzj0DAQEDMgAEWe6hXbueMoJ8mFq4cGMHr/INsxUnjAF2QbZqmqFF 11 | iCP7C+Y9gNYKzPsAV+4Yk2Tgo14wXDAMBgNVHQ8EBQMDBwSAMB0GA1UdDgQWBBST 12 | P7NaOFXdtNZuhMxmzowmWxwXIDAfBgNVHSMEGDAWgBSTP7NaOFXdtNZuhMxmzowm 13 | WxwXIDAMBgNVHRMEBTADAQH/MAoGCCqGSM49BAMCAzcAMDQCGHjQslCOPivsv/kl 14 | 7g+5rcbsZpN2Hc0pGwIYY/o3qkVNF0avpCOE/O/W9RzOXjIbG0IH 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/224_EC_CA.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICbDCCAhqgAwIBAgICH0AwCgYIKoZIzj0EAwIwgZgxCzAJBgNVBAYTAlVTMQsw 3 | CQYDVQQIDAJXQTEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZSW5zaWRlIFNl 4 | Y3VyZSBDb3Jwb3JhdGlvbjENMAsGA1UECwwEVGVzdDE3MDUGA1UEAwwuTWF0cml4 5 | U1NMIFNhbXBsZSBDQSAoRWxsaXB0aWMgY3VydmUgc2VjcDIyNHIxKTAeFw0xNDAz 6 | MTMyMzIwNDBaFw0xNzAzMTIyMzIwNDBaMIGYMQswCQYDVQQGEwJVUzELMAkGA1UE 7 | CAwCV0ExEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoMGUluc2lkZSBTZWN1cmUg 8 | Q29ycG9yYXRpb24xDTALBgNVBAsMBFRlc3QxNzA1BgNVBAMMLk1hdHJpeFNTTCBT 9 | YW1wbGUgQ0EgKEVsbGlwdGljIGN1cnZlIHNlY3AyMjRyMSkwTjAQBgcqhkjOPQIB 10 | BgUrgQQAIQM6AAT9C7N1JTVedaODi1F+/7geKoxbjs7X4cOaUCWNygwrn/o+U6wx 11 | Un9nppKmo9uolEsiMx1fX89IIaNdMFswCwYDVR0PBAQDAgIEMB0GA1UdDgQWBBTB 12 | L63E1QH4keLPwb7mCyLnLTtb2DAfBgNVHSMEGDAWgBTBL63E1QH4keLPwb7mCyLn 13 | LTtb2DAMBgNVHRMEBTADAQH/MAoGCCqGSM49BAMCA0AAMD0CHQD+HFazo7nVuHKc 14 | ItaAl1+HAiIXGvJE+bbrF0IzAhxEp0M7fcNHFaIBcVtv8Dalm9sL4BOWRwYvT/tJ 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /firmware/sampleCerts/ECDH_RSA/CAprivKeyRSA.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAMuS1qtqRLRZs74i 3 | UhzfyYFn9+NM2h4e7wsYUTDZVrr8qn9ctLdfSDme8UlG1SWv/8cJfqLb46Gh5e9w 4 | TS9zfi2zg5i9tfLNSu8ol+ytF7cnqSySDtYwJyammuuyz/cyBWZjYGi+DXkmNGtn 5 | rBZeT9UFa/lETmQ3h/m8aoxadXgVAgMBAAECgYAGD24CllxLPixiqaTmJSdbidvQ 6 | UXZg1SzqmKO6H448bM8qkXjzyIte48NtGgW4ZH/pzfeOI5uoMSimMyKpGfgUmJyq 7 | MXFN0GYkClS3F0/X1+BGHnUPwfiwiDECZJ9uF5i0sYjdiPSb4JDFMnWqQ/86vTEi 8 | IpwIG9mKSD83xGRblQJBAOyh1SgF2VUW7XddpQeC1LbzemJyLXI9AwtxgTi553Iz 9 | 6BNAJouHJdKsrTjXX7QPPldxgF9F9cC7m53AEJkf3jsCQQDcPFPoKCCYGCGllOTW 10 | qh73lUlhcyrFd2Qt64l96iRYtcTf/sooy8KS0m9shRorkKoLSfIKJRLCr77aXmCD 11 | hA3vAkAhz225bjyDX+dGKuctj4/9JATUlCPSMs2AkRM5m7ZqJuh996iKPyE0XN/T 12 | Q1K1U4hAzkLdWg2nICc3/v1gI6GJAkBf71eNlY09M6XUfxt/9vMuXjVs4cIL6ooV 13 | BrkJxGi4y9VKza46Pygu1MP8va48s/Oen0Nz79pQPEYi0WGxaGC5AkAU21Zlawjt 14 | /uDlGeIAVM9BwmLkynIuO60dZsbGReReE6BZ2+hhLeC762DzHa9cW7KPJHQmzQ9N 15 | Nk8iv6EWTvAA 16 | -----END PRIVATE KEY----- 17 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/256_EC_CA.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICgDCCAiagAwIBAgIBATAKBggqhkjOPQQDAjCBmTELMAkGA1UEBhMCVVMxCzAJ 3 | BgNVBAgMAldBMRAwDgYDVQQHDAdTZWF0dGxlMSIwIAYDVQQKDBlJbnNpZGUgU2Vj 4 | dXJlIENvcnBvcmF0aW9uMQ0wCwYDVQQLDARUZXN0MTgwNgYDVQQDDC9NYXRyaXhT 5 | U0wgU2FtcGxlIENBIChFbGxpcHRpYyBjdXJ2ZSBwcmltZTI1NnYxKTAeFw0xNDAz 6 | MTMyMzIxMjNaFw0xNzAzMTIyMzIxMjNaMIGZMQswCQYDVQQGEwJVUzELMAkGA1UE 7 | CAwCV0ExEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoMGUluc2lkZSBTZWN1cmUg 8 | Q29ycG9yYXRpb24xDTALBgNVBAsMBFRlc3QxODA2BgNVBAMML01hdHJpeFNTTCBT 9 | YW1wbGUgQ0EgKEVsbGlwdGljIGN1cnZlIHByaW1lMjU2djEpMFkwEwYHKoZIzj0C 10 | AQYIKoZIzj0DAQcDQgAE01reVhQI4kXRC6l3inBfh4y0Wy/NaXwFYX/p42a/gD+U 11 | iBmqiv+0KPYOuxR6OWVLK31SRJxcWwlpmBYxktrMWKNdMFswCwYDVR0PBAQDAgIE 12 | MB0GA1UdDgQWBBRpDvpHPm1A+Sl/929mhrh6NLsl6zAfBgNVHSMEGDAWgBRpDvpH 13 | Pm1A+Sl/929mhrh6NLsl6zAMBgNVHRMEBTADAQH/MAoGCCqGSM49BAMCA0gAMEUC 14 | IEJpv0FiyaZRsg7ZOQwMVUzDYheq6fOLugz54wmynerYAiEAggMh/X68RLcJiiXO 15 | WmaOeXJatBC1Fs5nAo+RXhxd76M= 16 | -----END CERTIFICATE----- 17 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/192_EC.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICkDCCAkegAwIBAgICG7wwCgYIKoZIzj0EAwIwgZoxCzAJBgNVBAYTAlVTMQsw 3 | CQYDVQQIDAJXQTEQMA4GA1UEBwwHU2VhdHRsZTEjMCEGA1UECgwaSW5zaWRlIFNl 4 | Y3VyZSBDb3Jwb3JhdGlvbi4xDTALBgNVBAsMBFRlc3QxODA2BgNVBAMML01hdHJp 5 | eFNTTCBTYW1wbGUgQ0EgKEVsbGlwdGljIGN1cnZlIHByaW1lMTkydjEpMB4XDTE0 6 | MDMxNzIxMzcwN1oXDTE3MDMxNjIxMzcwN1owgZsxCzAJBgNVBAYTAlVTMQswCQYD 7 | VQQIDAJXQTEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZSW5zaWRlIFNlY3Vy 8 | ZSBDb3Jwb3JhdGlvbjENMAsGA1UECwwEVGVzdDE6MDgGA1UEAwwxTWF0cml4U1NM 9 | IFNhbXBsZSBDZXJ0IChFbGxpcHRpYyBjdXJ2ZSBwcmltZTE5MnYxKTBJMBMGByqG 10 | SM49AgEGCCqGSM49AwEBAzIABMrinHWqY3Irdoc9mq+2tMZpegy4d+cw9Y9OeLMD 11 | aJH2MljFFXCa+NvXS6Nkg2nm0aOBiTCBhjAJBgNVHRMEAjAAMB0GA1UdDgQWBBRD 12 | eSvNZF5wfjUFcslc0kqg9LnaBTAfBgNVHSMEGDAWgBSTP7NaOFXdtNZuhMxmzowm 13 | WxwXIDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwGgYDVR0RBBMwEYIJ 14 | bG9jYWxob3N0hwR/AAABMAoGCCqGSM49BAMCAzcAMDQCGHh2SomIhSEw/zqReq5Q 15 | g0Z3Wer7sa8TuwIYBaGQlgyUMLfBZKWWsWc7qHqSh357Sg04 16 | -----END CERTIFICATE----- 17 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/384_EC_KEY.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 384_EC_KEY.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | unsigned char EC384KEY[] = { 8 | 48, 129, 164, 2, 1, 1, 4, 48, 103, 239, 237, 171, 23, 9 | 87, 4, 87, 202, 192, 186, 232, 244, 68, 82, 162, 64, 193, 10 | 44, 98, 43, 83, 21, 124, 218, 119, 178, 107, 3, 208, 49, 11 | 35, 155, 16, 192, 73, 53, 214, 107, 26, 174, 231, 93, 225, 12 | 33, 135, 4, 26, 160, 7, 6, 5, 43, 129, 4, 0, 34, 13 | 161, 100, 3, 98, 0, 4, 75, 1, 115, 192, 146, 181, 80, 14 | 170, 127, 0, 33, 222, 110, 112, 27, 151, 112, 113, 252, 148, 15 | 147, 123, 95, 9, 120, 87, 107, 67, 85, 67, 25, 33, 16, 16 | 146, 121, 87, 203, 68, 41, 80, 223, 201, 114, 4, 218, 192, 17 | 67, 55, 229, 205, 8, 108, 152, 237, 251, 149, 113, 248, 165, 18 | 136, 183, 18, 39, 81, 184, 16, 123, 20, 253, 41, 35, 232, 19 | 69, 16, 63, 129, 132, 248, 246, 167, 200, 42, 107, 168, 47, 20 | 139, 158, 41, 110, 252, 21, 241, 35, 229, 35, 75}; 21 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/224_EC.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICmzCCAkmgAwIBAgICITQwCgYIKoZIzj0EAwIwgZgxCzAJBgNVBAYTAlVTMQsw 3 | CQYDVQQIDAJXQTEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZSW5zaWRlIFNl 4 | Y3VyZSBDb3Jwb3JhdGlvbjENMAsGA1UECwwEVGVzdDE3MDUGA1UEAwwuTWF0cml4 5 | U1NMIFNhbXBsZSBDQSAoRWxsaXB0aWMgY3VydmUgc2VjcDIyNHIxKTAeFw0xNDAz 6 | MTMyMzIwNDBaFw0xNzAzMTIyMzIwNDBaMIGaMQswCQYDVQQGEwJVUzELMAkGA1UE 7 | CAwCV0ExEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoMGUluc2lkZSBTZWN1cmUg 8 | Q29ycG9yYXRpb24xDTALBgNVBAsMBFRlc3QxOTA3BgNVBAMMME1hdHJpeFNTTCBT 9 | YW1wbGUgQ2VydCAoRWxsaXB0aWMgY3VydmUgc2VjcDIyNHIxKTBOMBAGByqGSM49 10 | AgEGBSuBBAAhAzoABEv1KsRuuSKMpXcWdHRWJrjICxgOLKA/Rb8/kSC88LuNndlA 11 | ej6W6DGBGtpFvUvM6msRX7/zMs/6o4GJMIGGMAkGA1UdEwQCMAAwHQYDVR0OBBYE 12 | FFq74ba2H/5mJ7dRQkBq2CG85Y+zMB8GA1UdIwQYMBaAFMEvrcTVAfiR4s/BvuYL 13 | IuctO1vYMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAaBgNVHREEEzAR 14 | gglsb2NhbGhvc3SHBH8AAAEwCgYIKoZIzj0EAwIDQAAwPQIdANrfAj+7PehA2JEO 15 | qLe8r5gknpF6fGdr+7MEaKcCHFAdgR1XkkbTBPEtoiUAQ3R7aFdThfO+MpHHcLA= 16 | -----END CERTIFICATE----- 17 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/256_EC.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICrzCCAlWgAwIBAgIBAjAKBggqhkjOPQQDAjCBmTELMAkGA1UEBhMCVVMxCzAJ 3 | BgNVBAgMAldBMRAwDgYDVQQHDAdTZWF0dGxlMSIwIAYDVQQKDBlJbnNpZGUgU2Vj 4 | dXJlIENvcnBvcmF0aW9uMQ0wCwYDVQQLDARUZXN0MTgwNgYDVQQDDC9NYXRyaXhT 5 | U0wgU2FtcGxlIENBIChFbGxpcHRpYyBjdXJ2ZSBwcmltZTI1NnYxKTAeFw0xNDAz 6 | MTMyMzIxMjNaFw0xNzAzMTIyMzIxMjNaMIGbMQswCQYDVQQGEwJVUzELMAkGA1UE 7 | CAwCV0ExEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoMGUluc2lkZSBTZWN1cmUg 8 | Q29ycG9yYXRpb24xDTALBgNVBAsMBFRlc3QxOjA4BgNVBAMMMU1hdHJpeFNTTCBT 9 | YW1wbGUgQ2VydCAoRWxsaXB0aWMgY3VydmUgcHJpbWUyNTZ2MSkwWTATBgcqhkjO 10 | PQIBBggqhkjOPQMBBwNCAARfrWICQki6++KI2H+5cssorsOKHsMOnH16pLV/2r1G 11 | WrmVOeBEUXG647NA8lT9I4Sy6iqEo0/XsAi6boDD698vo4GJMIGGMAkGA1UdEwQC 12 | MAAwHQYDVR0OBBYEFB+AdVOtyX3rCXgmq4AYCRxo1LiDMB8GA1UdIwQYMBaAFGkO 13 | +kc+bUD5KX/3b2aGuHo0uyXrMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcD 14 | AjAaBgNVHREEEzARgglsb2NhbGhvc3SHBH8AAAEwCgYIKoZIzj0EAwIDSAAwRQIh 15 | ANB4D6h8q6Z4HalXzU/YBNizkDaU4AHcIElq3tVTjAgSAiAkm/A35NpCTG3Tw9Sm 16 | P0fUrZlcrkenDIMkxKH83HfzqQ== 17 | -----END CERTIFICATE----- 18 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/384_EC_CA.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICvDCCAkKgAwIBAgICIygwCgYIKoZIzj0EAwMwgZgxCzAJBgNVBAYTAlVTMQsw 3 | CQYDVQQIDAJXQTEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZSW5zaWRlIFNl 4 | Y3VyZSBDb3Jwb3JhdGlvbjENMAsGA1UECwwEVGVzdDE3MDUGA1UEAwwuTWF0cml4 5 | U1NMIFNhbXBsZSBDQSAoRWxsaXB0aWMgY3VydmUgc2VjcDM4NHIxKTAeFw0xNDAz 6 | MTMyMzIxMjdaFw0xNzAzMTIyMzIxMjdaMIGYMQswCQYDVQQGEwJVUzELMAkGA1UE 7 | CAwCV0ExEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoMGUluc2lkZSBTZWN1cmUg 8 | Q29ycG9yYXRpb24xDTALBgNVBAsMBFRlc3QxNzA1BgNVBAMMLk1hdHJpeFNTTCBT 9 | YW1wbGUgQ0EgKEVsbGlwdGljIGN1cnZlIHNlY3AzODRyMSkwdjAQBgcqhkjOPQIB 10 | BgUrgQQAIgNiAASeBDSZ74olHYTy8kDE1dFTfVTsIDbfGuLkcPjTOaA5GD2x+i3s 11 | osFG322Uj97c0j0ZLxbsUlg6gMHDv4UnFkIH4ALx15XJEOywoJiKQrVR6CH7Ka/5 12 | RaiydhBG7+Ts38GjXTBbMAsGA1UdDwQEAwICBDAdBgNVHQ4EFgQURO38ixdCbmH2 13 | NZM9P4GXb2doWhswHwYDVR0jBBgwFoAURO38ixdCbmH2NZM9P4GXb2doWhswDAYD 14 | VR0TBAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA1GSuHNsU+JHIF9Tv0Is2bvZH 15 | ZeW26O3ktW1EuHBgobu7aBkpgqT61eefD7T5pNuVAjA+tjAGba3wJQi2MPrOhDMr 16 | 1sKubIXMQswCGQwYe1V7FzznzhRPdIApzZiHTUZYpN4= 17 | -----END CERTIFICATE----- 18 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/384_EC.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIC6jCCAnGgAwIBAgICI4wwCgYIKoZIzj0EAwMwgZgxCzAJBgNVBAYTAlVTMQsw 3 | CQYDVQQIDAJXQTEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZSW5zaWRlIFNl 4 | Y3VyZSBDb3Jwb3JhdGlvbjENMAsGA1UECwwEVGVzdDE3MDUGA1UEAwwuTWF0cml4 5 | U1NMIFNhbXBsZSBDQSAoRWxsaXB0aWMgY3VydmUgc2VjcDM4NHIxKTAeFw0xNDAz 6 | MTMyMzIxMjdaFw0xNzAzMTIyMzIxMjdaMIGaMQswCQYDVQQGEwJVUzELMAkGA1UE 7 | CAwCV0ExEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoMGUluc2lkZSBTZWN1cmUg 8 | Q29ycG9yYXRpb24xDTALBgNVBAsMBFRlc3QxOTA3BgNVBAMMME1hdHJpeFNTTCBT 9 | YW1wbGUgQ2VydCAoRWxsaXB0aWMgY3VydmUgc2VjcDM4NHIxKTB2MBAGByqGSM49 10 | AgEGBSuBBAAiA2IABEsBc8CStVCqfwAh3m5wG5dwcfyUk3tfCXhXa0NVQxkhEJJ5 11 | V8tEKVDfyXIE2sBDN+XNCGyY7fuVcfiliLcSJ1G4EHsU/Skj6EUQP4GE+PanyCpr 12 | qC+Lnilu/BXxI+UjS6OBiTCBhjAJBgNVHRMEAjAAMB0GA1UdDgQWBBSjNw/lkIIn 13 | o56kmQmL6G5aEZStsTAfBgNVHSMEGDAWgBRE7fyLF0JuYfY1kz0/gZdvZ2haGzAd 14 | BgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwGgYDVR0RBBMwEYIJbG9jYWxo 15 | b3N0hwR/AAABMAoGCCqGSM49BAMDA2cAMGQCMG6yOj3uIPNn/1O45R53e8gCyAWD 16 | NGDWcAQxGvwy4eyMGqHdlwnM511CInepnbNwoQIwBzYdLLcZHFHKQIyl7EX9hT8U 17 | 5rjrzdP9XxCAYqaorvbD6QzK2jyIw4Kxf1hbeiUZ 18 | -----END CERTIFICATE----- 19 | -------------------------------------------------------------------------------- /firmware/1024_RSA.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIC/zCCAmigAwIBAgIFMTIzNDUwDQYJKoZIhvcNAQELBQAwgZYxNTAzBgNVBAMM 3 | LFNhbXBsZSBNYXRyaXggUlNBLTEwMjQgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQsw 4 | CQYDVQQGDAJVUzELMAkGA1UECAwCV0ExEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNV 5 | BAoMGUlOU0lERSBTZWN1cmUgQ29ycG9yYXRpb24xDTALBgNVBAsMBFRlc3QwHhcN 6 | MTQwMzI0MTYzNjQzWhcNMTcwMzIzMTYzNjQzWjCBjDErMCkGA1UEAwwiU2FtcGxl 7 | IE1hdHJpeCBSU0EtMTAyNCBDZXJ0aWZpY2F0ZTELMAkGA1UEBgwCVVMxCzAJBgNV 8 | BAgMAldBMRAwDgYDVQQHDAdTZWF0dGxlMSIwIAYDVQQKDBlJTlNJREUgU2VjdXJl 9 | IENvcnBvcmF0aW9uMQ0wCwYDVQQLDARUZXN0MIGfMA0GCSqGSIb3DQEBAQUAA4GN 10 | ADCBiQKBgQCrSvuFyxfOeYFTaoA+KAiHCAqIU70jlyIRjlLZ/LWZbl1cpE30cKKI 11 | YcWqY+aa9/SMBKa7doOqQcImlM2dVQB/4f/7vYV3tGkYfqlIoyEnT3qdMsO2mzlo 12 | uHYQuoSG0ewBzMofwUpauSCZjTnzrl0RfCMnUpVSXIkAionq0MJFfwIDAQABo2Ew 13 | XzAfBgNVHSMEGDAWgBT3JIiDk4lN2QNVwTgnF0Dl7OHUsDAaBgNVHREEEzARggls 14 | b2NhbGhvc3SHBH8AAAEwIAYDVR0lAQH/BBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC 15 | MA0GCSqGSIb3DQEBCwUAA4GBABvy71MAYq8OZgM5XYJnYVE7UcHlio6RjhCmVFsm 16 | 3gIZ1rAF5Kd6UrB0oS1XTha5/54qzlS/xfqfnY9Mrxs2owJY2JTozrxLg+Z3NIhG 17 | 6emKkqfcjC9nC9WukyVTYwch8EojloUUkwOmnGDoWCdhu7lrLZDTmRkJ27TN2ESJ 18 | It5n 19 | -----END CERTIFICATE----- 20 | -------------------------------------------------------------------------------- /firmware/sampleCerts/ECDH_RSA/1024_ECDH-RSA_CA.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIC9jCCAl+gAwIBAgIFMTAwMDAwDQYJKoZIhvcNAQELBQAwgaoxSTBHBgNVBAMM 3 | QFNhbXBsZSBNYXRyaXggUlNBLTEwMjQgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IGZv 4 | ciBFQ0RIX1JTQSBTdWl0ZXMxCzAJBgNVBAYMAlVTMQswCQYDVQQIDAJXQTEQMA4G 5 | A1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZSW5zaWRlIFNlY3VyZSBDb3Jwb3JhdGlv 6 | bjENMAsGA1UECwwEVGVzdDAeFw0xNDAzMTMyMzM2NTZaFw0xNzAzMTIyMzM2NTZa 7 | MIGqMUkwRwYDVQQDDEBTYW1wbGUgTWF0cml4IFJTQS0xMDI0IENlcnRpZmljYXRl 8 | IEF1dGhvcml0eSBmb3IgRUNESF9SU0EgU3VpdGVzMQswCQYDVQQGDAJVUzELMAkG 9 | A1UECAwCV0ExEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoMGUluc2lkZSBTZWN1 10 | cmUgQ29ycG9yYXRpb24xDTALBgNVBAsMBFRlc3QwgZ8wDQYJKoZIhvcNAQEBBQAD 11 | gY0AMIGJAoGBAPkM+TkEIYFxSYlckTDm/H7jUcTblOZDhecqZhnwwDe3iA2Pl2wc 12 | Vk1uzhmOWUaqwMUpCrmhEyyDWGyGso5eLEX1tQR6eM5uHmb1Z5+EoMW008UOwyYn 13 | 0t4XZC5CFpbAilqp2xD4qt6pbhpbaFTY9aRD/NBBm9T9k0xXN08joCJtAgMBAAGj 14 | JjAkMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgAEMA0GCSqGSIb3 15 | DQEBCwUAA4GBANYaSY2kGv3C0OuRnO0DME+86Ds/nvdOcpN95jLJ33X3SBBZlguN 16 | x5IJsJTzm070C8BQYku/g6PQJW3OiCWlPnoYStLId0Zx3DM+yzVRuORIFrdDUa5c 17 | OBdDBA1tSIVjzyT8A1IGwoyFk3s4hYDXlHI4eYfgEPREzSbQumaKvSz5 18 | -----END CERTIFICATE----- 19 | -------------------------------------------------------------------------------- /firmware/1024_RSA_CA.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDDTCCAnagAwIBAgIEMTIzNDANBgkqhkiG9w0BAQsFADCBljE1MDMGA1UEAwws 3 | U2FtcGxlIE1hdHJpeCBSU0EtMTAyNCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxCzAJ 4 | BgNVBAYMAlVTMQswCQYDVQQIDAJXQTEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UE 5 | CgwZSU5TSURFIFNlY3VyZSBDb3Jwb3JhdGlvbjENMAsGA1UECwwEVGVzdDAeFw0x 6 | NDAzMjQxNjI2NDZaFw0xNzAzMjMxNjI2NDZaMIGWMTUwMwYDVQQDDCxTYW1wbGUg 7 | TWF0cml4IFJTQS0xMDI0IENlcnRpZmljYXRlIEF1dGhvcml0eTELMAkGA1UEBgwC 8 | VVMxCzAJBgNVBAgMAldBMRAwDgYDVQQHDAdTZWF0dGxlMSIwIAYDVQQKDBlJTlNJ 9 | REUgU2VjdXJlIENvcnBvcmF0aW9uMQ0wCwYDVQQLDARUZXN0MIGfMA0GCSqGSIb3 10 | DQEBAQUAA4GNADCBiQKBgQC/QFDy4jg5ITh0kSJxBB3GMTVKqTfGsWEU4afebxkP 11 | zxSg6lRz1iCdNzSAu8Z0jE2cURYN1jTnpwS84JPoH5o+mNxdFuPV4YYi32KJm2fO 12 | hNowdqjNIMcbNXCo4qot2qiMMLUsIgzlUxG0tRYNHLmf9eBCwegD0rZ7cS6nAYpp 13 | +QIDAQABo2YwZDASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBT3JIiDk4lN 14 | 2QNVwTgnF0Dl7OHUsDAfBgNVHSMEGDAWgBT3JIiDk4lN2QNVwTgnF0Dl7OHUsDAO 15 | BgNVHQ8BAf8EBAMCAAQwDQYJKoZIhvcNAQELBQADgYEAQZbZwTjfdN7kf8Z618rd 16 | 7/nMdXmDrDdz3WSbCpiEf51mQsfNjJgc9Xox1RdnqMlijqI2ivza+GTNnGt4Le98 17 | 88rK44bHhfeTJ1FDVPe8udAnGG3Gug7gxResVSOitB8cVgwngURCQM8QGyIM04mf 18 | CfLzM2vTHDuSp6tevTrpgow= 19 | -----END CERTIFICATE----- 20 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/521_EC_CA.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDBjCCAmigAwIBAgICI/AwCgYIKoZIzj0EAwMwgZgxCzAJBgNVBAYTAlVTMQsw 3 | CQYDVQQIDAJXQTEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZSW5zaWRlIFNl 4 | Y3VyZSBDb3Jwb3JhdGlvbjENMAsGA1UECwwEVGVzdDE3MDUGA1UEAwwuTWF0cml4 5 | U1NMIFNhbXBsZSBDQSAoRWxsaXB0aWMgY3VydmUgc2VjcDUyMXIxKTAeFw0xNDAz 6 | MTMyMzIxMzFaFw0xNzAzMTIyMzIxMzFaMIGYMQswCQYDVQQGEwJVUzELMAkGA1UE 7 | CAwCV0ExEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoMGUluc2lkZSBTZWN1cmUg 8 | Q29ycG9yYXRpb24xDTALBgNVBAsMBFRlc3QxNzA1BgNVBAMMLk1hdHJpeFNTTCBT 9 | YW1wbGUgQ0EgKEVsbGlwdGljIGN1cnZlIHNlY3A1MjFyMSkwgZswEAYHKoZIzj0C 10 | AQYFK4EEACMDgYYABAErQ9iNn9UvnVUL/nILMteOQsQCl7PNdxWh6vZkNXJyZ7Nf 11 | dyZtb3crS6Ga24x2xNydYC07XgfxpXURInr175l3RADELacTwMeL1ZaSba6ElSUf 12 | sGh7iXW/Rraeoqxw9uwXbpguC6wTeF9UjAC9Ooxc16SGtZwEZ3Xg3E2KQkbs5F3x 13 | qqNdMFswCwYDVR0PBAQDAgIEMB0GA1UdDgQWBBQZsL6knYs8ROWGtReh1g26Qh24 14 | qTAfBgNVHSMEGDAWgBQZsL6knYs8ROWGtReh1g26Qh24qTAMBgNVHRMEBTADAQH/ 15 | MAoGCCqGSM49BAMDA4GLADCBhwJCATeYaKBrs5LTy2tQrnnBh0MA7SszDG4c7biJ 16 | 6jkDT6CAhXELKKpQEsH5lvU6kJ7ETHpkR+genp/kohNNRBM6cvekAkEziO9q01Ej 17 | 0GRBKt512ka1rJ1wbmzpUWJmtYd9MaynqRHxF5/BhTumhmXpkNZrPKiekEMuOItF 18 | MrBbzWh3D8M3fg== 19 | -----END CERTIFICATE----- 20 | -------------------------------------------------------------------------------- /firmware/sampleCerts/dh1024.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file dh1024.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | /******************************************************************************/ 8 | /* 9 | In-Memory version of the PEM file dh1024.pem 10 | */ 11 | unsigned char dhParamBuf1024[] = {0x30, 0x81, 0x87, 0x02, 0x81, 0x81, 0x00, 0x97, 12 | 0xf6, 0x42, 0x61, 0xca, 0xb5, 0x05, 0xdd, 0x28, 0x28, 0xe1, 0x3f, 0x1d, 0x68, 13 | 0xb6, 0xd3, 0xdb, 0xd0, 0xf3, 0x13, 0x04, 0x7f, 0x40, 0xe8, 0x56, 0xda, 0x58, 14 | 0xcb, 0x13, 0xb8, 0xa1, 0xbf, 0x2b, 0x78, 0x3a, 0x4c, 0x6d, 0x59, 0xd5, 0xf9, 15 | 0x2a, 0xfc, 0x6c, 0xff, 0x3d, 0x69, 0x3f, 0x78, 0xb2, 0x3d, 0x4f, 0x31, 0x60, 16 | 0xa9, 0x50, 0x2e, 0x3e, 0xfa, 0xf7, 0xab, 0x5e, 0x1a, 0xd5, 0xa6, 0x5e, 0x55, 17 | 0x43, 0x13, 0x82, 0x8d, 0xa8, 0x3b, 0x9f, 0xf2, 0xd9, 0x41, 0xde, 0xe9, 0x56, 18 | 0x89, 0xfa, 0xda, 0xea, 0x09, 0x36, 0xad, 0xdf, 0x19, 0x71, 0xfe, 0x63, 0x5b, 19 | 0x20, 0xaf, 0x47, 0x03, 0x64, 0x60, 0x3c, 0x2d, 0xe0, 0x59, 0xf5, 0x4b, 0x65, 20 | 0x0a, 0xd8, 0xfa, 0x0c, 0xf7, 0x01, 0x21, 0xc7, 0x47, 0x99, 0xd7, 0x58, 0x71, 21 | 0x32, 0xbe, 0x9b, 0x99, 0x9b, 0xb9, 0xb7, 0x87, 0xe8, 0xab, 0x02, 0x01, 0x02}; 22 | 23 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/521_EC.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDNTCCApegAwIBAgICJFQwCgYIKoZIzj0EAwMwgZgxCzAJBgNVBAYTAlVTMQsw 3 | CQYDVQQIDAJXQTEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZSW5zaWRlIFNl 4 | Y3VyZSBDb3Jwb3JhdGlvbjENMAsGA1UECwwEVGVzdDE3MDUGA1UEAwwuTWF0cml4 5 | U1NMIFNhbXBsZSBDQSAoRWxsaXB0aWMgY3VydmUgc2VjcDUyMXIxKTAeFw0xNDAz 6 | MTMyMzIxMzFaFw0xNzAzMTIyMzIxMzFaMIGaMQswCQYDVQQGEwJVUzELMAkGA1UE 7 | CAwCV0ExEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoMGUluc2lkZSBTZWN1cmUg 8 | Q29ycG9yYXRpb24xDTALBgNVBAsMBFRlc3QxOTA3BgNVBAMMME1hdHJpeFNTTCBT 9 | YW1wbGUgQ2VydCAoRWxsaXB0aWMgY3VydmUgc2VjcDUyMXIxKTCBmzAQBgcqhkjO 10 | PQIBBgUrgQQAIwOBhgAEAApaO7jGFoUuh2eme1xuKYpe4hEDgyggWD7TWrVo2bfv 11 | 7BaVweh9uAf0FlA9MGF4lXXraAoL/14IXXVmAa8pH9VdAMXzTVpj7wdJrol1spqg 12 | a0VvT9WzR6PMfKwRJImaXWO6hcLPw3tD0s793OqWdq2kYYqj+6YmaFAugIKtccX4 13 | yyDuo4GJMIGGMAkGA1UdEwQCMAAwHQYDVR0OBBYEFCY7Er0voZ8/2DXj0YMjIes1 14 | 2teGMB8GA1UdIwQYMBaAFBmwvqSdizxE5Ya1F6HWDbpCHbipMB0GA1UdJQQWMBQG 15 | CCsGAQUFBwMBBggrBgEFBQcDAjAaBgNVHREEEzARgglsb2NhbGhvc3SHBH8AAAEw 16 | CgYIKoZIzj0EAwMDgYsAMIGHAkIB6fITLR6hyhgbUlats8MlzYsc5XsMp5sjnRXu 17 | tGXpsIfezCK+dkNORcwjeCPXvER9TP1sjJMyA634nhqeVia7aLsCQQF7N3TpunfG 18 | waUARgVCBoDAZn8bnS/rtG/emDHeZm7zyapYFQJkJ+bbNkm1Fim2j7oangp7BmKY 19 | YPuMIujukZ4C 20 | -----END CERTIFICATE----- 21 | -------------------------------------------------------------------------------- /firmware/sampleCerts/ECDH_RSA/CAcertRSA.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDNDCCAp2gAwIBAgIJAKhED47lkKreMA0GCSqGSIb3DQEBBQUAMHAxCzAJBgNV 3 | BAYTAlVTMQswCQYDVQQIEwJXQTEQMA4GA1UEBxMHU2VhdHRsZTEQMA4GA1UEChMH 4 | UGVlclNlYzENMAsGA1UECxMEVGVzdDEhMB8GA1UEAxQYUlNBIENBIGZvciBFQ0RI 5 | X1JTQSB0ZXN0MB4XDTExMDYwOTIyMzk0MVoXDTExMDcwOTIyMzk0MVowcDELMAkG 6 | A1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMRAwDgYDVQQK 7 | EwdQZWVyU2VjMQ0wCwYDVQQLEwRUZXN0MSEwHwYDVQQDFBhSU0EgQ0EgZm9yIEVD 8 | REhfUlNBIHRlc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMuS1qtqRLRZ 9 | s74iUhzfyYFn9+NM2h4e7wsYUTDZVrr8qn9ctLdfSDme8UlG1SWv/8cJfqLb46Gh 10 | 5e9wTS9zfi2zg5i9tfLNSu8ol+ytF7cnqSySDtYwJyammuuyz/cyBWZjYGi+DXkm 11 | NGtnrBZeT9UFa/lETmQ3h/m8aoxadXgVAgMBAAGjgdUwgdIwHQYDVR0OBBYEFKsR 12 | AEQhydrLtcBNgJpw3hmLZcm2MIGiBgNVHSMEgZowgZeAFKsRAEQhydrLtcBNgJpw 13 | 3hmLZcm2oXSkcjBwMQswCQYDVQQGEwJVUzELMAkGA1UECBMCV0ExEDAOBgNVBAcT 14 | B1NlYXR0bGUxEDAOBgNVBAoTB1BlZXJTZWMxDTALBgNVBAsTBFRlc3QxITAfBgNV 15 | BAMUGFJTQSBDQSBmb3IgRUNESF9SU0EgdGVzdIIJAKhED47lkKreMAwGA1UdEwQF 16 | MAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAeJLQPBToRDtM22joORlwn1K2ZPClNldf 17 | zrm2WaIFfIjLzCawH3MC2Rvg8y7P6m8IZcnik8NmA8aUrul03gm1LSM8aO9X6XmU 18 | Lgpufz2BLsOtl1Jbuz8cLUM+H3qkqWvytd59RVbF+f03QKFAGBL639Uc4gD5yknd 19 | OiszvWDIeKw= 20 | -----END CERTIFICATE----- 21 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/521_EC_KEY.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 521_EC_KEY.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | unsigned char EC521KEY[] = { 8 | 48, 129, 220, 2, 1, 1, 4, 66, 1, 61, 178, 110, 159, 9 | 192, 227, 152, 83, 166, 55, 109, 132, 24, 166, 8, 182, 194, 10 | 63, 182, 1, 42, 230, 237, 70, 246, 191, 159, 66, 9, 118, 11 | 254, 6, 47, 221, 238, 129, 213, 56, 15, 35, 33, 145, 206, 12 | 187, 19, 122, 162, 2, 18, 163, 251, 222, 60, 118, 236, 97, 13 | 66, 146, 37, 192, 132, 16, 200, 117, 79, 160, 7, 6, 5, 14 | 43, 129, 4, 0, 35, 161, 129, 137, 3, 129, 134, 0, 4, 15 | 0, 10, 90, 59, 184, 198, 22, 133, 46, 135, 103, 166, 123, 16 | 92, 110, 41, 138, 94, 226, 17, 3, 131, 40, 32, 88, 62, 17 | 211, 90, 181, 104, 217, 183, 239, 236, 22, 149, 193, 232, 125, 18 | 184, 7, 244, 22, 80, 61, 48, 97, 120, 149, 117, 235, 104, 19 | 10, 11, 255, 94, 8, 93, 117, 102, 1, 175, 41, 31, 213, 20 | 93, 0, 197, 243, 77, 90, 99, 239, 7, 73, 174, 137, 117, 21 | 178, 154, 160, 107, 69, 111, 79, 213, 179, 71, 163, 204, 124, 22 | 172, 17, 36, 137, 154, 93, 99, 186, 133, 194, 207, 195, 123, 23 | 67, 210, 206, 253, 220, 234, 150, 118, 173, 164, 97, 138, 163, 24 | 251, 166, 38, 104, 80, 46, 128, 130, 173, 113, 197, 248, 203, 25 | 32, 238}; 26 | -------------------------------------------------------------------------------- /firmware/sampleCerts/ECDH_RSA/521_ECDH-RSA_KEY.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 521_ECDH-RSA_KEY.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | unsigned char ECDHRSA521KEY[] = { 8 | 48, 129, 219, 2, 1, 1, 4, 65, 107, 194, 80, 213, 12, 9 | 72, 105, 38, 223, 124, 205, 235, 27, 233, 4, 234, 49, 223, 10 | 57, 51, 220, 150, 253, 177, 7, 251, 223, 113, 241, 138, 171, 11 | 98, 101, 197, 138, 177, 201, 9, 128, 60, 62, 9, 239, 184, 12 | 91, 68, 42, 236, 151, 107, 50, 126, 249, 99, 140, 100, 2, 13 | 69, 75, 104, 233, 152, 98, 149, 46, 160, 7, 6, 5, 43, 14 | 129, 4, 0, 35, 161, 129, 137, 3, 129, 134, 0, 4, 0, 15 | 49, 27, 198, 186, 141, 142, 7, 108, 83, 30, 218, 91, 85, 16 | 229, 245, 125, 112, 242, 232, 237, 198, 157, 31, 31, 11, 216, 17 | 151, 244, 158, 244, 187, 107, 16, 187, 15, 26, 233, 26, 16, 18 | 96, 109, 202, 12, 220, 203, 245, 34, 180, 155, 185, 243, 150, 19 | 60, 162, 158, 98, 248, 102, 52, 243, 181, 195, 23, 115, 117, 20 | 1, 6, 229, 46, 242, 242, 164, 81, 22, 19, 150, 54, 220, 21 | 137, 217, 53, 193, 85, 81, 167, 167, 233, 5, 197, 98, 75, 22 | 2, 155, 225, 103, 232, 229, 58, 151, 188, 27, 83, 179, 191, 23 | 57, 88, 134, 117, 151, 255, 253, 91, 112, 242, 75, 97, 114, 24 | 118, 223, 164, 219, 5, 129, 183, 162, 210, 156, 243, 195, 110, 25 | 136}; 26 | -------------------------------------------------------------------------------- /firmware/sampleCerts/ECDH_RSA/256_ECDH-RSA.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDszCCAxygAwIBAgICLuAwDQYJKoZIhvcNAQELBQAwgaoxSTBHBgNVBAMMQFNh 3 | bXBsZSBNYXRyaXggUlNBLTEwMjQgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IGZvciBF 4 | Q0RIX1JTQSBTdWl0ZXMxCzAJBgNVBAYMAlVTMQswCQYDVQQIDAJXQTEQMA4GA1UE 5 | BwwHU2VhdHRsZTEiMCAGA1UECgwZSW5zaWRlIFNlY3VyZSBDb3Jwb3JhdGlvbjEN 6 | MAsGA1UECwwEVGVzdDAeFw0xNDAzMTMyMzM3NTJaFw0xNzAzMTIyMzM3NTJaMIGk 7 | MQswCQYDVQQGEwJVUzELMAkGA1UECAwCV0ExEDAOBgNVBAcMB1NlYXR0bGUxIjAg 8 | BgNVBAoMGUluc2lkZSBTZWN1cmUgQ29ycG9yYXRpb24xDTALBgNVBAsMBFRlc3Qx 9 | QzBBBgNVBAMMOk1hdHJpeFNTTCBTYW1wbGUgRUNESF9SU0EgQ2VydCAoRWxsaXB0 10 | aWMgY3VydmUgcHJpbWUyNTZ2MSkwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASX 11 | Po/C2aeqtJ4s5DHVl/SuPW6K76OlJ8LmM1dsoPW44sePdbqNBIv+3TorJHRS7nLi 12 | jivaZ37W666IbstWQ5O9o4IBMTCCAS0wCQYDVR0TBAIwADAdBgNVHQ4EFgQUIj7i 13 | gcqhR0cEqf3bG68jZvWNwvowgcUGA1UdIwSBvTCBuqGBsKSBrTCBqjFJMEcGA1UE 14 | AwxAU2FtcGxlIE1hdHJpeCBSU0EtMTAyNCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkg 15 | Zm9yIEVDREhfUlNBIFN1aXRlczELMAkGA1UEBgwCVVMxCzAJBgNVBAgMAldBMRAw 16 | DgYDVQQHDAdTZWF0dGxlMSIwIAYDVQQKDBlJbnNpZGUgU2VjdXJlIENvcnBvcmF0 17 | aW9uMQ0wCwYDVQQLDARUZXN0ggUxMDAwMDAdBgNVHSUEFjAUBggrBgEFBQcDAQYI 18 | KwYBBQUHAwIwGgYDVR0RBBMwEYIJbG9jYWxob3N0hwR/AAABMA0GCSqGSIb3DQEB 19 | CwUAA4GBAA0wDNAG8JzjG3SgiAIUYFQXgophjPbIm/wlobkh/DiQ3oi90CR/CmiM 20 | 4HjnZUlkhxOB9ysht78BbcqGdtTPC65NbCd4K7Va4jZMhhPJZZwKrTpLG92d0+6T 21 | L7kuuC884nAYdfalSI88YitJE1Ay1hzg66KU8aANiNsbJgT9JxVZ 22 | -----END CERTIFICATE----- 23 | -------------------------------------------------------------------------------- /firmware/2048_RSA.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIEBDCCAuygAwIBAgIFMjM0NTYwDQYJKoZIhvcNAQELBQAwgZYxNTAzBgNVBAMM 3 | LFNhbXBsZSBNYXRyaXggUlNBLTIwNDggQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQsw 4 | CQYDVQQGDAJVUzELMAkGA1UECAwCV0ExEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNV 5 | BAoMGUlOU0lERSBTZWN1cmUgQ29ycG9yYXRpb24xDTALBgNVBAsMBFRlc3QwHhcN 6 | MTQwMzI0MTYzOTAzWhcNMTcwMzIzMTYzOTAzWjCBjDErMCkGA1UEAwwiU2FtcGxl 7 | IE1hdHJpeCBSU0EtMjA0OCBDZXJ0aWZpY2F0ZTELMAkGA1UEBgwCVVMxCzAJBgNV 8 | BAgMAldBMRAwDgYDVQQHDAdTZWF0dGxlMSIwIAYDVQQKDBlJTlNJREUgU2VjdXJl 9 | IENvcnBvcmF0aW9uMQ0wCwYDVQQLDARUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOC 10 | AQ8AMIIBCgKCAQEArWoz7qJzbWi6vS2xtVTwBBT/vddbTGnn9GZ/rAbhlXdrnZof 11 | UWHm0pJQ3A9dFQye0zem+Xc2dnTaP1B/nN9SyTJM2iIx65Swz1bukYYwqSQpAS+D 12 | 0QhzlJfh24iFO+FGK8X/A+p8dKaJZEHMiOecrzP7SOdbym+QdXpCorqKTgY4h1Fm 13 | lsHviuKy52NX9Pr4pk1NQyisOkzuM13xIQ3U/J4j8CnY9lVmNhopem0zLw0wcvi0 14 | K3/pYXVJ3f07LCnfe7GWMgyYxDY82AyC08f08PTE4nzUVq50YPzC6UTa9HQSBWpP 15 | vLq7TASqQ51QiKeiOHNaAQFAzdJ8ech43CZE5QIDAQABo2EwXzAfBgNVHSMEGDAW 16 | gBT0n+mRQ6wcm90HQC1pZzzv1OrbVDAaBgNVHREEEzARgglsb2NhbGhvc3SHBH8A 17 | AAEwIAYDVR0lAQH/BBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA0GCSqGSIb3DQEB 18 | CwUAA4IBAQABBo8ubIKM/M+m9q/8uIlInvnj+ptyzBIxsX4LncZWJ97sA94DrS6y 19 | 4gV9vKJP6Kf74EoeeVSCNV/ybgbEKiqBt9HtKEK1gqb+Yk0EWF9TnZDuxkzSFd4v 20 | 7RyhGO+i051xesj6zkumxr/wrbDdLk6zL2/trpS3kSmJd3qgibFvlaQVfRsEQezF 21 | Rok1JLne7eddcRPXnj2iBOaOfPic+CcbKttC44nQV2638BSTG0TIzqwjy40Kr0tX 22 | GaNWEgbvxR3SgqBUCqu7lUswjO37ssOKx+vwWUjYNcd8zKf7qGdd//cudYOtgxUy 23 | KN650I7ya8LJ3Csjv0o/O69/tdOjuuYj 24 | -----END CERTIFICATE----- 25 | -------------------------------------------------------------------------------- /firmware/sampleCerts/ECDH_RSA/2048_ECDH-RSA_CA.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIID+zCCAuOgAwIBAgIFMTEwMDAwDQYJKoZIhvcNAQELBQAwgaoxSTBHBgNVBAMM 3 | QFNhbXBsZSBNYXRyaXggUlNBLTIwNDggQ2VydGlmaWNhdGUgQXV0aG9yaXR5IGZv 4 | ciBFQ0RIX1JTQSBzdWl0ZXMxCzAJBgNVBAYMAlVTMQswCQYDVQQIDAJXQTEQMA4G 5 | A1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZSW5zaWRlIFNlY3VyZSBDb3Jwb3JhdGlv 6 | bjENMAsGA1UECwwEVGVzdDAeFw0xNDAzMTMyMzM3MTZaFw0xNzAzMTIyMzM3MTZa 7 | MIGqMUkwRwYDVQQDDEBTYW1wbGUgTWF0cml4IFJTQS0yMDQ4IENlcnRpZmljYXRl 8 | IEF1dGhvcml0eSBmb3IgRUNESF9SU0Egc3VpdGVzMQswCQYDVQQGDAJVUzELMAkG 9 | A1UECAwCV0ExEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoMGUluc2lkZSBTZWN1 10 | cmUgQ29ycG9yYXRpb24xDTALBgNVBAsMBFRlc3QwggEiMA0GCSqGSIb3DQEBAQUA 11 | A4IBDwAwggEKAoIBAQC3mh36c2ey0o+DklPwuLmcdgvmNSNbPMzvHCBz+1cgtFKK 12 | DPCEsC71WziChXnTKy1n+zu5fhJdTF0bWrbcwjLZKz19cQyLO/n1C4j3sBFp+VZt 13 | 5lfSKD4ByVBewUEW6jqik+t4/XpuWqAVGZ/YlQ1vfYeNKs9rxepLSGU38roGOyFO 14 | mQZ5c3mRzpQ08mjeaDkRvr7b/xtcIqLIVQN1IlBt4GTP4CKGrXsjB5wpAO2E8cea 15 | DxRC1J1LvzulXnlCGk/ZDv2t1+R6VoWwbHXeofTP1mvhZHtX8r/DXMRuIACwZoWK 16 | 561EF89vx+gBp3xFsAb4zgmOlVk/BPySrjGhzVzTAgMBAAGjJjAkMBIGA1UdEwEB 17 | /wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgAEMA0GCSqGSIb3DQEBCwUAA4IBAQCm 18 | 703IwsvgTsjUPAthXnOHgVbTbQmivJ3RrLoBgqZa8wb7NwYJz9puYgQ4QEjKwW8O 19 | IkHI3qIfBcplExTXW6qA9v8K5r5HylUpDPDINI3baW4B6J25yFWGmCdMksr4uMXf 20 | m8qdCcBZyCLNsgDyCqCP4/blfpaqx66i4XvuhblgH7Ep3EJtyti45oRvYrx6g+V7 21 | uKui1T1f9dcAENyArj5EFCdejopNQfSf1iOLfsbSjTyO62R0gnZvew0KnyfO10yd 22 | 4moUxv7izpoe50VRlEcReNvpvsFKxOIrYqCtuB9B4112nDjRj3OpNalvt4Slls7f 23 | tx0ZabdAxdbzuLBNHJme 24 | -----END CERTIFICATE----- 25 | -------------------------------------------------------------------------------- /firmware/2048_RSA_CA.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIEFDCCAvygAwIBAgIGMjM0NTY3MA0GCSqGSIb3DQEBCwUAMIGWMTUwMwYDVQQD 3 | DCxTYW1wbGUgTWF0cml4IFJTQS0yMDQ4IENlcnRpZmljYXRlIEF1dGhvcml0eTEL 4 | MAkGA1UEBgwCVVMxCzAJBgNVBAgMAldBMRAwDgYDVQQHDAdTZWF0dGxlMSIwIAYD 5 | VQQKDBlJTlNJREUgU2VjdXJlIENvcnBvcmF0aW9uMQ0wCwYDVQQLDARUZXN0MB4X 6 | DTE0MDMyNDE2MjcwM1oXDTE3MDMyMzE2MjcwM1owgZYxNTAzBgNVBAMMLFNhbXBs 7 | ZSBNYXRyaXggUlNBLTIwNDggQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQswCQYDVQQG 8 | DAJVUzELMAkGA1UECAwCV0ExEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoMGUlO 9 | U0lERSBTZWN1cmUgQ29ycG9yYXRpb24xDTALBgNVBAsMBFRlc3QwggEiMA0GCSqG 10 | SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDMq1tAOwpLwINcaOX0AFoVGuN486BBI5Na 11 | wcb6BJCjRY4wXJGKbYS/eMDLse5lr6pduvE1BLVAlO28jPXrobuPovq3quxTd4uv 12 | ttF48VhZAGyPmEQdc0zhGoqwYYDdwN+bdF/QfGZmI9wwnE3g7NpuBMTIYqIhEe8o 13 | 3G3pMbd6nsrbusKckx4kqZp0vqQmTrtfeQTTQXIFolOaRCABSERdM3JjP6qidwn1 14 | w+ImtRKHIa1K55mZ7z2y+r2ywmrOpjqFej8glLoVf3qC6W++oLrq0OQ6Oai7VWC4 15 | KDrRowdQUfWAK/Raght9VqkxBCOxNNJx1RySgtW2/HSGBmrx6HLRAgMBAAGjZjBk 16 | MBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFPSf6ZFDrByb3QdALWlnPO/U 17 | 6ttUMB8GA1UdIwQYMBaAFPSf6ZFDrByb3QdALWlnPO/U6ttUMA4GA1UdDwEB/wQE 18 | AwIABDANBgkqhkiG9w0BAQsFAAOCAQEAgGFSYSJN/EfPVgjNsBO1rTu2CnFXwsD+ 19 | Af+JYBho7uCBHpxDSzGmW8glhEsRKl76p79njjrPj27qOu/axDJhqV0ri/SLK4rR 20 | nRjXD9Kb4foAr9b+/0cdelXpgz7K70sN6CxC9r9tgQpSr6nj+RnJVkBdWB7x/jeO 21 | UBf6D2ackY6I51zJMIw1FpJwejSqxPC6kBVHLK+uhgy1leUoYqMgVr+3GktP6fPE 22 | GPC/w9N6z+lAn4iIYHVrmLU9qzDKW5XHovhmRwNxicBX8uuzqUnyEP6ofWuQZvif 23 | Rp+0LF/jFffTRNfpFz1RGYwuTbHLN3CUViiMxWyTE7PrGgxwTtQ1Lw== 24 | -----END CERTIFICATE----- 25 | -------------------------------------------------------------------------------- /firmware/dtls.c: -------------------------------------------------------------------------------- 1 | /** 2 | * @file dtls.c 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * DTLS specific code. 6 | */ 7 | /* 8 | * Copyright (c) 2013-2015 INSIDE Secure Corporation 9 | * Copyright (c) PeerSec Networks, 2002-2011 10 | * All Rights Reserved 11 | * 12 | * The latest version of this code is available at http://www.matrixssl.org 13 | * 14 | * This software is open source; you can redistribute it and/or modify 15 | * it under the terms of the GNU General Public License as published by 16 | * the Free Software Foundation; either version 2 of the License, or 17 | * (at your option) any later version. 18 | * 19 | * This General Public License does NOT permit incorporating this software 20 | * into proprietary programs. If you are unable to comply with the GPL, a 21 | * commercial license for this software may be purchased from INSIDE at 22 | * http://www.insidesecure.com/eng/Company/Locations 23 | * 24 | * This program is distributed in WITHOUT ANY WARRANTY; without even the 25 | * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 26 | * See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License 29 | * along with this program; if not, write to the Free Software 30 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 31 | * http://www.gnu.org/copyleft/gpl.html 32 | */ 33 | /******************************************************************************/ 34 | 35 | #include "matrixsslApi.h" 36 | 37 | 38 | -------------------------------------------------------------------------------- /firmware/sampleCerts/ECDH_RSA/521_ECDH-RSA.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIEdjCCA16gAwIBAgICMsgwDQYJKoZIhvcNAQELBQAwgaoxSTBHBgNVBAMMQFNh 3 | bXBsZSBNYXRyaXggUlNBLTIwNDggQ2VydGlmaWNhdGUgQXV0aG9yaXR5IGZvciBF 4 | Q0RIX1JTQSBzdWl0ZXMxCzAJBgNVBAYMAlVTMQswCQYDVQQIDAJXQTEQMA4GA1UE 5 | BwwHU2VhdHRsZTEiMCAGA1UECgwZSW5zaWRlIFNlY3VyZSBDb3Jwb3JhdGlvbjEN 6 | MAsGA1UECwwEVGVzdDAeFw0xNDAzMTMyMzM4NTlaFw0xNzAzMTIyMzM4NTlaMIGj 7 | MQswCQYDVQQGEwJVUzELMAkGA1UECAwCV0ExEDAOBgNVBAcMB1NlYXR0bGUxIjAg 8 | BgNVBAoMGUluc2lkZSBTZWN1cmUgQ29ycG9yYXRpb24xDTALBgNVBAsMBFRlc3Qx 9 | QjBABgNVBAMMOU1hdHJpeFNTTCBTYW1wbGUgRUNESF9SU0EgQ2VydCAoRWxsaXB0 10 | aWMgY3VydmUgc2VjcDUyMXIxKTCBmzAQBgcqhkjOPQIBBgUrgQQAIwOBhgAEADEb 11 | xrqNjgdsUx7aW1Xl9X1w8ujtxp0fHwvYl/Se9LtrELsPGukaEGBtygzcy/UitJu5 12 | 85Y8op5i+GY087XDF3N1AQblLvLypFEWE5Y23InZNcFVUaen6QXFYksCm+Fn6OU6 13 | l7wbU7O/OViGdZf//Vtw8kthcnbfpNsFgbei0pzzw26Io4IBMTCCAS0wCQYDVR0T 14 | BAIwADAdBgNVHQ4EFgQU2+yNljsZInj+Zq0gcQP3T4XtxqIwgcUGA1UdIwSBvTCB 15 | uqGBsKSBrTCBqjFJMEcGA1UEAwxAU2FtcGxlIE1hdHJpeCBSU0EtMjA0OCBDZXJ0 16 | aWZpY2F0ZSBBdXRob3JpdHkgZm9yIEVDREhfUlNBIHN1aXRlczELMAkGA1UEBgwC 17 | VVMxCzAJBgNVBAgMAldBMRAwDgYDVQQHDAdTZWF0dGxlMSIwIAYDVQQKDBlJbnNp 18 | ZGUgU2VjdXJlIENvcnBvcmF0aW9uMQ0wCwYDVQQLDARUZXN0ggUxMTAwMDAdBgNV 19 | HSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwGgYDVR0RBBMwEYIJbG9jYWxob3N0 20 | hwR/AAABMA0GCSqGSIb3DQEBCwUAA4IBAQADy1KnieKL4QJ/0TQ/2lSNtqEqEH0/ 21 | vTlk9a+UfwHnsrOLS7U3fCRp4ibKxzpIIGpQcJ0bbwpuayh5OzmUirCSRPpxQXVU 22 | +AVjaqH6GD40bPYqmNg3un1GFTor/LED71GF1Y2G0FthdUEfTlj5Mr1ZV7G6JjeZ 23 | ijarcSxXh2z3GEuNJ86oIi02rI+slgnrx4af06TKBoK/55fHe6+vyxWaf/TbU9gA 24 | UJp5CJWRSUo+q97ZMdNfdv5WFOCNCAnRVDcgTgnBa/06jYm4NVUbFZWvKPMQV48Y 25 | iu3X6DTFtGP/wKsv1IHio0CQDt35QXl2dY9kFAYq8UljE62u0Okb/RDz 26 | -----END CERTIFICATE----- 27 | -------------------------------------------------------------------------------- /firmware/sampleCerts/psk.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file psk.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | /* 8 | Example Pre-Shared Key file generated with the symkeygen utility 9 | 10 | symkeygen -cipher aes-128 -header 11 | */ 12 | 13 | typedef struct { 14 | unsigned char id[16]; 15 | unsigned char key[16]; 16 | } pskStruct_t; 17 | 18 | /* Backwards compatibility for samples using original name of table */ 19 | #define pskTable PSK_HEADER_TABLE 20 | 21 | static const pskStruct_t PSK_HEADER_TABLE[] = { 22 | /* This first id (the string "Client_identity", with null terminator) 23 | and key will negotiate with: 24 | openssl s_server -psk 33c841e5a8164812370b4757d6888630 ... 25 | */ 26 | {{0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 27 | 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x00}, 28 | {0x33, 0xc8, 0x41, 0xe5, 0xa8, 0x16, 0x48, 0x12, 0x37, 29 | 0x0b, 0x47, 0x57, 0xd6, 0x88, 0x86, 0x30} 30 | }, 31 | /* The following ids and keys are randomly generated */ 32 | {{0x37, 0x30, 0x31, 0x35, 0x46, 0x33, 0x33, 0x35, 0x42, 33 | 0x37, 0x43, 0x30, 0x33, 0x43, 0x38, 0x39}, 34 | {0xac, 0xc5, 0xb5, 0x79, 0xe1, 0x00, 0xf6, 0xa9, 0x8f, 35 | 0xb4, 0x8b, 0xf7, 0x55, 0xa9, 0x1f, 0x33} 36 | }, 37 | {{0x32, 0x43, 0x38, 0x39, 0x38, 0x44, 0x36, 0x35, 0x36, 38 | 0x32, 0x44, 0x34, 0x35, 0x41, 0x37, 0x30}, 39 | {0x9d, 0x3f, 0x10, 0x1b, 0xfd, 0x5c, 0xe3, 0x18, 0xfa, 40 | 0x66, 0x34, 0xad, 0x87, 0xa0, 0xe1, 0x40} 41 | }, 42 | {{0x30, 0x43, 0x43, 0x39, 0x33, 0x33, 0x37, 0x30, 0x43, 43 | 0x39, 0x42, 0x37, 0x39, 0x36, 0x37, 0x31}, 44 | {0xa2, 0x7c, 0x3e, 0x53, 0x7c, 0x34, 0xb8, 0x52, 0x0b, 45 | 0x21, 0x93, 0x29, 0x07, 0x59, 0x40, 0x29} 46 | } 47 | }; 48 | -------------------------------------------------------------------------------- /firmware/2048_RSA_KEY.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIEowIBAAKCAQEArWoz7qJzbWi6vS2xtVTwBBT/vddbTGnn9GZ/rAbhlXdrnZof 3 | UWHm0pJQ3A9dFQye0zem+Xc2dnTaP1B/nN9SyTJM2iIx65Swz1bukYYwqSQpAS+D 4 | 0QhzlJfh24iFO+FGK8X/A+p8dKaJZEHMiOecrzP7SOdbym+QdXpCorqKTgY4h1Fm 5 | lsHviuKy52NX9Pr4pk1NQyisOkzuM13xIQ3U/J4j8CnY9lVmNhopem0zLw0wcvi0 6 | K3/pYXVJ3f07LCnfe7GWMgyYxDY82AyC08f08PTE4nzUVq50YPzC6UTa9HQSBWpP 7 | vLq7TASqQ51QiKeiOHNaAQFAzdJ8ech43CZE5QIDAQABAoIBAB3eZQN9R5RYrZFY 8 | BXvOHWkWlNYF+du3ghQ+c08WAFTWNNr4aNyDmFY8jWDZ5JZzjgejVkcxmVfd2Jl/ 9 | K/vBG2k8GLCZoy+IdMvBlWXLTyZS7B0gKfwfEIlPf79oTEp8CrIPcFUkVjthU9jI 10 | 3InYGsyyj12HO/AqNx+E52VP6/J0JytYL3UYtvhFa8WCMVpE0wkT+VvXQX8giJbG 11 | FHKBg3BC0bQsR9JOvzGsmCvizI0fVP4tjjG7Wgxvb5SMjTZ+hfMW8IdpTmYZi89g 12 | XV2pM7ZSid9U9iOTD50SUXl4cl/oJY6uoh5+1GfP5hB0owUxfrWonb+rbeZ2Ls7P 13 | OujHvSECgYEA3a/nwKzpMVIwK4dYhvoR0tbjTH9yGflnXTyiiyDOIQxcaA1kSVpc 14 | 1G5GFPwMuezAgTzpgtRtcVF3SBzxoNCNt96Y3YApRGjOhvay/3iyzaARAYTvPLct 15 | WdzqK00ZihQus07Yd1hmLbKum9uxnoe+mQFNio/M/wbZXuWgwrHINWsCgYEAyEGQ 16 | l6RavL9mx7eJ2CLd9cdFqVGUKODfleDPGffEjrRsgdm+8Fgl5K9uQUvfGl89k98Y 17 | hyxmkUlKetwqlnqM0E74WDXtuIVRK21R94RM0mqxUhwVLdYWh+qJpPM2ejwEqAnA 18 | dHz7xGwP4/FidEZ6RjIVOQdnHOdbVPvMDLVIsu8CgYBxui1FXi9few91NUEINb/x 19 | DwaalwMdKiKJ5XJpt5GnyKSbSMt7Ch13aX8QguGwfDGh23LcCEiBCs8LsrWOz470 20 | lgCMGZSSIMZa3LKldvEbphMzWVQ2LK7aXAfR4QLKIGJ44GkSiMoahYEoOgOcFX2F 21 | FvMFs5Hx/zyCf4ECgJv6MwKBgFyDDY1AfDqeIZk6DRAwa2HTwTbLXSrVV/UheguB 22 | DujuKQKD2VWnIzpWYRUBO/wu63+YnPg1ZtzPgvznITWLP+or0UbPAxcvX6Q0SJ2U 23 | HPlIGMrZ9l7KfHYlv5jYUt59Q5lth99Irfa8BUtEhDs7I9mx4WQLK3OK3gKQoF9u 24 | kDs5AoGBAMBhTrbyP5pM8A9PcjoUnJHIveZyXYJ58v3b7mxC6EHFX1yxg4cDyV6p 25 | sZmG8gbYl9KgQBJKiezE3KWVM6oYmjmxXttfAzfCmU/h9TiwZ/ON9ZgeKVRONp17 26 | XHh/y84yV/dq0jIPT4y+wdWi07rkLRSeAhHOUnu/M0K0/7yKdM9H 27 | -----END RSA PRIVATE KEY----- 28 | -------------------------------------------------------------------------------- /firmware/matrixssl-docs/matrixssl-readme.txt: -------------------------------------------------------------------------------- 1 | MatrixSSL Directory Structure 2 | 3 | matrixssl/ 4 | This directory contains files the implement the SSL and TLS protocol. 5 | test/ 6 | Single-process SSL handshake test application that exercises the 7 | cipher suites and handshakes that are available in the currently 8 | built library 9 | 10 | core/ 11 | Pool based malloc() implementation* 12 | Utility functions 13 | POSIX/ 14 | Operating system layer for Linux, BSD 15 | TCP layer for Linux, BSD and Windows 16 | WIN32/ 17 | Operating system layer for Windows NT, 2K, XP, Vista, 7 18 | 19 | crypto/ 20 | digest/ 21 | Message digests: md5, sha-1, sha-256*, hmac, etc. 22 | keyformat/ 23 | Key parsing routines for x.509, base64 and asn.1 data formats 24 | math/ 25 | Large integer math operations 26 | prng/ 27 | Psuedo random number generation 28 | pubkey/ 29 | RSA and DH* operations 30 | PKCS enccoding and decoding of keys 31 | symmetric/ 32 | Symmetric ciphers: arc4, 3des, aes, seed* 33 | hardware/ 34 | AES-NI 35 | Platform specific hardware crypto* 36 | 37 | apps/ 38 | Example SSL client using blocking sockets and session resumption 39 | Example SSL server using non-blocking sockets and simultaneous connections 40 | 41 | doc/ 42 | Release notes 43 | Developer guides 44 | API documentation 45 | 46 | sampleCerts/ 47 | Sample RSA and EC* keys and certificate files for testing and example apps 48 | 49 | validation_tests/ 50 | Comprehensive tests that compile numerous configurations of servers and 51 | clients and are then run with the various supported ciphers suites and 52 | protocol versions. 53 | 54 | * utilities/ 55 | certgen - generate X.509 cert from a certificate request or self-signed 56 | certrequest - generate a cert request from a private RSA key 57 | pemtomem - convert a pem format key or certificate to C header 58 | rsakeygen - generate an RSA public/private keypair 59 | 60 | 61 | * commercial licensed version only 62 | -------------------------------------------------------------------------------- /firmware/examples/timeapi-test.cpp: -------------------------------------------------------------------------------- 1 | #include "httpsclient-particle/httpsclient-particle.h" 2 | 3 | static int anomalyLed = D7; 4 | static int heartbeatLed = D7; 5 | 6 | const bool g_https_trace = true; // This controls debug info print to Serial 7 | const char host [] = "www.timeapi.org"; 8 | const char endpoint [] = "/utc/now/"; 9 | const int g_port = 443; // DoNOT change this unless you know what's up 10 | static unsigned int freemem; 11 | bool g_https_complete; 12 | uint32 g_bytes_received; 13 | 14 | TCPClient client; 15 | 16 | unsigned char httpRequestContent[] = "GET %s HTTP/1.0\r\n" 17 | "User-Agent: MatrixSSL/" MATRIXSSL_VERSION "\r\n" 18 | "Host: www.timeapi.org\r\n" 19 | "Accept: */*\r\n" 20 | "Content-Type: application/json\r\n" 21 | "Content-Length: %d\r\n\r\n%s"; 22 | 23 | void setup() { 24 | if (g_https_trace) { 25 | Serial.begin(9600); 26 | } 27 | pinMode(anomalyLed, OUTPUT); 28 | httpsclientSetup(host, endpoint); 29 | } 30 | 31 | unsigned int nextTime = 0; // Next time to contact the server 32 | int g_connected; 33 | void loop() { 34 | if (nextTime > millis()) return; 35 | g_connected = client.connect(host, g_port); 36 | if (!g_connected) { 37 | client.stop(); 38 | // If TCP Client can't connect to host, exit here. 39 | return; 40 | } 41 | g_https_complete = false; 42 | g_bytes_received = 0; 43 | if (g_https_trace) { 44 | freemem = System.freeMemory(); 45 | Serial.print("free memory: "); 46 | Serial.println(freemem); 47 | } 48 | int32 rc; 49 | if ((rc = httpsClientConnection(httpRequestContent, 0, NULL) < 0)) { 50 | // TODO: When massive FAIL 51 | httpsclientCleanUp(); 52 | digitalWrite(anomalyLed, HIGH); 53 | delay(500); 54 | digitalWrite(anomalyLed, LOW); 55 | delay(500); 56 | digitalWrite(anomalyLed, HIGH); 57 | delay(500); 58 | digitalWrite(anomalyLed, LOW); 59 | } else { 60 | digitalWrite(heartbeatLed, HIGH); 61 | delay(250); 62 | digitalWrite(heartbeatLed, LOW); 63 | } 64 | client.stop(); 65 | nextTime = millis() + 5000; 66 | } 67 | -------------------------------------------------------------------------------- /firmware/sampleCerts/dh2048.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file dh2048.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | /******************************************************************************/ 8 | /* 9 | In-Memory version of the PEM file dh2048.pem 10 | */ 11 | unsigned char dhParamBuf2048[] = {0x30, 0x82, 0x01, 0x08, 0x02, 0x82, 0x01, 0x01, 12 | 0x00, 0xb9, 0xbc, 0x28, 0x91, 0xc7, 0x08, 0xc9, 0x12, 0x9b, 0x7b, 0x25, 0x61, 13 | 0xa9, 0x4c, 0xa3, 0xa1, 0x45, 0x10, 0x76, 0xed, 0x80, 0xdb, 0xa9, 0xbf, 0xc5, 14 | 0x7e, 0x86, 0xff, 0x8b, 0xf3, 0x89, 0xff, 0x79, 0xef, 0x9d, 0xd1, 0x76, 0x9b, 15 | 0xce, 0x29, 0x2f, 0xc0, 0xe4, 0xa2, 0xf5, 0xc2, 0xc5, 0x25, 0x99, 0x35, 0x0c, 16 | 0xa8, 0x8b, 0x9c, 0xec, 0xe2, 0x11, 0x7b, 0x17, 0xcd, 0xad, 0x4f, 0xfc, 0x88, 17 | 0x17, 0x17, 0xd8, 0x65, 0x12, 0xef, 0x08, 0x5a, 0x62, 0xa6, 0x6f, 0x06, 0xb3, 18 | 0x97, 0x88, 0x61, 0x6d, 0x32, 0x55, 0x97, 0xff, 0xb6, 0x80, 0x9f, 0x55, 0x23, 19 | 0x10, 0x7d, 0x2f, 0x8a, 0x2b, 0xf9, 0x9a, 0x35, 0x1f, 0xcd, 0xab, 0x98, 0x2c, 20 | 0x09, 0x13, 0xa1, 0x1f, 0x31, 0x25, 0xb8, 0x09, 0xa2, 0x66, 0x99, 0xff, 0x5c, 21 | 0x3b, 0x15, 0x58, 0x85, 0xd3, 0x75, 0xeb, 0xba, 0x0c, 0xc4, 0x43, 0xef, 0x58, 22 | 0xf1, 0x92, 0x7c, 0xc4, 0xd7, 0x37, 0x00, 0x8c, 0x02, 0x97, 0x3f, 0x49, 0xc1, 23 | 0xbc, 0x9f, 0x31, 0x34, 0xe0, 0xd4, 0x7a, 0x3b, 0x96, 0x10, 0xdc, 0x4c, 0x65, 24 | 0xf6, 0x7b, 0x3a, 0x15, 0xf5, 0xc0, 0x8a, 0x31, 0xbc, 0xc6, 0x6a, 0xf4, 0x61, 25 | 0x02, 0x1f, 0x5f, 0xa2, 0x70, 0x8d, 0xaa, 0xa7, 0x0c, 0xe4, 0xf1, 0xaa, 0x38, 26 | 0xbe, 0xd2, 0x87, 0xd8, 0xe4, 0xa6, 0xff, 0xa7, 0x26, 0xd6, 0x28, 0x36, 0x87, 27 | 0x01, 0x13, 0x7e, 0x0c, 0x52, 0x2a, 0x8f, 0x9f, 0x3b, 0x3b, 0x9e, 0x66, 0x28, 28 | 0xc3, 0x80, 0xd1, 0x0e, 0x4e, 0xfb, 0xf7, 0xbe, 0x2e, 0x6b, 0x11, 0x15, 0x5d, 29 | 0x85, 0xa3, 0x36, 0x11, 0x46, 0xdc, 0x7c, 0x41, 0x84, 0x6c, 0xfc, 0x75, 0x88, 30 | 0x39, 0x00, 0xea, 0xb6, 0xc8, 0x5e, 0xfe, 0x78, 0xa9, 0x92, 0xf3, 0x25, 0x4a, 31 | 0x08, 0xe3, 0x9c, 0x93, 0xfa, 0xa9, 0x3f, 0x5f, 0x7d, 0x47, 0x02, 0x01, 0x05}; 32 | 33 | -------------------------------------------------------------------------------- /firmware/4096_RSA.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIGAzCCA+ugAwIBAgIEMzQ1NjANBgkqhkiG9w0BAQsFADCBljE1MDMGA1UEAwws 3 | U2FtcGxlIE1hdHJpeCBSU0EtNDA5NiBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxCzAJ 4 | BgNVBAYMAlVTMQswCQYDVQQIDAJXQTEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UE 5 | CgwZSU5TSURFIFNlY3VyZSBDb3Jwb3JhdGlvbjENMAsGA1UECwwEVGVzdDAeFw0x 6 | NDAzMjQxNjQxMTBaFw0xNzAzMjMxNjQxMTBaMIGMMSswKQYDVQQDDCJTYW1wbGUg 7 | TWF0cml4IFJTQS00MDk2IENlcnRpZmljYXRlMQswCQYDVQQGDAJVUzELMAkGA1UE 8 | CAwCV0ExEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoMGUlOU0lERSBTZWN1cmUg 9 | Q29ycG9yYXRpb24xDTALBgNVBAsMBFRlc3QwggIiMA0GCSqGSIb3DQEBAQUAA4IC 10 | DwAwggIKAoICAQDI8ts5rfRDl6JthSwXFCYl6Y+4cTxYWy0YD612p/6PRkxnwx5w 11 | 4ILTd2edbXaiynlw0q6+IaanQuowy5YVpiFiZqXd/yN4yeCfc7gIHg5JhY3fVSRC 12 | wUvJ3gOgz8evJf1q6Or80wmF22ueSo1xkemEp3Vt3S5gjK8w+t0eDQRce8I1De5b 13 | 5WKBuZjxzj+SWR/Q5BdI+/6gsyx8AcAZVqEgCAZ9cPIvsq1EwuRbhCuYBoevVCu3 14 | 5P5TL/LXtDRNRt9ELnIE1zQ+3r9VdH8+1MM9H3wk8u1POB30skde6Swj8927Ftkc 15 | ulMaHPEC8Y7seVv5VSFmEm+e8J4/3L7WMTXC8ni2Cpsio6ad0/VPBUkAxMLCh0MG 16 | /EM82vb6vfeZ+9Vkb2nZTbnFGgfW30C3SmsWyCwjX+LufGbdO3yAQJq52Jn33nE9 17 | 9zWGD2v5AelT+RfPH274rPovXzMTM/rxz31rudajaBaEYIlvLMjn8uDJf4TO6UUY 18 | lpqZrA4OYeozvz2xi5Ke38Z1ZlZ6mqmb2HdkrfZBxDI7jumQVf7jCyxDN6qKeTi0 19 | iZstrOduPyOzMKKEIZeNLQIUrPpnS2y8M/WJiIpX3ZacaloGYjOx4KpwyAWBgmI9 20 | oEzfcah+fbPGcPFgrNZG2IW3a1+3oYa29cr2oo3peDcTHeDTE58OICwmhwIDAQAB 21 | o2EwXzAfBgNVHSMEGDAWgBRsQoTF4EvccPKZ0ByDSuJRR2Ue+jAaBgNVHREEEzAR 22 | gglsb2NhbGhvc3SHBH8AAAEwIAYDVR0lAQH/BBYwFAYIKwYBBQUHAwEGCCsGAQUF 23 | BwMCMA0GCSqGSIb3DQEBCwUAA4ICAQC5dfpyuz0GsK6YXfzG3YtPGHzkkpN0XxsY 24 | KMciHDVxeVVY2GWu8iu6tGouhsLBUQbMTHC4+HJ7hM3M7vXiycjaM6LCthnggYMU 25 | 0M3+IJXEU/5uu5uP6o4AfiIZzaWUmOraAaxajYwTDoKWAXCgw/o4qzZ1jRfYSiDh 26 | KSGbOcMD1bslqFbBx50fv2uAYAcu6b4b/zu+Sw27Osv/KgwkpvPpY/Sj7ERfUgzl 27 | Fks4yDsz3e9NjETcXVUb5Bsgf68WRyOXSzFQTDZGdqEpkSVpK+mM40jaLNMP7Vg4 28 | rx/0dKMSE6qwYc0ScuxvQT76NaR7LoExHioOM/EcLC7py0q0njcNzuL+YxkEZ5yW 29 | Hw65woj3+RIyX9zNFNsn6vBAIvKdy/RGQmGeufGgrzJSVCYBlznqj4Qibvhkni7v 30 | gEaLocOkmkoZCUm9QiPTxeePOqKcoYXO4EcIRrDoB3VGjr/SHhPIJkhGb6bZo3O8 31 | /c2yaTy+t2vGoKGECuUChYH9vZIibDApBFYd3CYqRVxQaTs5ONh2WzADoKC+F8Sr 32 | 4NjoVTM4col/lrGCAo21vokYeh20p3pf9eDrM0+olkRqEQkB2wcI6dm8KBoQMGmC 33 | HzqwiHC4J41+Me8eT1vJ0td+4az6fgle6OphdgLVLgm8/wz71brjzHyidRqc6KJG 34 | rEX3flTXjw== 35 | -----END CERTIFICATE----- 36 | -------------------------------------------------------------------------------- /firmware/4096_RSA_CA.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIGEzCCA/ugAwIBAgIFMzQ1NjcwDQYJKoZIhvcNAQELBQAwgZYxNTAzBgNVBAMM 3 | LFNhbXBsZSBNYXRyaXggUlNBLTQwOTYgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQsw 4 | CQYDVQQGDAJVUzELMAkGA1UECAwCV0ExEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNV 5 | BAoMGUlOU0lERSBTZWN1cmUgQ29ycG9yYXRpb24xDTALBgNVBAsMBFRlc3QwHhcN 6 | MTQwMzI0MTY0MTAzWhcNMTcwMzIzMTY0MTAzWjCBljE1MDMGA1UEAwwsU2FtcGxl 7 | IE1hdHJpeCBSU0EtNDA5NiBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxCzAJBgNVBAYM 8 | AlVTMQswCQYDVQQIDAJXQTEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZSU5T 9 | SURFIFNlY3VyZSBDb3Jwb3JhdGlvbjENMAsGA1UECwwEVGVzdDCCAiIwDQYJKoZI 10 | hvcNAQEBBQADggIPADCCAgoCggIBALuxRESh1dkN4jZJJr5pyw6ISijvrixPnSXF 11 | ir+eUeR3VktNdZEdStLMswsv5EJy+rKf0ifgDMP+gzqWoNSlmpRgugy/q45ozx/E 12 | cm1XzmAjTAn0+GvGWdrXzDrCmIO1/DdDjxwASo4NSfXx66ZPxTENby70Zgr13Ouv 13 | HHFj4VYTrlrK/JixYxBC8JuLkOPT1+G5Xw/L/cd0a1RfLdFxugyUdDPAPuGXZw8q 14 | Xe5O3Hv+3StkZUEZsG2UVRgMb3A8wiRXofy+6/Dw+YWio2aCJ/tww9xyX+dg1zsM 15 | hWvBxVhXu63wTQGjypGcS5cVZuMZKliDROIYGfyQSXGwWXU65nT5bEP+AsnAuagJ 16 | gDk86oZ9YkuUQ/JKYzREAyI1mLabZ8aTZICUqJne14cDGpgc+dBvearejC+1Iqn/ 17 | EfyqWy9MxeZEZYXkune9M4NoM1bRV0BQAIhpahaJT++QZ1ZheWmihJ/tkctMu6/y 18 | ne/jMmw3ZOp1/8XsiL1rQ/5oFNTHm/SudOrhtGMqDvWcvp9uTo8JPkONT7MFJf76 19 | e+Yd5uggG0wwPeC3dmkL8QcDH49Xv1XPEZi2md97m76YFrvSgcHrnwiufkSpp3lJ 20 | AqyKgbySxtHvzJ0UsvQJrxyyCwIy3c38CYM+HDNYK3fVSKZbdZ9mMRFTR8jHRAnJ 21 | k8QcMghpAgMBAAGjZjBkMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFGxC 22 | hMXgS9xw8pnQHINK4lFHZR76MB8GA1UdIwQYMBaAFGxChMXgS9xw8pnQHINK4lFH 23 | ZR76MA4GA1UdDwEB/wQEAwIABDANBgkqhkiG9w0BAQsFAAOCAgEAZrRYmGcb285j 24 | X8NxiaCtmRDAJ7xbw6Cxzbbt3BYGMzpSYlUHfGy+x+wWa38mfHVwKRkViEBdJfpQ 25 | OQxqPMcQyqm5RDBmk0kPChpveKFDs0hNapE+qb682ZR4KeDEh5eUmQSUKiHwojGY 26 | /SOPwDLisfbkhl89lG+Elz7On7d9hv6oKCzZuNDvmn/KPNqvBw/f0xhdJ9aeghsJ 27 | 1FE6dX43tuJc5kQ+UQclsub2DphEIw1fFew/YVZfQYRGO05qP01smrCFhbkp87MC 28 | lLXDlnjA1WES9mEKi5uA1jykGg1NeXN2pI+a6Xbzi3a5baL1J7vGrOQlAboDNTUC 29 | yM+teRwflD6y27in6G6LRBWir0pnm7poSYXuk8Rfl3fgtJCOWewmCKRStJ0Ve1w/ 30 | Xltbgmn/+Y3+Dg0iFN05aqIDXd/+YByS+R8Jra2VM7SwfExjnzDUhn2KSwb5ambN 31 | hg78/MJlqWE+7azV9MWVj2QanhRv4Ji4lswOorEaIAdgztKcMDDgU/wf7+Ejqz13 32 | yNBx3ayeHKR+N3Z5/ZBbwneBz0EfEJwXXLq6DMrw3Rq7Kl2oxjwoE92j1aPMNCyw 33 | CUKj8ZXXStWyr6OtwnJnSG1dWiN/tjn3pc3DAZt+kVetafpqG10lZ8geTAhsG+XW 34 | N6DJmMNmZGbVcjBcsxXIZiIFLtphqco= 35 | -----END CERTIFICATE----- 36 | -------------------------------------------------------------------------------- /firmware/memset_s.c: -------------------------------------------------------------------------------- 1 | /** 2 | * @file memset_s.c 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Secure memset api that will not be optimized out by compiler. 6 | */ 7 | /* 8 | * Copyright (c) 2013-2015 INSIDE Secure Corporation 9 | * Copyright (c) PeerSec Networks, 2002-2011 10 | * All Rights Reserved 11 | * 12 | * The latest version of this code is available at http://www.matrixssl.org 13 | * 14 | * This software is open source; you can redistribute it and/or modify 15 | * it under the terms of the GNU General Public License as published by 16 | * the Free Software Foundation; either version 2 of the License, or 17 | * (at your option) any later version. 18 | * 19 | * This General Public License does NOT permit incorporating this software 20 | * into proprietary programs. If you are unable to comply with the GPL, a 21 | * commercial license for this software may be purchased from INSIDE at 22 | * http://www.insidesecure.com/eng/Company/Locations 23 | * 24 | * This program is distributed in WITHOUT ANY WARRANTY; without even the 25 | * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 26 | * See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License 29 | * along with this program; if not, write to the Free Software 30 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 31 | * http://www.gnu.org/copyleft/gpl.html 32 | */ 33 | 34 | /******************************************************************************/ 35 | /** 36 | Use volatile ref to s[] to tell compiler to keep function around. 37 | This file also should only be compiled with -O0. 38 | */ 39 | 40 | #if !defined(_WIN32) && !defined(__APPLE__) 41 | 42 | #include 43 | 44 | typedef size_t rsize_t; 45 | typedef int errno_t; 46 | 47 | #pragma GCC push_options 48 | #pragma GCC optimize("O0") 49 | errno_t __attribute__((optimize("O0"))) memset_s(void *s, rsize_t smax, 50 | int c, rsize_t n) 51 | { 52 | if (n > smax) { 53 | n = smax; 54 | } 55 | memset(s, c, n); 56 | return ((unsigned char volatile *)s)[0]; 57 | } 58 | #pragma GCC pop_options 59 | #endif /* !WIN && ! APPLE */ 60 | 61 | /******************************************************************************/ 62 | -------------------------------------------------------------------------------- /firmware/osdep.cpp: -------------------------------------------------------------------------------- 1 | #include "coreApi.h" 2 | #include "rtc_hal.h" 3 | #include "spark_wiring_ticks.h" 4 | #include "application.h" 5 | 6 | /******************************************************************************/ 7 | #ifdef METAL 8 | /******************************************************************************/ 9 | /******************************************************************************/ 10 | /* 11 | RAW TRACE FUNCTIONS 12 | */ 13 | /******************************************************************************/ 14 | 15 | int osdepTraceOpen(void) 16 | { 17 | return PS_SUCCESS; 18 | } 19 | 20 | void osdepTraceClose(void) 21 | { 22 | } 23 | 24 | void _psTrace(char *msg) 25 | { 26 | Serial.println(msg); 27 | } 28 | 29 | /* message should contain one %s, unless value is NULL */ 30 | void _psTraceStr(char *message, char *value) 31 | { 32 | if (value) { 33 | Serial.print(message); Serial.println(value); 34 | } else { 35 | Serial.print(message); 36 | } 37 | } 38 | 39 | /* message should contain one %d */ 40 | void _psTraceInt(char *message, int32 value) 41 | { 42 | _psTrace(message); 43 | Serial.println(value); 44 | } 45 | 46 | /* message should contain one %p */ 47 | void _psTracePtr(char *message, void *value) 48 | { 49 | } 50 | 51 | 52 | int osdepTimeOpen(void) 53 | { 54 | return PS_SUCCESS; 55 | } 56 | 57 | void osdepTimeClose(void) 58 | { 59 | 60 | } 61 | 62 | int32 psGetTime(psTime_t *t, void *userPtr) 63 | { 64 | return HAL_RTC_Get_UnixTime(); 65 | } 66 | 67 | int32 psDiffMsecs(psTime_t then, psTime_t now, void *userPtr) 68 | { 69 | return 0; 70 | } 71 | 72 | int64_t psDiffUsecs(psTime_t then, psTime_t now) 73 | { 74 | return 0; 75 | } 76 | 77 | int32 psCompareTime(psTime_t a, psTime_t b, void * userPtr) 78 | { 79 | return 0; 80 | } 81 | 82 | //Entropy Functions 83 | 84 | #define MAX_RAND_READS 1024 85 | 86 | static int32 urandfd = -1; 87 | static int32 randfd = -1; 88 | 89 | int osdepEntropyOpen(void) 90 | { 91 | return PS_SUCCESS; 92 | } 93 | 94 | void osdepEntropyClose(void) 95 | { 96 | } 97 | 98 | int32 psGetEntropy(unsigned char *bytes, uint32 size, void *userPtr) { 99 | // TODO: Assuming size of random return is 4 bytes 100 | unsigned int i = 0; 101 | unsigned char* where = bytes; 102 | for (i = 0; i < size/sizeof(int); i++) { 103 | *where = (unsigned char) (micros() & 0xff); 104 | where++; 105 | } 106 | return size; 107 | } 108 | 109 | #endif 110 | -------------------------------------------------------------------------------- /firmware/sampleCerts/ECDH_RSA/ALL_ECDH-RSA_CAS.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIC9jCCAl+gAwIBAgIFMTAwMDAwDQYJKoZIhvcNAQELBQAwgaoxSTBHBgNVBAMM 3 | QFNhbXBsZSBNYXRyaXggUlNBLTEwMjQgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IGZv 4 | ciBFQ0RIX1JTQSBTdWl0ZXMxCzAJBgNVBAYMAlVTMQswCQYDVQQIDAJXQTEQMA4G 5 | A1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZSW5zaWRlIFNlY3VyZSBDb3Jwb3JhdGlv 6 | bjENMAsGA1UECwwEVGVzdDAeFw0xNDAzMTMyMzM2NTZaFw0xNzAzMTIyMzM2NTZa 7 | MIGqMUkwRwYDVQQDDEBTYW1wbGUgTWF0cml4IFJTQS0xMDI0IENlcnRpZmljYXRl 8 | IEF1dGhvcml0eSBmb3IgRUNESF9SU0EgU3VpdGVzMQswCQYDVQQGDAJVUzELMAkG 9 | A1UECAwCV0ExEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoMGUluc2lkZSBTZWN1 10 | cmUgQ29ycG9yYXRpb24xDTALBgNVBAsMBFRlc3QwgZ8wDQYJKoZIhvcNAQEBBQAD 11 | gY0AMIGJAoGBAPkM+TkEIYFxSYlckTDm/H7jUcTblOZDhecqZhnwwDe3iA2Pl2wc 12 | Vk1uzhmOWUaqwMUpCrmhEyyDWGyGso5eLEX1tQR6eM5uHmb1Z5+EoMW008UOwyYn 13 | 0t4XZC5CFpbAilqp2xD4qt6pbhpbaFTY9aRD/NBBm9T9k0xXN08joCJtAgMBAAGj 14 | JjAkMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgAEMA0GCSqGSIb3 15 | DQEBCwUAA4GBANYaSY2kGv3C0OuRnO0DME+86Ds/nvdOcpN95jLJ33X3SBBZlguN 16 | x5IJsJTzm070C8BQYku/g6PQJW3OiCWlPnoYStLId0Zx3DM+yzVRuORIFrdDUa5c 17 | OBdDBA1tSIVjzyT8A1IGwoyFk3s4hYDXlHI4eYfgEPREzSbQumaKvSz5 18 | -----END CERTIFICATE----- 19 | -----BEGIN CERTIFICATE----- 20 | MIID+zCCAuOgAwIBAgIFMTEwMDAwDQYJKoZIhvcNAQELBQAwgaoxSTBHBgNVBAMM 21 | QFNhbXBsZSBNYXRyaXggUlNBLTIwNDggQ2VydGlmaWNhdGUgQXV0aG9yaXR5IGZv 22 | ciBFQ0RIX1JTQSBzdWl0ZXMxCzAJBgNVBAYMAlVTMQswCQYDVQQIDAJXQTEQMA4G 23 | A1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZSW5zaWRlIFNlY3VyZSBDb3Jwb3JhdGlv 24 | bjENMAsGA1UECwwEVGVzdDAeFw0xNDAzMTMyMzM3MTZaFw0xNzAzMTIyMzM3MTZa 25 | MIGqMUkwRwYDVQQDDEBTYW1wbGUgTWF0cml4IFJTQS0yMDQ4IENlcnRpZmljYXRl 26 | IEF1dGhvcml0eSBmb3IgRUNESF9SU0Egc3VpdGVzMQswCQYDVQQGDAJVUzELMAkG 27 | A1UECAwCV0ExEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoMGUluc2lkZSBTZWN1 28 | cmUgQ29ycG9yYXRpb24xDTALBgNVBAsMBFRlc3QwggEiMA0GCSqGSIb3DQEBAQUA 29 | A4IBDwAwggEKAoIBAQC3mh36c2ey0o+DklPwuLmcdgvmNSNbPMzvHCBz+1cgtFKK 30 | DPCEsC71WziChXnTKy1n+zu5fhJdTF0bWrbcwjLZKz19cQyLO/n1C4j3sBFp+VZt 31 | 5lfSKD4ByVBewUEW6jqik+t4/XpuWqAVGZ/YlQ1vfYeNKs9rxepLSGU38roGOyFO 32 | mQZ5c3mRzpQ08mjeaDkRvr7b/xtcIqLIVQN1IlBt4GTP4CKGrXsjB5wpAO2E8cea 33 | DxRC1J1LvzulXnlCGk/ZDv2t1+R6VoWwbHXeofTP1mvhZHtX8r/DXMRuIACwZoWK 34 | 561EF89vx+gBp3xFsAb4zgmOlVk/BPySrjGhzVzTAgMBAAGjJjAkMBIGA1UdEwEB 35 | /wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgAEMA0GCSqGSIb3DQEBCwUAA4IBAQCm 36 | 703IwsvgTsjUPAthXnOHgVbTbQmivJ3RrLoBgqZa8wb7NwYJz9puYgQ4QEjKwW8O 37 | IkHI3qIfBcplExTXW6qA9v8K5r5HylUpDPDINI3baW4B6J25yFWGmCdMksr4uMXf 38 | m8qdCcBZyCLNsgDyCqCP4/blfpaqx66i4XvuhblgH7Ep3EJtyti45oRvYrx6g+V7 39 | uKui1T1f9dcAENyArj5EFCdejopNQfSf1iOLfsbSjTyO62R0gnZvew0KnyfO10yd 40 | 4moUxv7izpoe50VRlEcReNvpvsFKxOIrYqCtuB9B4112nDjRj3OpNalvt4Slls7f 41 | tx0ZabdAxdbzuLBNHJme 42 | -----END CERTIFICATE----- 43 | -------------------------------------------------------------------------------- /firmware/coreConfig.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file coreConfig.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Configuration settings for Matrix core module. 6 | */ 7 | /* 8 | * Copyright (c) 2013-2015 INSIDE Secure Corporation 9 | * Copyright (c) PeerSec Networks, 2002-2011 10 | * All Rights Reserved 11 | * 12 | * The latest version of this code is available at http://www.matrixssl.org 13 | * 14 | * This software is open source; you can redistribute it and/or modify 15 | * it under the terms of the GNU General Public License as published by 16 | * the Free Software Foundation; either version 2 of the License, or 17 | * (at your option) any later version. 18 | * 19 | * This General Public License does NOT permit incorporating this software 20 | * into proprietary programs. If you are unable to comply with the GPL, a 21 | * commercial license for this software may be purchased from INSIDE at 22 | * http://www.insidesecure.com/eng/Company/Locations 23 | * 24 | * This program is distributed in WITHOUT ANY WARRANTY; without even the 25 | * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 26 | * See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License 29 | * along with this program; if not, write to the Free Software 30 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 31 | * http://www.gnu.org/copyleft/gpl.html 32 | */ 33 | /******************************************************************************/ 34 | 35 | #ifndef _h_PS_CORECONFIG 36 | #define _h_PS_CORECONFIG 37 | 38 | /******************************************************************************/ 39 | /* Configurable features */ 40 | /******************************************************************************/ 41 | /* 42 | If enabled, calls to the psError set of APIs will perform a platform 43 | abort on the exeutable to aid in debugging. 44 | */ 45 | /* #define HALT_ON_PS_ERROR */ /* NOT RECOMMENDED FOR PRODUCTION BUILDS */ 46 | 47 | /******************************************************************************/ 48 | /* 49 | Turn on the psTraceCore set of APIs for log trace of the core module 50 | */ 51 | /* #define USE_CORE_TRACE */ 52 | 53 | 54 | /******************************************************************************/ 55 | /* 56 | Include the osdepMutex family of APIs 57 | */ 58 | /* #define USE_MULTITHREADING */ 59 | 60 | /******************************************************************************/ 61 | /* 62 | Use C_GenerateRandom for entropy gathering 63 | */ 64 | /* #define USE_PKCS11_ENTROPY */ 65 | 66 | 67 | 68 | #endif /* _h_PS_CORECONFIG */ 69 | /******************************************************************************/ 70 | 71 | -------------------------------------------------------------------------------- /firmware/sha384.c: -------------------------------------------------------------------------------- 1 | /** 2 | * @file sha384.c 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * SHA256 hash implementation. 6 | */ 7 | /* 8 | * Copyright (c) 2013-2015 INSIDE Secure Corporation 9 | * Copyright (c) PeerSec Networks, 2002-2011 10 | * All Rights Reserved 11 | * 12 | * The latest version of this code is available at http://www.matrixssl.org 13 | * 14 | * This software is open source; you can redistribute it and/or modify 15 | * it under the terms of the GNU General Public License as published by 16 | * the Free Software Foundation; either version 2 of the License, or 17 | * (at your option) any later version. 18 | * 19 | * This General Public License does NOT permit incorporating this software 20 | * into proprietary programs. If you are unable to comply with the GPL, a 21 | * commercial license for this software may be purchased from INSIDE at 22 | * http://www.insidesecure.com/eng/Company/Locations 23 | * 24 | * This program is distributed in WITHOUT ANY WARRANTY; without even the 25 | * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 26 | * See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License 29 | * along with this program; if not, write to the Free Software 30 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 31 | * http://www.gnu.org/copyleft/gpl.html 32 | */ 33 | /******************************************************************************/ 34 | 35 | #include "cryptoApi.h" 36 | 37 | #ifdef USE_SHA384 38 | 39 | void psSha384Init(psDigestContext_t *md) 40 | { 41 | psAssert(md != NULL); 42 | 43 | md->sha512.curlen = 0; 44 | md->sha512.length = 0; 45 | md->sha512.state[0] = CONST64(0xcbbb9d5dc1059ed8); 46 | md->sha512.state[1] = CONST64(0x629a292a367cd507); 47 | md->sha512.state[2] = CONST64(0x9159015a3070dd17); 48 | md->sha512.state[3] = CONST64(0x152fecd8f70e5939); 49 | md->sha512.state[4] = CONST64(0x67332667ffc00b31); 50 | md->sha512.state[5] = CONST64(0x8eb44a8768581511); 51 | md->sha512.state[6] = CONST64(0xdb0c2e0d64f98fa7); 52 | md->sha512.state[7] = CONST64(0x47b5481dbefa4fa4); 53 | } 54 | 55 | void psSha384Update(psDigestContext_t *md, const unsigned char *buf, uint32 len) 56 | { 57 | psSha512Update(md, buf, len); 58 | } 59 | 60 | int32 psSha384Final(psDigestContext_t *md, unsigned char *out) 61 | { 62 | unsigned char buf[64]; 63 | 64 | psAssert(md != NULL); 65 | psAssert(out != NULL); 66 | 67 | if (md->sha512.curlen >= sizeof(md->sha512.buf)) { 68 | return PS_ARG_FAIL; 69 | } 70 | 71 | psSha512Final(md, buf); 72 | memcpy(out, buf, SHA384_HASH_SIZE); 73 | #ifdef USE_BURN_STACK 74 | psBurnStack(sizeof(buf)); 75 | #endif 76 | return SHA384_HASH_SIZE; 77 | } 78 | 79 | #endif /* USE_SHA384 */ 80 | -------------------------------------------------------------------------------- /firmware/psmalloc.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file psmalloc.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Header for psMalloc functions. 6 | */ 7 | /* 8 | * Copyright (c) 2013-2015 INSIDE Secure Corporation 9 | * Copyright (c) PeerSec Networks, 2002-2011 10 | * All Rights Reserved 11 | * 12 | * The latest version of this code is available at http://www.matrixssl.org 13 | * 14 | * This software is open source; you can redistribute it and/or modify 15 | * it under the terms of the GNU General Public License as published by 16 | * the Free Software Foundation; either version 2 of the License, or 17 | * (at your option) any later version. 18 | * 19 | * This General Public License does NOT permit incorporating this software 20 | * into proprietary programs. If you are unable to comply with the GPL, a 21 | * commercial license for this software may be purchased from INSIDE at 22 | * http://www.insidesecure.com/eng/Company/Locations 23 | * 24 | * This program is distributed in WITHOUT ANY WARRANTY; without even the 25 | * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 26 | * See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License 29 | * along with this program; if not, write to the Free Software 30 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 31 | * http://www.gnu.org/copyleft/gpl.html 32 | */ 33 | /******************************************************************************/ 34 | 35 | #ifndef _h_PS_MALLOC 36 | #define _h_PS_MALLOC 37 | 38 | /******************************************************************************/ 39 | /* 40 | */ 41 | #ifdef PS_UNSUPPORTED_OS 42 | #include "matrixos.h" 43 | #else 44 | /******************************************************************************/ 45 | /* 46 | */ 47 | 48 | #include /* memset, memcpy */ 49 | 50 | #define MATRIX_NO_POOL (void *)0x0 51 | 52 | /******************************************************************************/ 53 | /* 54 | Native memory routines 55 | */ 56 | #include /* malloc, free, etc... */ 57 | 58 | #define MAX_MEMORY_USAGE 0 59 | #define psOpenMalloc() 0 60 | #define psCloseMalloc() 61 | #define psDefineHeap(A, B) 62 | #define psAddPoolCache(A, B) 63 | #define psMalloc(A, B) malloc(B) 64 | #define psCalloc(A, B, C) calloc(B, C) 65 | #define psMallocNoPool malloc 66 | #define psRealloc(A, B, C) realloc(A, B) 67 | #define psFree(A, B) free(A) 68 | #define psMemset memset 69 | #define psMemcpy memcpy 70 | 71 | typedef int32 psPool_t; 72 | 73 | 74 | /******************************************************************************/ 75 | 76 | #endif /* !PS_UNSUPPORTED_OS */ 77 | #endif /* _h_PS_MALLOC */ 78 | /******************************************************************************/ 79 | 80 | -------------------------------------------------------------------------------- /firmware/sha224.c: -------------------------------------------------------------------------------- 1 | /** 2 | * @file sha224.c 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * SHA256 hash implementation. 6 | */ 7 | /* 8 | * Copyright (c) 2013-2015 INSIDE Secure Corporation 9 | * Copyright (c) PeerSec Networks, 2002-2011 10 | * All Rights Reserved 11 | * 12 | * The latest version of this code is available at http://www.matrixssl.org 13 | * 14 | * This software is open source; you can redistribute it and/or modify 15 | * it under the terms of the GNU General Public License as published by 16 | * the Free Software Foundation; either version 2 of the License, or 17 | * (at your option) any later version. 18 | * 19 | * This General Public License does NOT permit incorporating this software 20 | * into proprietary programs. If you are unable to comply with the GPL, a 21 | * commercial license for this software may be purchased from INSIDE at 22 | * http://www.insidesecure.com/eng/Company/Locations 23 | * 24 | * This program is distributed in WITHOUT ANY WARRANTY; without even the 25 | * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 26 | * See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License 29 | * along with this program; if not, write to the Free Software 30 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 31 | * http://www.gnu.org/copyleft/gpl.html 32 | */ 33 | /******************************************************************************/ 34 | 35 | #include "cryptoApi.h" 36 | 37 | #ifdef USE_SHA224 38 | 39 | /******************************************************************************/ 40 | /* 41 | Initialize the sha224 (sha256) hash state 42 | */ 43 | void psSha224Init(psDigestContext_t *md) 44 | { 45 | psAssert(md != NULL); 46 | 47 | md->sha256.curlen = 0; 48 | #ifdef HAVE_NATIVE_INT64 49 | md->sha256.length = 0; 50 | #else 51 | md->sha256.lengthHi = 0; 52 | md->sha256.lengthLo = 0; 53 | #endif /* HAVE_NATIVE_INT64 */ 54 | md->sha256.state[0] = 0xc1059ed8UL; 55 | md->sha256.state[1] = 0x367cd507UL; 56 | md->sha256.state[2] = 0x3070dd17UL; 57 | md->sha256.state[3] = 0xf70e5939UL; 58 | md->sha256.state[4] = 0xffc00b31UL; 59 | md->sha256.state[5] = 0x68581511UL; 60 | md->sha256.state[6] = 0x64f98fa7UL; 61 | md->sha256.state[7] = 0xbefa4fa4UL; 62 | } 63 | 64 | void psSha224Update(psDigestContext_t *md, const unsigned char *buf, uint32 len) 65 | { 66 | psSha256Update(md, buf, len); 67 | } 68 | 69 | int32 psSha224Final(psDigestContext_t *md, unsigned char *out) 70 | { 71 | unsigned char buf[32]; 72 | int32 err; 73 | 74 | psAssert(md != NULL); 75 | psAssert(out != NULL); 76 | 77 | err = psSha256Final(md, buf); 78 | memcpy(out, buf, SHA224_HASH_SIZE); 79 | #ifdef USE_BURN_STACK 80 | psBurnStack(sizeof(buf)); 81 | #endif 82 | return err; 83 | } 84 | 85 | #endif /* USE_SHA224 */ 86 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/192_EC_CA.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 192_EC_CA.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | unsigned char EC192CA[] = { 8 | 48, 130, 2, 99, 48, 130, 2, 25, 160, 3, 2, 1, 2, 9 | 2, 2, 27, 88, 48, 10, 6, 8, 42, 134, 72, 206, 61, 10 | 4, 3, 2, 48, 129, 154, 49, 11, 48, 9, 6, 3, 85, 11 | 4, 6, 19, 2, 85, 83, 49, 11, 48, 9, 6, 3, 85, 12 | 4, 8, 12, 2, 87, 65, 49, 16, 48, 14, 6, 3, 85, 13 | 4, 7, 12, 7, 83, 101, 97, 116, 116, 108, 101, 49, 35, 14 | 48, 33, 6, 3, 85, 4, 10, 12, 26, 73, 110, 115, 105, 15 | 100, 101, 32, 83, 101, 99, 117, 114, 101, 32, 67, 111, 114, 16 | 112, 111, 114, 97, 116, 105, 111, 110, 46, 49, 13, 48, 11, 17 | 6, 3, 85, 4, 11, 12, 4, 84, 101, 115, 116, 49, 56, 18 | 48, 54, 6, 3, 85, 4, 3, 12, 47, 77, 97, 116, 114, 19 | 105, 120, 83, 83, 76, 32, 83, 97, 109, 112, 108, 101, 32, 20 | 67, 65, 32, 40, 69, 108, 108, 105, 112, 116, 105, 99, 32, 21 | 99, 117, 114, 118, 101, 32, 112, 114, 105, 109, 101, 49, 57, 22 | 50, 118, 49, 41, 48, 30, 23, 13, 49, 52, 48, 51, 49, 23 | 51, 50, 51, 49, 56, 50, 53, 90, 23, 13, 49, 55, 48, 24 | 51, 49, 50, 50, 51, 49, 56, 50, 53, 90, 48, 129, 154, 25 | 49, 11, 48, 9, 6, 3, 85, 4, 6, 19, 2, 85, 83, 26 | 49, 11, 48, 9, 6, 3, 85, 4, 8, 12, 2, 87, 65, 27 | 49, 16, 48, 14, 6, 3, 85, 4, 7, 12, 7, 83, 101, 28 | 97, 116, 116, 108, 101, 49, 35, 48, 33, 6, 3, 85, 4, 29 | 10, 12, 26, 73, 110, 115, 105, 100, 101, 32, 83, 101, 99, 30 | 117, 114, 101, 32, 67, 111, 114, 112, 111, 114, 97, 116, 105, 31 | 111, 110, 46, 49, 13, 48, 11, 6, 3, 85, 4, 11, 12, 32 | 4, 84, 101, 115, 116, 49, 56, 48, 54, 6, 3, 85, 4, 33 | 3, 12, 47, 77, 97, 116, 114, 105, 120, 83, 83, 76, 32, 34 | 83, 97, 109, 112, 108, 101, 32, 67, 65, 32, 40, 69, 108, 35 | 108, 105, 112, 116, 105, 99, 32, 99, 117, 114, 118, 101, 32, 36 | 112, 114, 105, 109, 101, 49, 57, 50, 118, 49, 41, 48, 73, 37 | 48, 19, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 8, 38 | 42, 134, 72, 206, 61, 3, 1, 1, 3, 50, 0, 4, 89, 39 | 238, 161, 93, 187, 158, 50, 130, 124, 152, 90, 184, 112, 99, 40 | 7, 175, 242, 13, 179, 21, 39, 140, 1, 118, 65, 182, 106, 41 | 154, 161, 69, 136, 35, 251, 11, 230, 61, 128, 214, 10, 204, 42 | 251, 0, 87, 238, 24, 147, 100, 224, 163, 93, 48, 91, 48, 43 | 11, 6, 3, 85, 29, 15, 4, 4, 3, 2, 2, 4, 48, 44 | 29, 6, 3, 85, 29, 14, 4, 22, 4, 20, 147, 63, 179, 45 | 90, 56, 85, 221, 180, 214, 110, 132, 204, 102, 206, 140, 38, 46 | 91, 28, 23, 32, 48, 31, 6, 3, 85, 29, 35, 4, 24, 47 | 48, 22, 128, 20, 147, 63, 179, 90, 56, 85, 221, 180, 214, 48 | 110, 132, 204, 102, 206, 140, 38, 91, 28, 23, 32, 48, 12, 49 | 6, 3, 85, 29, 19, 4, 5, 48, 3, 1, 1, 255, 48, 50 | 10, 6, 8, 42, 134, 72, 206, 61, 4, 3, 2, 3, 56, 51 | 0, 48, 53, 2, 25, 0, 236, 147, 226, 123, 177, 108, 244, 52 | 138, 40, 188, 46, 217, 183, 64, 111, 103, 228, 53, 209, 162, 53 | 153, 204, 1, 241, 2, 24, 113, 66, 191, 252, 72, 191, 162, 54 | 239, 217, 191, 233, 227, 165, 46, 71, 62, 19, 253, 197, 225, 55 | 197, 9, 7, 114}; 56 | -------------------------------------------------------------------------------- /firmware/sampleCerts/ECDH_RSA/ecdsaCert.pem: -------------------------------------------------------------------------------- 1 | Certificate: 2 | Data: 3 | Version: 3 (0x2) 4 | Serial Number: 1 (0x1) 5 | Signature Algorithm: sha1WithRSAEncryption 6 | Issuer: C=US, ST=WA, L=Seattle, O=PeerSec, OU=Test, CN=RSA CA for ECDH_RSA test 7 | Validity 8 | Not Before: Jun 9 22:40:11 2011 GMT 9 | Not After : Jun 8 22:40:11 2012 GMT 10 | Subject: C=US, ST=WA, O=PeerSec, OU=Test, CN=ECDH_RSA Server Certificate 11 | Subject Public Key Info: 12 | Public Key Algorithm: id-ecPublicKey 13 | Public-Key: (256 bit) 14 | pub: 15 | 04:a7:8a:43:32:f6:c9:2b:ad:f7:f3:6f:ed:4c:76: 16 | e6:c5:d4:f5:ab:51:22:a5:14:6a:10:41:52:c4:83: 17 | 08:a2:0b:cf:50:03:7e:fb:97:9e:74:11:99:d4:38: 18 | 4f:e2:4b:92:d0:fc:ff:f4:42:a6:f1:63:e0:e8:62: 19 | 12:f9:6f:60:5c 20 | ASN1 OID: prime256v1 21 | X509v3 extensions: 22 | X509v3 Basic Constraints: 23 | CA:FALSE 24 | Netscape Comment: 25 | OpenSSL Generated Certificate 26 | X509v3 Subject Key Identifier: 27 | D3:37:64:87:35:7E:45:93:37:DB:D0:29:02:DE:78:E8:31:43:AD:B7 28 | X509v3 Authority Key Identifier: 29 | keyid:AB:11:00:44:21:C9:DA:CB:B5:C0:4D:80:9A:70:DE:19:8B:65:C9:B6 30 | 31 | Signature Algorithm: sha1WithRSAEncryption 32 | c5:ad:8b:94:1a:4c:41:bc:34:f9:8f:b6:42:51:ef:e9:74:d7: 33 | 7e:bc:f0:0a:7b:6b:22:46:6b:20:0b:0f:e5:46:b6:fc:6a:0c: 34 | e1:55:04:7f:45:35:b8:bd:0d:f4:83:b7:73:5a:5f:66:df:aa: 35 | bc:f7:42:77:29:dc:65:1c:28:23:c3:50:ef:7a:9d:e7:ff:44: 36 | b0:41:78:37:77:ef:51:f2:60:3c:b0:2b:d8:8e:ba:a3:29:90: 37 | 28:ec:3a:56:1e:f6:a9:ac:cb:43:54:8e:51:a7:24:a6:29:3f: 38 | 69:98:be:dc:9e:58:14:3f:e4:cf:fd:db:58:f7:4d:64:df:18: 39 | 3f:95 40 | -----BEGIN CERTIFICATE----- 41 | MIICezCCAeSgAwIBAgIBATANBgkqhkiG9w0BAQUFADBwMQswCQYDVQQGEwJVUzEL 42 | MAkGA1UECBMCV0ExEDAOBgNVBAcTB1NlYXR0bGUxEDAOBgNVBAoTB1BlZXJTZWMx 43 | DTALBgNVBAsTBFRlc3QxITAfBgNVBAMUGFJTQSBDQSBmb3IgRUNESF9SU0EgdGVz 44 | dDAeFw0xMTA2MDkyMjQwMTFaFw0xMjA2MDgyMjQwMTFaMGExCzAJBgNVBAYTAlVT 45 | MQswCQYDVQQIEwJXQTEQMA4GA1UEChMHUGVlclNlYzENMAsGA1UECxMEVGVzdDEk 46 | MCIGA1UEAxQbRUNESF9SU0EgU2VydmVyIENlcnRpZmljYXRlMFkwEwYHKoZIzj0C 47 | AQYIKoZIzj0DAQcDQgAEp4pDMvbJK63382/tTHbmxdT1q1EipRRqEEFSxIMIogvP 48 | UAN++5eedBGZ1DhP4kuS0Pz/9EKm8WPg6GIS+W9gXKN7MHkwCQYDVR0TBAIwADAs 49 | BglghkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYD 50 | VR0OBBYEFNM3ZIc1fkWTN9vQKQLeeOgxQ623MB8GA1UdIwQYMBaAFKsRAEQhydrL 51 | tcBNgJpw3hmLZcm2MA0GCSqGSIb3DQEBBQUAA4GBAMWti5QaTEG8NPmPtkJR7+l0 52 | 13688Ap7ayJGayALD+VGtvxqDOFVBH9FNbi9DfSDt3NaX2bfqrz3Qncp3GUcKCPD 53 | UO96nef/RLBBeDd371HyYDywK9iOuqMpkCjsOlYe9qmsy0NUjlGnJKYpP2mYvtye 54 | WBQ/5M/921j3TWTfGD+V 55 | -----END CERTIFICATE----- 56 | -------------------------------------------------------------------------------- /firmware/prng.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file prng.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Pseudorandom Number Generator header. 6 | */ 7 | /* 8 | * Copyright (c) 2013-2015 INSIDE Secure Corporation 9 | * Copyright (c) PeerSec Networks, 2002-2011 10 | * All Rights Reserved 11 | * 12 | * The latest version of this code is available at http://www.matrixssl.org 13 | * 14 | * This software is open source; you can redistribute it and/or modify 15 | * it under the terms of the GNU General Public License as published by 16 | * the Free Software Foundation; either version 2 of the License, or 17 | * (at your option) any later version. 18 | * 19 | * This General Public License does NOT permit incorporating this software 20 | * into proprietary programs. If you are unable to comply with the GPL, a 21 | * commercial license for this software may be purchased from INSIDE at 22 | * http://www.insidesecure.com/eng/Company/Locations 23 | * 24 | * This program is distributed in WITHOUT ANY WARRANTY; without even the 25 | * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 26 | * See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License 29 | * along with this program; if not, write to the Free Software 30 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 31 | * http://www.gnu.org/copyleft/gpl.html 32 | */ 33 | /******************************************************************************/ 34 | 35 | #ifndef _h_PS_PRNG 36 | #define _h_PS_PRNG 37 | 38 | 39 | #ifdef USE_YARROW 40 | /* 41 | AES SHA-1 implementation 42 | */ 43 | #define CTR_COUNTER_LITTLE_ENDIAN 0x0000 44 | #define CTR_COUNTER_BIG_ENDIAN 0x1000 45 | 46 | #define AESBLOCKSIZE 16 47 | 48 | typedef struct { 49 | #ifdef USE_SHA256 50 | unsigned char pool[SHA256_HASH_SIZE]; /* hash of entropy */ 51 | #else 52 | unsigned char pool[SHA1_HASH_SIZE]; /* hash of entropy */ 53 | #endif 54 | int32 mode; /** The mode (endianess) of the CTR, 0==little, 1==big */ 55 | int32 ctrlen; /** counter width */ 56 | int32 padlen; /** The padding offset */ 57 | int32 blocklen; /** The AESBLOCKSIZE */ 58 | unsigned char ctr[AESBLOCKSIZE]; /** The counter being encrypted */ 59 | unsigned char pad[AESBLOCKSIZE]; /** The actual prn */ 60 | psAesKey_t key; /** The scheduled key */ 61 | } psYarrow_t; 62 | #endif /* USE_YARROW */ 63 | 64 | /* 65 | prng.c wrapper 66 | */ 67 | #define RANDOM_BYTES_BEFORE_ENTROPY 1024 /* add entropy each time # bytes read */ 68 | #define RANDOM_ENTROPY_BYTES 8 /* Bytes of entropy from source */ 69 | 70 | typedef struct { 71 | #ifdef USE_YARROW 72 | psYarrow_t yarrow; 73 | #endif 74 | uint32 bytecount; /* number of bytes read from this context */ 75 | } psRandom_t; 76 | 77 | 78 | /******************************************************************************/ 79 | #endif /* _h_PS_PRNG */ 80 | 81 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/224_EC_CA.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 224_EC_CA.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | unsigned char EC224CA[] = { 8 | 48, 130, 2, 108, 48, 130, 2, 26, 160, 3, 2, 1, 2, 9 | 2, 2, 31, 64, 48, 10, 6, 8, 42, 134, 72, 206, 61, 10 | 4, 3, 2, 48, 129, 152, 49, 11, 48, 9, 6, 3, 85, 11 | 4, 6, 19, 2, 85, 83, 49, 11, 48, 9, 6, 3, 85, 12 | 4, 8, 12, 2, 87, 65, 49, 16, 48, 14, 6, 3, 85, 13 | 4, 7, 12, 7, 83, 101, 97, 116, 116, 108, 101, 49, 34, 14 | 48, 32, 6, 3, 85, 4, 10, 12, 25, 73, 110, 115, 105, 15 | 100, 101, 32, 83, 101, 99, 117, 114, 101, 32, 67, 111, 114, 16 | 112, 111, 114, 97, 116, 105, 111, 110, 49, 13, 48, 11, 6, 17 | 3, 85, 4, 11, 12, 4, 84, 101, 115, 116, 49, 55, 48, 18 | 53, 6, 3, 85, 4, 3, 12, 46, 77, 97, 116, 114, 105, 19 | 120, 83, 83, 76, 32, 83, 97, 109, 112, 108, 101, 32, 67, 20 | 65, 32, 40, 69, 108, 108, 105, 112, 116, 105, 99, 32, 99, 21 | 117, 114, 118, 101, 32, 115, 101, 99, 112, 50, 50, 52, 114, 22 | 49, 41, 48, 30, 23, 13, 49, 52, 48, 51, 49, 51, 50, 23 | 51, 50, 48, 52, 48, 90, 23, 13, 49, 55, 48, 51, 49, 24 | 50, 50, 51, 50, 48, 52, 48, 90, 48, 129, 152, 49, 11, 25 | 48, 9, 6, 3, 85, 4, 6, 19, 2, 85, 83, 49, 11, 26 | 48, 9, 6, 3, 85, 4, 8, 12, 2, 87, 65, 49, 16, 27 | 48, 14, 6, 3, 85, 4, 7, 12, 7, 83, 101, 97, 116, 28 | 116, 108, 101, 49, 34, 48, 32, 6, 3, 85, 4, 10, 12, 29 | 25, 73, 110, 115, 105, 100, 101, 32, 83, 101, 99, 117, 114, 30 | 101, 32, 67, 111, 114, 112, 111, 114, 97, 116, 105, 111, 110, 31 | 49, 13, 48, 11, 6, 3, 85, 4, 11, 12, 4, 84, 101, 32 | 115, 116, 49, 55, 48, 53, 6, 3, 85, 4, 3, 12, 46, 33 | 77, 97, 116, 114, 105, 120, 83, 83, 76, 32, 83, 97, 109, 34 | 112, 108, 101, 32, 67, 65, 32, 40, 69, 108, 108, 105, 112, 35 | 116, 105, 99, 32, 99, 117, 114, 118, 101, 32, 115, 101, 99, 36 | 112, 50, 50, 52, 114, 49, 41, 48, 78, 48, 16, 6, 7, 37 | 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 4, 0, 38 | 33, 3, 58, 0, 4, 253, 11, 179, 117, 37, 53, 94, 117, 39 | 163, 131, 139, 81, 126, 255, 184, 30, 42, 140, 91, 142, 206, 40 | 215, 225, 195, 154, 80, 37, 141, 202, 12, 43, 159, 250, 62, 41 | 83, 172, 49, 82, 127, 103, 166, 146, 166, 163, 219, 168, 148, 42 | 75, 34, 51, 29, 95, 95, 207, 72, 33, 163, 93, 48, 91, 43 | 48, 11, 6, 3, 85, 29, 15, 4, 4, 3, 2, 2, 4, 44 | 48, 29, 6, 3, 85, 29, 14, 4, 22, 4, 20, 193, 47, 45 | 173, 196, 213, 1, 248, 145, 226, 207, 193, 190, 230, 11, 34, 46 | 231, 45, 59, 91, 216, 48, 31, 6, 3, 85, 29, 35, 4, 47 | 24, 48, 22, 128, 20, 193, 47, 173, 196, 213, 1, 248, 145, 48 | 226, 207, 193, 190, 230, 11, 34, 231, 45, 59, 91, 216, 48, 49 | 12, 6, 3, 85, 29, 19, 4, 5, 48, 3, 1, 1, 255, 50 | 48, 10, 6, 8, 42, 134, 72, 206, 61, 4, 3, 2, 3, 51 | 64, 0, 48, 61, 2, 29, 0, 254, 28, 86, 179, 163, 185, 52 | 213, 184, 114, 156, 34, 214, 128, 151, 95, 135, 2, 34, 23, 53 | 26, 242, 68, 249, 182, 235, 23, 66, 51, 2, 28, 68, 167, 54 | 67, 59, 125, 195, 71, 21, 162, 1, 113, 91, 111, 240, 54, 55 | 165, 155, 219, 11, 224, 19, 150, 71, 6, 47, 79, 251, 73 56 | }; 57 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/256_EC_CA.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 256_EC_CA.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | unsigned char EC256CA[] = { 8 | 48, 130, 2, 128, 48, 130, 2, 38, 160, 3, 2, 1, 2, 9 | 2, 1, 1, 48, 10, 6, 8, 42, 134, 72, 206, 61, 4, 10 | 3, 2, 48, 129, 153, 49, 11, 48, 9, 6, 3, 85, 4, 11 | 6, 19, 2, 85, 83, 49, 11, 48, 9, 6, 3, 85, 4, 12 | 8, 12, 2, 87, 65, 49, 16, 48, 14, 6, 3, 85, 4, 13 | 7, 12, 7, 83, 101, 97, 116, 116, 108, 101, 49, 34, 48, 14 | 32, 6, 3, 85, 4, 10, 12, 25, 73, 110, 115, 105, 100, 15 | 101, 32, 83, 101, 99, 117, 114, 101, 32, 67, 111, 114, 112, 16 | 111, 114, 97, 116, 105, 111, 110, 49, 13, 48, 11, 6, 3, 17 | 85, 4, 11, 12, 4, 84, 101, 115, 116, 49, 56, 48, 54, 18 | 6, 3, 85, 4, 3, 12, 47, 77, 97, 116, 114, 105, 120, 19 | 83, 83, 76, 32, 83, 97, 109, 112, 108, 101, 32, 67, 65, 20 | 32, 40, 69, 108, 108, 105, 112, 116, 105, 99, 32, 99, 117, 21 | 114, 118, 101, 32, 112, 114, 105, 109, 101, 50, 53, 54, 118, 22 | 49, 41, 48, 30, 23, 13, 49, 52, 48, 51, 49, 51, 50, 23 | 51, 50, 49, 50, 51, 90, 23, 13, 49, 55, 48, 51, 49, 24 | 50, 50, 51, 50, 49, 50, 51, 90, 48, 129, 153, 49, 11, 25 | 48, 9, 6, 3, 85, 4, 6, 19, 2, 85, 83, 49, 11, 26 | 48, 9, 6, 3, 85, 4, 8, 12, 2, 87, 65, 49, 16, 27 | 48, 14, 6, 3, 85, 4, 7, 12, 7, 83, 101, 97, 116, 28 | 116, 108, 101, 49, 34, 48, 32, 6, 3, 85, 4, 10, 12, 29 | 25, 73, 110, 115, 105, 100, 101, 32, 83, 101, 99, 117, 114, 30 | 101, 32, 67, 111, 114, 112, 111, 114, 97, 116, 105, 111, 110, 31 | 49, 13, 48, 11, 6, 3, 85, 4, 11, 12, 4, 84, 101, 32 | 115, 116, 49, 56, 48, 54, 6, 3, 85, 4, 3, 12, 47, 33 | 77, 97, 116, 114, 105, 120, 83, 83, 76, 32, 83, 97, 109, 34 | 112, 108, 101, 32, 67, 65, 32, 40, 69, 108, 108, 105, 112, 35 | 116, 105, 99, 32, 99, 117, 114, 118, 101, 32, 112, 114, 105, 36 | 109, 101, 50, 53, 54, 118, 49, 41, 48, 89, 48, 19, 6, 37 | 7, 42, 134, 72, 206, 61, 2, 1, 6, 8, 42, 134, 72, 38 | 206, 61, 3, 1, 7, 3, 66, 0, 4, 211, 90, 222, 86, 39 | 20, 8, 226, 69, 209, 11, 169, 119, 138, 112, 95, 135, 140, 40 | 180, 91, 47, 205, 105, 124, 5, 97, 127, 233, 227, 102, 191, 41 | 128, 63, 148, 136, 25, 170, 138, 255, 180, 40, 246, 14, 187, 42 | 20, 122, 57, 101, 75, 43, 125, 82, 68, 156, 92, 91, 9, 43 | 105, 152, 22, 49, 146, 218, 204, 88, 163, 93, 48, 91, 48, 44 | 11, 6, 3, 85, 29, 15, 4, 4, 3, 2, 2, 4, 48, 45 | 29, 6, 3, 85, 29, 14, 4, 22, 4, 20, 105, 14, 250, 46 | 71, 62, 109, 64, 249, 41, 127, 247, 111, 102, 134, 184, 122, 47 | 52, 187, 37, 235, 48, 31, 6, 3, 85, 29, 35, 4, 24, 48 | 48, 22, 128, 20, 105, 14, 250, 71, 62, 109, 64, 249, 41, 49 | 127, 247, 111, 102, 134, 184, 122, 52, 187, 37, 235, 48, 12, 50 | 6, 3, 85, 29, 19, 4, 5, 48, 3, 1, 1, 255, 48, 51 | 10, 6, 8, 42, 134, 72, 206, 61, 4, 3, 2, 3, 72, 52 | 0, 48, 69, 2, 32, 66, 105, 191, 65, 98, 201, 166, 81, 53 | 178, 14, 217, 57, 12, 12, 85, 76, 195, 98, 23, 170, 233, 54 | 243, 139, 186, 12, 249, 227, 9, 178, 157, 234, 216, 2, 33, 55 | 0, 130, 3, 33, 253, 126, 188, 68, 183, 9, 138, 37, 206, 56 | 90, 102, 142, 121, 114, 90, 180, 16, 181, 22, 206, 103, 2, 57 | 143, 145, 94, 28, 93, 239, 163}; 58 | -------------------------------------------------------------------------------- /firmware/sampleCerts/ECDH_RSA/ecdsaCert.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file ecdsaCert.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | unsigned char certSrvEcRsaBuf[] = { 8 | 48, 130, 2, 123, 48, 130, 1, 228, 160, 3, 2, 1, 2, 9 | 2, 1, 1, 48, 13, 6, 9, 42, 134, 72, 134, 247, 13, 10 | 1, 1, 5, 5, 0, 48, 112, 49, 11, 48, 9, 6, 3, 11 | 85, 4, 6, 19, 2, 85, 83, 49, 11, 48, 9, 6, 3, 12 | 85, 4, 8, 19, 2, 87, 65, 49, 16, 48, 14, 6, 3, 13 | 85, 4, 7, 19, 7, 83, 101, 97, 116, 116, 108, 101, 49, 14 | 16, 48, 14, 6, 3, 85, 4, 10, 19, 7, 80, 101, 101, 15 | 114, 83, 101, 99, 49, 13, 48, 11, 6, 3, 85, 4, 11, 16 | 19, 4, 84, 101, 115, 116, 49, 33, 48, 31, 6, 3, 85, 17 | 4, 3, 20, 24, 82, 83, 65, 32, 67, 65, 32, 102, 111, 18 | 114, 32, 69, 67, 68, 72, 95, 82, 83, 65, 32, 116, 101, 19 | 115, 116, 48, 30, 23, 13, 49, 49, 48, 54, 48, 57, 50, 20 | 50, 52, 48, 49, 49, 90, 23, 13, 49, 50, 48, 54, 48, 21 | 56, 50, 50, 52, 48, 49, 49, 90, 48, 97, 49, 11, 48, 22 | 9, 6, 3, 85, 4, 6, 19, 2, 85, 83, 49, 11, 48, 23 | 9, 6, 3, 85, 4, 8, 19, 2, 87, 65, 49, 16, 48, 24 | 14, 6, 3, 85, 4, 10, 19, 7, 80, 101, 101, 114, 83, 25 | 101, 99, 49, 13, 48, 11, 6, 3, 85, 4, 11, 19, 4, 26 | 84, 101, 115, 116, 49, 36, 48, 34, 6, 3, 85, 4, 3, 27 | 20, 27, 69, 67, 68, 72, 95, 82, 83, 65, 32, 83, 101, 28 | 114, 118, 101, 114, 32, 67, 101, 114, 116, 105, 102, 105, 99, 29 | 97, 116, 101, 48, 89, 48, 19, 6, 7, 42, 134, 72, 206, 30 | 61, 2, 1, 6, 8, 42, 134, 72, 206, 61, 3, 1, 7, 31 | 3, 66, 0, 4, 167, 138, 67, 50, 246, 201, 43, 173, 247, 32 | 243, 111, 237, 76, 118, 230, 197, 212, 245, 171, 81, 34, 165, 33 | 20, 106, 16, 65, 82, 196, 131, 8, 162, 11, 207, 80, 3, 34 | 126, 251, 151, 158, 116, 17, 153, 212, 56, 79, 226, 75, 146, 35 | 208, 252, 255, 244, 66, 166, 241, 99, 224, 232, 98, 18, 249, 36 | 111, 96, 92, 163, 123, 48, 121, 48, 9, 6, 3, 85, 29, 37 | 19, 4, 2, 48, 0, 48, 44, 6, 9, 96, 134, 72, 1, 38 | 134, 248, 66, 1, 13, 4, 31, 22, 29, 79, 112, 101, 110, 39 | 83, 83, 76, 32, 71, 101, 110, 101, 114, 97, 116, 101, 100, 40 | 32, 67, 101, 114, 116, 105, 102, 105, 99, 97, 116, 101, 48, 41 | 29, 6, 3, 85, 29, 14, 4, 22, 4, 20, 211, 55, 100, 42 | 135, 53, 126, 69, 147, 55, 219, 208, 41, 2, 222, 120, 232, 43 | 49, 67, 173, 183, 48, 31, 6, 3, 85, 29, 35, 4, 24, 44 | 48, 22, 128, 20, 171, 17, 0, 68, 33, 201, 218, 203, 181, 45 | 192, 77, 128, 154, 112, 222, 25, 139, 101, 201, 182, 48, 13, 46 | 6, 9, 42, 134, 72, 134, 247, 13, 1, 1, 5, 5, 0, 47 | 3, 129, 129, 0, 197, 173, 139, 148, 26, 76, 65, 188, 52, 48 | 249, 143, 182, 66, 81, 239, 233, 116, 215, 126, 188, 240, 10, 49 | 123, 107, 34, 70, 107, 32, 11, 15, 229, 70, 182, 252, 106, 50 | 12, 225, 85, 4, 127, 69, 53, 184, 189, 13, 244, 131, 183, 51 | 115, 90, 95, 102, 223, 170, 188, 247, 66, 119, 41, 220, 101, 52 | 28, 40, 35, 195, 80, 239, 122, 157, 231, 255, 68, 176, 65, 53 | 120, 55, 119, 239, 81, 242, 96, 60, 176, 43, 216, 142, 186, 54 | 163, 41, 144, 40, 236, 58, 86, 30, 246, 169, 172, 203, 67, 55 | 84, 142, 81, 167, 36, 166, 41, 63, 105, 152, 190, 220, 158, 56 | 88, 20, 63, 228, 207, 253, 219, 88, 247, 77, 100, 223, 24, 57 | 63, 149}; 58 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/192_EC.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 192_EC.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | unsigned char EC192[] = { 8 | 48, 130, 2, 146, 48, 130, 2, 71, 160, 3, 2, 1, 2, 9 | 2, 2, 27, 188, 48, 10, 6, 8, 42, 134, 72, 206, 61, 10 | 4, 3, 2, 48, 129, 154, 49, 11, 48, 9, 6, 3, 85, 11 | 4, 6, 19, 2, 85, 83, 49, 11, 48, 9, 6, 3, 85, 12 | 4, 8, 12, 2, 87, 65, 49, 16, 48, 14, 6, 3, 85, 13 | 4, 7, 12, 7, 83, 101, 97, 116, 116, 108, 101, 49, 35, 14 | 48, 33, 6, 3, 85, 4, 10, 12, 26, 73, 110, 115, 105, 15 | 100, 101, 32, 83, 101, 99, 117, 114, 101, 32, 67, 111, 114, 16 | 112, 111, 114, 97, 116, 105, 111, 110, 46, 49, 13, 48, 11, 17 | 6, 3, 85, 4, 11, 12, 4, 84, 101, 115, 116, 49, 56, 18 | 48, 54, 6, 3, 85, 4, 3, 12, 47, 77, 97, 116, 114, 19 | 105, 120, 83, 83, 76, 32, 83, 97, 109, 112, 108, 101, 32, 20 | 67, 65, 32, 40, 69, 108, 108, 105, 112, 116, 105, 99, 32, 21 | 99, 117, 114, 118, 101, 32, 112, 114, 105, 109, 101, 49, 57, 22 | 50, 118, 49, 41, 48, 30, 23, 13, 49, 52, 48, 51, 49, 23 | 51, 50, 51, 49, 56, 50, 53, 90, 23, 13, 49, 55, 48, 24 | 51, 49, 50, 50, 51, 49, 56, 50, 53, 90, 48, 129, 155, 25 | 49, 11, 48, 9, 6, 3, 85, 4, 6, 19, 2, 85, 83, 26 | 49, 11, 48, 9, 6, 3, 85, 4, 8, 12, 2, 87, 65, 27 | 49, 16, 48, 14, 6, 3, 85, 4, 7, 12, 7, 83, 101, 28 | 97, 116, 116, 108, 101, 49, 34, 48, 32, 6, 3, 85, 4, 29 | 10, 12, 25, 73, 110, 115, 105, 100, 101, 32, 83, 101, 99, 30 | 117, 114, 101, 32, 67, 111, 114, 112, 111, 114, 97, 116, 105, 31 | 111, 110, 49, 13, 48, 11, 6, 3, 85, 4, 11, 12, 4, 32 | 84, 101, 115, 116, 49, 58, 48, 56, 6, 3, 85, 4, 3, 33 | 12, 49, 77, 97, 116, 114, 105, 120, 83, 83, 76, 32, 83, 34 | 97, 109, 112, 108, 101, 32, 67, 101, 114, 116, 32, 40, 69, 35 | 108, 108, 105, 112, 116, 105, 99, 32, 99, 117, 114, 118, 101, 36 | 32, 112, 114, 105, 109, 101, 49, 57, 50, 118, 49, 41, 48, 37 | 73, 48, 19, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 38 | 8, 42, 134, 72, 206, 61, 3, 1, 1, 3, 50, 0, 4, 39 | 202, 226, 156, 117, 170, 99, 114, 43, 118, 135, 61, 154, 175, 40 | 182, 180, 198, 105, 122, 12, 184, 119, 231, 48, 245, 143, 78, 41 | 120, 179, 3, 104, 145, 246, 50, 88, 197, 21, 112, 154, 248, 42 | 219, 215, 75, 163, 100, 131, 105, 230, 209, 163, 129, 137, 48, 43 | 129, 134, 48, 9, 6, 3, 85, 29, 19, 4, 2, 48, 0, 44 | 48, 29, 6, 3, 85, 29, 14, 4, 22, 4, 20, 67, 121, 45 | 43, 205, 100, 94, 112, 126, 53, 5, 114, 201, 92, 210, 74, 46 | 160, 244, 185, 218, 5, 48, 31, 6, 3, 85, 29, 35, 4, 47 | 24, 48, 22, 128, 20, 147, 63, 179, 90, 56, 85, 221, 180, 48 | 214, 110, 132, 204, 102, 206, 140, 38, 91, 28, 23, 32, 48, 49 | 29, 6, 3, 85, 29, 37, 4, 22, 48, 20, 6, 8, 43, 50 | 6, 1, 5, 5, 7, 3, 1, 6, 8, 43, 6, 1, 5, 51 | 5, 7, 3, 2, 48, 26, 6, 3, 85, 29, 17, 4, 19, 52 | 48, 17, 130, 9, 108, 111, 99, 97, 108, 104, 111, 115, 116, 53 | 135, 4, 127, 0, 0, 1, 48, 10, 6, 8, 42, 134, 72, 54 | 206, 61, 4, 3, 2, 3, 57, 0, 48, 54, 2, 25, 0, 55 | 209, 108, 138, 72, 211, 160, 109, 227, 76, 104, 182, 91, 142, 56 | 248, 219, 26, 135, 39, 203, 86, 57, 167, 223, 49, 2, 25, 57 | 0, 213, 14, 250, 236, 85, 70, 192, 127, 100, 89, 168, 108, 58 | 186, 138, 56, 66, 102, 112, 27, 0, 15, 180, 23, 244}; 59 | -------------------------------------------------------------------------------- /firmware/1024_RSA_KEY.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 1024_RSA_KEY.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | static const unsigned char RSA1024KEY[] = { 8 | 48, 130, 2, 93, 2, 1, 0, 2, 129, 129, 0, 171, 74, 9 | 251, 133, 203, 23, 206, 121, 129, 83, 106, 128, 62, 40, 8, 10 | 135, 8, 10, 136, 83, 189, 35, 151, 34, 17, 142, 82, 217, 11 | 252, 181, 153, 110, 93, 92, 164, 77, 244, 112, 162, 136, 97, 12 | 197, 170, 99, 230, 154, 247, 244, 140, 4, 166, 187, 118, 131, 13 | 170, 65, 194, 38, 148, 205, 157, 85, 0, 127, 225, 255, 251, 14 | 189, 133, 119, 180, 105, 24, 126, 169, 72, 163, 33, 39, 79, 15 | 122, 157, 50, 195, 182, 155, 57, 104, 184, 118, 16, 186, 132, 16 | 134, 209, 236, 1, 204, 202, 31, 193, 74, 90, 185, 32, 153, 17 | 141, 57, 243, 174, 93, 17, 124, 35, 39, 82, 149, 82, 92, 18 | 137, 0, 138, 137, 234, 208, 194, 69, 127, 2, 3, 1, 0, 19 | 1, 2, 129, 128, 43, 29, 132, 145, 248, 188, 213, 75, 224, 20 | 49, 142, 237, 24, 184, 26, 237, 98, 40, 196, 135, 207, 99, 21 | 213, 246, 205, 84, 117, 166, 72, 229, 172, 233, 10, 182, 246, 22 | 228, 104, 82, 177, 150, 130, 133, 174, 141, 214, 205, 202, 251, 23 | 211, 2, 152, 181, 54, 239, 141, 59, 96, 19, 54, 1, 75, 24 | 72, 202, 6, 252, 191, 158, 253, 31, 91, 148, 174, 143, 126, 25 | 211, 216, 136, 54, 13, 80, 143, 101, 121, 179, 170, 105, 222, 26 | 100, 47, 185, 67, 68, 50, 254, 228, 43, 126, 74, 126, 221, 27 | 184, 247, 27, 116, 140, 46, 214, 115, 10, 14, 220, 251, 133, 28 | 131, 109, 59, 161, 234, 198, 91, 90, 225, 44, 228, 71, 245, 29 | 81, 129, 2, 65, 0, 224, 116, 248, 238, 225, 240, 181, 182, 30 | 188, 244, 4, 121, 44, 29, 207, 125, 174, 145, 161, 47, 130, 31 | 148, 232, 80, 127, 111, 136, 172, 54, 189, 120, 230, 60, 254, 32 | 134, 231, 137, 101, 130, 4, 73, 145, 24, 152, 162, 1, 69, 33 | 185, 7, 124, 205, 44, 133, 203, 123, 22, 142, 211, 42, 110, 34 | 241, 171, 126, 195, 2, 65, 0, 195, 93, 99, 178, 28, 17, 35 | 60, 157, 111, 114, 66, 30, 188, 16, 43, 69, 79, 14, 40, 36 | 167, 66, 55, 88, 19, 200, 85, 241, 32, 148, 192, 203, 84, 37 | 49, 183, 182, 14, 97, 200, 57, 29, 129, 80, 235, 74, 40, 38 | 46, 25, 107, 73, 181, 180, 76, 16, 107, 175, 240, 144, 16, 39 | 37, 12, 78, 236, 170, 149, 2, 64, 90, 233, 230, 30, 83, 40 | 243, 188, 150, 108, 200, 101, 187, 114, 204, 12, 75, 250, 214, 41 | 79, 180, 63, 174, 242, 190, 16, 47, 235, 234, 221, 45, 55, 42 | 120, 2, 66, 145, 255, 220, 93, 250, 32, 164, 111, 153, 199, 43 | 208, 238, 180, 255, 241, 241, 113, 229, 83, 184, 12, 126, 33, 44 | 145, 148, 129, 101, 111, 178, 35, 2, 65, 0, 178, 135, 251, 45 | 125, 94, 108, 218, 9, 189, 56, 154, 247, 223, 64, 159, 106, 46 | 93, 14, 65, 84, 104, 12, 143, 110, 180, 154, 229, 25, 179, 47 | 22, 100, 57, 114, 157, 193, 191, 110, 216, 60, 105, 156, 45, 48 | 72, 119, 162, 52, 78, 130, 94, 255, 175, 221, 250, 251, 141, 49 | 242, 182, 148, 42, 103, 15, 16, 243, 233, 2, 65, 0, 222, 50 | 122, 102, 45, 182, 99, 164, 2, 140, 85, 237, 44, 125, 145, 51 | 115, 171, 101, 118, 197, 12, 133, 100, 128, 181, 144, 193, 72, 52 | 128, 21, 13, 96, 223, 111, 23, 146, 63, 219, 25, 209, 127, 53 | 240, 137, 63, 109, 167, 41, 217, 24, 233, 148, 219, 125, 106, 54 | 104, 231, 188, 243, 12, 248, 24, 47, 184, 221, 228}; 55 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/224_EC.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 224_EC.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | unsigned char EC224[] = { 8 | 48, 130, 2, 155, 48, 130, 2, 73, 160, 3, 2, 1, 2, 9 | 2, 2, 33, 52, 48, 10, 6, 8, 42, 134, 72, 206, 61, 10 | 4, 3, 2, 48, 129, 152, 49, 11, 48, 9, 6, 3, 85, 11 | 4, 6, 19, 2, 85, 83, 49, 11, 48, 9, 6, 3, 85, 12 | 4, 8, 12, 2, 87, 65, 49, 16, 48, 14, 6, 3, 85, 13 | 4, 7, 12, 7, 83, 101, 97, 116, 116, 108, 101, 49, 34, 14 | 48, 32, 6, 3, 85, 4, 10, 12, 25, 73, 110, 115, 105, 15 | 100, 101, 32, 83, 101, 99, 117, 114, 101, 32, 67, 111, 114, 16 | 112, 111, 114, 97, 116, 105, 111, 110, 49, 13, 48, 11, 6, 17 | 3, 85, 4, 11, 12, 4, 84, 101, 115, 116, 49, 55, 48, 18 | 53, 6, 3, 85, 4, 3, 12, 46, 77, 97, 116, 114, 105, 19 | 120, 83, 83, 76, 32, 83, 97, 109, 112, 108, 101, 32, 67, 20 | 65, 32, 40, 69, 108, 108, 105, 112, 116, 105, 99, 32, 99, 21 | 117, 114, 118, 101, 32, 115, 101, 99, 112, 50, 50, 52, 114, 22 | 49, 41, 48, 30, 23, 13, 49, 52, 48, 51, 49, 51, 50, 23 | 51, 50, 48, 52, 48, 90, 23, 13, 49, 55, 48, 51, 49, 24 | 50, 50, 51, 50, 48, 52, 48, 90, 48, 129, 154, 49, 11, 25 | 48, 9, 6, 3, 85, 4, 6, 19, 2, 85, 83, 49, 11, 26 | 48, 9, 6, 3, 85, 4, 8, 12, 2, 87, 65, 49, 16, 27 | 48, 14, 6, 3, 85, 4, 7, 12, 7, 83, 101, 97, 116, 28 | 116, 108, 101, 49, 34, 48, 32, 6, 3, 85, 4, 10, 12, 29 | 25, 73, 110, 115, 105, 100, 101, 32, 83, 101, 99, 117, 114, 30 | 101, 32, 67, 111, 114, 112, 111, 114, 97, 116, 105, 111, 110, 31 | 49, 13, 48, 11, 6, 3, 85, 4, 11, 12, 4, 84, 101, 32 | 115, 116, 49, 57, 48, 55, 6, 3, 85, 4, 3, 12, 48, 33 | 77, 97, 116, 114, 105, 120, 83, 83, 76, 32, 83, 97, 109, 34 | 112, 108, 101, 32, 67, 101, 114, 116, 32, 40, 69, 108, 108, 35 | 105, 112, 116, 105, 99, 32, 99, 117, 114, 118, 101, 32, 115, 36 | 101, 99, 112, 50, 50, 52, 114, 49, 41, 48, 78, 48, 16, 37 | 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 38 | 4, 0, 33, 3, 58, 0, 4, 75, 245, 42, 196, 110, 185, 39 | 34, 140, 165, 119, 22, 116, 116, 86, 38, 184, 200, 11, 24, 40 | 14, 44, 160, 63, 69, 191, 63, 145, 32, 188, 240, 187, 141, 41 | 157, 217, 64, 122, 62, 150, 232, 49, 129, 26, 218, 69, 189, 42 | 75, 204, 234, 107, 17, 95, 191, 243, 50, 207, 250, 163, 129, 43 | 137, 48, 129, 134, 48, 9, 6, 3, 85, 29, 19, 4, 2, 44 | 48, 0, 48, 29, 6, 3, 85, 29, 14, 4, 22, 4, 20, 45 | 90, 187, 225, 182, 182, 31, 254, 102, 39, 183, 81, 66, 64, 46 | 106, 216, 33, 188, 229, 143, 179, 48, 31, 6, 3, 85, 29, 47 | 35, 4, 24, 48, 22, 128, 20, 193, 47, 173, 196, 213, 1, 48 | 248, 145, 226, 207, 193, 190, 230, 11, 34, 231, 45, 59, 91, 49 | 216, 48, 29, 6, 3, 85, 29, 37, 4, 22, 48, 20, 6, 50 | 8, 43, 6, 1, 5, 5, 7, 3, 1, 6, 8, 43, 6, 51 | 1, 5, 5, 7, 3, 2, 48, 26, 6, 3, 85, 29, 17, 52 | 4, 19, 48, 17, 130, 9, 108, 111, 99, 97, 108, 104, 111, 53 | 115, 116, 135, 4, 127, 0, 0, 1, 48, 10, 6, 8, 42, 54 | 134, 72, 206, 61, 4, 3, 2, 3, 64, 0, 48, 61, 2, 55 | 29, 0, 218, 223, 2, 63, 187, 61, 232, 64, 216, 145, 14, 56 | 168, 183, 188, 175, 152, 36, 158, 145, 122, 124, 103, 107, 251, 57 | 179, 4, 104, 167, 2, 28, 80, 29, 129, 29, 87, 146, 70, 58 | 211, 4, 241, 45, 162, 37, 0, 67, 116, 123, 104, 87, 83, 59 | 133, 243, 190, 50, 145, 199, 112, 176}; 60 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/256_EC.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 256_EC.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | unsigned char EC256[] = { 8 | 48, 130, 2, 175, 48, 130, 2, 85, 160, 3, 2, 1, 2, 9 | 2, 1, 2, 48, 10, 6, 8, 42, 134, 72, 206, 61, 4, 10 | 3, 2, 48, 129, 153, 49, 11, 48, 9, 6, 3, 85, 4, 11 | 6, 19, 2, 85, 83, 49, 11, 48, 9, 6, 3, 85, 4, 12 | 8, 12, 2, 87, 65, 49, 16, 48, 14, 6, 3, 85, 4, 13 | 7, 12, 7, 83, 101, 97, 116, 116, 108, 101, 49, 34, 48, 14 | 32, 6, 3, 85, 4, 10, 12, 25, 73, 110, 115, 105, 100, 15 | 101, 32, 83, 101, 99, 117, 114, 101, 32, 67, 111, 114, 112, 16 | 111, 114, 97, 116, 105, 111, 110, 49, 13, 48, 11, 6, 3, 17 | 85, 4, 11, 12, 4, 84, 101, 115, 116, 49, 56, 48, 54, 18 | 6, 3, 85, 4, 3, 12, 47, 77, 97, 116, 114, 105, 120, 19 | 83, 83, 76, 32, 83, 97, 109, 112, 108, 101, 32, 67, 65, 20 | 32, 40, 69, 108, 108, 105, 112, 116, 105, 99, 32, 99, 117, 21 | 114, 118, 101, 32, 112, 114, 105, 109, 101, 50, 53, 54, 118, 22 | 49, 41, 48, 30, 23, 13, 49, 52, 48, 51, 49, 51, 50, 23 | 51, 50, 49, 50, 51, 90, 23, 13, 49, 55, 48, 51, 49, 24 | 50, 50, 51, 50, 49, 50, 51, 90, 48, 129, 155, 49, 11, 25 | 48, 9, 6, 3, 85, 4, 6, 19, 2, 85, 83, 49, 11, 26 | 48, 9, 6, 3, 85, 4, 8, 12, 2, 87, 65, 49, 16, 27 | 48, 14, 6, 3, 85, 4, 7, 12, 7, 83, 101, 97, 116, 28 | 116, 108, 101, 49, 34, 48, 32, 6, 3, 85, 4, 10, 12, 29 | 25, 73, 110, 115, 105, 100, 101, 32, 83, 101, 99, 117, 114, 30 | 101, 32, 67, 111, 114, 112, 111, 114, 97, 116, 105, 111, 110, 31 | 49, 13, 48, 11, 6, 3, 85, 4, 11, 12, 4, 84, 101, 32 | 115, 116, 49, 58, 48, 56, 6, 3, 85, 4, 3, 12, 49, 33 | 77, 97, 116, 114, 105, 120, 83, 83, 76, 32, 83, 97, 109, 34 | 112, 108, 101, 32, 67, 101, 114, 116, 32, 40, 69, 108, 108, 35 | 105, 112, 116, 105, 99, 32, 99, 117, 114, 118, 101, 32, 112, 36 | 114, 105, 109, 101, 50, 53, 54, 118, 49, 41, 48, 89, 48, 37 | 19, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 8, 42, 38 | 134, 72, 206, 61, 3, 1, 7, 3, 66, 0, 4, 95, 173, 39 | 98, 2, 66, 72, 186, 251, 226, 136, 216, 127, 185, 114, 203, 40 | 40, 174, 195, 138, 30, 195, 14, 156, 125, 122, 164, 181, 127, 41 | 218, 189, 70, 90, 185, 149, 57, 224, 68, 81, 113, 186, 227, 42 | 179, 64, 242, 84, 253, 35, 132, 178, 234, 42, 132, 163, 79, 43 | 215, 176, 8, 186, 110, 128, 195, 235, 223, 47, 163, 129, 137, 44 | 48, 129, 134, 48, 9, 6, 3, 85, 29, 19, 4, 2, 48, 45 | 0, 48, 29, 6, 3, 85, 29, 14, 4, 22, 4, 20, 31, 46 | 128, 117, 83, 173, 201, 125, 235, 9, 120, 38, 171, 128, 24, 47 | 9, 28, 104, 212, 184, 131, 48, 31, 6, 3, 85, 29, 35, 48 | 4, 24, 48, 22, 128, 20, 105, 14, 250, 71, 62, 109, 64, 49 | 249, 41, 127, 247, 111, 102, 134, 184, 122, 52, 187, 37, 235, 50 | 48, 29, 6, 3, 85, 29, 37, 4, 22, 48, 20, 6, 8, 51 | 43, 6, 1, 5, 5, 7, 3, 1, 6, 8, 43, 6, 1, 52 | 5, 5, 7, 3, 2, 48, 26, 6, 3, 85, 29, 17, 4, 53 | 19, 48, 17, 130, 9, 108, 111, 99, 97, 108, 104, 111, 115, 54 | 116, 135, 4, 127, 0, 0, 1, 48, 10, 6, 8, 42, 134, 55 | 72, 206, 61, 4, 3, 2, 3, 72, 0, 48, 69, 2, 33, 56 | 0, 208, 120, 15, 168, 124, 171, 166, 120, 29, 169, 87, 205, 57 | 79, 216, 4, 216, 179, 144, 54, 148, 224, 1, 220, 32, 73, 58 | 106, 222, 213, 83, 140, 8, 18, 2, 32, 36, 155, 240, 55, 59 | 228, 218, 66, 76, 109, 211, 195, 212, 166, 63, 71, 212, 173, 60 | 153, 92, 174, 71, 167, 12, 131, 36, 196, 161, 252, 220, 119, 61 | 243, 169}; 62 | -------------------------------------------------------------------------------- /firmware/aesni.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file aesni.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Header for AES-NI Hardware Crypto Instructions. 6 | */ 7 | /* 8 | * Copyright (c) 2014-2015 INSIDE Secure Corporation 9 | * Copyright (c) PeerSec Networks, 2002-2011 10 | * All Rights Reserved 11 | * 12 | * The latest version of this code is available at http://www.matrixssl.org 13 | * 14 | * This software is open source; you can redistribute it and/or modify 15 | * it under the terms of the GNU General Public License as published by 16 | * the Free Software Foundation; either version 2 of the License, or 17 | * (at your option) any later version. 18 | * 19 | * This General Public License does NOT permit incorporating this software 20 | * into proprietary programs. If you are unable to comply with the GPL, a 21 | * commercial license for this software may be purchased from INSIDE at 22 | * http://www.insidesecure.com/eng/Company/Locations 23 | * 24 | * This program is distributed in WITHOUT ANY WARRANTY; without even the 25 | * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 26 | * See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License 29 | * along with this program; if not, write to the Free Software 30 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 31 | * http://www.gnu.org/copyleft/gpl.html 32 | */ 33 | 34 | /******************************************************************************/ 35 | 36 | #include "cryptoApi.h" 37 | 38 | #ifndef _h_PS_AESNI_CRYPTO 39 | #define _h_PS_AESNI_CRYPTO 40 | 41 | #ifdef USE_AESNI_CRYPTO 42 | /* 43 | Intel Native Instructions for AES 44 | http://en.wikipedia.org/wiki/AES_instruction_set 45 | */ 46 | /******************************************************************************/ 47 | 48 | #ifdef USE_AES_CBC_EXTERNAL 49 | 50 | #include 51 | #include 52 | 53 | /* 54 | Our usage in SSL is that any given key is used only for either encryption 55 | or decryption, not both. If the same key is to be used for both, two 56 | key structures must be initialized. 57 | The first use of the key is what marks the key's usage (for example if 58 | psAesEncryptBlock() is called on the key first, it can only be used 59 | in future calls to encrypt. 60 | */ 61 | typedef enum { 62 | AES_UNDEFINED = 0, 63 | AES_ENCRYPT, 64 | AES_DECRYPT 65 | } keyType_e; 66 | 67 | typedef struct { 68 | __m128i skey[15]; /* Key schedule (encrypt or decrypt) */ 69 | int32 rounds; 70 | keyType_e type; /* Encrypt or Decrypt */ 71 | } psAesKey_t; 72 | 73 | typedef struct { 74 | int32 blocklen; 75 | unsigned char IV[16]; 76 | int32 keylen; 77 | psAesKey_t key; 78 | #ifdef USE_AES_GCM_EXTERNAL 79 | __m128i h_m128i; 80 | __m128i y_m128i; 81 | __m128i icb_m128i; 82 | int cipher_started; 83 | unsigned int a_len; 84 | unsigned int c_len; 85 | #endif 86 | } psAesCipher_t; 87 | 88 | #endif /* USE_AES_CBC_EXTERNAL */ 89 | 90 | /******************************************************************************/ 91 | 92 | #endif /* USE_AESNI_CRYPTO */ 93 | #endif /* _h_PS_AESNI_CRYPTO */ 94 | /******************************************************************************/ 95 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/384_EC_CA.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 384_EC_CA.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | unsigned char EC384CA[] = { 8 | 48, 130, 2, 188, 48, 130, 2, 66, 160, 3, 2, 1, 2, 9 | 2, 2, 35, 40, 48, 10, 6, 8, 42, 134, 72, 206, 61, 10 | 4, 3, 3, 48, 129, 152, 49, 11, 48, 9, 6, 3, 85, 11 | 4, 6, 19, 2, 85, 83, 49, 11, 48, 9, 6, 3, 85, 12 | 4, 8, 12, 2, 87, 65, 49, 16, 48, 14, 6, 3, 85, 13 | 4, 7, 12, 7, 83, 101, 97, 116, 116, 108, 101, 49, 34, 14 | 48, 32, 6, 3, 85, 4, 10, 12, 25, 73, 110, 115, 105, 15 | 100, 101, 32, 83, 101, 99, 117, 114, 101, 32, 67, 111, 114, 16 | 112, 111, 114, 97, 116, 105, 111, 110, 49, 13, 48, 11, 6, 17 | 3, 85, 4, 11, 12, 4, 84, 101, 115, 116, 49, 55, 48, 18 | 53, 6, 3, 85, 4, 3, 12, 46, 77, 97, 116, 114, 105, 19 | 120, 83, 83, 76, 32, 83, 97, 109, 112, 108, 101, 32, 67, 20 | 65, 32, 40, 69, 108, 108, 105, 112, 116, 105, 99, 32, 99, 21 | 117, 114, 118, 101, 32, 115, 101, 99, 112, 51, 56, 52, 114, 22 | 49, 41, 48, 30, 23, 13, 49, 52, 48, 51, 49, 51, 50, 23 | 51, 50, 49, 50, 55, 90, 23, 13, 49, 55, 48, 51, 49, 24 | 50, 50, 51, 50, 49, 50, 55, 90, 48, 129, 152, 49, 11, 25 | 48, 9, 6, 3, 85, 4, 6, 19, 2, 85, 83, 49, 11, 26 | 48, 9, 6, 3, 85, 4, 8, 12, 2, 87, 65, 49, 16, 27 | 48, 14, 6, 3, 85, 4, 7, 12, 7, 83, 101, 97, 116, 28 | 116, 108, 101, 49, 34, 48, 32, 6, 3, 85, 4, 10, 12, 29 | 25, 73, 110, 115, 105, 100, 101, 32, 83, 101, 99, 117, 114, 30 | 101, 32, 67, 111, 114, 112, 111, 114, 97, 116, 105, 111, 110, 31 | 49, 13, 48, 11, 6, 3, 85, 4, 11, 12, 4, 84, 101, 32 | 115, 116, 49, 55, 48, 53, 6, 3, 85, 4, 3, 12, 46, 33 | 77, 97, 116, 114, 105, 120, 83, 83, 76, 32, 83, 97, 109, 34 | 112, 108, 101, 32, 67, 65, 32, 40, 69, 108, 108, 105, 112, 35 | 116, 105, 99, 32, 99, 117, 114, 118, 101, 32, 115, 101, 99, 36 | 112, 51, 56, 52, 114, 49, 41, 48, 118, 48, 16, 6, 7, 37 | 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 4, 0, 38 | 34, 3, 98, 0, 4, 158, 4, 52, 153, 239, 138, 37, 29, 39 | 132, 242, 242, 64, 196, 213, 209, 83, 125, 84, 236, 32, 54, 40 | 223, 26, 226, 228, 112, 248, 211, 57, 160, 57, 24, 61, 177, 41 | 250, 45, 236, 162, 193, 70, 223, 109, 148, 143, 222, 220, 210, 42 | 61, 25, 47, 22, 236, 82, 88, 58, 128, 193, 195, 191, 133, 43 | 39, 22, 66, 7, 224, 2, 241, 215, 149, 201, 16, 236, 176, 44 | 160, 152, 138, 66, 181, 81, 232, 33, 251, 41, 175, 249, 69, 45 | 168, 178, 118, 16, 70, 239, 228, 236, 223, 193, 163, 93, 48, 46 | 91, 48, 11, 6, 3, 85, 29, 15, 4, 4, 3, 2, 2, 47 | 4, 48, 29, 6, 3, 85, 29, 14, 4, 22, 4, 20, 68, 48 | 237, 252, 139, 23, 66, 110, 97, 246, 53, 147, 61, 63, 129, 49 | 151, 111, 103, 104, 90, 27, 48, 31, 6, 3, 85, 29, 35, 50 | 4, 24, 48, 22, 128, 20, 68, 237, 252, 139, 23, 66, 110, 51 | 97, 246, 53, 147, 61, 63, 129, 151, 111, 103, 104, 90, 27, 52 | 48, 12, 6, 3, 85, 29, 19, 4, 5, 48, 3, 1, 1, 53 | 255, 48, 10, 6, 8, 42, 134, 72, 206, 61, 4, 3, 3, 54 | 3, 104, 0, 48, 101, 2, 49, 0, 212, 100, 174, 28, 219, 55 | 20, 248, 145, 200, 23, 212, 239, 208, 139, 54, 110, 246, 71, 56 | 101, 229, 182, 232, 237, 228, 181, 109, 68, 184, 112, 96, 161, 57 | 187, 187, 104, 25, 41, 130, 164, 250, 213, 231, 159, 15, 180, 58 | 249, 164, 219, 149, 2, 48, 62, 182, 48, 6, 109, 173, 240, 59 | 37, 8, 182, 48, 250, 206, 132, 51, 43, 214, 194, 174, 108, 60 | 133, 204, 66, 204, 2, 25, 12, 24, 123, 85, 123, 23, 60, 61 | 231, 206, 20, 79, 116, 128, 41, 205, 152, 135, 77, 70, 88, 62 | 164, 222}; 63 | -------------------------------------------------------------------------------- /firmware/4096_RSA_KEY.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIIJKQIBAAKCAgEAyPLbOa30Q5eibYUsFxQmJemPuHE8WFstGA+tdqf+j0ZMZ8Me 3 | cOCC03dnnW12osp5cNKuviGmp0LqMMuWFaYhYmal3f8jeMngn3O4CB4OSYWN31Uk 4 | QsFLyd4DoM/HryX9aujq/NMJhdtrnkqNcZHphKd1bd0uYIyvMPrdHg0EXHvCNQ3u 5 | W+VigbmY8c4/klkf0OQXSPv+oLMsfAHAGVahIAgGfXDyL7KtRMLkW4QrmAaHr1Qr 6 | t+T+Uy/y17Q0TUbfRC5yBNc0Pt6/VXR/PtTDPR98JPLtTzgd9LJHXuksI/PduxbZ 7 | HLpTGhzxAvGO7Hlb+VUhZhJvnvCeP9y+1jE1wvJ4tgqbIqOmndP1TwVJAMTCwodD 8 | BvxDPNr2+r33mfvVZG9p2U25xRoH1t9At0prFsgsI1/i7nxm3Tt8gECaudiZ995x 9 | Pfc1hg9r+QHpU/kXzx9u+Kz6L18zEzP68c99a7nWo2gWhGCJbyzI5/LgyX+EzulF 10 | GJaamawODmHqM789sYuSnt/GdWZWepqpm9h3ZK32QcQyO47pkFX+4wssQzeqink4 11 | tImbLaznbj8jszCihCGXjS0CFKz6Z0tsvDP1iYiKV92WnGpaBmIzseCqcMgFgYJi 12 | PaBM33Gofn2zxnDxYKzWRtiFt2tft6GGtvXK9qKN6Xg3Ex3g0xOfDiAsJocCAwEA 13 | AQKCAgBHj80ohl2FsLuEezePZHqNZ9bp3VGbOaUee37P0dXi2isdjKwLkLimbFB3 14 | DOOB589FsZHPXhaGXFsgU3A4d3hOHbYWD+Vm/6XBwykXovR9lFVI4n5OU54U3r62 15 | ByjapBHSf+4naVRr2g9CSNSETG0385brMChy88b0D3KtX/9cnCo2UKbBDTh+cEUa 16 | X9Pd32VoM8JjGHK+cfB2nPz3SRWKXbFJ/O4StHPmF+3Q9Ym80x6A/t2u2JsFrv6x 17 | eJhjqMib9FpghO8zMIo8+YbTLlv1KYBBfE2st5Rbbx3hm/I/P3qIRQO+qlAr7YCb 18 | BsFaT4HEkl+ZhRlBJfmFTqybhNza1OuuxeXcAAkVdYVL8OMxhz3ljvEAIMebpPJw 19 | Tm6A4rw1dq7KyLFH5CaQV60VpFRxM7FxmG2WxI3HNKkyau/YCoYy4okK0dgKaoQU 20 | d946udParhf4DGOlQVZYqMSE0bL44x2/kfe0RtbHU7LriShkaID0cvjXUKsncFxN 21 | IEOMUqBV7//7RoxiFJfQVXYs6Oilll18DQHPujIujBZAZkYNUDgqZRTgNL5d677W 22 | /oujahGL2r96VUo0v5s9I9Numj9LYFiEMSvoku0UVxQIriEPCtKcdS8t0BS1FPqh 23 | He/fKvhnyLifHYnp5ahETzrE1dv6sotoZrzfs2hbLJL4ScMt+QKCAQEAz9ybMDAD 24 | GnTOe9KaBNqRJ+h0fBxP65iecVaZDd0JStvJzPxiMVcue6KbWPSinVKptU2mKyS+ 25 | Qvan5/LZyN5qhDWKtPEekmKgVenNZBcR4yjcFjdswPXzL3bWoWNJP3T4eDgNO3/3 26 | 151+ZSWKMOcH7d9VIZ7wBLTy911MZx+ib/3oJPCsfG0rO5Opf4imqr5wod0vsjcT 27 | habTHXEtnXcPgpqeV0mulM6LJ89k6CvAIA8FIjQeGZRq4b6mNslEpUoshS/83XCh 28 | v89wLHi04XaJEuBN2fAdd6zFoVteWArTZGHONix+im3Z55AKRzDK8JB3abgAkKXc 29 | UTCUyazcx5zHWwKCAQEA93xlxkMLYGD9/ODNN/yY+2u4T4vbeQxS62LVRGdPZxEC 30 | WzcvzDEXREKWdshdRhvXrXpMFtyrHelk08TkRnYFtAmLs7rKaLrwUHokM8G18reg 31 | 2P29V+AyFZyww3TQsegm2NEiVg7XOebtDmJMBTcFfRkQp/I2djTup8AK+HgvjdRo 32 | RNEZOQCLppxIy0rgU3iKDlLksrJqGdiyKVTDtw/dBKVz7FOMgNeeRhS6DaKq8sZC 33 | p7u+FiG54EsoOuyaH5b/m2c0eIHsEY2GAd2yMveboSn999d6HySGYs2icyeHHj9F 34 | we/5LhulDWmfx3DqVdcJfQ9lzeW2bdR3feGvr+YxRQKCAQAKHH0gFvXPr6brtw7u 35 | 9YLiIhiogOgSWdY7RS8k0X/GOHLUmeJc7BTCxuIvrZbLeF3xB9nxd1QaBc2dJt8Z 36 | OliMHd6ldqU6Eboi88CeAdFI74/lNMUBjfVKdclzCFVj1NjRYEikgFEaF/syCGV0 37 | g4iLNbX6cLTURckb51n0GkHYmM1WHq8FTnov57rzDT6uR51LAmtzi+JTOg5C/GJv 38 | qn8Cp2rUbC0l5/Y09Y2/DYHHDXP+efKM4/9fA9sqBxhjwfvwbqkqTHRR1FFsmGKU 39 | JSP92xNuapPEYo8qjjtEpSIrW+agFAID0dwru4IEfIcitKRabCz63FafTHGwbcw/ 40 | mYzJAoIBAQCw5GZuVp98DPed1yR33wGNu4nquYFuvQNLocHj+Z/EgGDZx9FPNst1 41 | i862KjKZGO+I3IAkWyen4pmhz/qF7nfXHnePSHTCdNOuAg98OvoM+Xlrf7nlZKcH 42 | 0Y56tjUw5ElX8euD7Wmixk8sV9AUbiZrKw4/rJ2G0gC/QEHXJTiAPJEmlvpbRuuK 43 | c+yH+gXrQ54R7OfwXhv+S2fUqPSXFSyZ1JTOF023DebgGpJ9ioZ7roAYGdYdRY/x 44 | JGcl7tWevLQIZLUZaWvNhAWDse1cBqVjhXs0ufxc5CN13Zs+icNHOFxo6ViGv1Wz 45 | B4sf57JnFqN+kxHmIEnLqPCbtkN4C6WtAoIBAQCVIC2togL/nQHVUIH3Pe/lP538 46 | MPEJG8dI3zngSOrpfK0fPmJDRJjrdRz7JHqTgClpUqFqoev5e/P52zBy+nFPKuSD 47 | +0FraXY6M+wkC9CcxMl0t4/KvAJ1OHCU+kSiL9fBLmNjdslyXIjPMk6SJ99tj23g 48 | 1lbt2RsiQQdgL3eaIUOrE354f2R7q+CsLNAsB+mxfbPvf04xgrYKmySQglNzpx+Z 49 | FLVvoVBxBU9DzaLjTOkcKtJcvvctUc2wddxNmzzSZOcyAjOy/tdYooeqpoimkmlB 50 | wh9K9SR8LRT1Pn0OhSEyeP6CEjS5r+4Xm2LHVd1GEqRdGUKFZKSfNpS7ma4/ 51 | -----END RSA PRIVATE KEY----- 52 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/384_EC.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 384_EC.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | unsigned char EC384[] = { 8 | 48, 130, 2, 234, 48, 130, 2, 113, 160, 3, 2, 1, 2, 9 | 2, 2, 35, 140, 48, 10, 6, 8, 42, 134, 72, 206, 61, 10 | 4, 3, 3, 48, 129, 152, 49, 11, 48, 9, 6, 3, 85, 11 | 4, 6, 19, 2, 85, 83, 49, 11, 48, 9, 6, 3, 85, 12 | 4, 8, 12, 2, 87, 65, 49, 16, 48, 14, 6, 3, 85, 13 | 4, 7, 12, 7, 83, 101, 97, 116, 116, 108, 101, 49, 34, 14 | 48, 32, 6, 3, 85, 4, 10, 12, 25, 73, 110, 115, 105, 15 | 100, 101, 32, 83, 101, 99, 117, 114, 101, 32, 67, 111, 114, 16 | 112, 111, 114, 97, 116, 105, 111, 110, 49, 13, 48, 11, 6, 17 | 3, 85, 4, 11, 12, 4, 84, 101, 115, 116, 49, 55, 48, 18 | 53, 6, 3, 85, 4, 3, 12, 46, 77, 97, 116, 114, 105, 19 | 120, 83, 83, 76, 32, 83, 97, 109, 112, 108, 101, 32, 67, 20 | 65, 32, 40, 69, 108, 108, 105, 112, 116, 105, 99, 32, 99, 21 | 117, 114, 118, 101, 32, 115, 101, 99, 112, 51, 56, 52, 114, 22 | 49, 41, 48, 30, 23, 13, 49, 52, 48, 51, 49, 51, 50, 23 | 51, 50, 49, 50, 55, 90, 23, 13, 49, 55, 48, 51, 49, 24 | 50, 50, 51, 50, 49, 50, 55, 90, 48, 129, 154, 49, 11, 25 | 48, 9, 6, 3, 85, 4, 6, 19, 2, 85, 83, 49, 11, 26 | 48, 9, 6, 3, 85, 4, 8, 12, 2, 87, 65, 49, 16, 27 | 48, 14, 6, 3, 85, 4, 7, 12, 7, 83, 101, 97, 116, 28 | 116, 108, 101, 49, 34, 48, 32, 6, 3, 85, 4, 10, 12, 29 | 25, 73, 110, 115, 105, 100, 101, 32, 83, 101, 99, 117, 114, 30 | 101, 32, 67, 111, 114, 112, 111, 114, 97, 116, 105, 111, 110, 31 | 49, 13, 48, 11, 6, 3, 85, 4, 11, 12, 4, 84, 101, 32 | 115, 116, 49, 57, 48, 55, 6, 3, 85, 4, 3, 12, 48, 33 | 77, 97, 116, 114, 105, 120, 83, 83, 76, 32, 83, 97, 109, 34 | 112, 108, 101, 32, 67, 101, 114, 116, 32, 40, 69, 108, 108, 35 | 105, 112, 116, 105, 99, 32, 99, 117, 114, 118, 101, 32, 115, 36 | 101, 99, 112, 51, 56, 52, 114, 49, 41, 48, 118, 48, 16, 37 | 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 38 | 4, 0, 34, 3, 98, 0, 4, 75, 1, 115, 192, 146, 181, 39 | 80, 170, 127, 0, 33, 222, 110, 112, 27, 151, 112, 113, 252, 40 | 148, 147, 123, 95, 9, 120, 87, 107, 67, 85, 67, 25, 33, 41 | 16, 146, 121, 87, 203, 68, 41, 80, 223, 201, 114, 4, 218, 42 | 192, 67, 55, 229, 205, 8, 108, 152, 237, 251, 149, 113, 248, 43 | 165, 136, 183, 18, 39, 81, 184, 16, 123, 20, 253, 41, 35, 44 | 232, 69, 16, 63, 129, 132, 248, 246, 167, 200, 42, 107, 168, 45 | 47, 139, 158, 41, 110, 252, 21, 241, 35, 229, 35, 75, 163, 46 | 129, 137, 48, 129, 134, 48, 9, 6, 3, 85, 29, 19, 4, 47 | 2, 48, 0, 48, 29, 6, 3, 85, 29, 14, 4, 22, 4, 48 | 20, 163, 55, 15, 229, 144, 130, 39, 163, 158, 164, 153, 9, 49 | 139, 232, 110, 90, 17, 148, 173, 177, 48, 31, 6, 3, 85, 50 | 29, 35, 4, 24, 48, 22, 128, 20, 68, 237, 252, 139, 23, 51 | 66, 110, 97, 246, 53, 147, 61, 63, 129, 151, 111, 103, 104, 52 | 90, 27, 48, 29, 6, 3, 85, 29, 37, 4, 22, 48, 20, 53 | 6, 8, 43, 6, 1, 5, 5, 7, 3, 1, 6, 8, 43, 54 | 6, 1, 5, 5, 7, 3, 2, 48, 26, 6, 3, 85, 29, 55 | 17, 4, 19, 48, 17, 130, 9, 108, 111, 99, 97, 108, 104, 56 | 111, 115, 116, 135, 4, 127, 0, 0, 1, 48, 10, 6, 8, 57 | 42, 134, 72, 206, 61, 4, 3, 3, 3, 103, 0, 48, 100, 58 | 2, 48, 110, 178, 58, 61, 238, 32, 243, 103, 255, 83, 184, 59 | 229, 30, 119, 123, 200, 2, 200, 5, 131, 52, 96, 214, 112, 60 | 4, 49, 26, 252, 50, 225, 236, 140, 26, 161, 221, 151, 9, 61 | 204, 231, 93, 66, 34, 119, 169, 157, 179, 112, 161, 2, 48, 62 | 7, 54, 29, 44, 183, 25, 28, 81, 202, 64, 140, 165, 236, 63 | 69, 253, 133, 63, 20, 230, 184, 235, 205, 211, 253, 95, 16, 64 | 128, 98, 166, 168, 174, 246, 195, 233, 12, 202, 218, 60, 136, 65 | 195, 130, 177, 127, 88, 91, 122, 37, 25}; 66 | -------------------------------------------------------------------------------- /firmware/1024_RSA.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 1024_RSA.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | static const unsigned char RSA1024[] = { 8 | 48, 130, 2, 255, 48, 130, 2, 104, 160, 3, 2, 1, 2, 9 | 2, 5, 49, 50, 51, 52, 53, 48, 13, 6, 9, 42, 134, 10 | 72, 134, 247, 13, 1, 1, 11, 5, 0, 48, 129, 150, 49, 11 | 53, 48, 51, 6, 3, 85, 4, 3, 12, 44, 83, 97, 109, 12 | 112, 108, 101, 32, 77, 97, 116, 114, 105, 120, 32, 82, 83, 13 | 65, 45, 49, 48, 50, 52, 32, 67, 101, 114, 116, 105, 102, 14 | 105, 99, 97, 116, 101, 32, 65, 117, 116, 104, 111, 114, 105, 15 | 116, 121, 49, 11, 48, 9, 6, 3, 85, 4, 6, 12, 2, 16 | 85, 83, 49, 11, 48, 9, 6, 3, 85, 4, 8, 12, 2, 17 | 87, 65, 49, 16, 48, 14, 6, 3, 85, 4, 7, 12, 7, 18 | 83, 101, 97, 116, 116, 108, 101, 49, 34, 48, 32, 6, 3, 19 | 85, 4, 10, 12, 25, 73, 78, 83, 73, 68, 69, 32, 83, 20 | 101, 99, 117, 114, 101, 32, 67, 111, 114, 112, 111, 114, 97, 21 | 116, 105, 111, 110, 49, 13, 48, 11, 6, 3, 85, 4, 11, 22 | 12, 4, 84, 101, 115, 116, 48, 30, 23, 13, 49, 52, 48, 23 | 51, 50, 52, 49, 54, 51, 54, 52, 51, 90, 23, 13, 49, 24 | 55, 48, 51, 50, 51, 49, 54, 51, 54, 52, 51, 90, 48, 25 | 129, 140, 49, 43, 48, 41, 6, 3, 85, 4, 3, 12, 34, 26 | 83, 97, 109, 112, 108, 101, 32, 77, 97, 116, 114, 105, 120, 27 | 32, 82, 83, 65, 45, 49, 48, 50, 52, 32, 67, 101, 114, 28 | 116, 105, 102, 105, 99, 97, 116, 101, 49, 11, 48, 9, 6, 29 | 3, 85, 4, 6, 12, 2, 85, 83, 49, 11, 48, 9, 6, 30 | 3, 85, 4, 8, 12, 2, 87, 65, 49, 16, 48, 14, 6, 31 | 3, 85, 4, 7, 12, 7, 83, 101, 97, 116, 116, 108, 101, 32 | 49, 34, 48, 32, 6, 3, 85, 4, 10, 12, 25, 73, 78, 33 | 83, 73, 68, 69, 32, 83, 101, 99, 117, 114, 101, 32, 67, 34 | 111, 114, 112, 111, 114, 97, 116, 105, 111, 110, 49, 13, 48, 35 | 11, 6, 3, 85, 4, 11, 12, 4, 84, 101, 115, 116, 48, 36 | 129, 159, 48, 13, 6, 9, 42, 134, 72, 134, 247, 13, 1, 37 | 1, 1, 5, 0, 3, 129, 141, 0, 48, 129, 137, 2, 129, 38 | 129, 0, 171, 74, 251, 133, 203, 23, 206, 121, 129, 83, 106, 39 | 128, 62, 40, 8, 135, 8, 10, 136, 83, 189, 35, 151, 34, 40 | 17, 142, 82, 217, 252, 181, 153, 110, 93, 92, 164, 77, 244, 41 | 112, 162, 136, 97, 197, 170, 99, 230, 154, 247, 244, 140, 4, 42 | 166, 187, 118, 131, 170, 65, 194, 38, 148, 205, 157, 85, 0, 43 | 127, 225, 255, 251, 189, 133, 119, 180, 105, 24, 126, 169, 72, 44 | 163, 33, 39, 79, 122, 157, 50, 195, 182, 155, 57, 104, 184, 45 | 118, 16, 186, 132, 134, 209, 236, 1, 204, 202, 31, 193, 74, 46 | 90, 185, 32, 153, 141, 57, 243, 174, 93, 17, 124, 35, 39, 47 | 82, 149, 82, 92, 137, 0, 138, 137, 234, 208, 194, 69, 127, 48 | 2, 3, 1, 0, 1, 163, 97, 48, 95, 48, 31, 6, 3, 49 | 85, 29, 35, 4, 24, 48, 22, 128, 20, 247, 36, 136, 131, 50 | 147, 137, 77, 217, 3, 85, 193, 56, 39, 23, 64, 229, 236, 51 | 225, 212, 176, 48, 26, 6, 3, 85, 29, 17, 4, 19, 48, 52 | 17, 130, 9, 108, 111, 99, 97, 108, 104, 111, 115, 116, 135, 53 | 4, 127, 0, 0, 1, 48, 32, 6, 3, 85, 29, 37, 1, 54 | 1, 255, 4, 22, 48, 20, 6, 8, 43, 6, 1, 5, 5, 55 | 7, 3, 1, 6, 8, 43, 6, 1, 5, 5, 7, 3, 2, 56 | 48, 13, 6, 9, 42, 134, 72, 134, 247, 13, 1, 1, 11, 57 | 5, 0, 3, 129, 129, 0, 27, 242, 239, 83, 0, 98, 175, 58 | 14, 102, 3, 57, 93, 130, 103, 97, 81, 59, 81, 193, 229, 59 | 138, 142, 145, 142, 16, 166, 84, 91, 38, 222, 2, 25, 214, 60 | 176, 5, 228, 167, 122, 82, 176, 116, 161, 45, 87, 78, 22, 61 | 185, 255, 158, 42, 206, 84, 191, 197, 250, 159, 157, 143, 76, 62 | 175, 27, 54, 163, 2, 88, 216, 148, 232, 206, 188, 75, 131, 63 | 230, 119, 52, 136, 70, 233, 233, 138, 146, 167, 220, 140, 47, 64 | 103, 11, 213, 174, 147, 37, 83, 99, 7, 33, 240, 74, 35, 65 | 150, 133, 20, 147, 3, 166, 156, 96, 232, 88, 39, 97, 187, 66 | 185, 107, 45, 144, 211, 153, 25, 9, 219, 180, 205, 216, 68, 67 | 137, 34, 222, 103}; 68 | -------------------------------------------------------------------------------- /firmware/sampleCerts/ECDH_RSA/1024_ECDH-RSA_CA.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 1024_ECDH-RSA_CA.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | unsigned char ECDHRSA1024CA[] = { 8 | 48, 130, 2, 246, 48, 130, 2, 95, 160, 3, 2, 1, 2, 9 | 2, 5, 49, 48, 48, 48, 48, 48, 13, 6, 9, 42, 134, 10 | 72, 134, 247, 13, 1, 1, 11, 5, 0, 48, 129, 170, 49, 11 | 73, 48, 71, 6, 3, 85, 4, 3, 12, 64, 83, 97, 109, 12 | 112, 108, 101, 32, 77, 97, 116, 114, 105, 120, 32, 82, 83, 13 | 65, 45, 49, 48, 50, 52, 32, 67, 101, 114, 116, 105, 102, 14 | 105, 99, 97, 116, 101, 32, 65, 117, 116, 104, 111, 114, 105, 15 | 116, 121, 32, 102, 111, 114, 32, 69, 67, 68, 72, 95, 82, 16 | 83, 65, 32, 83, 117, 105, 116, 101, 115, 49, 11, 48, 9, 17 | 6, 3, 85, 4, 6, 12, 2, 85, 83, 49, 11, 48, 9, 18 | 6, 3, 85, 4, 8, 12, 2, 87, 65, 49, 16, 48, 14, 19 | 6, 3, 85, 4, 7, 12, 7, 83, 101, 97, 116, 116, 108, 20 | 101, 49, 34, 48, 32, 6, 3, 85, 4, 10, 12, 25, 73, 21 | 110, 115, 105, 100, 101, 32, 83, 101, 99, 117, 114, 101, 32, 22 | 67, 111, 114, 112, 111, 114, 97, 116, 105, 111, 110, 49, 13, 23 | 48, 11, 6, 3, 85, 4, 11, 12, 4, 84, 101, 115, 116, 24 | 48, 30, 23, 13, 49, 52, 48, 51, 49, 51, 50, 51, 51, 25 | 54, 53, 54, 90, 23, 13, 49, 55, 48, 51, 49, 50, 50, 26 | 51, 51, 54, 53, 54, 90, 48, 129, 170, 49, 73, 48, 71, 27 | 6, 3, 85, 4, 3, 12, 64, 83, 97, 109, 112, 108, 101, 28 | 32, 77, 97, 116, 114, 105, 120, 32, 82, 83, 65, 45, 49, 29 | 48, 50, 52, 32, 67, 101, 114, 116, 105, 102, 105, 99, 97, 30 | 116, 101, 32, 65, 117, 116, 104, 111, 114, 105, 116, 121, 32, 31 | 102, 111, 114, 32, 69, 67, 68, 72, 95, 82, 83, 65, 32, 32 | 83, 117, 105, 116, 101, 115, 49, 11, 48, 9, 6, 3, 85, 33 | 4, 6, 12, 2, 85, 83, 49, 11, 48, 9, 6, 3, 85, 34 | 4, 8, 12, 2, 87, 65, 49, 16, 48, 14, 6, 3, 85, 35 | 4, 7, 12, 7, 83, 101, 97, 116, 116, 108, 101, 49, 34, 36 | 48, 32, 6, 3, 85, 4, 10, 12, 25, 73, 110, 115, 105, 37 | 100, 101, 32, 83, 101, 99, 117, 114, 101, 32, 67, 111, 114, 38 | 112, 111, 114, 97, 116, 105, 111, 110, 49, 13, 48, 11, 6, 39 | 3, 85, 4, 11, 12, 4, 84, 101, 115, 116, 48, 129, 159, 40 | 48, 13, 6, 9, 42, 134, 72, 134, 247, 13, 1, 1, 1, 41 | 5, 0, 3, 129, 141, 0, 48, 129, 137, 2, 129, 129, 0, 42 | 249, 12, 249, 57, 4, 33, 129, 113, 73, 137, 92, 145, 48, 43 | 230, 252, 126, 227, 81, 196, 219, 148, 230, 67, 133, 231, 42, 44 | 102, 25, 240, 192, 55, 183, 136, 13, 143, 151, 108, 28, 86, 45 | 77, 110, 206, 25, 142, 89, 70, 170, 192, 197, 41, 10, 185, 46 | 161, 19, 44, 131, 88, 108, 134, 178, 142, 94, 44, 69, 245, 47 | 181, 4, 122, 120, 206, 110, 30, 102, 245, 103, 159, 132, 160, 48 | 197, 180, 211, 197, 14, 195, 38, 39, 210, 222, 23, 100, 46, 49 | 66, 22, 150, 192, 138, 90, 169, 219, 16, 248, 170, 222, 169, 50 | 110, 26, 91, 104, 84, 216, 245, 164, 67, 252, 208, 65, 155, 51 | 212, 253, 147, 76, 87, 55, 79, 35, 160, 34, 109, 2, 3, 52 | 1, 0, 1, 163, 38, 48, 36, 48, 18, 6, 3, 85, 29, 53 | 19, 1, 1, 255, 4, 8, 48, 6, 1, 1, 255, 2, 1, 54 | 0, 48, 14, 6, 3, 85, 29, 15, 1, 1, 255, 4, 4, 55 | 3, 2, 0, 4, 48, 13, 6, 9, 42, 134, 72, 134, 247, 56 | 13, 1, 1, 11, 5, 0, 3, 129, 129, 0, 214, 26, 73, 57 | 141, 164, 26, 253, 194, 208, 235, 145, 156, 237, 3, 48, 79, 58 | 188, 232, 59, 63, 158, 247, 78, 114, 147, 125, 230, 50, 201, 59 | 223, 117, 247, 72, 16, 89, 150, 11, 141, 199, 146, 9, 176, 60 | 148, 243, 155, 78, 244, 11, 192, 80, 98, 75, 191, 131, 163, 61 | 208, 37, 109, 206, 136, 37, 165, 62, 122, 24, 74, 210, 200, 62 | 119, 70, 113, 220, 51, 62, 203, 53, 81, 184, 228, 72, 22, 63 | 183, 67, 81, 174, 92, 56, 23, 67, 4, 13, 109, 72, 133, 64 | 99, 207, 36, 252, 3, 82, 6, 194, 140, 133, 147, 123, 56, 65 | 133, 128, 215, 148, 114, 56, 121, 135, 224, 16, 244, 68, 205, 66 | 38, 208, 186, 102, 138, 189, 44, 249}; 67 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/521_EC_CA.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 521_EC_CA.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | unsigned char EC521CA[] = { 8 | 48, 130, 3, 6, 48, 130, 2, 104, 160, 3, 2, 1, 2, 9 | 2, 2, 35, 240, 48, 10, 6, 8, 42, 134, 72, 206, 61, 10 | 4, 3, 3, 48, 129, 152, 49, 11, 48, 9, 6, 3, 85, 11 | 4, 6, 19, 2, 85, 83, 49, 11, 48, 9, 6, 3, 85, 12 | 4, 8, 12, 2, 87, 65, 49, 16, 48, 14, 6, 3, 85, 13 | 4, 7, 12, 7, 83, 101, 97, 116, 116, 108, 101, 49, 34, 14 | 48, 32, 6, 3, 85, 4, 10, 12, 25, 73, 110, 115, 105, 15 | 100, 101, 32, 83, 101, 99, 117, 114, 101, 32, 67, 111, 114, 16 | 112, 111, 114, 97, 116, 105, 111, 110, 49, 13, 48, 11, 6, 17 | 3, 85, 4, 11, 12, 4, 84, 101, 115, 116, 49, 55, 48, 18 | 53, 6, 3, 85, 4, 3, 12, 46, 77, 97, 116, 114, 105, 19 | 120, 83, 83, 76, 32, 83, 97, 109, 112, 108, 101, 32, 67, 20 | 65, 32, 40, 69, 108, 108, 105, 112, 116, 105, 99, 32, 99, 21 | 117, 114, 118, 101, 32, 115, 101, 99, 112, 53, 50, 49, 114, 22 | 49, 41, 48, 30, 23, 13, 49, 52, 48, 51, 49, 51, 50, 23 | 51, 50, 49, 51, 49, 90, 23, 13, 49, 55, 48, 51, 49, 24 | 50, 50, 51, 50, 49, 51, 49, 90, 48, 129, 152, 49, 11, 25 | 48, 9, 6, 3, 85, 4, 6, 19, 2, 85, 83, 49, 11, 26 | 48, 9, 6, 3, 85, 4, 8, 12, 2, 87, 65, 49, 16, 27 | 48, 14, 6, 3, 85, 4, 7, 12, 7, 83, 101, 97, 116, 28 | 116, 108, 101, 49, 34, 48, 32, 6, 3, 85, 4, 10, 12, 29 | 25, 73, 110, 115, 105, 100, 101, 32, 83, 101, 99, 117, 114, 30 | 101, 32, 67, 111, 114, 112, 111, 114, 97, 116, 105, 111, 110, 31 | 49, 13, 48, 11, 6, 3, 85, 4, 11, 12, 4, 84, 101, 32 | 115, 116, 49, 55, 48, 53, 6, 3, 85, 4, 3, 12, 46, 33 | 77, 97, 116, 114, 105, 120, 83, 83, 76, 32, 83, 97, 109, 34 | 112, 108, 101, 32, 67, 65, 32, 40, 69, 108, 108, 105, 112, 35 | 116, 105, 99, 32, 99, 117, 114, 118, 101, 32, 115, 101, 99, 36 | 112, 53, 50, 49, 114, 49, 41, 48, 129, 155, 48, 16, 6, 37 | 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 129, 4, 38 | 0, 35, 3, 129, 134, 0, 4, 1, 43, 67, 216, 141, 159, 39 | 213, 47, 157, 85, 11, 254, 114, 11, 50, 215, 142, 66, 196, 40 | 2, 151, 179, 205, 119, 21, 161, 234, 246, 100, 53, 114, 114, 41 | 103, 179, 95, 119, 38, 109, 111, 119, 43, 75, 161, 154, 219, 42 | 140, 118, 196, 220, 157, 96, 45, 59, 94, 7, 241, 165, 117, 43 | 17, 34, 122, 245, 239, 153, 119, 68, 0, 196, 45, 167, 19, 44 | 192, 199, 139, 213, 150, 146, 109, 174, 132, 149, 37, 31, 176, 45 | 104, 123, 137, 117, 191, 70, 182, 158, 162, 172, 112, 246, 236, 46 | 23, 110, 152, 46, 11, 172, 19, 120, 95, 84, 140, 0, 189, 47 | 58, 140, 92, 215, 164, 134, 181, 156, 4, 103, 117, 224, 220, 48 | 77, 138, 66, 70, 236, 228, 93, 241, 170, 163, 93, 48, 91, 49 | 48, 11, 6, 3, 85, 29, 15, 4, 4, 3, 2, 2, 4, 50 | 48, 29, 6, 3, 85, 29, 14, 4, 22, 4, 20, 25, 176, 51 | 190, 164, 157, 139, 60, 68, 229, 134, 181, 23, 161, 214, 13, 52 | 186, 66, 29, 184, 169, 48, 31, 6, 3, 85, 29, 35, 4, 53 | 24, 48, 22, 128, 20, 25, 176, 190, 164, 157, 139, 60, 68, 54 | 229, 134, 181, 23, 161, 214, 13, 186, 66, 29, 184, 169, 48, 55 | 12, 6, 3, 85, 29, 19, 4, 5, 48, 3, 1, 1, 255, 56 | 48, 10, 6, 8, 42, 134, 72, 206, 61, 4, 3, 3, 3, 57 | 129, 139, 0, 48, 129, 135, 2, 66, 1, 55, 152, 104, 160, 58 | 107, 179, 146, 211, 203, 107, 80, 174, 121, 193, 135, 67, 0, 59 | 237, 43, 51, 12, 110, 28, 237, 184, 137, 234, 57, 3, 79, 60 | 160, 128, 133, 113, 11, 40, 170, 80, 18, 193, 249, 150, 245, 61 | 58, 144, 158, 196, 76, 122, 100, 71, 232, 30, 158, 159, 228, 62 | 162, 19, 77, 68, 19, 58, 114, 247, 164, 2, 65, 51, 136, 63 | 239, 106, 211, 81, 35, 208, 100, 65, 42, 222, 117, 218, 70, 64 | 181, 172, 157, 112, 110, 108, 233, 81, 98, 102, 181, 135, 125, 65 | 49, 172, 167, 169, 17, 241, 23, 159, 193, 133, 59, 166, 134, 66 | 101, 233, 144, 214, 107, 60, 168, 158, 144, 67, 46, 56, 139, 67 | 69, 50, 176, 91, 205, 104, 119, 15, 195, 55, 126}; 68 | -------------------------------------------------------------------------------- /firmware/1024_RSA_CA.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 1024_RSA_CA.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | static const unsigned char RSA1024CA[] = { 8 | 48, 130, 3, 13, 48, 130, 2, 118, 160, 3, 2, 1, 2, 9 | 2, 4, 49, 50, 51, 52, 48, 13, 6, 9, 42, 134, 72, 10 | 134, 247, 13, 1, 1, 11, 5, 0, 48, 129, 150, 49, 53, 11 | 48, 51, 6, 3, 85, 4, 3, 12, 44, 83, 97, 109, 112, 12 | 108, 101, 32, 77, 97, 116, 114, 105, 120, 32, 82, 83, 65, 13 | 45, 49, 48, 50, 52, 32, 67, 101, 114, 116, 105, 102, 105, 14 | 99, 97, 116, 101, 32, 65, 117, 116, 104, 111, 114, 105, 116, 15 | 121, 49, 11, 48, 9, 6, 3, 85, 4, 6, 12, 2, 85, 16 | 83, 49, 11, 48, 9, 6, 3, 85, 4, 8, 12, 2, 87, 17 | 65, 49, 16, 48, 14, 6, 3, 85, 4, 7, 12, 7, 83, 18 | 101, 97, 116, 116, 108, 101, 49, 34, 48, 32, 6, 3, 85, 19 | 4, 10, 12, 25, 73, 78, 83, 73, 68, 69, 32, 83, 101, 20 | 99, 117, 114, 101, 32, 67, 111, 114, 112, 111, 114, 97, 116, 21 | 105, 111, 110, 49, 13, 48, 11, 6, 3, 85, 4, 11, 12, 22 | 4, 84, 101, 115, 116, 48, 30, 23, 13, 49, 52, 48, 51, 23 | 50, 52, 49, 54, 50, 54, 52, 54, 90, 23, 13, 49, 55, 24 | 48, 51, 50, 51, 49, 54, 50, 54, 52, 54, 90, 48, 129, 25 | 150, 49, 53, 48, 51, 6, 3, 85, 4, 3, 12, 44, 83, 26 | 97, 109, 112, 108, 101, 32, 77, 97, 116, 114, 105, 120, 32, 27 | 82, 83, 65, 45, 49, 48, 50, 52, 32, 67, 101, 114, 116, 28 | 105, 102, 105, 99, 97, 116, 101, 32, 65, 117, 116, 104, 111, 29 | 114, 105, 116, 121, 49, 11, 48, 9, 6, 3, 85, 4, 6, 30 | 12, 2, 85, 83, 49, 11, 48, 9, 6, 3, 85, 4, 8, 31 | 12, 2, 87, 65, 49, 16, 48, 14, 6, 3, 85, 4, 7, 32 | 12, 7, 83, 101, 97, 116, 116, 108, 101, 49, 34, 48, 32, 33 | 6, 3, 85, 4, 10, 12, 25, 73, 78, 83, 73, 68, 69, 34 | 32, 83, 101, 99, 117, 114, 101, 32, 67, 111, 114, 112, 111, 35 | 114, 97, 116, 105, 111, 110, 49, 13, 48, 11, 6, 3, 85, 36 | 4, 11, 12, 4, 84, 101, 115, 116, 48, 129, 159, 48, 13, 37 | 6, 9, 42, 134, 72, 134, 247, 13, 1, 1, 1, 5, 0, 38 | 3, 129, 141, 0, 48, 129, 137, 2, 129, 129, 0, 191, 64, 39 | 80, 242, 226, 56, 57, 33, 56, 116, 145, 34, 113, 4, 29, 40 | 198, 49, 53, 74, 169, 55, 198, 177, 97, 20, 225, 167, 222, 41 | 111, 25, 15, 207, 20, 160, 234, 84, 115, 214, 32, 157, 55, 42 | 52, 128, 187, 198, 116, 140, 77, 156, 81, 22, 13, 214, 52, 43 | 231, 167, 4, 188, 224, 147, 232, 31, 154, 62, 152, 220, 93, 44 | 22, 227, 213, 225, 134, 34, 223, 98, 137, 155, 103, 206, 132, 45 | 218, 48, 118, 168, 205, 32, 199, 27, 53, 112, 168, 226, 170, 46 | 45, 218, 168, 140, 48, 181, 44, 34, 12, 229, 83, 17, 180, 47 | 181, 22, 13, 28, 185, 159, 245, 224, 66, 193, 232, 3, 210, 48 | 182, 123, 113, 46, 167, 1, 138, 105, 249, 2, 3, 1, 0, 49 | 1, 163, 102, 48, 100, 48, 18, 6, 3, 85, 29, 19, 1, 50 | 1, 255, 4, 8, 48, 6, 1, 1, 255, 2, 1, 0, 48, 51 | 29, 6, 3, 85, 29, 14, 4, 22, 4, 20, 247, 36, 136, 52 | 131, 147, 137, 77, 217, 3, 85, 193, 56, 39, 23, 64, 229, 53 | 236, 225, 212, 176, 48, 31, 6, 3, 85, 29, 35, 4, 24, 54 | 48, 22, 128, 20, 247, 36, 136, 131, 147, 137, 77, 217, 3, 55 | 85, 193, 56, 39, 23, 64, 229, 236, 225, 212, 176, 48, 14, 56 | 6, 3, 85, 29, 15, 1, 1, 255, 4, 4, 3, 2, 0, 57 | 4, 48, 13, 6, 9, 42, 134, 72, 134, 247, 13, 1, 1, 58 | 11, 5, 0, 3, 129, 129, 0, 65, 150, 217, 193, 56, 223, 59 | 116, 222, 228, 127, 198, 122, 215, 202, 221, 239, 249, 204, 117, 60 | 121, 131, 172, 55, 115, 221, 100, 155, 10, 152, 132, 127, 157, 61 | 102, 66, 199, 205, 140, 152, 28, 245, 122, 49, 213, 23, 103, 62 | 168, 201, 98, 142, 162, 54, 138, 252, 218, 248, 100, 205, 156, 63 | 107, 120, 45, 239, 124, 243, 202, 202, 227, 134, 199, 133, 247, 64 | 147, 39, 81, 67, 84, 247, 188, 185, 208, 39, 24, 109, 198, 65 | 186, 14, 224, 197, 23, 172, 85, 35, 162, 180, 31, 28, 86, 66 | 12, 39, 129, 68, 66, 64, 207, 16, 27, 34, 12, 211, 137, 67 | 159, 9, 242, 243, 51, 107, 211, 28, 59, 146, 167, 171, 94, 68 | 189, 58, 233, 130, 140}; 69 | -------------------------------------------------------------------------------- /firmware/arc4.c: -------------------------------------------------------------------------------- 1 | /** 2 | * @file arc4.c 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * ARC4 stream cipher implementation. 6 | */ 7 | /* 8 | * Copyright (c) 2013-2015 INSIDE Secure Corporation 9 | * Copyright (c) PeerSec Networks, 2002-2011 10 | * All Rights Reserved 11 | * 12 | * The latest version of this code is available at http://www.matrixssl.org 13 | * 14 | * This software is open source; you can redistribute it and/or modify 15 | * it under the terms of the GNU General Public License as published by 16 | * the Free Software Foundation; either version 2 of the License, or 17 | * (at your option) any later version. 18 | * 19 | * This General Public License does NOT permit incorporating this software 20 | * into proprietary programs. If you are unable to comply with the GPL, a 21 | * commercial license for this software may be purchased from INSIDE at 22 | * http://www.insidesecure.com/eng/Company/Locations 23 | * 24 | * This program is distributed in WITHOUT ANY WARRANTY; without even the 25 | * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 26 | * See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License 29 | * along with this program; if not, write to the Free Software 30 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 31 | * http://www.gnu.org/copyleft/gpl.html 32 | */ 33 | /******************************************************************************/ 34 | 35 | #include "cryptoApi.h" 36 | 37 | #ifdef USE_ARC4 38 | 39 | /* 40 | SECURITY 41 | Some accounts, such as O'Reilly's Secure Programming Cookbook say that no 42 | more than 2^30 bytes should be processed without rekeying, so we 43 | enforce that limit here. FYI, this is equal to 1GB of data transferred. 44 | */ 45 | #define ARC4_MAX_BYTES 0x40000000 46 | 47 | /******************************************************************************/ 48 | /* 49 | 50 | */ 51 | void psArc4Init(psCipherContext_t *ctx, unsigned char *key, uint32 keylen) 52 | { 53 | unsigned char index1, index2, tmp, *state; 54 | short counter; 55 | 56 | ctx->arc4.byteCount = 0; 57 | state = &ctx->arc4.state[0]; 58 | 59 | for (counter = 0; counter < 256; counter++) { 60 | state[counter] = (unsigned char)counter; 61 | } 62 | ctx->arc4.x = 0; 63 | ctx->arc4.y = 0; 64 | index1 = 0; 65 | index2 = 0; 66 | 67 | for (counter = 0; counter < 256; counter++) { 68 | index2 = (key[index1] + state[counter] + index2) & 0xff; 69 | 70 | tmp = state[counter]; 71 | state[counter] = state[index2]; 72 | state[index2] = tmp; 73 | 74 | index1 = (index1 + 1) % keylen; 75 | } 76 | } 77 | 78 | int32 psArc4(psCipherContext_t *ctx, unsigned char *in, 79 | unsigned char *out, uint32 len) 80 | { 81 | unsigned char x, y, *state, xorIndex, tmp; 82 | uint32 counter; 83 | 84 | ctx->arc4.byteCount += len; 85 | if (ctx->arc4.byteCount > ARC4_MAX_BYTES) { 86 | psTraceCrypto("ARC4 byteCount overrun\n"); 87 | return PS_LIMIT_FAIL; 88 | } 89 | 90 | x = ctx->arc4.x; 91 | y = ctx->arc4.y; 92 | state = &ctx->arc4.state[0]; 93 | for (counter = 0; counter < len; counter++) { 94 | x = (x + 1) & 0xff; 95 | y = (state[x] + y) & 0xff; 96 | 97 | tmp = state[x]; 98 | state[x] = state[y]; 99 | state[y] = tmp; 100 | 101 | xorIndex = (state[x] + state[y]) & 0xff; 102 | 103 | tmp = in[counter]; 104 | tmp ^= state[xorIndex]; 105 | out[counter] = tmp; 106 | } 107 | ctx->arc4.x = x; 108 | ctx->arc4.y = y; 109 | return len; 110 | } 111 | 112 | #endif /* USE_ARC4 */ 113 | 114 | /******************************************************************************/ 115 | -------------------------------------------------------------------------------- /firmware/sampleCerts/ECDH_RSA/CAcertRSA.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file CAcertRSA.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | unsigned char CAcertSrvEcRsaBuf[] = { 8 | 48, 130, 3, 52, 48, 130, 2, 157, 160, 3, 2, 1, 2, 9 | 2, 9, 0, 168, 68, 15, 142, 229, 144, 170, 222, 48, 13, 10 | 6, 9, 42, 134, 72, 134, 247, 13, 1, 1, 5, 5, 0, 11 | 48, 112, 49, 11, 48, 9, 6, 3, 85, 4, 6, 19, 2, 12 | 85, 83, 49, 11, 48, 9, 6, 3, 85, 4, 8, 19, 2, 13 | 87, 65, 49, 16, 48, 14, 6, 3, 85, 4, 7, 19, 7, 14 | 83, 101, 97, 116, 116, 108, 101, 49, 16, 48, 14, 6, 3, 15 | 85, 4, 10, 19, 7, 80, 101, 101, 114, 83, 101, 99, 49, 16 | 13, 48, 11, 6, 3, 85, 4, 11, 19, 4, 84, 101, 115, 17 | 116, 49, 33, 48, 31, 6, 3, 85, 4, 3, 20, 24, 82, 18 | 83, 65, 32, 67, 65, 32, 102, 111, 114, 32, 69, 67, 68, 19 | 72, 95, 82, 83, 65, 32, 116, 101, 115, 116, 48, 30, 23, 20 | 13, 49, 49, 48, 54, 48, 57, 50, 50, 51, 57, 52, 49, 21 | 90, 23, 13, 49, 49, 48, 55, 48, 57, 50, 50, 51, 57, 22 | 52, 49, 90, 48, 112, 49, 11, 48, 9, 6, 3, 85, 4, 23 | 6, 19, 2, 85, 83, 49, 11, 48, 9, 6, 3, 85, 4, 24 | 8, 19, 2, 87, 65, 49, 16, 48, 14, 6, 3, 85, 4, 25 | 7, 19, 7, 83, 101, 97, 116, 116, 108, 101, 49, 16, 48, 26 | 14, 6, 3, 85, 4, 10, 19, 7, 80, 101, 101, 114, 83, 27 | 101, 99, 49, 13, 48, 11, 6, 3, 85, 4, 11, 19, 4, 28 | 84, 101, 115, 116, 49, 33, 48, 31, 6, 3, 85, 4, 3, 29 | 20, 24, 82, 83, 65, 32, 67, 65, 32, 102, 111, 114, 32, 30 | 69, 67, 68, 72, 95, 82, 83, 65, 32, 116, 101, 115, 116, 31 | 48, 129, 159, 48, 13, 6, 9, 42, 134, 72, 134, 247, 13, 32 | 1, 1, 1, 5, 0, 3, 129, 141, 0, 48, 129, 137, 2, 33 | 129, 129, 0, 203, 146, 214, 171, 106, 68, 180, 89, 179, 190, 34 | 34, 82, 28, 223, 201, 129, 103, 247, 227, 76, 218, 30, 30, 35 | 239, 11, 24, 81, 48, 217, 86, 186, 252, 170, 127, 92, 180, 36 | 183, 95, 72, 57, 158, 241, 73, 70, 213, 37, 175, 255, 199, 37 | 9, 126, 162, 219, 227, 161, 161, 229, 239, 112, 77, 47, 115, 38 | 126, 45, 179, 131, 152, 189, 181, 242, 205, 74, 239, 40, 151, 39 | 236, 173, 23, 183, 39, 169, 44, 146, 14, 214, 48, 39, 38, 40 | 166, 154, 235, 178, 207, 247, 50, 5, 102, 99, 96, 104, 190, 41 | 13, 121, 38, 52, 107, 103, 172, 22, 94, 79, 213, 5, 107, 42 | 249, 68, 78, 100, 55, 135, 249, 188, 106, 140, 90, 117, 120, 43 | 21, 2, 3, 1, 0, 1, 163, 129, 213, 48, 129, 210, 48, 44 | 29, 6, 3, 85, 29, 14, 4, 22, 4, 20, 171, 17, 0, 45 | 68, 33, 201, 218, 203, 181, 192, 77, 128, 154, 112, 222, 25, 46 | 139, 101, 201, 182, 48, 129, 162, 6, 3, 85, 29, 35, 4, 47 | 129, 154, 48, 129, 151, 128, 20, 171, 17, 0, 68, 33, 201, 48 | 218, 203, 181, 192, 77, 128, 154, 112, 222, 25, 139, 101, 201, 49 | 182, 161, 116, 164, 114, 48, 112, 49, 11, 48, 9, 6, 3, 50 | 85, 4, 6, 19, 2, 85, 83, 49, 11, 48, 9, 6, 3, 51 | 85, 4, 8, 19, 2, 87, 65, 49, 16, 48, 14, 6, 3, 52 | 85, 4, 7, 19, 7, 83, 101, 97, 116, 116, 108, 101, 49, 53 | 16, 48, 14, 6, 3, 85, 4, 10, 19, 7, 80, 101, 101, 54 | 114, 83, 101, 99, 49, 13, 48, 11, 6, 3, 85, 4, 11, 55 | 19, 4, 84, 101, 115, 116, 49, 33, 48, 31, 6, 3, 85, 56 | 4, 3, 20, 24, 82, 83, 65, 32, 67, 65, 32, 102, 111, 57 | 114, 32, 69, 67, 68, 72, 95, 82, 83, 65, 32, 116, 101, 58 | 115, 116, 130, 9, 0, 168, 68, 15, 142, 229, 144, 170, 222, 59 | 48, 12, 6, 3, 85, 29, 19, 4, 5, 48, 3, 1, 1, 60 | 255, 48, 13, 6, 9, 42, 134, 72, 134, 247, 13, 1, 1, 61 | 5, 5, 0, 3, 129, 129, 0, 120, 146, 208, 60, 20, 232, 62 | 68, 59, 76, 219, 104, 232, 57, 25, 112, 159, 82, 182, 100, 63 | 240, 165, 54, 87, 95, 206, 185, 182, 89, 162, 5, 124, 136, 64 | 203, 204, 38, 176, 31, 115, 2, 217, 27, 224, 243, 46, 207, 65 | 234, 111, 8, 101, 201, 226, 147, 195, 102, 3, 198, 148, 174, 66 | 233, 116, 222, 9, 181, 45, 35, 60, 104, 239, 87, 233, 121, 67 | 148, 46, 10, 110, 127, 61, 129, 46, 195, 173, 151, 82, 91, 68 | 187, 63, 28, 45, 67, 62, 31, 122, 164, 169, 107, 242, 181, 69 | 222, 125, 69, 86, 197, 249, 253, 55, 64, 161, 64, 24, 18, 70 | 250, 223, 213, 28, 226, 0, 249, 202, 73, 221, 58, 43, 51, 71 | 189, 96, 200, 120, 172}; 72 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/521_EC.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 521_EC.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | unsigned char EC521[] = { 8 | 48, 130, 3, 53, 48, 130, 2, 151, 160, 3, 2, 1, 2, 9 | 2, 2, 36, 84, 48, 10, 6, 8, 42, 134, 72, 206, 61, 10 | 4, 3, 3, 48, 129, 152, 49, 11, 48, 9, 6, 3, 85, 11 | 4, 6, 19, 2, 85, 83, 49, 11, 48, 9, 6, 3, 85, 12 | 4, 8, 12, 2, 87, 65, 49, 16, 48, 14, 6, 3, 85, 13 | 4, 7, 12, 7, 83, 101, 97, 116, 116, 108, 101, 49, 34, 14 | 48, 32, 6, 3, 85, 4, 10, 12, 25, 73, 110, 115, 105, 15 | 100, 101, 32, 83, 101, 99, 117, 114, 101, 32, 67, 111, 114, 16 | 112, 111, 114, 97, 116, 105, 111, 110, 49, 13, 48, 11, 6, 17 | 3, 85, 4, 11, 12, 4, 84, 101, 115, 116, 49, 55, 48, 18 | 53, 6, 3, 85, 4, 3, 12, 46, 77, 97, 116, 114, 105, 19 | 120, 83, 83, 76, 32, 83, 97, 109, 112, 108, 101, 32, 67, 20 | 65, 32, 40, 69, 108, 108, 105, 112, 116, 105, 99, 32, 99, 21 | 117, 114, 118, 101, 32, 115, 101, 99, 112, 53, 50, 49, 114, 22 | 49, 41, 48, 30, 23, 13, 49, 52, 48, 51, 49, 51, 50, 23 | 51, 50, 49, 51, 49, 90, 23, 13, 49, 55, 48, 51, 49, 24 | 50, 50, 51, 50, 49, 51, 49, 90, 48, 129, 154, 49, 11, 25 | 48, 9, 6, 3, 85, 4, 6, 19, 2, 85, 83, 49, 11, 26 | 48, 9, 6, 3, 85, 4, 8, 12, 2, 87, 65, 49, 16, 27 | 48, 14, 6, 3, 85, 4, 7, 12, 7, 83, 101, 97, 116, 28 | 116, 108, 101, 49, 34, 48, 32, 6, 3, 85, 4, 10, 12, 29 | 25, 73, 110, 115, 105, 100, 101, 32, 83, 101, 99, 117, 114, 30 | 101, 32, 67, 111, 114, 112, 111, 114, 97, 116, 105, 111, 110, 31 | 49, 13, 48, 11, 6, 3, 85, 4, 11, 12, 4, 84, 101, 32 | 115, 116, 49, 57, 48, 55, 6, 3, 85, 4, 3, 12, 48, 33 | 77, 97, 116, 114, 105, 120, 83, 83, 76, 32, 83, 97, 109, 34 | 112, 108, 101, 32, 67, 101, 114, 116, 32, 40, 69, 108, 108, 35 | 105, 112, 116, 105, 99, 32, 99, 117, 114, 118, 101, 32, 115, 36 | 101, 99, 112, 53, 50, 49, 114, 49, 41, 48, 129, 155, 48, 37 | 16, 6, 7, 42, 134, 72, 206, 61, 2, 1, 6, 5, 43, 38 | 129, 4, 0, 35, 3, 129, 134, 0, 4, 0, 10, 90, 59, 39 | 184, 198, 22, 133, 46, 135, 103, 166, 123, 92, 110, 41, 138, 40 | 94, 226, 17, 3, 131, 40, 32, 88, 62, 211, 90, 181, 104, 41 | 217, 183, 239, 236, 22, 149, 193, 232, 125, 184, 7, 244, 22, 42 | 80, 61, 48, 97, 120, 149, 117, 235, 104, 10, 11, 255, 94, 43 | 8, 93, 117, 102, 1, 175, 41, 31, 213, 93, 0, 197, 243, 44 | 77, 90, 99, 239, 7, 73, 174, 137, 117, 178, 154, 160, 107, 45 | 69, 111, 79, 213, 179, 71, 163, 204, 124, 172, 17, 36, 137, 46 | 154, 93, 99, 186, 133, 194, 207, 195, 123, 67, 210, 206, 253, 47 | 220, 234, 150, 118, 173, 164, 97, 138, 163, 251, 166, 38, 104, 48 | 80, 46, 128, 130, 173, 113, 197, 248, 203, 32, 238, 163, 129, 49 | 137, 48, 129, 134, 48, 9, 6, 3, 85, 29, 19, 4, 2, 50 | 48, 0, 48, 29, 6, 3, 85, 29, 14, 4, 22, 4, 20, 51 | 38, 59, 18, 189, 47, 161, 159, 63, 216, 53, 227, 209, 131, 52 | 35, 33, 235, 53, 218, 215, 134, 48, 31, 6, 3, 85, 29, 53 | 35, 4, 24, 48, 22, 128, 20, 25, 176, 190, 164, 157, 139, 54 | 60, 68, 229, 134, 181, 23, 161, 214, 13, 186, 66, 29, 184, 55 | 169, 48, 29, 6, 3, 85, 29, 37, 4, 22, 48, 20, 6, 56 | 8, 43, 6, 1, 5, 5, 7, 3, 1, 6, 8, 43, 6, 57 | 1, 5, 5, 7, 3, 2, 48, 26, 6, 3, 85, 29, 17, 58 | 4, 19, 48, 17, 130, 9, 108, 111, 99, 97, 108, 104, 111, 59 | 115, 116, 135, 4, 127, 0, 0, 1, 48, 10, 6, 8, 42, 60 | 134, 72, 206, 61, 4, 3, 3, 3, 129, 139, 0, 48, 129, 61 | 135, 2, 66, 1, 233, 242, 19, 45, 30, 161, 202, 24, 27, 62 | 82, 86, 173, 179, 195, 37, 205, 139, 28, 229, 123, 12, 167, 63 | 155, 35, 157, 21, 238, 180, 101, 233, 176, 135, 222, 204, 34, 64 | 190, 118, 67, 78, 69, 204, 35, 120, 35, 215, 188, 68, 125, 65 | 76, 253, 108, 140, 147, 50, 3, 173, 248, 158, 26, 158, 86, 66 | 38, 187, 104, 187, 2, 65, 1, 123, 55, 116, 233, 186, 119, 67 | 198, 193, 165, 0, 70, 5, 66, 6, 128, 192, 102, 127, 27, 68 | 157, 47, 235, 180, 111, 222, 152, 49, 222, 102, 110, 243, 201, 69 | 170, 88, 21, 2, 100, 39, 230, 219, 54, 73, 181, 22, 41, 70 | 182, 143, 186, 26, 158, 10, 123, 6, 98, 152, 96, 251, 140, 71 | 34, 232, 238, 145, 158, 2}; 72 | -------------------------------------------------------------------------------- /firmware/asn1.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file asn1.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * ASN.1 header. 6 | */ 7 | /* 8 | * Copyright (c) 2013-2015 INSIDE Secure Corporation 9 | * Copyright (c) PeerSec Networks, 2002-2011 10 | * All Rights Reserved 11 | * 12 | * The latest version of this code is available at http://www.matrixssl.org 13 | * 14 | * This software is open source; you can redistribute it and/or modify 15 | * it under the terms of the GNU General Public License as published by 16 | * the Free Software Foundation; either version 2 of the License, or 17 | * (at your option) any later version. 18 | * 19 | * This General Public License does NOT permit incorporating this software 20 | * into proprietary programs. If you are unable to comply with the GPL, a 21 | * commercial license for this software may be purchased from INSIDE at 22 | * http://www.insidesecure.com/eng/Company/Locations 23 | * 24 | * This program is distributed in WITHOUT ANY WARRANTY; without even the 25 | * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 26 | * See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License 29 | * along with this program; if not, write to the Free Software 30 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 31 | * http://www.gnu.org/copyleft/gpl.html 32 | */ 33 | 34 | /******************************************************************************/ 35 | 36 | #ifndef _h_PS_ASN1 37 | #define _h_PS_ASN1 38 | #include "cryptoConfig.h" 39 | 40 | /******************************************************************************/ 41 | /******************************************************************************/ 42 | /* 43 | 8 bit bit masks for ASN.1 tag field 44 | */ 45 | #define ASN_PRIMITIVE 0x0 46 | #define ASN_CONSTRUCTED 0x20 47 | 48 | #define ASN_UNIVERSAL 0x0 49 | #define ASN_APPLICATION 0x40 50 | #define ASN_CONTEXT_SPECIFIC 0x80 51 | #define ASN_PRIVATE 0xC0 52 | 53 | /* 54 | ASN.1 primitive data types 55 | */ 56 | enum { 57 | ASN_BOOLEAN = 1, 58 | ASN_INTEGER, 59 | ASN_BIT_STRING, 60 | ASN_OCTET_STRING, 61 | ASN_NULL, 62 | ASN_OID, 63 | ASN_UTF8STRING = 12, 64 | ASN_SEQUENCE = 16, 65 | ASN_SET, 66 | ASN_PRINTABLESTRING = 19, 67 | ASN_T61STRING, 68 | ASN_IA5STRING = 22, 69 | ASN_UTCTIME, 70 | ASN_GENERALIZEDTIME, 71 | ASN_GENERAL_STRING = 27, 72 | ASN_BMPSTRING = 30 73 | }; 74 | 75 | #define ASN_UNKNOWN_LEN 16777215 76 | 77 | extern int32 getAsnLength(unsigned char **p, uint32 size, uint32 *valLen); 78 | extern int32 getAsnBig(psPool_t *pool, unsigned char **pp, uint32 len, 79 | pstm_int *big); 80 | extern int32 getAsnSequence(unsigned char **pp, uint32 len, uint32 *seqlen); 81 | extern int32 getAsnSequenceNoLenCheck(unsigned char **pp, uint32 len, 82 | uint32 *seqlen); 83 | extern int32 getAsnSet(unsigned char **pp, uint32 len, uint32 *setlen); 84 | extern int32 getAsnInteger(unsigned char **pp, uint32 len, int32 *val); 85 | 86 | extern int32 getAsnAlgorithmIdentifier(unsigned char **pp, uint32 len, 87 | int32 *oi, int32 *paramLen); 88 | extern int32 getStreamingAsnAlgorithmIdentifier(unsigned char **pp, uint32 len, 89 | int32 *oi, int32 *paramLen); 90 | extern int32 getAsnOID(unsigned char **pp, uint32 len, int32 *oi, 91 | int32 checkForParams, int32 *paramLen); 92 | extern int32 getAsnConstructedOctetString(psPool_t *pool, unsigned char **pp, 93 | uint32 len, unsigned char **outString, int32 *outStringLen); 94 | #ifdef USE_RSA 95 | extern int32 getAsnRsaPubKey(psPool_t *pool, unsigned char **pp, uint32 len, 96 | psRsaKey_t *pubKey); 97 | #endif /* USE_RSA */ 98 | /******************************************************************************/ 99 | 100 | #endif /* _h_PS_ASN1 */ 101 | -------------------------------------------------------------------------------- /firmware/examples/glowfish-post-test.cpp: -------------------------------------------------------------------------------- 1 | // Dependencies: httpsclient-particle, Sparkjson 2 | // Overview: Collect system information from the photon, post it to Glowfi.sh 3 | // Specifically, data posted to signal_extract endpoint of glowfish 4 | // glowfi.sh then posts it to librato for data visualization 5 | // You can have a look at one of the photons posting here: 6 | // https://metrics.librato.com/s/public/cumm5prtk?duration=86400 7 | // signal_extract is a simple glowfi.sh endpoint which despikes 8 | #include "httpsclient-particle/httpsclient-particle.h" 9 | 10 | static int anomalyLed = D7; 11 | static int heartbeatLed = D7; 12 | 13 | const bool g_https_trace = true; // This controls debug info print to Serial 14 | const char host [] = "api.glowfi.sh"; 15 | const char ad_endpoint [] = "/v1/anomaly_detect/"; 16 | const char se_endpoint [] = "/v1/signal_extract/"; 17 | const int g_port = 443; // Don't change this, unless you know what you are doing 18 | static unsigned int freemem; 19 | bool g_https_complete; 20 | uint32 g_bytes_received; 21 | 22 | TCPClient client; 23 | 24 | #define GF_JSON_SIZE 300 25 | 26 | // Replace XXXX...XXX with base64 encoding if your gf username:password 27 | // If you don't know how to generate the base64 encoding go here: 28 | // http://www.tuxgraphics.org/toolbox/base64-javascript.html 29 | // CAUTION: Do NOT remove/replace the word Basic from the string above, 30 | // it's part of http standard. 31 | unsigned char httpRequestContent[] = "POST %s HTTP/1.0\r\n" 32 | "User-Agent: MatrixSSL/" MATRIXSSL_VERSION "\r\n" 33 | "Authorization: Basic XXXX...XXX\r\n" 34 | "Host: api.glowfi.sh\r\n" 35 | "Accept: */*\r\n" 36 | "Content-Type: applcation/json\r\n" 37 | "Content-Length: %d\r\n\r\n%s"; 38 | 39 | void setup() { 40 | if (g_https_trace) { 41 | Serial.begin(9600); 42 | } 43 | pinMode(anomalyLed, OUTPUT); 44 | httpsclientSetup(host, se_endpoint); 45 | } 46 | 47 | unsigned int nextTime = 0; // Next time to contact the server 48 | int g_connected; 49 | void loop() { 50 | unsigned int t = millis(); 51 | if (nextTime > t) return; 52 | StaticJsonBuffer glowfishJson; 53 | JsonObject& top = glowfishJson.createObject(); 54 | top["device_id"] = (const char *) System.deviceID(); 55 | JsonObject& data_set = top.createNestedObject("data_set"); 56 | // TODO: I don't quite understand how much memory needs to get allocated 57 | //JsonObject& time = top.createNestedArray("time"); 58 | JsonArray& freememJ = data_set.createNestedArray("freemem"); 59 | freememJ.add(System.freeMemory()); 60 | JsonArray& timeup = data_set.createNestedArray("timeup"); 61 | timeup.add(t/1000); 62 | char jsonBuf[GF_JSON_SIZE]; 63 | size_t bufsize = top.printTo(jsonBuf, sizeof(jsonBuf)); 64 | g_connected = client.connect(host, g_port); 65 | if (!g_connected) { 66 | client.stop(); 67 | // If TCP Client can't connect to host, exit here. 68 | return; 69 | } 70 | g_https_complete = false; 71 | g_bytes_received = 0; 72 | if (g_https_trace) { 73 | Serial.print("free memory: "); 74 | Serial.println(freemem); 75 | } 76 | int rc; 77 | httpsclientSetPath(se_endpoint); 78 | if ((rc = httpsClientConnection(httpRequestContent, bufsize, jsonBuf)) < 0) { 79 | // TODO: When massive FAIL 80 | if (g_https_trace) { 81 | Serial.print("httpsClientConnection Returned "); 82 | Serial.println(rc); 83 | } 84 | httpsclientCleanUp(); 85 | // Blink an LED twice to indicate trouble 86 | digitalWrite(anomalyLed, HIGH); 87 | delay(500); 88 | digitalWrite(anomalyLed, LOW); 89 | delay(500); 90 | digitalWrite(anomalyLed, HIGH); 91 | delay(500); 92 | digitalWrite(anomalyLed, LOW); 93 | return; 94 | } else { 95 | // Blink an LED once to indicate success 96 | digitalWrite(heartbeatLed, HIGH); 97 | delay(250); 98 | digitalWrite(heartbeatLed, LOW); 99 | } 100 | client.stop(); 101 | nextTime = millis() + 5000; 102 | } 103 | -------------------------------------------------------------------------------- /firmware/sampleCerts/ECDH_RSA/256_ECDH-RSA.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 256_ECDH-RSA.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | unsigned char ECDHRSA256[] = { 8 | 48, 130, 3, 179, 48, 130, 3, 28, 160, 3, 2, 1, 2, 9 | 2, 2, 46, 224, 48, 13, 6, 9, 42, 134, 72, 134, 247, 10 | 13, 1, 1, 11, 5, 0, 48, 129, 170, 49, 73, 48, 71, 11 | 6, 3, 85, 4, 3, 12, 64, 83, 97, 109, 112, 108, 101, 12 | 32, 77, 97, 116, 114, 105, 120, 32, 82, 83, 65, 45, 49, 13 | 48, 50, 52, 32, 67, 101, 114, 116, 105, 102, 105, 99, 97, 14 | 116, 101, 32, 65, 117, 116, 104, 111, 114, 105, 116, 121, 32, 15 | 102, 111, 114, 32, 69, 67, 68, 72, 95, 82, 83, 65, 32, 16 | 83, 117, 105, 116, 101, 115, 49, 11, 48, 9, 6, 3, 85, 17 | 4, 6, 12, 2, 85, 83, 49, 11, 48, 9, 6, 3, 85, 18 | 4, 8, 12, 2, 87, 65, 49, 16, 48, 14, 6, 3, 85, 19 | 4, 7, 12, 7, 83, 101, 97, 116, 116, 108, 101, 49, 34, 20 | 48, 32, 6, 3, 85, 4, 10, 12, 25, 73, 110, 115, 105, 21 | 100, 101, 32, 83, 101, 99, 117, 114, 101, 32, 67, 111, 114, 22 | 112, 111, 114, 97, 116, 105, 111, 110, 49, 13, 48, 11, 6, 23 | 3, 85, 4, 11, 12, 4, 84, 101, 115, 116, 48, 30, 23, 24 | 13, 49, 52, 48, 51, 49, 51, 50, 51, 51, 55, 53, 50, 25 | 90, 23, 13, 49, 55, 48, 51, 49, 50, 50, 51, 51, 55, 26 | 53, 50, 90, 48, 129, 164, 49, 11, 48, 9, 6, 3, 85, 27 | 4, 6, 19, 2, 85, 83, 49, 11, 48, 9, 6, 3, 85, 28 | 4, 8, 12, 2, 87, 65, 49, 16, 48, 14, 6, 3, 85, 29 | 4, 7, 12, 7, 83, 101, 97, 116, 116, 108, 101, 49, 34, 30 | 48, 32, 6, 3, 85, 4, 10, 12, 25, 73, 110, 115, 105, 31 | 100, 101, 32, 83, 101, 99, 117, 114, 101, 32, 67, 111, 114, 32 | 112, 111, 114, 97, 116, 105, 111, 110, 49, 13, 48, 11, 6, 33 | 3, 85, 4, 11, 12, 4, 84, 101, 115, 116, 49, 67, 48, 34 | 65, 6, 3, 85, 4, 3, 12, 58, 77, 97, 116, 114, 105, 35 | 120, 83, 83, 76, 32, 83, 97, 109, 112, 108, 101, 32, 69, 36 | 67, 68, 72, 95, 82, 83, 65, 32, 67, 101, 114, 116, 32, 37 | 40, 69, 108, 108, 105, 112, 116, 105, 99, 32, 99, 117, 114, 38 | 118, 101, 32, 112, 114, 105, 109, 101, 50, 53, 54, 118, 49, 39 | 41, 48, 89, 48, 19, 6, 7, 42, 134, 72, 206, 61, 2, 40 | 1, 6, 8, 42, 134, 72, 206, 61, 3, 1, 7, 3, 66, 41 | 0, 4, 151, 62, 143, 194, 217, 167, 170, 180, 158, 44, 228, 42 | 49, 213, 151, 244, 174, 61, 110, 138, 239, 163, 165, 39, 194, 43 | 230, 51, 87, 108, 160, 245, 184, 226, 199, 143, 117, 186, 141, 44 | 4, 139, 254, 221, 58, 43, 36, 116, 82, 238, 114, 226, 142, 45 | 43, 218, 103, 126, 214, 235, 174, 136, 110, 203, 86, 67, 147, 46 | 189, 163, 130, 1, 49, 48, 130, 1, 45, 48, 9, 6, 3, 47 | 85, 29, 19, 4, 2, 48, 0, 48, 29, 6, 3, 85, 29, 48 | 14, 4, 22, 4, 20, 34, 62, 226, 129, 202, 161, 71, 71, 49 | 4, 169, 253, 219, 27, 175, 35, 102, 245, 141, 194, 250, 48, 50 | 129, 197, 6, 3, 85, 29, 35, 4, 129, 189, 48, 129, 186, 51 | 161, 129, 176, 164, 129, 173, 48, 129, 170, 49, 73, 48, 71, 52 | 6, 3, 85, 4, 3, 12, 64, 83, 97, 109, 112, 108, 101, 53 | 32, 77, 97, 116, 114, 105, 120, 32, 82, 83, 65, 45, 49, 54 | 48, 50, 52, 32, 67, 101, 114, 116, 105, 102, 105, 99, 97, 55 | 116, 101, 32, 65, 117, 116, 104, 111, 114, 105, 116, 121, 32, 56 | 102, 111, 114, 32, 69, 67, 68, 72, 95, 82, 83, 65, 32, 57 | 83, 117, 105, 116, 101, 115, 49, 11, 48, 9, 6, 3, 85, 58 | 4, 6, 12, 2, 85, 83, 49, 11, 48, 9, 6, 3, 85, 59 | 4, 8, 12, 2, 87, 65, 49, 16, 48, 14, 6, 3, 85, 60 | 4, 7, 12, 7, 83, 101, 97, 116, 116, 108, 101, 49, 34, 61 | 48, 32, 6, 3, 85, 4, 10, 12, 25, 73, 110, 115, 105, 62 | 100, 101, 32, 83, 101, 99, 117, 114, 101, 32, 67, 111, 114, 63 | 112, 111, 114, 97, 116, 105, 111, 110, 49, 13, 48, 11, 6, 64 | 3, 85, 4, 11, 12, 4, 84, 101, 115, 116, 130, 5, 49, 65 | 48, 48, 48, 48, 48, 29, 6, 3, 85, 29, 37, 4, 22, 66 | 48, 20, 6, 8, 43, 6, 1, 5, 5, 7, 3, 1, 6, 67 | 8, 43, 6, 1, 5, 5, 7, 3, 2, 48, 26, 6, 3, 68 | 85, 29, 17, 4, 19, 48, 17, 130, 9, 108, 111, 99, 97, 69 | 108, 104, 111, 115, 116, 135, 4, 127, 0, 0, 1, 48, 13, 70 | 6, 9, 42, 134, 72, 134, 247, 13, 1, 1, 11, 5, 0, 71 | 3, 129, 129, 0, 13, 48, 12, 208, 6, 240, 156, 227, 27, 72 | 116, 160, 136, 2, 20, 96, 84, 23, 130, 138, 97, 140, 246, 73 | 200, 155, 252, 37, 161, 185, 33, 252, 56, 144, 222, 136, 189, 74 | 208, 36, 127, 10, 104, 140, 224, 120, 231, 101, 73, 100, 135, 75 | 19, 129, 247, 43, 33, 183, 191, 1, 109, 202, 134, 118, 212, 76 | 207, 11, 174, 77, 108, 39, 120, 43, 181, 90, 226, 54, 76, 77 | 134, 19, 201, 101, 156, 10, 173, 58, 75, 27, 221, 157, 211, 78 | 238, 147, 47, 185, 46, 184, 47, 60, 226, 112, 24, 117, 246, 79 | 165, 72, 143, 60, 98, 43, 73, 19, 80, 50, 214, 28, 224, 80 | 235, 162, 148, 241, 160, 13, 136, 219, 27, 38, 4, 253, 39, 81 | 21, 89}; 82 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Overview 2 | Designing this with IOT in mind. Most webservers willing to collect data from 3 | devices prefer talking https. Securing communication to-and-from smaller 4 | footprint devices (like particle.io Photon etc.) and standard web servers doing 5 | interesting stuff with this data (glowfi.sh, thingspeak.com, etc) is the goal. 6 | There is a hard limitation you hit with https and that dictates that you have 7 | about 50kB of meemory allocated for it. This is because of huge 8 | Certificate chains that get shipped from https servers. 9 | 10 | In all this, lack of a readily available plug and play httpsclient brings us 11 | here. Integrating MatrixSSL with a standard TCP client seemed like a good 12 | starting point. 13 | 14 | Any feedback (especially critical) and contributions are welcome! 15 | 16 | # Building it with Web IDE 17 | - Import the httpsclient-particle 18 | - Add it to the application you are currently working on 19 | - (Or) use one of the examples in the examples/ directory 20 | - If you are using timeapi-test, you should be able to compile and run it readily 21 | - If you are using glowfish-post-test, you will need the authentication credentials from glowfish to be able to make the post. Once you have them follow the instructions in the example file to carefully fill them in. 22 | 23 | # Building it locally with spark firmware 24 | 25 | Assuming you are comfortable using spark firmware library located: https://github.com/spark/firmware 26 | - Clone the httpsclient-particle 27 | - Copy the contents of the firmware directory into the firmware/user/src/ 28 | directory of the spark firmware library. 29 | - Pick one of the files in the examples directory. And copy it into user/src 30 | directory. 31 | - Modify the first line of the example to remove the path prefix (needed only 32 | for web IDE): 33 | ````#include "httpsclient-particle.h"```` 34 | - Delete/relocate the examples folder (local build won't succeed if it's left 35 | there) 36 | - Goto firmware/main/ of the spark firmware directory again. And build it 37 | (Again, instructions for this are at https://github.com/spark/firmware) - 38 | don't forget `PLATFORM=photon` 39 | 40 | # Current State 41 | What's here is a semi-stable working httpsclient that can make requests from 42 | the particle photon board to webservers running https. The client 43 | implementation is simple, and as of now can handle 1 connection at any given 44 | time. Other features (for now) are: 45 | 46 | ## Adhere to security 47 | - TLS 1.2 48 | - RSA 2048bit key length 49 | - Slow is OK, but secure is a must! 50 | - Ramping this up to 4096bit key length ought to be tested, and this may just 51 | consume a whole lot of memory (AGAIN, especially the server certificates). 52 | Writing the certificate chains to flash is an option. 53 | 54 | ## Small memory footprint: 55 | - Client only 56 | - Single session 57 | - No Client Authentication 58 | - Static memory allocation 59 | 60 | ## License: 61 | GPL, as matrixSSL-open library is under GPL. 62 | 63 | # A few important changes from MatrixSSL: 64 | - Make the ssl structure static, as we are just using a single session. 65 | - Header file compatibility with particle.io build system. This means 66 | adjusting the include paths (this needs to be fixed). 67 | - Keep SSL in-out buffers static. 68 | 69 | # TODO: 70 | - Add and test Elliptic curve support (This will take up a larger footprint) 71 | - Find a better way to seed entropy. Currently takes the last 8 bits of the 72 | system microsecond counter. 73 | - Add a feature to generate header files from RSA keys, etc. After this remove 74 | samplecerts from the repository (?) 75 | - Inspect all dynamic memory allocations and check for memory leaks (all psMallocs) 76 | - Add tests!! MatrixSSL tests are heavy handed. Need to carefully go through these 77 | and add the ones needed. 78 | - Find a better way to include header files 79 | - A memory pool implementation (if needed), especially to give back the obscene 80 | amount of memory SSL Certificates consume. 81 | - The only way to currently print and trace info on the particle.io's photon is 82 | by using Serial (written in c++). This is a bit painful if the rest of your 83 | library is in C, necessary '.h' file needs to be wrapped with extern C 84 | wrappers to get it to build correctly. 85 | - Last but no way the least, a thorough security AUDIT. 86 | - Decide on keeping this repository in sync with MatrixSSL-open. This isn't 87 | trivial as keeping up with Photon/Arduino/MatrixSSL build systems maybe be a 88 | handful. 89 | -------------------------------------------------------------------------------- /firmware/pubkey.c: -------------------------------------------------------------------------------- 1 | /** 2 | * @file pubkey.c 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Public and Private key operations. 6 | */ 7 | /* 8 | * Copyright (c) 2013-2015 INSIDE Secure Corporation 9 | * Copyright (c) PeerSec Networks, 2002-2011 10 | * All Rights Reserved 11 | * 12 | * The latest version of this code is available at http://www.matrixssl.org 13 | * 14 | * This software is open source; you can redistribute it and/or modify 15 | * it under the terms of the GNU General Public License as published by 16 | * the Free Software Foundation; either version 2 of the License, or 17 | * (at your option) any later version. 18 | * 19 | * This General Public License does NOT permit incorporating this software 20 | * into proprietary programs. If you are unable to comply with the GPL, a 21 | * commercial license for this software may be purchased from INSIDE at 22 | * http://www.insidesecure.com/eng/Company/Locations 23 | * 24 | * This program is distributed in WITHOUT ANY WARRANTY; without even the 25 | * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 26 | * See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License 29 | * along with this program; if not, write to the Free Software 30 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 31 | * http://www.gnu.org/copyleft/gpl.html 32 | */ 33 | /******************************************************************************/ 34 | 35 | #include "cryptoApi.h" 36 | 37 | /******************************************************************************/ 38 | /* 39 | Open (initialize) the Crypto module 40 | This function is in this file simply because there is no C file directly 41 | under the crypto directory 42 | The config param should always be passed as: 43 | PSCRYPTO_CONFIG 44 | */ 45 | static char g_config[32] = "N"; 46 | 47 | int32 psCryptoOpen(char *config) 48 | { 49 | if (*g_config == 'Y') { 50 | return PS_SUCCESS; /* Function has been called previously */ 51 | } 52 | strncpy(g_config, PSCRYPTO_CONFIG, sizeof(g_config) - 1); 53 | if (strncmp(g_config, config, sizeof(g_config) - 1) != 0) { 54 | psErrorStr( "Crypto config mismatch.\n" \ 55 | "Library: " PSCRYPTO_CONFIG\ 56 | "\nCurrent: %s\n", config); 57 | return -1; 58 | } 59 | psOpenPrng(); 60 | if (psCoreOpen(PSCORE_CONFIG) < 0) { 61 | psError("pscore open failure\n"); 62 | return PS_FAILURE; 63 | } 64 | return 0; 65 | } 66 | 67 | void psCryptoClose(void) 68 | { 69 | psClosePrng(); 70 | psCoreClose(); 71 | } 72 | 73 | /******************************************************************************/ 74 | /* 75 | Allocate a new psPubKey_t and memset empty 76 | */ 77 | psPubKey_t * psNewPubKey(psPool_t *pool) { 78 | 79 | psPubKey_t *ret; 80 | 81 | ret = psMalloc(pool, sizeof(psPubKey_t)); 82 | 83 | if (ret == NULL) { 84 | psError("Memory allocation error in psNewPubKey\n"); 85 | return NULL; 86 | } 87 | memset(ret, 0x0, sizeof(psPubKey_t)); 88 | ret->pool = pool; 89 | ret->key = psMalloc(pool, sizeof(pubKeyUnion_t)); 90 | if (ret->key == NULL) { 91 | psFree(ret, pool); 92 | psError("Memory allocation error in psNewPubKey\n"); 93 | return NULL; 94 | } 95 | memset(ret->key, 0x0, sizeof(pubKeyUnion_t)); 96 | return ret; 97 | } 98 | 99 | /******************************************************************************/ 100 | /* 101 | 102 | */ 103 | void psFreePubKey(psPubKey_t *key) 104 | { 105 | if (key == NULL) { 106 | return; 107 | } 108 | if (key->type == PS_RSA) { 109 | #ifdef USE_RSA 110 | psRsaFreeKey((psRsaKey_t*)key->key); 111 | #else 112 | psFree(key->key, key->pool); 113 | #endif 114 | 115 | #ifdef USE_ECC 116 | } else if (key->type == PS_ECC) { 117 | #ifdef USE_NATIVE_ECC 118 | if (key->key->ecc.pubkey.x.dp) { 119 | pstm_clear(&(key->key->ecc.pubkey.x)); 120 | } 121 | if (key->key->ecc.pubkey.y.dp) { 122 | pstm_clear(&(key->key->ecc.pubkey.y)); 123 | } 124 | if (key->key->ecc.pubkey.z.dp) { 125 | pstm_clear(&(key->key->ecc.pubkey.z)); 126 | } 127 | if (key->key->ecc.k.dp) { 128 | pstm_clear(&(key->key->ecc.k)); 129 | } 130 | psFree(key->key, key->pool); 131 | #endif 132 | #ifdef USE_PKCS11_ECC 133 | psEccKey_t *ecc; 134 | ecc = &key->key->ecc; 135 | psEccFreeKey(&ecc); 136 | #endif 137 | #endif /* USE_ECC */ 138 | } else { 139 | /* 140 | If type not found, assume an empty key type 141 | */ 142 | psFree(key->key, key->pool); 143 | } 144 | psFree(key, key->pool); 145 | } 146 | 147 | /******************************************************************************/ 148 | -------------------------------------------------------------------------------- /firmware/base64.c: -------------------------------------------------------------------------------- 1 | /** 2 | * @file base64.c 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Base64 operations. 6 | */ 7 | /* 8 | * Copyright (c) 2013-2015 INSIDE Secure Corporation 9 | * Copyright (c) PeerSec Networks, 2002-2011 10 | * All Rights Reserved 11 | * 12 | * The latest version of this code is available at http://www.matrixssl.org 13 | * 14 | * This software is open source; you can redistribute it and/or modify 15 | * it under the terms of the GNU General Public License as published by 16 | * the Free Software Foundation; either version 2 of the License, or 17 | * (at your option) any later version. 18 | * 19 | * This General Public License does NOT permit incorporating this software 20 | * into proprietary programs. If you are unable to comply with the GPL, a 21 | * commercial license for this software may be purchased from INSIDE at 22 | * http://www.insidesecure.com/eng/Company/Locations 23 | * 24 | * This program is distributed in WITHOUT ANY WARRANTY; without even the 25 | * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 26 | * See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License 29 | * along with this program; if not, write to the Free Software 30 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 31 | * http://www.gnu.org/copyleft/gpl.html 32 | */ 33 | /******************************************************************************/ 34 | 35 | #include "cryptoApi.h" 36 | 37 | #ifdef USE_BASE64_DECODE 38 | 39 | static const unsigned char map[256] = { 40 | 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 41 | 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 42 | 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 43 | 255, 255, 255, 255, 255, 255, 255, 62, 255, 255, 255, 63, 44 | 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 255, 255, 45 | 255, 254, 255, 255, 255, 0, 1, 2, 3, 4, 5, 6, 46 | 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 47 | 19, 20, 21, 22, 23, 24, 25, 255, 255, 255, 255, 255, 48 | 255, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 49 | 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 50 | 49, 50, 51, 255, 255, 255, 255, 255, 255, 255, 255, 255, 51 | 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 52 | 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 53 | 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 54 | 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 55 | 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 56 | 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 57 | 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 58 | 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 59 | 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 60 | 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 61 | 255, 255, 255, 255 }; 62 | 63 | int32 psBase64decode(const unsigned char *in, uint32 len, 64 | unsigned char *out, uint32 *outlen) 65 | { 66 | unsigned long t, x, y, z; 67 | unsigned char c; 68 | int32 g; 69 | 70 | if (in == NULL || out == NULL || outlen == NULL) { 71 | psTraceCrypto("Arg failure to psBase64decode\n"); 72 | return PS_ARG_FAIL; 73 | } 74 | g = 3; 75 | for (x = y = z = t = 0; x < len; x++) { 76 | c = map[in[x]&0xFF]; 77 | if (c == 255) { 78 | continue; 79 | } 80 | /* 81 | the final = symbols are read and used to trim the remaining bytes 82 | */ 83 | if (c == 254) { 84 | c = 0; 85 | /* 86 | prevent g < 0 which would potentially allow an overflow later 87 | */ 88 | if (--g < 0) { 89 | psTraceCrypto("Negative g failure in psBase64decode\n"); 90 | return PS_LIMIT_FAIL; 91 | } 92 | } else if (g != 3) { 93 | /* 94 | we only allow = to be at the end 95 | */ 96 | psTraceCrypto("g failure in psBase64decode\n"); 97 | return PS_PARSE_FAIL; 98 | } 99 | 100 | t = (t<<6)|c; 101 | 102 | if (++y == 4) { 103 | if (z + g > *outlen) { 104 | psTraceCrypto("outlen too small for psBase64decode\n"); 105 | return PS_LIMIT_FAIL; 106 | } 107 | out[z++] = (unsigned char)((t>>16)&255); 108 | if (g > 1) { 109 | out[z++] = (unsigned char)((t>>8)&255); 110 | } 111 | if (g > 2) { 112 | out[z++] = (unsigned char)(t&255); 113 | } 114 | y = t = 0; 115 | } 116 | } 117 | if (y != 0) { 118 | psTraceCrypto("y failure in psBase64decode\n"); 119 | return PS_PARSE_FAIL; 120 | } 121 | *outlen = z; 122 | return PS_SUCCESS; 123 | } 124 | 125 | #endif /* USE_BASE64_DECODE */ 126 | 127 | /******************************************************************************/ 128 | -------------------------------------------------------------------------------- /firmware/2048_RSA.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 2048_RSA.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | static const unsigned char RSA2048[] = { 8 | 48, 130, 4, 4, 48, 130, 2, 236, 160, 3, 2, 1, 2, 9 | 2, 5, 50, 51, 52, 53, 54, 48, 13, 6, 9, 42, 134, 10 | 72, 134, 247, 13, 1, 1, 11, 5, 0, 48, 129, 150, 49, 11 | 53, 48, 51, 6, 3, 85, 4, 3, 12, 44, 83, 97, 109, 12 | 112, 108, 101, 32, 77, 97, 116, 114, 105, 120, 32, 82, 83, 13 | 65, 45, 50, 48, 52, 56, 32, 67, 101, 114, 116, 105, 102, 14 | 105, 99, 97, 116, 101, 32, 65, 117, 116, 104, 111, 114, 105, 15 | 116, 121, 49, 11, 48, 9, 6, 3, 85, 4, 6, 12, 2, 16 | 85, 83, 49, 11, 48, 9, 6, 3, 85, 4, 8, 12, 2, 17 | 87, 65, 49, 16, 48, 14, 6, 3, 85, 4, 7, 12, 7, 18 | 83, 101, 97, 116, 116, 108, 101, 49, 34, 48, 32, 6, 3, 19 | 85, 4, 10, 12, 25, 73, 78, 83, 73, 68, 69, 32, 83, 20 | 101, 99, 117, 114, 101, 32, 67, 111, 114, 112, 111, 114, 97, 21 | 116, 105, 111, 110, 49, 13, 48, 11, 6, 3, 85, 4, 11, 22 | 12, 4, 84, 101, 115, 116, 48, 30, 23, 13, 49, 52, 48, 23 | 51, 50, 52, 49, 54, 51, 57, 48, 51, 90, 23, 13, 49, 24 | 55, 48, 51, 50, 51, 49, 54, 51, 57, 48, 51, 90, 48, 25 | 129, 140, 49, 43, 48, 41, 6, 3, 85, 4, 3, 12, 34, 26 | 83, 97, 109, 112, 108, 101, 32, 77, 97, 116, 114, 105, 120, 27 | 32, 82, 83, 65, 45, 50, 48, 52, 56, 32, 67, 101, 114, 28 | 116, 105, 102, 105, 99, 97, 116, 101, 49, 11, 48, 9, 6, 29 | 3, 85, 4, 6, 12, 2, 85, 83, 49, 11, 48, 9, 6, 30 | 3, 85, 4, 8, 12, 2, 87, 65, 49, 16, 48, 14, 6, 31 | 3, 85, 4, 7, 12, 7, 83, 101, 97, 116, 116, 108, 101, 32 | 49, 34, 48, 32, 6, 3, 85, 4, 10, 12, 25, 73, 78, 33 | 83, 73, 68, 69, 32, 83, 101, 99, 117, 114, 101, 32, 67, 34 | 111, 114, 112, 111, 114, 97, 116, 105, 111, 110, 49, 13, 48, 35 | 11, 6, 3, 85, 4, 11, 12, 4, 84, 101, 115, 116, 48, 36 | 130, 1, 34, 48, 13, 6, 9, 42, 134, 72, 134, 247, 13, 37 | 1, 1, 1, 5, 0, 3, 130, 1, 15, 0, 48, 130, 1, 38 | 10, 2, 130, 1, 1, 0, 173, 106, 51, 238, 162, 115, 109, 39 | 104, 186, 189, 45, 177, 181, 84, 240, 4, 20, 255, 189, 215, 40 | 91, 76, 105, 231, 244, 102, 127, 172, 6, 225, 149, 119, 107, 41 | 157, 154, 31, 81, 97, 230, 210, 146, 80, 220, 15, 93, 21, 42 | 12, 158, 211, 55, 166, 249, 119, 54, 118, 116, 218, 63, 80, 43 | 127, 156, 223, 82, 201, 50, 76, 218, 34, 49, 235, 148, 176, 44 | 207, 86, 238, 145, 134, 48, 169, 36, 41, 1, 47, 131, 209, 45 | 8, 115, 148, 151, 225, 219, 136, 133, 59, 225, 70, 43, 197, 46 | 255, 3, 234, 124, 116, 166, 137, 100, 65, 204, 136, 231, 156, 47 | 175, 51, 251, 72, 231, 91, 202, 111, 144, 117, 122, 66, 162, 48 | 186, 138, 78, 6, 56, 135, 81, 102, 150, 193, 239, 138, 226, 49 | 178, 231, 99, 87, 244, 250, 248, 166, 77, 77, 67, 40, 172, 50 | 58, 76, 238, 51, 93, 241, 33, 13, 212, 252, 158, 35, 240, 51 | 41, 216, 246, 85, 102, 54, 26, 41, 122, 109, 51, 47, 13, 52 | 48, 114, 248, 180, 43, 127, 233, 97, 117, 73, 221, 253, 59, 53 | 44, 41, 223, 123, 177, 150, 50, 12, 152, 196, 54, 60, 216, 54 | 12, 130, 211, 199, 244, 240, 244, 196, 226, 124, 212, 86, 174, 55 | 116, 96, 252, 194, 233, 68, 218, 244, 116, 18, 5, 106, 79, 56 | 188, 186, 187, 76, 4, 170, 67, 157, 80, 136, 167, 162, 56, 57 | 115, 90, 1, 1, 64, 205, 210, 124, 121, 200, 120, 220, 38, 58 | 68, 229, 2, 3, 1, 0, 1, 163, 97, 48, 95, 48, 31, 59 | 6, 3, 85, 29, 35, 4, 24, 48, 22, 128, 20, 244, 159, 60 | 233, 145, 67, 172, 28, 155, 221, 7, 64, 45, 105, 103, 60, 61 | 239, 212, 234, 219, 84, 48, 26, 6, 3, 85, 29, 17, 4, 62 | 19, 48, 17, 130, 9, 108, 111, 99, 97, 108, 104, 111, 115, 63 | 116, 135, 4, 127, 0, 0, 1, 48, 32, 6, 3, 85, 29, 64 | 37, 1, 1, 255, 4, 22, 48, 20, 6, 8, 43, 6, 1, 65 | 5, 5, 7, 3, 1, 6, 8, 43, 6, 1, 5, 5, 7, 66 | 3, 2, 48, 13, 6, 9, 42, 134, 72, 134, 247, 13, 1, 67 | 1, 11, 5, 0, 3, 130, 1, 1, 0, 1, 6, 143, 46, 68 | 108, 130, 140, 252, 207, 166, 246, 175, 252, 184, 137, 72, 158, 69 | 249, 227, 250, 155, 114, 204, 18, 49, 177, 126, 11, 157, 198, 70 | 86, 39, 222, 236, 3, 222, 3, 173, 46, 178, 226, 5, 125, 71 | 188, 162, 79, 232, 167, 251, 224, 74, 30, 121, 84, 130, 53, 72 | 95, 242, 110, 6, 196, 42, 42, 129, 183, 209, 237, 40, 66, 73 | 181, 130, 166, 254, 98, 77, 4, 88, 95, 83, 157, 144, 238, 74 | 198, 76, 210, 21, 222, 47, 237, 28, 161, 24, 239, 162, 211, 75 | 157, 113, 122, 200, 250, 206, 75, 166, 198, 191, 240, 173, 176, 76 | 221, 46, 78, 179, 47, 111, 237, 174, 148, 183, 145, 41, 137, 77 | 119, 122, 160, 137, 177, 111, 149, 164, 21, 125, 27, 4, 65, 78 | 236, 197, 70, 137, 53, 36, 185, 222, 237, 231, 93, 113, 19, 79 | 215, 158, 61, 162, 4, 230, 142, 124, 248, 156, 248, 39, 27, 80 | 42, 219, 66, 227, 137, 208, 87, 110, 183, 240, 20, 147, 27, 81 | 68, 200, 206, 172, 35, 203, 141, 10, 175, 75, 87, 25, 163, 82 | 86, 18, 6, 239, 197, 29, 210, 130, 160, 84, 10, 171, 187, 83 | 149, 75, 48, 140, 237, 251, 178, 195, 138, 199, 235, 240, 89, 84 | 72, 216, 53, 199, 124, 204, 167, 251, 168, 103, 93, 255, 247, 85 | 46, 117, 131, 173, 131, 21, 50, 40, 222, 185, 208, 142, 242, 86 | 107, 194, 201, 220, 43, 35, 191, 74, 63, 59, 175, 127, 181, 87 | 211, 163, 186, 230, 35}; 88 | -------------------------------------------------------------------------------- /firmware/sampleCerts/ECDH_RSA/2048_ECDH-RSA_CA.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 2048_ECDH-RSA_CA.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | unsigned char ECDHRSA2048CA[] = { 8 | 48, 130, 3, 251, 48, 130, 2, 227, 160, 3, 2, 1, 2, 9 | 2, 5, 49, 49, 48, 48, 48, 48, 13, 6, 9, 42, 134, 10 | 72, 134, 247, 13, 1, 1, 11, 5, 0, 48, 129, 170, 49, 11 | 73, 48, 71, 6, 3, 85, 4, 3, 12, 64, 83, 97, 109, 12 | 112, 108, 101, 32, 77, 97, 116, 114, 105, 120, 32, 82, 83, 13 | 65, 45, 50, 48, 52, 56, 32, 67, 101, 114, 116, 105, 102, 14 | 105, 99, 97, 116, 101, 32, 65, 117, 116, 104, 111, 114, 105, 15 | 116, 121, 32, 102, 111, 114, 32, 69, 67, 68, 72, 95, 82, 16 | 83, 65, 32, 115, 117, 105, 116, 101, 115, 49, 11, 48, 9, 17 | 6, 3, 85, 4, 6, 12, 2, 85, 83, 49, 11, 48, 9, 18 | 6, 3, 85, 4, 8, 12, 2, 87, 65, 49, 16, 48, 14, 19 | 6, 3, 85, 4, 7, 12, 7, 83, 101, 97, 116, 116, 108, 20 | 101, 49, 34, 48, 32, 6, 3, 85, 4, 10, 12, 25, 73, 21 | 110, 115, 105, 100, 101, 32, 83, 101, 99, 117, 114, 101, 32, 22 | 67, 111, 114, 112, 111, 114, 97, 116, 105, 111, 110, 49, 13, 23 | 48, 11, 6, 3, 85, 4, 11, 12, 4, 84, 101, 115, 116, 24 | 48, 30, 23, 13, 49, 52, 48, 51, 49, 51, 50, 51, 51, 25 | 55, 49, 54, 90, 23, 13, 49, 55, 48, 51, 49, 50, 50, 26 | 51, 51, 55, 49, 54, 90, 48, 129, 170, 49, 73, 48, 71, 27 | 6, 3, 85, 4, 3, 12, 64, 83, 97, 109, 112, 108, 101, 28 | 32, 77, 97, 116, 114, 105, 120, 32, 82, 83, 65, 45, 50, 29 | 48, 52, 56, 32, 67, 101, 114, 116, 105, 102, 105, 99, 97, 30 | 116, 101, 32, 65, 117, 116, 104, 111, 114, 105, 116, 121, 32, 31 | 102, 111, 114, 32, 69, 67, 68, 72, 95, 82, 83, 65, 32, 32 | 115, 117, 105, 116, 101, 115, 49, 11, 48, 9, 6, 3, 85, 33 | 4, 6, 12, 2, 85, 83, 49, 11, 48, 9, 6, 3, 85, 34 | 4, 8, 12, 2, 87, 65, 49, 16, 48, 14, 6, 3, 85, 35 | 4, 7, 12, 7, 83, 101, 97, 116, 116, 108, 101, 49, 34, 36 | 48, 32, 6, 3, 85, 4, 10, 12, 25, 73, 110, 115, 105, 37 | 100, 101, 32, 83, 101, 99, 117, 114, 101, 32, 67, 111, 114, 38 | 112, 111, 114, 97, 116, 105, 111, 110, 49, 13, 48, 11, 6, 39 | 3, 85, 4, 11, 12, 4, 84, 101, 115, 116, 48, 130, 1, 40 | 34, 48, 13, 6, 9, 42, 134, 72, 134, 247, 13, 1, 1, 41 | 1, 5, 0, 3, 130, 1, 15, 0, 48, 130, 1, 10, 2, 42 | 130, 1, 1, 0, 183, 154, 29, 250, 115, 103, 178, 210, 143, 43 | 131, 146, 83, 240, 184, 185, 156, 118, 11, 230, 53, 35, 91, 44 | 60, 204, 239, 28, 32, 115, 251, 87, 32, 180, 82, 138, 12, 45 | 240, 132, 176, 46, 245, 91, 56, 130, 133, 121, 211, 43, 45, 46 | 103, 251, 59, 185, 126, 18, 93, 76, 93, 27, 90, 182, 220, 47 | 194, 50, 217, 43, 61, 125, 113, 12, 139, 59, 249, 245, 11, 48 | 136, 247, 176, 17, 105, 249, 86, 109, 230, 87, 210, 40, 62, 49 | 1, 201, 80, 94, 193, 65, 22, 234, 58, 162, 147, 235, 120, 50 | 253, 122, 110, 90, 160, 21, 25, 159, 216, 149, 13, 111, 125, 51 | 135, 141, 42, 207, 107, 197, 234, 75, 72, 101, 55, 242, 186, 52 | 6, 59, 33, 78, 153, 6, 121, 115, 121, 145, 206, 148, 52, 53 | 242, 104, 222, 104, 57, 17, 190, 190, 219, 255, 27, 92, 34, 54 | 162, 200, 85, 3, 117, 34, 80, 109, 224, 100, 207, 224, 34, 55 | 134, 173, 123, 35, 7, 156, 41, 0, 237, 132, 241, 199, 154, 56 | 15, 20, 66, 212, 157, 75, 191, 59, 165, 94, 121, 66, 26, 57 | 79, 217, 14, 253, 173, 215, 228, 122, 86, 133, 176, 108, 117, 58 | 222, 161, 244, 207, 214, 107, 225, 100, 123, 87, 242, 191, 195, 59 | 92, 196, 110, 32, 0, 176, 102, 133, 138, 231, 173, 68, 23, 60 | 207, 111, 199, 232, 1, 167, 124, 69, 176, 6, 248, 206, 9, 61 | 142, 149, 89, 63, 4, 252, 146, 174, 49, 161, 205, 92, 211, 62 | 2, 3, 1, 0, 1, 163, 38, 48, 36, 48, 18, 6, 3, 63 | 85, 29, 19, 1, 1, 255, 4, 8, 48, 6, 1, 1, 255, 64 | 2, 1, 0, 48, 14, 6, 3, 85, 29, 15, 1, 1, 255, 65 | 4, 4, 3, 2, 0, 4, 48, 13, 6, 9, 42, 134, 72, 66 | 134, 247, 13, 1, 1, 11, 5, 0, 3, 130, 1, 1, 0, 67 | 166, 239, 77, 200, 194, 203, 224, 78, 200, 212, 60, 11, 97, 68 | 94, 115, 135, 129, 86, 211, 109, 9, 162, 188, 157, 209, 172, 69 | 186, 1, 130, 166, 90, 243, 6, 251, 55, 6, 9, 207, 218, 70 | 110, 98, 4, 56, 64, 72, 202, 193, 111, 14, 34, 65, 200, 71 | 222, 162, 31, 5, 202, 101, 19, 20, 215, 91, 170, 128, 246, 72 | 255, 10, 230, 190, 71, 202, 85, 41, 12, 240, 200, 52, 141, 73 | 219, 105, 110, 1, 232, 157, 185, 200, 85, 134, 152, 39, 76, 74 | 146, 202, 248, 184, 197, 223, 155, 202, 157, 9, 192, 89, 200, 75 | 34, 205, 178, 0, 242, 10, 160, 143, 227, 246, 229, 126, 150, 76 | 170, 199, 174, 162, 225, 123, 238, 133, 185, 96, 31, 177, 41, 77 | 220, 66, 109, 202, 216, 184, 230, 132, 111, 98, 188, 122, 131, 78 | 229, 123, 184, 171, 162, 213, 61, 95, 245, 215, 0, 16, 220, 79 | 128, 174, 62, 68, 20, 39, 94, 142, 138, 77, 65, 244, 159, 80 | 214, 35, 139, 126, 198, 210, 141, 60, 142, 235, 100, 116, 130, 81 | 118, 111, 123, 13, 10, 159, 39, 206, 215, 76, 157, 226, 106, 82 | 20, 198, 254, 226, 206, 154, 30, 231, 69, 81, 148, 71, 17, 83 | 120, 219, 233, 190, 193, 74, 196, 226, 43, 98, 160, 173, 184, 84 | 31, 65, 227, 93, 118, 156, 56, 209, 143, 115, 169, 53, 169, 85 | 111, 183, 132, 165, 150, 206, 223, 183, 29, 25, 105, 183, 64, 86 | 197, 214, 243, 184, 176, 77, 28, 153, 158}; 87 | -------------------------------------------------------------------------------- /firmware/ALL_RSA_CAS.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIDDTCCAnagAwIBAgIEMTIzNDANBgkqhkiG9w0BAQsFADCBljE1MDMGA1UEAwws 3 | U2FtcGxlIE1hdHJpeCBSU0EtMTAyNCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxCzAJ 4 | BgNVBAYMAlVTMQswCQYDVQQIDAJXQTEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UE 5 | CgwZSU5TSURFIFNlY3VyZSBDb3Jwb3JhdGlvbjENMAsGA1UECwwEVGVzdDAeFw0x 6 | NDAzMjQxNjI2NDZaFw0xNzAzMjMxNjI2NDZaMIGWMTUwMwYDVQQDDCxTYW1wbGUg 7 | TWF0cml4IFJTQS0xMDI0IENlcnRpZmljYXRlIEF1dGhvcml0eTELMAkGA1UEBgwC 8 | VVMxCzAJBgNVBAgMAldBMRAwDgYDVQQHDAdTZWF0dGxlMSIwIAYDVQQKDBlJTlNJ 9 | REUgU2VjdXJlIENvcnBvcmF0aW9uMQ0wCwYDVQQLDARUZXN0MIGfMA0GCSqGSIb3 10 | DQEBAQUAA4GNADCBiQKBgQC/QFDy4jg5ITh0kSJxBB3GMTVKqTfGsWEU4afebxkP 11 | zxSg6lRz1iCdNzSAu8Z0jE2cURYN1jTnpwS84JPoH5o+mNxdFuPV4YYi32KJm2fO 12 | hNowdqjNIMcbNXCo4qot2qiMMLUsIgzlUxG0tRYNHLmf9eBCwegD0rZ7cS6nAYpp 13 | +QIDAQABo2YwZDASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBT3JIiDk4lN 14 | 2QNVwTgnF0Dl7OHUsDAfBgNVHSMEGDAWgBT3JIiDk4lN2QNVwTgnF0Dl7OHUsDAO 15 | BgNVHQ8BAf8EBAMCAAQwDQYJKoZIhvcNAQELBQADgYEAQZbZwTjfdN7kf8Z618rd 16 | 7/nMdXmDrDdz3WSbCpiEf51mQsfNjJgc9Xox1RdnqMlijqI2ivza+GTNnGt4Le98 17 | 88rK44bHhfeTJ1FDVPe8udAnGG3Gug7gxResVSOitB8cVgwngURCQM8QGyIM04mf 18 | CfLzM2vTHDuSp6tevTrpgow= 19 | -----END CERTIFICATE----- 20 | -----BEGIN CERTIFICATE----- 21 | MIIEFDCCAvygAwIBAgIGMjM0NTY3MA0GCSqGSIb3DQEBCwUAMIGWMTUwMwYDVQQD 22 | DCxTYW1wbGUgTWF0cml4IFJTQS0yMDQ4IENlcnRpZmljYXRlIEF1dGhvcml0eTEL 23 | MAkGA1UEBgwCVVMxCzAJBgNVBAgMAldBMRAwDgYDVQQHDAdTZWF0dGxlMSIwIAYD 24 | VQQKDBlJTlNJREUgU2VjdXJlIENvcnBvcmF0aW9uMQ0wCwYDVQQLDARUZXN0MB4X 25 | DTE0MDMyNDE2MjcwM1oXDTE3MDMyMzE2MjcwM1owgZYxNTAzBgNVBAMMLFNhbXBs 26 | ZSBNYXRyaXggUlNBLTIwNDggQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQswCQYDVQQG 27 | DAJVUzELMAkGA1UECAwCV0ExEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoMGUlO 28 | U0lERSBTZWN1cmUgQ29ycG9yYXRpb24xDTALBgNVBAsMBFRlc3QwggEiMA0GCSqG 29 | SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDMq1tAOwpLwINcaOX0AFoVGuN486BBI5Na 30 | wcb6BJCjRY4wXJGKbYS/eMDLse5lr6pduvE1BLVAlO28jPXrobuPovq3quxTd4uv 31 | ttF48VhZAGyPmEQdc0zhGoqwYYDdwN+bdF/QfGZmI9wwnE3g7NpuBMTIYqIhEe8o 32 | 3G3pMbd6nsrbusKckx4kqZp0vqQmTrtfeQTTQXIFolOaRCABSERdM3JjP6qidwn1 33 | w+ImtRKHIa1K55mZ7z2y+r2ywmrOpjqFej8glLoVf3qC6W++oLrq0OQ6Oai7VWC4 34 | KDrRowdQUfWAK/Raght9VqkxBCOxNNJx1RySgtW2/HSGBmrx6HLRAgMBAAGjZjBk 35 | MBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFPSf6ZFDrByb3QdALWlnPO/U 36 | 6ttUMB8GA1UdIwQYMBaAFPSf6ZFDrByb3QdALWlnPO/U6ttUMA4GA1UdDwEB/wQE 37 | AwIABDANBgkqhkiG9w0BAQsFAAOCAQEAgGFSYSJN/EfPVgjNsBO1rTu2CnFXwsD+ 38 | Af+JYBho7uCBHpxDSzGmW8glhEsRKl76p79njjrPj27qOu/axDJhqV0ri/SLK4rR 39 | nRjXD9Kb4foAr9b+/0cdelXpgz7K70sN6CxC9r9tgQpSr6nj+RnJVkBdWB7x/jeO 40 | UBf6D2ackY6I51zJMIw1FpJwejSqxPC6kBVHLK+uhgy1leUoYqMgVr+3GktP6fPE 41 | GPC/w9N6z+lAn4iIYHVrmLU9qzDKW5XHovhmRwNxicBX8uuzqUnyEP6ofWuQZvif 42 | Rp+0LF/jFffTRNfpFz1RGYwuTbHLN3CUViiMxWyTE7PrGgxwTtQ1Lw== 43 | -----END CERTIFICATE----- 44 | -----BEGIN CERTIFICATE----- 45 | MIIGEzCCA/ugAwIBAgIFMzQ1NjcwDQYJKoZIhvcNAQELBQAwgZYxNTAzBgNVBAMM 46 | LFNhbXBsZSBNYXRyaXggUlNBLTQwOTYgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQsw 47 | CQYDVQQGDAJVUzELMAkGA1UECAwCV0ExEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNV 48 | BAoMGUlOU0lERSBTZWN1cmUgQ29ycG9yYXRpb24xDTALBgNVBAsMBFRlc3QwHhcN 49 | MTQwMzI0MTY0MTAzWhcNMTcwMzIzMTY0MTAzWjCBljE1MDMGA1UEAwwsU2FtcGxl 50 | IE1hdHJpeCBSU0EtNDA5NiBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxCzAJBgNVBAYM 51 | AlVTMQswCQYDVQQIDAJXQTEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZSU5T 52 | SURFIFNlY3VyZSBDb3Jwb3JhdGlvbjENMAsGA1UECwwEVGVzdDCCAiIwDQYJKoZI 53 | hvcNAQEBBQADggIPADCCAgoCggIBALuxRESh1dkN4jZJJr5pyw6ISijvrixPnSXF 54 | ir+eUeR3VktNdZEdStLMswsv5EJy+rKf0ifgDMP+gzqWoNSlmpRgugy/q45ozx/E 55 | cm1XzmAjTAn0+GvGWdrXzDrCmIO1/DdDjxwASo4NSfXx66ZPxTENby70Zgr13Ouv 56 | HHFj4VYTrlrK/JixYxBC8JuLkOPT1+G5Xw/L/cd0a1RfLdFxugyUdDPAPuGXZw8q 57 | Xe5O3Hv+3StkZUEZsG2UVRgMb3A8wiRXofy+6/Dw+YWio2aCJ/tww9xyX+dg1zsM 58 | hWvBxVhXu63wTQGjypGcS5cVZuMZKliDROIYGfyQSXGwWXU65nT5bEP+AsnAuagJ 59 | gDk86oZ9YkuUQ/JKYzREAyI1mLabZ8aTZICUqJne14cDGpgc+dBvearejC+1Iqn/ 60 | EfyqWy9MxeZEZYXkune9M4NoM1bRV0BQAIhpahaJT++QZ1ZheWmihJ/tkctMu6/y 61 | ne/jMmw3ZOp1/8XsiL1rQ/5oFNTHm/SudOrhtGMqDvWcvp9uTo8JPkONT7MFJf76 62 | e+Yd5uggG0wwPeC3dmkL8QcDH49Xv1XPEZi2md97m76YFrvSgcHrnwiufkSpp3lJ 63 | AqyKgbySxtHvzJ0UsvQJrxyyCwIy3c38CYM+HDNYK3fVSKZbdZ9mMRFTR8jHRAnJ 64 | k8QcMghpAgMBAAGjZjBkMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFGxC 65 | hMXgS9xw8pnQHINK4lFHZR76MB8GA1UdIwQYMBaAFGxChMXgS9xw8pnQHINK4lFH 66 | ZR76MA4GA1UdDwEB/wQEAwIABDANBgkqhkiG9w0BAQsFAAOCAgEAZrRYmGcb285j 67 | X8NxiaCtmRDAJ7xbw6Cxzbbt3BYGMzpSYlUHfGy+x+wWa38mfHVwKRkViEBdJfpQ 68 | OQxqPMcQyqm5RDBmk0kPChpveKFDs0hNapE+qb682ZR4KeDEh5eUmQSUKiHwojGY 69 | /SOPwDLisfbkhl89lG+Elz7On7d9hv6oKCzZuNDvmn/KPNqvBw/f0xhdJ9aeghsJ 70 | 1FE6dX43tuJc5kQ+UQclsub2DphEIw1fFew/YVZfQYRGO05qP01smrCFhbkp87MC 71 | lLXDlnjA1WES9mEKi5uA1jykGg1NeXN2pI+a6Xbzi3a5baL1J7vGrOQlAboDNTUC 72 | yM+teRwflD6y27in6G6LRBWir0pnm7poSYXuk8Rfl3fgtJCOWewmCKRStJ0Ve1w/ 73 | Xltbgmn/+Y3+Dg0iFN05aqIDXd/+YByS+R8Jra2VM7SwfExjnzDUhn2KSwb5ambN 74 | hg78/MJlqWE+7azV9MWVj2QanhRv4Ji4lswOorEaIAdgztKcMDDgU/wf7+Ejqz13 75 | yNBx3ayeHKR+N3Z5/ZBbwneBz0EfEJwXXLq6DMrw3Rq7Kl2oxjwoE92j1aPMNCyw 76 | CUKj8ZXXStWyr6OtwnJnSG1dWiN/tjn3pc3DAZt+kVetafpqG10lZ8geTAhsG+XW 77 | N6DJmMNmZGbVcjBcsxXIZiIFLtphqco= 78 | -----END CERTIFICATE----- 79 | -------------------------------------------------------------------------------- /firmware/2048_RSA_CA.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 2048_RSA_CA.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | static const unsigned char RSA2048CA[] = { 8 | 48, 130, 4, 20, 48, 130, 2, 252, 160, 3, 2, 1, 2, 9 | 2, 6, 50, 51, 52, 53, 54, 55, 48, 13, 6, 9, 42, 10 | 134, 72, 134, 247, 13, 1, 1, 11, 5, 0, 48, 129, 150, 11 | 49, 53, 48, 51, 6, 3, 85, 4, 3, 12, 44, 83, 97, 12 | 109, 112, 108, 101, 32, 77, 97, 116, 114, 105, 120, 32, 82, 13 | 83, 65, 45, 50, 48, 52, 56, 32, 67, 101, 114, 116, 105, 14 | 102, 105, 99, 97, 116, 101, 32, 65, 117, 116, 104, 111, 114, 15 | 105, 116, 121, 49, 11, 48, 9, 6, 3, 85, 4, 6, 12, 16 | 2, 85, 83, 49, 11, 48, 9, 6, 3, 85, 4, 8, 12, 17 | 2, 87, 65, 49, 16, 48, 14, 6, 3, 85, 4, 7, 12, 18 | 7, 83, 101, 97, 116, 116, 108, 101, 49, 34, 48, 32, 6, 19 | 3, 85, 4, 10, 12, 25, 73, 78, 83, 73, 68, 69, 32, 20 | 83, 101, 99, 117, 114, 101, 32, 67, 111, 114, 112, 111, 114, 21 | 97, 116, 105, 111, 110, 49, 13, 48, 11, 6, 3, 85, 4, 22 | 11, 12, 4, 84, 101, 115, 116, 48, 30, 23, 13, 49, 52, 23 | 48, 51, 50, 52, 49, 54, 50, 55, 48, 51, 90, 23, 13, 24 | 49, 55, 48, 51, 50, 51, 49, 54, 50, 55, 48, 51, 90, 25 | 48, 129, 150, 49, 53, 48, 51, 6, 3, 85, 4, 3, 12, 26 | 44, 83, 97, 109, 112, 108, 101, 32, 77, 97, 116, 114, 105, 27 | 120, 32, 82, 83, 65, 45, 50, 48, 52, 56, 32, 67, 101, 28 | 114, 116, 105, 102, 105, 99, 97, 116, 101, 32, 65, 117, 116, 29 | 104, 111, 114, 105, 116, 121, 49, 11, 48, 9, 6, 3, 85, 30 | 4, 6, 12, 2, 85, 83, 49, 11, 48, 9, 6, 3, 85, 31 | 4, 8, 12, 2, 87, 65, 49, 16, 48, 14, 6, 3, 85, 32 | 4, 7, 12, 7, 83, 101, 97, 116, 116, 108, 101, 49, 34, 33 | 48, 32, 6, 3, 85, 4, 10, 12, 25, 73, 78, 83, 73, 34 | 68, 69, 32, 83, 101, 99, 117, 114, 101, 32, 67, 111, 114, 35 | 112, 111, 114, 97, 116, 105, 111, 110, 49, 13, 48, 11, 6, 36 | 3, 85, 4, 11, 12, 4, 84, 101, 115, 116, 48, 130, 1, 37 | 34, 48, 13, 6, 9, 42, 134, 72, 134, 247, 13, 1, 1, 38 | 1, 5, 0, 3, 130, 1, 15, 0, 48, 130, 1, 10, 2, 39 | 130, 1, 1, 0, 204, 171, 91, 64, 59, 10, 75, 192, 131, 40 | 92, 104, 229, 244, 0, 90, 21, 26, 227, 120, 243, 160, 65, 41 | 35, 147, 90, 193, 198, 250, 4, 144, 163, 69, 142, 48, 92, 42 | 145, 138, 109, 132, 191, 120, 192, 203, 177, 238, 101, 175, 170, 43 | 93, 186, 241, 53, 4, 181, 64, 148, 237, 188, 140, 245, 235, 44 | 161, 187, 143, 162, 250, 183, 170, 236, 83, 119, 139, 175, 182, 45 | 209, 120, 241, 88, 89, 0, 108, 143, 152, 68, 29, 115, 76, 46 | 225, 26, 138, 176, 97, 128, 221, 192, 223, 155, 116, 95, 208, 47 | 124, 102, 102, 35, 220, 48, 156, 77, 224, 236, 218, 110, 4, 48 | 196, 200, 98, 162, 33, 17, 239, 40, 220, 109, 233, 49, 183, 49 | 122, 158, 202, 219, 186, 194, 156, 147, 30, 36, 169, 154, 116, 50 | 190, 164, 38, 78, 187, 95, 121, 4, 211, 65, 114, 5, 162, 51 | 83, 154, 68, 32, 1, 72, 68, 93, 51, 114, 99, 63, 170, 52 | 162, 119, 9, 245, 195, 226, 38, 181, 18, 135, 33, 173, 74, 53 | 231, 153, 153, 239, 61, 178, 250, 189, 178, 194, 106, 206, 166, 54 | 58, 133, 122, 63, 32, 148, 186, 21, 127, 122, 130, 233, 111, 55 | 190, 160, 186, 234, 208, 228, 58, 57, 168, 187, 85, 96, 184, 56 | 40, 58, 209, 163, 7, 80, 81, 245, 128, 43, 244, 90, 130, 57 | 27, 125, 86, 169, 49, 4, 35, 177, 52, 210, 113, 213, 28, 58 | 146, 130, 213, 182, 252, 116, 134, 6, 106, 241, 232, 114, 209, 59 | 2, 3, 1, 0, 1, 163, 102, 48, 100, 48, 18, 6, 3, 60 | 85, 29, 19, 1, 1, 255, 4, 8, 48, 6, 1, 1, 255, 61 | 2, 1, 0, 48, 29, 6, 3, 85, 29, 14, 4, 22, 4, 62 | 20, 244, 159, 233, 145, 67, 172, 28, 155, 221, 7, 64, 45, 63 | 105, 103, 60, 239, 212, 234, 219, 84, 48, 31, 6, 3, 85, 64 | 29, 35, 4, 24, 48, 22, 128, 20, 244, 159, 233, 145, 67, 65 | 172, 28, 155, 221, 7, 64, 45, 105, 103, 60, 239, 212, 234, 66 | 219, 84, 48, 14, 6, 3, 85, 29, 15, 1, 1, 255, 4, 67 | 4, 3, 2, 0, 4, 48, 13, 6, 9, 42, 134, 72, 134, 68 | 247, 13, 1, 1, 11, 5, 0, 3, 130, 1, 1, 0, 128, 69 | 97, 82, 97, 34, 77, 252, 71, 207, 86, 8, 205, 176, 19, 70 | 181, 173, 59, 182, 10, 113, 87, 194, 192, 254, 1, 255, 137, 71 | 96, 24, 104, 238, 224, 129, 30, 156, 67, 75, 49, 166, 91, 72 | 200, 37, 132, 75, 17, 42, 94, 250, 167, 191, 103, 142, 58, 73 | 207, 143, 110, 234, 58, 239, 218, 196, 50, 97, 169, 93, 43, 74 | 139, 244, 139, 43, 138, 209, 157, 24, 215, 15, 210, 155, 225, 75 | 250, 0, 175, 214, 254, 255, 71, 29, 122, 85, 233, 131, 62, 76 | 202, 239, 75, 13, 232, 44, 66, 246, 191, 109, 129, 10, 82, 77 | 175, 169, 227, 249, 25, 201, 86, 64, 93, 88, 30, 241, 254, 78 | 55, 142, 80, 23, 250, 15, 102, 156, 145, 142, 136, 231, 92, 79 | 201, 48, 140, 53, 22, 146, 112, 122, 52, 170, 196, 240, 186, 80 | 144, 21, 71, 44, 175, 174, 134, 12, 181, 149, 229, 40, 98, 81 | 163, 32, 86, 191, 183, 26, 75, 79, 233, 243, 196, 24, 240, 82 | 191, 195, 211, 122, 207, 233, 64, 159, 136, 136, 96, 117, 107, 83 | 152, 181, 61, 171, 48, 202, 91, 149, 199, 162, 248, 102, 71, 84 | 3, 113, 137, 192, 87, 242, 235, 179, 169, 73, 242, 16, 254, 85 | 168, 125, 107, 144, 102, 248, 159, 70, 159, 180, 44, 95, 227, 86 | 21, 247, 211, 68, 215, 233, 23, 61, 81, 25, 140, 46, 77, 87 | 177, 203, 55, 112, 148, 86, 40, 140, 197, 108, 147, 19, 179, 88 | 235, 26, 12, 112, 78, 212, 53, 47}; 89 | -------------------------------------------------------------------------------- /firmware/sampleCerts/EC/ALL_EC_CAS.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICYzCCAhmgAwIBAgICG1gwCgYIKoZIzj0EAwIwgZoxCzAJBgNVBAYTAlVTMQsw 3 | CQYDVQQIDAJXQTEQMA4GA1UEBwwHU2VhdHRsZTEjMCEGA1UECgwaSW5zaWRlIFNl 4 | Y3VyZSBDb3Jwb3JhdGlvbi4xDTALBgNVBAsMBFRlc3QxODA2BgNVBAMML01hdHJp 5 | eFNTTCBTYW1wbGUgQ0EgKEVsbGlwdGljIGN1cnZlIHByaW1lMTkydjEpMB4XDTE0 6 | MDMxMzIzMTgyNVoXDTE3MDMxMjIzMTgyNVowgZoxCzAJBgNVBAYTAlVTMQswCQYD 7 | VQQIDAJXQTEQMA4GA1UEBwwHU2VhdHRsZTEjMCEGA1UECgwaSW5zaWRlIFNlY3Vy 8 | ZSBDb3Jwb3JhdGlvbi4xDTALBgNVBAsMBFRlc3QxODA2BgNVBAMML01hdHJpeFNT 9 | TCBTYW1wbGUgQ0EgKEVsbGlwdGljIGN1cnZlIHByaW1lMTkydjEpMEkwEwYHKoZI 10 | zj0CAQYIKoZIzj0DAQEDMgAEWe6hXbueMoJ8mFq4cGMHr/INsxUnjAF2QbZqmqFF 11 | iCP7C+Y9gNYKzPsAV+4Yk2Tgo10wWzALBgNVHQ8EBAMCAgQwHQYDVR0OBBYEFJM/ 12 | s1o4Vd201m6EzGbOjCZbHBcgMB8GA1UdIwQYMBaAFJM/s1o4Vd201m6EzGbOjCZb 13 | HBcgMAwGA1UdEwQFMAMBAf8wCgYIKoZIzj0EAwIDOAAwNQIZAOyT4nuxbPSKKLwu 14 | 2bdAb2fkNdGimcwB8QIYcUK//Ei/ou/Zv+njpS5HPhP9xeHFCQdy 15 | -----END CERTIFICATE----- 16 | -----BEGIN CERTIFICATE----- 17 | MIICbDCCAhqgAwIBAgICH0AwCgYIKoZIzj0EAwIwgZgxCzAJBgNVBAYTAlVTMQsw 18 | CQYDVQQIDAJXQTEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZSW5zaWRlIFNl 19 | Y3VyZSBDb3Jwb3JhdGlvbjENMAsGA1UECwwEVGVzdDE3MDUGA1UEAwwuTWF0cml4 20 | U1NMIFNhbXBsZSBDQSAoRWxsaXB0aWMgY3VydmUgc2VjcDIyNHIxKTAeFw0xNDAz 21 | MTMyMzIwNDBaFw0xNzAzMTIyMzIwNDBaMIGYMQswCQYDVQQGEwJVUzELMAkGA1UE 22 | CAwCV0ExEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoMGUluc2lkZSBTZWN1cmUg 23 | Q29ycG9yYXRpb24xDTALBgNVBAsMBFRlc3QxNzA1BgNVBAMMLk1hdHJpeFNTTCBT 24 | YW1wbGUgQ0EgKEVsbGlwdGljIGN1cnZlIHNlY3AyMjRyMSkwTjAQBgcqhkjOPQIB 25 | BgUrgQQAIQM6AAT9C7N1JTVedaODi1F+/7geKoxbjs7X4cOaUCWNygwrn/o+U6wx 26 | Un9nppKmo9uolEsiMx1fX89IIaNdMFswCwYDVR0PBAQDAgIEMB0GA1UdDgQWBBTB 27 | L63E1QH4keLPwb7mCyLnLTtb2DAfBgNVHSMEGDAWgBTBL63E1QH4keLPwb7mCyLn 28 | LTtb2DAMBgNVHRMEBTADAQH/MAoGCCqGSM49BAMCA0AAMD0CHQD+HFazo7nVuHKc 29 | ItaAl1+HAiIXGvJE+bbrF0IzAhxEp0M7fcNHFaIBcVtv8Dalm9sL4BOWRwYvT/tJ 30 | -----END CERTIFICATE----- 31 | -----BEGIN CERTIFICATE----- 32 | MIICgDCCAiagAwIBAgIBATAKBggqhkjOPQQDAjCBmTELMAkGA1UEBhMCVVMxCzAJ 33 | BgNVBAgMAldBMRAwDgYDVQQHDAdTZWF0dGxlMSIwIAYDVQQKDBlJbnNpZGUgU2Vj 34 | dXJlIENvcnBvcmF0aW9uMQ0wCwYDVQQLDARUZXN0MTgwNgYDVQQDDC9NYXRyaXhT 35 | U0wgU2FtcGxlIENBIChFbGxpcHRpYyBjdXJ2ZSBwcmltZTI1NnYxKTAeFw0xNDAz 36 | MTMyMzIxMjNaFw0xNzAzMTIyMzIxMjNaMIGZMQswCQYDVQQGEwJVUzELMAkGA1UE 37 | CAwCV0ExEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoMGUluc2lkZSBTZWN1cmUg 38 | Q29ycG9yYXRpb24xDTALBgNVBAsMBFRlc3QxODA2BgNVBAMML01hdHJpeFNTTCBT 39 | YW1wbGUgQ0EgKEVsbGlwdGljIGN1cnZlIHByaW1lMjU2djEpMFkwEwYHKoZIzj0C 40 | AQYIKoZIzj0DAQcDQgAE01reVhQI4kXRC6l3inBfh4y0Wy/NaXwFYX/p42a/gD+U 41 | iBmqiv+0KPYOuxR6OWVLK31SRJxcWwlpmBYxktrMWKNdMFswCwYDVR0PBAQDAgIE 42 | MB0GA1UdDgQWBBRpDvpHPm1A+Sl/929mhrh6NLsl6zAfBgNVHSMEGDAWgBRpDvpH 43 | Pm1A+Sl/929mhrh6NLsl6zAMBgNVHRMEBTADAQH/MAoGCCqGSM49BAMCA0gAMEUC 44 | IEJpv0FiyaZRsg7ZOQwMVUzDYheq6fOLugz54wmynerYAiEAggMh/X68RLcJiiXO 45 | WmaOeXJatBC1Fs5nAo+RXhxd76M= 46 | -----END CERTIFICATE----- 47 | -----BEGIN CERTIFICATE----- 48 | MIICvDCCAkKgAwIBAgICIygwCgYIKoZIzj0EAwMwgZgxCzAJBgNVBAYTAlVTMQsw 49 | CQYDVQQIDAJXQTEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZSW5zaWRlIFNl 50 | Y3VyZSBDb3Jwb3JhdGlvbjENMAsGA1UECwwEVGVzdDE3MDUGA1UEAwwuTWF0cml4 51 | U1NMIFNhbXBsZSBDQSAoRWxsaXB0aWMgY3VydmUgc2VjcDM4NHIxKTAeFw0xNDAz 52 | MTMyMzIxMjdaFw0xNzAzMTIyMzIxMjdaMIGYMQswCQYDVQQGEwJVUzELMAkGA1UE 53 | CAwCV0ExEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoMGUluc2lkZSBTZWN1cmUg 54 | Q29ycG9yYXRpb24xDTALBgNVBAsMBFRlc3QxNzA1BgNVBAMMLk1hdHJpeFNTTCBT 55 | YW1wbGUgQ0EgKEVsbGlwdGljIGN1cnZlIHNlY3AzODRyMSkwdjAQBgcqhkjOPQIB 56 | BgUrgQQAIgNiAASeBDSZ74olHYTy8kDE1dFTfVTsIDbfGuLkcPjTOaA5GD2x+i3s 57 | osFG322Uj97c0j0ZLxbsUlg6gMHDv4UnFkIH4ALx15XJEOywoJiKQrVR6CH7Ka/5 58 | RaiydhBG7+Ts38GjXTBbMAsGA1UdDwQEAwICBDAdBgNVHQ4EFgQURO38ixdCbmH2 59 | NZM9P4GXb2doWhswHwYDVR0jBBgwFoAURO38ixdCbmH2NZM9P4GXb2doWhswDAYD 60 | VR0TBAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA1GSuHNsU+JHIF9Tv0Is2bvZH 61 | ZeW26O3ktW1EuHBgobu7aBkpgqT61eefD7T5pNuVAjA+tjAGba3wJQi2MPrOhDMr 62 | 1sKubIXMQswCGQwYe1V7FzznzhRPdIApzZiHTUZYpN4= 63 | -----END CERTIFICATE----- 64 | -----BEGIN CERTIFICATE----- 65 | MIIDBjCCAmigAwIBAgICI/AwCgYIKoZIzj0EAwMwgZgxCzAJBgNVBAYTAlVTMQsw 66 | CQYDVQQIDAJXQTEQMA4GA1UEBwwHU2VhdHRsZTEiMCAGA1UECgwZSW5zaWRlIFNl 67 | Y3VyZSBDb3Jwb3JhdGlvbjENMAsGA1UECwwEVGVzdDE3MDUGA1UEAwwuTWF0cml4 68 | U1NMIFNhbXBsZSBDQSAoRWxsaXB0aWMgY3VydmUgc2VjcDUyMXIxKTAeFw0xNDAz 69 | MTMyMzIxMzFaFw0xNzAzMTIyMzIxMzFaMIGYMQswCQYDVQQGEwJVUzELMAkGA1UE 70 | CAwCV0ExEDAOBgNVBAcMB1NlYXR0bGUxIjAgBgNVBAoMGUluc2lkZSBTZWN1cmUg 71 | Q29ycG9yYXRpb24xDTALBgNVBAsMBFRlc3QxNzA1BgNVBAMMLk1hdHJpeFNTTCBT 72 | YW1wbGUgQ0EgKEVsbGlwdGljIGN1cnZlIHNlY3A1MjFyMSkwgZswEAYHKoZIzj0C 73 | AQYFK4EEACMDgYYABAErQ9iNn9UvnVUL/nILMteOQsQCl7PNdxWh6vZkNXJyZ7Nf 74 | dyZtb3crS6Ga24x2xNydYC07XgfxpXURInr175l3RADELacTwMeL1ZaSba6ElSUf 75 | sGh7iXW/Rraeoqxw9uwXbpguC6wTeF9UjAC9Ooxc16SGtZwEZ3Xg3E2KQkbs5F3x 76 | qqNdMFswCwYDVR0PBAQDAgIEMB0GA1UdDgQWBBQZsL6knYs8ROWGtReh1g26Qh24 77 | qTAfBgNVHSMEGDAWgBQZsL6knYs8ROWGtReh1g26Qh24qTAMBgNVHRMEBTADAQH/ 78 | MAoGCCqGSM49BAMDA4GLADCBhwJCATeYaKBrs5LTy2tQrnnBh0MA7SszDG4c7biJ 79 | 6jkDT6CAhXELKKpQEsH5lvU6kJ7ETHpkR+genp/kohNNRBM6cvekAkEziO9q01Ej 80 | 0GRBKt512ka1rJ1wbmzpUWJmtYd9MaynqRHxF5/BhTumhmXpkNZrPKiekEMuOItF 81 | MrBbzWh3D8M3fg== 82 | -----END CERTIFICATE----- 83 | -------------------------------------------------------------------------------- /firmware/sampleCerts/ECDH_RSA/521_ECDH-RSA.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 521_ECDH-RSA.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | unsigned char ECDHRSA521[] = { 8 | 48, 130, 4, 118, 48, 130, 3, 94, 160, 3, 2, 1, 2, 9 | 2, 2, 50, 200, 48, 13, 6, 9, 42, 134, 72, 134, 247, 10 | 13, 1, 1, 11, 5, 0, 48, 129, 170, 49, 73, 48, 71, 11 | 6, 3, 85, 4, 3, 12, 64, 83, 97, 109, 112, 108, 101, 12 | 32, 77, 97, 116, 114, 105, 120, 32, 82, 83, 65, 45, 50, 13 | 48, 52, 56, 32, 67, 101, 114, 116, 105, 102, 105, 99, 97, 14 | 116, 101, 32, 65, 117, 116, 104, 111, 114, 105, 116, 121, 32, 15 | 102, 111, 114, 32, 69, 67, 68, 72, 95, 82, 83, 65, 32, 16 | 115, 117, 105, 116, 101, 115, 49, 11, 48, 9, 6, 3, 85, 17 | 4, 6, 12, 2, 85, 83, 49, 11, 48, 9, 6, 3, 85, 18 | 4, 8, 12, 2, 87, 65, 49, 16, 48, 14, 6, 3, 85, 19 | 4, 7, 12, 7, 83, 101, 97, 116, 116, 108, 101, 49, 34, 20 | 48, 32, 6, 3, 85, 4, 10, 12, 25, 73, 110, 115, 105, 21 | 100, 101, 32, 83, 101, 99, 117, 114, 101, 32, 67, 111, 114, 22 | 112, 111, 114, 97, 116, 105, 111, 110, 49, 13, 48, 11, 6, 23 | 3, 85, 4, 11, 12, 4, 84, 101, 115, 116, 48, 30, 23, 24 | 13, 49, 52, 48, 51, 49, 51, 50, 51, 51, 56, 53, 57, 25 | 90, 23, 13, 49, 55, 48, 51, 49, 50, 50, 51, 51, 56, 26 | 53, 57, 90, 48, 129, 163, 49, 11, 48, 9, 6, 3, 85, 27 | 4, 6, 19, 2, 85, 83, 49, 11, 48, 9, 6, 3, 85, 28 | 4, 8, 12, 2, 87, 65, 49, 16, 48, 14, 6, 3, 85, 29 | 4, 7, 12, 7, 83, 101, 97, 116, 116, 108, 101, 49, 34, 30 | 48, 32, 6, 3, 85, 4, 10, 12, 25, 73, 110, 115, 105, 31 | 100, 101, 32, 83, 101, 99, 117, 114, 101, 32, 67, 111, 114, 32 | 112, 111, 114, 97, 116, 105, 111, 110, 49, 13, 48, 11, 6, 33 | 3, 85, 4, 11, 12, 4, 84, 101, 115, 116, 49, 66, 48, 34 | 64, 6, 3, 85, 4, 3, 12, 57, 77, 97, 116, 114, 105, 35 | 120, 83, 83, 76, 32, 83, 97, 109, 112, 108, 101, 32, 69, 36 | 67, 68, 72, 95, 82, 83, 65, 32, 67, 101, 114, 116, 32, 37 | 40, 69, 108, 108, 105, 112, 116, 105, 99, 32, 99, 117, 114, 38 | 118, 101, 32, 115, 101, 99, 112, 53, 50, 49, 114, 49, 41, 39 | 48, 129, 155, 48, 16, 6, 7, 42, 134, 72, 206, 61, 2, 40 | 1, 6, 5, 43, 129, 4, 0, 35, 3, 129, 134, 0, 4, 41 | 0, 49, 27, 198, 186, 141, 142, 7, 108, 83, 30, 218, 91, 42 | 85, 229, 245, 125, 112, 242, 232, 237, 198, 157, 31, 31, 11, 43 | 216, 151, 244, 158, 244, 187, 107, 16, 187, 15, 26, 233, 26, 44 | 16, 96, 109, 202, 12, 220, 203, 245, 34, 180, 155, 185, 243, 45 | 150, 60, 162, 158, 98, 248, 102, 52, 243, 181, 195, 23, 115, 46 | 117, 1, 6, 229, 46, 242, 242, 164, 81, 22, 19, 150, 54, 47 | 220, 137, 217, 53, 193, 85, 81, 167, 167, 233, 5, 197, 98, 48 | 75, 2, 155, 225, 103, 232, 229, 58, 151, 188, 27, 83, 179, 49 | 191, 57, 88, 134, 117, 151, 255, 253, 91, 112, 242, 75, 97, 50 | 114, 118, 223, 164, 219, 5, 129, 183, 162, 210, 156, 243, 195, 51 | 110, 136, 163, 130, 1, 49, 48, 130, 1, 45, 48, 9, 6, 52 | 3, 85, 29, 19, 4, 2, 48, 0, 48, 29, 6, 3, 85, 53 | 29, 14, 4, 22, 4, 20, 219, 236, 141, 150, 59, 25, 34, 54 | 120, 254, 102, 173, 32, 113, 3, 247, 79, 133, 237, 198, 162, 55 | 48, 129, 197, 6, 3, 85, 29, 35, 4, 129, 189, 48, 129, 56 | 186, 161, 129, 176, 164, 129, 173, 48, 129, 170, 49, 73, 48, 57 | 71, 6, 3, 85, 4, 3, 12, 64, 83, 97, 109, 112, 108, 58 | 101, 32, 77, 97, 116, 114, 105, 120, 32, 82, 83, 65, 45, 59 | 50, 48, 52, 56, 32, 67, 101, 114, 116, 105, 102, 105, 99, 60 | 97, 116, 101, 32, 65, 117, 116, 104, 111, 114, 105, 116, 121, 61 | 32, 102, 111, 114, 32, 69, 67, 68, 72, 95, 82, 83, 65, 62 | 32, 115, 117, 105, 116, 101, 115, 49, 11, 48, 9, 6, 3, 63 | 85, 4, 6, 12, 2, 85, 83, 49, 11, 48, 9, 6, 3, 64 | 85, 4, 8, 12, 2, 87, 65, 49, 16, 48, 14, 6, 3, 65 | 85, 4, 7, 12, 7, 83, 101, 97, 116, 116, 108, 101, 49, 66 | 34, 48, 32, 6, 3, 85, 4, 10, 12, 25, 73, 110, 115, 67 | 105, 100, 101, 32, 83, 101, 99, 117, 114, 101, 32, 67, 111, 68 | 114, 112, 111, 114, 97, 116, 105, 111, 110, 49, 13, 48, 11, 69 | 6, 3, 85, 4, 11, 12, 4, 84, 101, 115, 116, 130, 5, 70 | 49, 49, 48, 48, 48, 48, 29, 6, 3, 85, 29, 37, 4, 71 | 22, 48, 20, 6, 8, 43, 6, 1, 5, 5, 7, 3, 1, 72 | 6, 8, 43, 6, 1, 5, 5, 7, 3, 2, 48, 26, 6, 73 | 3, 85, 29, 17, 4, 19, 48, 17, 130, 9, 108, 111, 99, 74 | 97, 108, 104, 111, 115, 116, 135, 4, 127, 0, 0, 1, 48, 75 | 13, 6, 9, 42, 134, 72, 134, 247, 13, 1, 1, 11, 5, 76 | 0, 3, 130, 1, 1, 0, 3, 203, 82, 167, 137, 226, 139, 77 | 225, 2, 127, 209, 52, 63, 218, 84, 141, 182, 161, 42, 16, 78 | 125, 63, 189, 57, 100, 245, 175, 148, 127, 1, 231, 178, 179, 79 | 139, 75, 181, 55, 124, 36, 105, 226, 38, 202, 199, 58, 72, 80 | 32, 106, 80, 112, 157, 27, 111, 10, 110, 107, 40, 121, 59, 81 | 57, 148, 138, 176, 146, 68, 250, 113, 65, 117, 84, 248, 5, 82 | 99, 106, 161, 250, 24, 62, 52, 108, 246, 42, 152, 216, 55, 83 | 186, 125, 70, 21, 58, 43, 252, 177, 3, 239, 81, 133, 213, 84 | 141, 134, 208, 91, 97, 117, 65, 31, 78, 88, 249, 50, 189, 85 | 89, 87, 177, 186, 38, 55, 153, 138, 54, 171, 113, 44, 87, 86 | 135, 108, 247, 24, 75, 141, 39, 206, 168, 34, 45, 54, 172, 87 | 143, 172, 150, 9, 235, 199, 134, 159, 211, 164, 202, 6, 130, 88 | 191, 231, 151, 199, 123, 175, 175, 203, 21, 154, 127, 244, 219, 89 | 83, 216, 0, 80, 154, 121, 8, 149, 145, 73, 74, 62, 171, 90 | 222, 217, 49, 211, 95, 118, 254, 86, 20, 224, 141, 8, 9, 91 | 209, 84, 55, 32, 78, 9, 193, 107, 253, 58, 141, 137, 184, 92 | 53, 85, 27, 21, 149, 175, 40, 243, 16, 87, 143, 24, 138, 93 | 237, 215, 232, 52, 197, 180, 99, 255, 192, 171, 47, 212, 129, 94 | 226, 163, 64, 144, 14, 221, 249, 65, 121, 118, 117, 143, 100, 95 | 20, 6, 42, 241, 73, 99, 19, 173, 174, 208, 233, 27, 253, 96 | 16, 243}; 97 | -------------------------------------------------------------------------------- /firmware/prng.c: -------------------------------------------------------------------------------- 1 | /** 2 | * @file prng.c 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Psuedo random number generation. 6 | */ 7 | /* 8 | * Copyright (c) 2013-2015 INSIDE Secure Corporation 9 | * Copyright (c) PeerSec Networks, 2002-2011 10 | * All Rights Reserved 11 | * 12 | * The latest version of this code is available at http://www.matrixssl.org 13 | * 14 | * This software is open source; you can redistribute it and/or modify 15 | * it under the terms of the GNU General Public License as published by 16 | * the Free Software Foundation; either version 2 of the License, or 17 | * (at your option) any later version. 18 | * 19 | * This General Public License does NOT permit incorporating this software 20 | * into proprietary programs. If you are unable to comply with the GPL, a 21 | * commercial license for this software may be purchased from INSIDE at 22 | * http://www.insidesecure.com/eng/Company/Locations 23 | * 24 | * This program is distributed in WITHOUT ANY WARRANTY; without even the 25 | * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 26 | * See the GNU General Public License for more details. 27 | * 28 | * You should have received a copy of the GNU General Public License 29 | * along with this program; if not, write to the Free Software 30 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 31 | * http://www.gnu.org/copyleft/gpl.html 32 | */ 33 | /******************************************************************************/ 34 | 35 | #include "cryptoApi.h" 36 | 37 | #ifdef USE_MULTITHREADING 38 | static psMutex_t prngLock; 39 | #endif 40 | 41 | static psRandom_t gMatrixPrng; 42 | static short gPrngInit = 0; 43 | 44 | /* One-time global prng lock creation and prng context */ 45 | void psOpenPrng(void) 46 | { 47 | #ifdef USE_MULTITHREADING 48 | psCreateMutex(&prngLock); 49 | #endif 50 | /* NOTE: if a PRNG is enabled, the low level psGetEntropy call can't 51 | have a useful userPtr context becuase there will be no session 52 | context at this early stage */ 53 | psInitPrng(&gMatrixPrng, NULL); 54 | gPrngInit = 1; 55 | return; 56 | } 57 | /* One-time global prng lock destruction */ 58 | void psClosePrng(void) 59 | { 60 | #ifdef USE_MULTITHREADING 61 | psDestroyMutex(&prngLock); 62 | #endif 63 | return; 64 | } 65 | 66 | /* Main PRNG retrieval API for Matrix based apps to lock all PRNG and entropy 67 | fetches */ 68 | int32 matrixCryptoGetPrngData(unsigned char *bytes, uint32 size, void *userPtr) 69 | { 70 | int32 rc; 71 | 72 | if (gPrngInit == 0) { 73 | return PS_FAILURE; 74 | } 75 | #ifdef USE_MULTITHREADING 76 | psLockMutex(&prngLock); 77 | #endif /* USE_MULTITHREADING */ 78 | rc = psGetPrng(&gMatrixPrng, bytes, size, userPtr); 79 | #ifdef USE_MULTITHREADING 80 | psUnlockMutex(&prngLock); 81 | #endif /* USE_MULTITHREADING */ 82 | return rc; 83 | } 84 | 85 | /* 86 | Priority order of PRNG algorithms and then default GetEntropy if none. 87 | Does an initial entropy source and reseeding 88 | */ 89 | int32 psInitPrng(psRandom_t *ctx, void *userPtr) 90 | { 91 | #if defined(USE_FORTUNA) || defined(USE_YARROW) 92 | unsigned char entropyBytes[RANDOM_ENTROPY_BYTES]; 93 | int32 rc; 94 | #endif 95 | 96 | ctx->bytecount = 0; 97 | 98 | 99 | #if defined(USE_FORTUNA) || defined(USE_YARROW) 100 | if ((rc = psGetEntropy(entropyBytes, RANDOM_ENTROPY_BYTES, userPtr)) < 0) { 101 | return rc; 102 | } 103 | #endif 104 | 105 | #ifdef USE_YARROW 106 | if ((rc = psYarrowStart(&ctx->yarrow)) < 0) { 107 | return rc; 108 | } 109 | if ((rc = psYarrowAddEntropy(entropyBytes, RANDOM_ENTROPY_BYTES, 110 | &ctx->yarrow)) < 0) { 111 | return rc; 112 | } 113 | if ((rc = psYarrowReseed(&ctx->yarrow)) < 0) { 114 | return rc; 115 | } 116 | #endif 117 | return PS_SUCCESS; 118 | } 119 | 120 | /* 121 | Performs the read 122 | */ 123 | static int32 readRandomData(psRandom_t *ctx, unsigned char *bytes, uint32 size, 124 | void *userPtr) 125 | { 126 | #if defined(USE_FORTUNA) || defined(USE_YARROW) 127 | unsigned char entropyBytes[RANDOM_ENTROPY_BYTES]; 128 | int32 rc; 129 | #endif 130 | /* 131 | Return random data. The defines above control how often to add 132 | entropy and reseed the key. 133 | */ 134 | ctx->bytecount += size; 135 | 136 | 137 | 138 | #ifdef USE_YARROW 139 | if (ctx->bytecount >= RANDOM_BYTES_BEFORE_ENTROPY) { 140 | ctx->bytecount = 0; 141 | if ((rc = psGetEntropy(entropyBytes, RANDOM_ENTROPY_BYTES, userPtr)) 142 | < 0) { 143 | return rc; 144 | } 145 | if ((rc = psYarrowAddEntropy(entropyBytes, RANDOM_ENTROPY_BYTES, 146 | &ctx->yarrow)) < 0) { 147 | return rc; 148 | } 149 | if ((rc = psYarrowReseed(&ctx->yarrow)) < 0) { 150 | return rc; 151 | } 152 | } 153 | return psYarrowRead(bytes, size, &ctx->yarrow); 154 | #endif 155 | /* 156 | If no PRNG algorithms defined, default to the low level GetEntropy function 157 | for all the randomness 158 | */ 159 | return psGetEntropy(bytes, size, userPtr); 160 | } 161 | 162 | /* 163 | Allow NULL context if caller is just doing a single read 164 | */ 165 | int32 psGetPrng(psRandom_t *ctx, unsigned char *bytes, uint32 size, 166 | void *userPtr) 167 | { 168 | psRandom_t lctx; 169 | 170 | if (ctx == NULL) { 171 | psInitPrng(&lctx, userPtr); 172 | return readRandomData(&lctx, bytes, size, userPtr); 173 | } 174 | return readRandomData(ctx, bytes, size, userPtr); 175 | } 176 | -------------------------------------------------------------------------------- /firmware/2048_RSA_KEY.h: -------------------------------------------------------------------------------- 1 | /** 2 | * @file 2048_RSA_KEY.h 3 | * @version 33ef80f (HEAD, tag: MATRIXSSL-3-7-2-OPEN, tag: MATRIXSSL-3-7-2-COMM, origin/master, origin/HEAD, master) 4 | * 5 | * Summary. 6 | */ 7 | static const unsigned char RSA2048KEY[] = { 8 | 48, 130, 4, 163, 2, 1, 0, 2, 130, 1, 1, 0, 173, 9 | 106, 51, 238, 162, 115, 109, 104, 186, 189, 45, 177, 181, 84, 10 | 240, 4, 20, 255, 189, 215, 91, 76, 105, 231, 244, 102, 127, 11 | 172, 6, 225, 149, 119, 107, 157, 154, 31, 81, 97, 230, 210, 12 | 146, 80, 220, 15, 93, 21, 12, 158, 211, 55, 166, 249, 119, 13 | 54, 118, 116, 218, 63, 80, 127, 156, 223, 82, 201, 50, 76, 14 | 218, 34, 49, 235, 148, 176, 207, 86, 238, 145, 134, 48, 169, 15 | 36, 41, 1, 47, 131, 209, 8, 115, 148, 151, 225, 219, 136, 16 | 133, 59, 225, 70, 43, 197, 255, 3, 234, 124, 116, 166, 137, 17 | 100, 65, 204, 136, 231, 156, 175, 51, 251, 72, 231, 91, 202, 18 | 111, 144, 117, 122, 66, 162, 186, 138, 78, 6, 56, 135, 81, 19 | 102, 150, 193, 239, 138, 226, 178, 231, 99, 87, 244, 250, 248, 20 | 166, 77, 77, 67, 40, 172, 58, 76, 238, 51, 93, 241, 33, 21 | 13, 212, 252, 158, 35, 240, 41, 216, 246, 85, 102, 54, 26, 22 | 41, 122, 109, 51, 47, 13, 48, 114, 248, 180, 43, 127, 233, 23 | 97, 117, 73, 221, 253, 59, 44, 41, 223, 123, 177, 150, 50, 24 | 12, 152, 196, 54, 60, 216, 12, 130, 211, 199, 244, 240, 244, 25 | 196, 226, 124, 212, 86, 174, 116, 96, 252, 194, 233, 68, 218, 26 | 244, 116, 18, 5, 106, 79, 188, 186, 187, 76, 4, 170, 67, 27 | 157, 80, 136, 167, 162, 56, 115, 90, 1, 1, 64, 205, 210, 28 | 124, 121, 200, 120, 220, 38, 68, 229, 2, 3, 1, 0, 1, 29 | 2, 130, 1, 0, 29, 222, 101, 3, 125, 71, 148, 88, 173, 30 | 145, 88, 5, 123, 206, 29, 105, 22, 148, 214, 5, 249, 219, 31 | 183, 130, 20, 62, 115, 79, 22, 0, 84, 214, 52, 218, 248, 32 | 104, 220, 131, 152, 86, 60, 141, 96, 217, 228, 150, 115, 142, 33 | 7, 163, 86, 71, 49, 153, 87, 221, 216, 153, 127, 43, 251, 34 | 193, 27, 105, 60, 24, 176, 153, 163, 47, 136, 116, 203, 193, 35 | 149, 101, 203, 79, 38, 82, 236, 29, 32, 41, 252, 31, 16, 36 | 137, 79, 127, 191, 104, 76, 74, 124, 10, 178, 15, 112, 85, 37 | 36, 86, 59, 97, 83, 216, 200, 220, 137, 216, 26, 204, 178, 38 | 143, 93, 135, 59, 240, 42, 55, 31, 132, 231, 101, 79, 235, 39 | 242, 116, 39, 43, 88, 47, 117, 24, 182, 248, 69, 107, 197, 40 | 130, 49, 90, 68, 211, 9, 19, 249, 91, 215, 65, 127, 32, 41 | 136, 150, 198, 20, 114, 129, 131, 112, 66, 209, 180, 44, 71, 42 | 210, 78, 191, 49, 172, 152, 43, 226, 204, 141, 31, 84, 254, 43 | 45, 142, 49, 187, 90, 12, 111, 111, 148, 140, 141, 54, 126, 44 | 133, 243, 22, 240, 135, 105, 78, 102, 25, 139, 207, 96, 93, 45 | 93, 169, 51, 182, 82, 137, 223, 84, 246, 35, 147, 15, 157, 46 | 18, 81, 121, 120, 114, 95, 232, 37, 142, 174, 162, 30, 126, 47 | 212, 103, 207, 230, 16, 116, 163, 5, 49, 126, 181, 168, 157, 48 | 191, 171, 109, 230, 118, 46, 206, 207, 58, 232, 199, 189, 33, 49 | 2, 129, 129, 0, 221, 175, 231, 192, 172, 233, 49, 82, 48, 50 | 43, 135, 88, 134, 250, 17, 210, 214, 227, 76, 127, 114, 25, 51 | 249, 103, 93, 60, 162, 139, 32, 206, 33, 12, 92, 104, 13, 52 | 100, 73, 90, 92, 212, 110, 70, 20, 252, 12, 185, 236, 192, 53 | 129, 60, 233, 130, 212, 109, 113, 81, 119, 72, 28, 241, 160, 54 | 208, 141, 183, 222, 152, 221, 128, 41, 68, 104, 206, 134, 246, 55 | 178, 255, 120, 178, 205, 160, 17, 1, 132, 239, 60, 183, 45, 56 | 89, 220, 234, 43, 77, 25, 138, 20, 46, 179, 78, 216, 119, 57 | 88, 102, 45, 178, 174, 155, 219, 177, 158, 135, 190, 153, 1, 58 | 77, 138, 143, 204, 255, 6, 217, 94, 229, 160, 194, 177, 200, 59 | 53, 107, 2, 129, 129, 0, 200, 65, 144, 151, 164, 90, 188, 60 | 191, 102, 199, 183, 137, 216, 34, 221, 245, 199, 69, 169, 81, 61 | 148, 40, 224, 223, 149, 224, 207, 25, 247, 196, 142, 180, 108, 62 | 129, 217, 190, 240, 88, 37, 228, 175, 110, 65, 75, 223, 26, 63 | 95, 61, 147, 223, 24, 135, 44, 102, 145, 73, 74, 122, 220, 64 | 42, 150, 122, 140, 208, 78, 248, 88, 53, 237, 184, 133, 81, 65 | 43, 109, 81, 247, 132, 76, 210, 106, 177, 82, 28, 21, 45, 66 | 214, 22, 135, 234, 137, 164, 243, 54, 122, 60, 4, 168, 9, 67 | 192, 116, 124, 251, 196, 108, 15, 227, 241, 98, 116, 70, 122, 68 | 70, 50, 21, 57, 7, 103, 28, 231, 91, 84, 251, 204, 12, 69 | 181, 72, 178, 239, 2, 129, 128, 113, 186, 45, 69, 94, 47, 70 | 95, 123, 15, 117, 53, 65, 8, 53, 191, 241, 15, 6, 154, 71 | 151, 3, 29, 42, 34, 137, 229, 114, 105, 183, 145, 167, 200, 72 | 164, 155, 72, 203, 123, 10, 29, 119, 105, 127, 16, 130, 225, 73 | 176, 124, 49, 161, 219, 114, 220, 8, 72, 129, 10, 207, 11, 74 | 178, 181, 142, 207, 142, 244, 150, 0, 140, 25, 148, 146, 32, 75 | 198, 90, 220, 178, 165, 118, 241, 27, 166, 19, 51, 89, 84, 76 | 54, 44, 174, 218, 92, 7, 209, 225, 2, 202, 32, 98, 120, 77 | 224, 105, 18, 136, 202, 26, 133, 129, 40, 58, 3, 156, 21, 78 | 125, 133, 22, 243, 5, 179, 145, 241, 255, 60, 130, 127, 129, 79 | 2, 128, 155, 250, 51, 2, 129, 128, 92, 131, 13, 141, 64, 80 | 124, 58, 158, 33, 153, 58, 13, 16, 48, 107, 97, 211, 193, 81 | 54, 203, 93, 42, 213, 87, 245, 33, 122, 11, 129, 14, 232, 82 | 238, 41, 2, 131, 217, 85, 167, 35, 58, 86, 97, 21, 1, 83 | 59, 252, 46, 235, 127, 152, 156, 248, 53, 102, 220, 207, 130, 84 | 252, 231, 33, 53, 139, 63, 234, 43, 209, 70, 207, 3, 23, 85 | 47, 95, 164, 52, 72, 157, 148, 28, 249, 72, 24, 202, 217, 86 | 246, 94, 202, 124, 118, 37, 191, 152, 216, 82, 222, 125, 67, 87 | 153, 109, 135, 223, 72, 173, 246, 188, 5, 75, 68, 132, 59, 88 | 59, 35, 217, 177, 225, 100, 11, 43, 115, 138, 222, 2, 144, 89 | 160, 95, 110, 144, 59, 57, 2, 129, 129, 0, 192, 97, 78, 90 | 182, 242, 63, 154, 76, 240, 15, 79, 114, 58, 20, 156, 145, 91 | 200, 189, 230, 114, 93, 130, 121, 242, 253, 219, 238, 108, 66, 92 | 232, 65, 197, 95, 92, 177, 131, 135, 3, 201, 94, 169, 177, 93 | 153, 134, 242, 6, 216, 151, 210, 160, 64, 18, 74, 137, 236, 94 | 196, 220, 165, 149, 51, 170, 24, 154, 57, 177, 94, 219, 95, 95 | 3, 55, 194, 153, 79, 225, 245, 56, 176, 103, 243, 141, 245, 96 | 152, 30, 41, 84, 78, 54, 157, 123, 92, 120, 127, 203, 206, 97 | 50, 87, 247, 106, 210, 50, 15, 79, 140, 190, 193, 213, 162, 98 | 211, 186, 228, 45, 20, 158, 2, 17, 206, 82, 123, 191, 51, 99 | 66, 180, 255, 188, 138, 116, 207, 71}; 100 | --------------------------------------------------------------------------------